估计相似图像的模糊/清晰度

时间:2014-11-05 13:13:16

标签: command-line imagemagick blur

我使用摄影测量法拍摄了数千张用于3D重建的图像,我想使用Imagemagick或任何其他命令行软件来评估哪些图像模糊。什么意思 blury:根据所有图像的平均模糊度/清晰度,可以轻松挑选出最差的图像。但是如何评估模糊性。我已经进入FFT,快速Fournier变换,并认为在这里可以找到解决方案。可以通过IM -fft命令计算频率,该命令产生幅度和相位图像。如何使用这些图像来计算整体模糊/锐度因子?

更新:以下是我要处理的一些图片。真正的挑战是,所有图像都与这些类型中的许多其他图像一起放在一个文件夹中,需要检查运动模糊问题。我必须检测到太高的运动模糊,并在进一步制作时避免使用这些图像。

接下来3张图片的所有图片都有最低偏差,但在原版全分辨率版本中非常清晰。

enter image description here

enter image description here

enter image description here

这两幅图像由于白色区域的偏差较小,但也没有足够的清晰度。

enter image description here

enter image description here

由于镶嵌,边缘检测带来了各种边缘。从所有图像中,第一张图像模糊不清。

enter image description here

此图像模糊度低。

enter image description here

1 个答案:

答案 0 :(得分:5)

我有使用ImageMagick的想法。我拍摄原始图像如下:

enter image description here

然后我将它放入Photoshop并使用5个pixesl和10个像素的运动模糊进行模糊处理,将结果保存为blur5.txtblur10.txt

enter image description here enter image description here

现在,我使用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检测到的图像中的白色像素计算为锐度的度量。

enter image description here enter image description here enter image description here

像这样:

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