我使用摄影测量法拍摄了数千张用于3D重建的图像,我想使用Imagemagick或任何其他命令行软件来评估哪些图像太模糊。什么意思太 blury:根据所有图像的平均模糊度/清晰度,可以轻松挑选出最差的图像。但是如何评估模糊性。我已经进入FFT,快速Fournier变换,并认为在这里可以找到解决方案。可以通过IM -fft命令计算频率,该命令产生幅度和相位图像。如何使用这些图像来计算整体模糊/锐度因子?
更新:以下是我要处理的一些图片。真正的挑战是,所有图像都与这些类型中的许多其他图像一起放在一个文件夹中,需要检查运动模糊问题。我必须检测到太高的运动模糊,并在进一步制作时避免使用这些图像。
接下来3张图片的所有图片都有最低偏差,但在原版全分辨率版本中非常清晰。
这两幅图像由于白色区域的偏差较小,但也没有足够的清晰度。
由于镶嵌,边缘检测带来了各种边缘。从所有图像中,第一张图像模糊不清。
此图像模糊度低。
答案 0 :(得分:5)
我有使用ImageMagick的想法。我拍摄原始图像如下:
然后我将它放入Photoshop并使用5个pixesl和10个像素的运动模糊进行模糊处理,将结果保存为blur5.txt
和blur10.txt
。
现在,我使用ImageMagick来比较统计数据:
identify -verbose original.jpg > orig.txt
identify -verbose blur5.jpg > blur5.txt
identify -verbose blur10.jpg > blur10.txt
然后使用opendiff
(在Mac上)比较统计信息
opendiff orig.txt blur5.txt
我注意到图像越模糊,标准偏差越小 - 这样就可以测量相对模糊度。
然后我使用了Canny边缘检测器,您可以看到最清晰的图像获得最多边缘,而不是意外。因此,您可以将Canny Edge检测到的图像中的白色像素计算为锐度的度量。
像这样:
convert original.jpg -canny 0x1+10%+30% -format %c histogram:info:-
875184: ( 0, 0, 0) #000000 gray(0)
72576: (255,255,255) #FFFFFF gray(255) <--- sharp image has high white pixel count
convert blur5.jpg -canny 0x1+10%+30% -format %c histogram:info:-
912322: ( 0, 0, 0) #000000 gray(0)
35438: (255,255,255) #FFFFFF gray(255) <--- slightly blurry has lower white pixel count
convert blur10.jpg -canny 0x1+10%+30% -format %c histogram:info:-
925759: ( 0, 0, 0) #000000 gray(0)
22001: (255,255,255) #FFFFFF gray(255) <--- blurriest has lowest white pixel count
如果您想要一条计算白色像素数并回显文件名的行,您可以这样做:
convert original.jpg -canny 0x1+10%+30% -format "%[fx:mean*h*w] %f\n" info:
72576 original.jpg
这样您就可以分析所有图像,并按照以下顺序对其进行排序:
find . -name "*.jpg" -exec convert "{}" -canny 0x1+10%+30% -format "%[fx:mean*h*w] %f\n" info: \; | sort
22001 blur10.jpg
35438 blur5.jpg
72576 original.jpg