2015-08-19 29 views
0

我有这样的画面: enter image description here如何在给定的图片上找到黄色物体?

(这只是更大的图像的子图像,但只有这部分对我来说很重要)。我需要找到图像中所有这些黄色物体的算法,并从中找到包含最多黄色点的物体。这只是成千上万的类似图片的一张图片,或多或少的这些黄色物体。有什么办法做到这一点?我发现扫描线算法对此很有帮助,但是我还没找到一些能帮助我的例子。如果你有一些想法,甚至算法,这将是完美的。那些色线并不重要,我只是把它们作为一些边框,我需要找到黄色的物体。

非常感谢答案

回答

1

有两个基本步骤:

  • 阈值:生成黄色,而不是黄色像素的阵列。如果您使用的图像都与您提供的示例类似,这应该很容易,但如果您必须处理不同的色调和色调,请尝试自适应阈值处理。存储例如黄色的像素为-1,其他地方为0。

  • 分割:初始化ID值为1.扫描阈值图像的每个像素。当遇到值为-1的像素(即黄色像素)时,使用flood fill例程将ID值写入该像素以及与其相连的所有黄色像素。在洪水填充例程退出之前,可以存储信息,例如找到的像素数以及由ID值索引的数组中的平均X和Y坐标。然后增加ID值并继续扫描,直到覆盖整个图像。

然后搜索被洪水装填例行程序生成的数据发现该黄色区域是最大的,而他们在那里设。

Here's a program that does something quite similar with red objects instead of yellow ones, and then draws circles around them

red circles around things

1

它看起来像OpenCV的斑点检测选项。我发现这篇文章展示了如何使用灰度值检测斑点,您应该能够更改它以使用目标颜色的颜色值。它还提到使用blob区域作为阈值,所以你应该能够使用它来找到图像中最大的区域。

http://www.learnopencv.com/blob-detection-using-opencv-python-c/

0

一个办法是生成图像的四叉树。使用这个四叉树可以非常简单地找到形成斑点的连片(即使有孔)并计算它们的大小。

相关问题