2013-10-18 72 views
1

我想檢測圖像模糊的程度,可能是它可以稱爲「模糊延伸」。 我找到這個有用的論文:檢測圖像如何模糊

http://www.cs.cmu.edu/~htong/pdf/ICME04_tong.pdf

我使用OpenCV中,並通過從本文中的所有步驟做,但結果不一樣,從本文的結果?

可能是我的程序無法正常工作? 或有人可以給我任何檢測「模糊擴展」的建議。

謝謝。

回答

2

您可以檢測到圖像模糊,使用接下來的算法:

  1. 將圖像轉換成灰度格式。
  2. 計算最大絕對從灰度圖像的二階導數(每點):

    d [X,Y] = MAX(ABS(2 * d [X,Y] - d [X,Y + 1 (x,y)-d [x-1,y]),abs(2 * d [x,y]

  3. 計算此估計圖像的直方圖(最大絕對二階導數)。

  4. 查找此直方圖的上位分位數(0,999)。

  5. 如果此值小於閾值(大約爲圖像動態範圍的25%),則圖像模糊。

  6. 如果您想要估計模糊值,那麼對縮小的圖像執行步驟2-5。

您可以自己編寫這些算法,也可以使用其中的一個來執行Simd Library

  • Simd :: BgrToGray或Simd :: BgraToGray(用於步驟1)。
  • Simd :: AbsSecondDerivativeHistogram(用於步驟2-5)。
  • Simd :: ReduceGray2x2(用於步驟6)。
+0

謝謝。但關於第6步,你的意思是,如果我想估計模糊值(所謂的「模糊延伸」),我可以在縮小的圖像中執行第2-4步,結果是4是我想要的嗎? – pars

+0

如何估算每像素的模糊/清晰度級別? – Royi

+0

這是一個很好的方法,但關心,因爲這種技術是依賴於場景的! – Flayn