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

Mar*_*her 1 command-line imagemagick blur

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

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

接下来的3张图像从所有图像中获得最低偏差,但在原始全分辨率版本中非常清晰.

在此输入图像描述

在此输入图像描述

在此输入图像描述

由于白色区域,这两个图像具有较低的偏差,但也不缺乏足够的清晰度.

在此输入图像描述

在此输入图像描述

由于镶嵌,边缘检测带来各种边缘.从所有图像中,第一个图像模糊.

在此输入图像描述

此图像具有低模糊度.

在此输入图像描述

Mar*_*ell 5

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

在此输入图像描述

然后我把它放到Photoshop中并使用5个pixesl和10个像素的运动模糊来模糊它,将结果保存为blur5.txtblur10.txt.

在此输入图像描述 在此输入图像描述

现在,我使用ImageMagick来比较统计数据:

identify -verbose original.jpg > orig.txt
identify -verbose blur5.jpg    > blur5.txt
identify -verbose blur10.jpg   > blur10.txt
Run Code Online (Sandbox Code Playgroud)

然后使用opendiff(在Mac上)比较统计数据,

opendiff orig.txt blur5.txt
Run Code Online (Sandbox Code Playgroud)

我注意到图像越模糊,标准偏差越低 - 因此似乎测量相对模糊度.

然后我使用Canny Edge Detector,您可以看到最清晰的图像获得最多边缘,而不是意外.因此,您可以将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 
Run Code Online (Sandbox Code Playgroud)

如果您想要一条计算白色像素数并回显文件名的行,您可以这样做:

convert original.jpg -canny 0x1+10%+30% -format "%[fx:mean*h*w] %f\n" info:
72576 original.jpg
Run Code Online (Sandbox Code Playgroud)

这将允许您分析所有图像并将其按照如下顺序排序:

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
Run Code Online (Sandbox Code Playgroud)