我是EMGU和图像处理的新手,我在C#上有一个项目,需要检测透明的物体,特别是塑料瓶子里的飞虫的翅膀。这里有一些例子。


我试着在EMGU中使用YCbCr,但我无法检测到它,也无法将其与背景区分开来。
另一件事是,我试图将它封闭在一个“受控环境”中(在一个盒子里,没有光线可以进来),并使用LED背光。这样做可取吗?或者来自环境的光(荧光灯)可以做到吗?这会否影响破案率?在这类问题中,照明是一个因素吗?
这是我的项目的想法,也是我使用的。基本上,我的项目只是关于使用网络摄像头(罗技C910)从图像中检测透明对象的概念证明。这是我们国家老工业问题的一个例子,装瓶厂积压了他们的塑料瓶,在使用之前就被污染了。飞虫的身体和飞虫的翅膀是给我们的污染物。此外,这也是为了查看网络摄像头是否足以替代此应用程序的工业摄像头。
我把它放在一个受控的环境中,并使用LED灯作为背光(这只是使用原型板和高强度LED光,并与债券纸扩散)。这个物体(飞虫的翅膀)将被放在一个装有水的塑料瓶子里,并将被分成两部分进行测试。第一部分是瓶子不移动,第二部分是当瓶子在传送带上移动时,但在相同的受控环境下。我做了所有需要的硬件,所以这不再是问题了。飞虫的身体很容易发现(我认为),但飞虫的翅膀让我抓挠我的头。
任何帮助都将不胜感激。提前谢谢你!
发布于 2014-03-08 02:38:44
考虑使用尽可能多的视觉提示:blur/focus
shape -您可以在干净的图像上使用active contour or findControus()
grabcut框架中的位置、强度和纹理
你可以尝试红外线照明,以防飞虫和玻璃对红外线的反应不同。
发布于 2014-03-09 18:31:57
您应该尝试调整亮度/对比度和颜色平衡。

另一个想法是使用自动阈值,例如Sauvola或自动本地阈值。它会给你一个有趣的结果,比如这个(我直接将图像转换成灰度):

通过使用imageJ,我可以非常快速地执行此测试。

Click to the link to the image,以查看哪幅图像对应哪种二值化算法。
https://stackoverflow.com/questions/22254362
复制相似问题