繁体   English   中英

图像算法-检测光

[英]Image algorithm - detection of a light

我有一个悬而未决的问题,但找不到与我的问题完全相似的问题,因此我来了。

我得到了这两张照片: 蓝灯亮了

无蓝灯

我想知道某种算法(/或现有插件)是否能够检测图像中间蓝光的存在(图像1)或不存在(图像2)?

我的主要技能是PHP和Javascript,但如有必要,我也可以使用Java,如果没有其他方法,甚至可以使用另一种语言...

感谢您提供任何帮助,即使是很小的帮助,也可以向我指出正确的方向。

您可以直接从命令行使用ImageMagick完成一些非常基本的操作,而无需任何代码。 它已安装在大多数Linux发行版上,并且可用于OSX和Windows。

基本上,您会寻找蓝色通道远大于红色或绿色通道且饱和度较高的像素。 您可以这样做:

convert on.jpg -fx "u.b>(u.g+0.2) && u.b>(u.r+0.2) && saturation>0.6" result.png

在此处输入图片说明

而当您针对off图片运行该图片时:

convert off.jpg -fx "u.b>(u.g+0.2)&&u.b>(u.r+0.2)&&saturation>0.6" result.png

在此处输入图片说明

您可以像这样计算以上图像中的白色像素:

convert result.png -format "%[fx:mean*w*h]" info:
1227

因此在on图像中有1227个像素被标识为亮蓝色,在off图像中有26个像素被标识为亮蓝色。

您可以测试两个图像,而无需创建我在上面创建的中间输出文件:

convert off.jpg -fx "u.b>(u.g+0.2)&&u.b>(u.r+0.2)&&saturation>0.6" -format "%[fx:mean*w*h]" info:
26

convert on.jpg -fx "u.b>(u.g+0.2)&&u.b>(u.r+0.2)&&saturation>0.6" -format "%[fx:mean*w*h]" info:
1227

当然,您可能想要欺骗并尝试我建议的数字。

还要注意,ImageMagick有C,C ++,C#,PHP,Perl,Javascript,Ruby和其他绑定-因此,您实际上可以使用任何一种语言来完成上述所有操作。 或者只是exec()system()以上内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM