从图像文件中找到numpy数组中最接近的颜色簇

时间:2019-04-10 20:47:19

标签: python numpy scikit-learn scipy scikit-image

当前状态

  • 我有一个由图像文件制成的形状为(900, 1800, 3)的数字数组。
  • 那是每个像素一个数组元素:数组中表示的每个像素高900像素,宽1800像素,每个像素3个通道(R,G,B)。
  • 正在解析的图像中只有少数(3-20)种独特的RGB颜色,因此数组中仅表示很少的不同RGB值组合。

目标

  • 确定图像中包含n数量唯一颜色的最小圆形区域,其中n将始终小于或等于图像中唯一颜色的数量。
  • 返回最小区域的顶部y(按计数或pct)。
  • “结果”可以只是已识别圆形区域的中心像素的x,y值及其半径。
  • 要做计划在每个区域周围画一个圆,但是这个问题是关于首先确定最上面的最小区域的最佳方法。

捕捉/注意

图像实际上是球的扁平投影。这意味着图像右边缘的像素实际上与左边缘的像素相邻,顶部和底部像素也类似。解决方案必须考虑到这一点,因为它正在解析像素以标识其他颜色的最接近像素。 编辑:这部分可能会在下面的评论中回答

问题

我最初的方法是简单地逐像素解析像素,并通过手推x / y坐标数学运算来解决问题:取一个像素,向外工作,直到达到n颜色,对该像素进行多少步向外打分花了下一个像素。保留要在每个像素之后重新评估的顶部y格,添加所有构成顶部y的像素,并转储所有被推出的像素。返回该字典作为输出。

我知道许多Python库,例如scipyscikit-image,也许还有一些喜欢将图像作为numpy数组使用。我确定,有一种方法/方法更聪明,可以利用库或某种聚类算法来代替强行使用它,但是我对空间不够熟悉,无法直观地知道要考虑的方法和库。问题:一个好的方法/库正确执行此操作的伪代码是什么?

0 个答案:

没有答案