图像算法 - 检测光

时间:2016-02-18 13:56:11

标签: image algorithm

我有一个未解决的问题,但是我找不到与我的问题完全相似的问题,所以我来了。

我收到了这两张照片:Got a blue light

No blue light

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

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

任何帮助,即使是向我指出正确方向的任何帮助都表示赞赏。

1 个答案:

答案 0 :(得分:3)

您可以直接从命令行使用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

enter image description here

而当你为off图片运行时:

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

enter image description here

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

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()上面的内容。