如何在给定图片上找到黄色物体?

时间:2015-08-19 18:42:56

标签: algorithm computer-vision

我有这张照片: enter image description here

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

非常感谢您的答案

3 个答案:

答案 0 :(得分:1)

It looks like OpenCV has blob detection options. I found this article showing how to detect the blobs using greyscale value, which you should be able to change to use the color value of your target color. It also mentions using the area of the blob as a threshold, so you should be able to use that to find the largest one in the image.

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

答案 1 :(得分: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

答案 2 :(得分:0)

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