Shu*_*dia 20 opencv google-maps colors imagemagick image-processing
给定静态地图图像(左图),我试图找到大约树木覆盖的区域.
我想到的方法涉及对图像进行逐像素分析,最初找出"更绿"的像素(使用HSV颜色方案来提取色调值).
我意识到,在黎明或黄昏时拍摄的一些图像中,树木实际上可能没有任何绿色,并且可能只是呈现深灰色/黑色.而在中午拍摄的那些,显得亮绿色.所以我尝试使用图像阈值并得到了不错的结果(右图):
但是我仍然不满意建筑物的阴影,或者黑暗物体可能会给我误报.
我想在Stack Overflow上使用一些开发人员的经验,并建议哪种图像处理工具和方法能在这种情况下给我最好的结果?
Kur*_*fle 18
问题-threshold Y%是这样的:它会将所有像素转化为黑色!
如果您的图像中有其他深色(深棕色,深蓝色,深红色,深灰色或黑色),您将错误地将其识别为"木材".
如果我理解正确的话,你只是在找那些像素,它们是某种绿色或深绿色.
因此,我建议使用以下命令的某些变体对您自己的方法进行基准测试:
compare \
-size 600x600 \
-fuzz 30% \
http://i.stack.imgur.com/kqMtt.png \
xc:'darkgreen' \
output-1.png
Run Code Online (Sandbox Code Playgroud)
您可以使用'#006400'的相应颜色值代替'darkgreen',它是相同的:
compare \
-size 600x600 \
-fuzz 30% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#006400' \
output-2.png
Run Code Online (Sandbox Code Playgroud)
上面的compare命令output-1.png从两个输入图像创建一个具有以下特征:
xc:)600x600像素的均匀颜色'darkgreen'补丁完成的;以下是并排比较的结果:

您当然可以使用模糊因子以及'darkgreen'颜色值的精确定义.结果-fuzz 25%如下:

如果您希望比较显示反色(红色像素显示原始图像具有绿色,透明/白色是像素为非绿色),请使用"darkgreen"的反色作为比较色块(这是某种粉红色,BTW)和不同的模糊因子:
compare \
-size 600x600 \
-fuzz 70% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#ff9bff' \
output-3.png
Run Code Online (Sandbox Code Playgroud)
结果现在是:

如果您希望输出不将原始图像显示为苍白背景,请添加-compose src到您的命令:
compare \
-size 600x600 \
-fuzz 70% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#ff9bff' \
-compose src \
output-4.png
Run Code Online (Sandbox Code Playgroud)

您还可以将突出显示"delta"像素的红色更改为其他颜色.使用黑色:
compare \
-highlight-color black \
-size 600x600 \
-fuzz 60% \
http://i.stack.imgur.com/kqMtt.png \
xc:'#ff9bff' \
-compose src \
output-5.png
Run Code Online (Sandbox Code Playgroud)
您现在可以将最后一个命令的结果用作"掩码".将该蒙版叠加到原始图像上,并以一种方式构图,使得在结果中显示图像的"仅树"部分,从而消除所有其他部分.
| 归档时间: |
|
| 查看次数: |
1893 次 |
| 最近记录: |