2014-11-05 48 views
1

我有成千上萬的圖像拍攝的三維重建使用攝影測量,我想評估哪些圖像模糊使用Imagemagick或任何其他命令行軟件。什麼意思也是 blury:基於所有圖像的平均模糊/清晰度,可以很容易地挑出最差的圖像。但是如何評估模糊。我已經進入FFT,快速Fournier變換,並認爲在這裏可以找到解決方案。頻率可以通過IM -fft命令來計算,它可以產生幅度和相位圖像。如何使用這些圖像來計算總體模糊/清晰度因子?估計類似圖像的模糊/清晰

更新:這裏是我必須處理的一些圖像。真正的挑戰是,所有圖像都與單個文件夾中的其他許多圖像一起使用,並且需要檢查運動模糊問題。我必須檢測太高的運動模糊,並在進一步的生產中避免使用這些圖像。

接下來的3張圖片有所有圖片的最低偏差,但在原始全版本中非常尖銳。

enter image description here

enter image description here

enter image description here

這2幅圖像具有較低的偏差,因爲白色區域,而且不缺乏足夠的清晰度。

enter image description here

enter image description here

在這裏,邊緣檢測帶來各個邊緣,因爲馬賽克。從所有圖像中,第一張圖像模糊。

enter image description here

此圖片具有低模糊。

enter image description here

回答

4

我使用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 

我注意到,圖像越模糊,標準偏差越低 - 這似乎是衡量相對模糊SS。

然後我使用了一個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 
+0

看起來很有趣,將嘗試它的真實數據! – 2014-11-05 14:47:45

+0

我現在在我的各種圖像上嘗試了兩種方法,結果並不是非常有用。這是因爲圖像的性質,它們都是內飾,但與他們的觀點不同。圖像有時太不同,以致偏差有時非常高,但圖像仍可能模糊。數量邊緣像素相同,這取決於圖像,這可能會導致錯誤的假設。如果兩者都可能是錯誤的,那麼兩者結合將不起作用。 – 2014-11-05 20:39:53

+0

哦,這真是一個恥辱:-(你能發佈一些真實的圖像,所以我們可以做一些更具代表性的實驗嗎? – 2014-11-05 20:47:10