Mar*_*her 1 command-line imagemagick blur
我使用摄影测量法拍摄了数千张用于3D重建的图像,我想使用Imagemagick或任何其他命令行软件来评估哪些图像太模糊.太卑鄙的含义:根据所有图像的平均模糊度/清晰度,可以轻松挑选出最糟糕的图像.但是如何评估模糊性.我已经进入FFT,快速Fournier变换,并认为在这里可以找到解决方案.可以通过IM -fft命令计算频率,该命令产生幅度和相位图像.如何使用这些图像来计算整体模糊/锐度因子?
更新:以下是我要处理的一些图片.真正的挑战是,所有图像都与这些类型中的许多其他图像一起放在一个文件夹中,需要检查运动模糊问题.我必须检测太高的运动模糊,并在进一步的制作中避免这些图像.
接下来的3张图像从所有图像中获得最低偏差,但在原始全分辨率版本中非常清晰.



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


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

此图像具有低模糊度.

我有一个使用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
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)
| 归档时间: |
|
| 查看次数: |
994 次 |
| 最近记录: |