我使用ImageMagick的想法。我把原始圖像如下:
![enter image description here](https://i.stack.imgur.com/fh4sE.jpg)
然後我把它變成Photoshop和5 pixesl和10個像素的運動模糊模糊它,保存結果爲blur5.txt
和blur10.txt
。
![enter image description here](https://i.stack.imgur.com/MJ46i.jpg)
現在,我使用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](https://i.stack.imgur.com/xB8sx.jpg)
像這樣:
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
看起來很有趣,將嘗試它的真實數據! – 2014-11-05 14:47:45
我現在在我的各種圖像上嘗試了兩種方法,結果並不是非常有用。這是因爲圖像的性質,它們都是內飾,但與他們的觀點不同。圖像有時太不同,以致偏差有時非常高,但圖像仍可能模糊。數量邊緣像素相同,這取決於圖像,這可能會導致錯誤的假設。如果兩者都可能是錯誤的,那麼兩者結合將不起作用。 – 2014-11-05 20:39:53
哦,這真是一個恥辱:-(你能發佈一些真實的圖像,所以我們可以做一些更具代表性的實驗嗎? – 2014-11-05 20:47:10