opencv python圖像清晰度的檢測算法靠譜嗎?要認真思考一下

很多應用場景會對圖片的質量有要求,因相機抖動或者物體處於運動時容易造成圖片模糊。

那麼模糊的照片怎麼去衡量呢?根據參考大量的方案-對圖像進行梯度求解然後求方差,以方差的值作爲評價圖像的清晰程度。

最爲常用的或者說最爲經典的是拉普拉斯算子進行的梯度計算。

圖像-》灰度-》拉普拉斯-》方差。

import cv2
imagePath ='./ai_hellohello.jpg'
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
result = cv2.Laplacian(gray, cv2.CV_64F).var()
print('ai_hellohello.jpg blur:',result )

通過以上代碼可以計算得到一個值,可能是幾百可能是幾千,模糊的就是幾十。

但有個問題比較值得深思的時候,閾值怎麼設置來區分?

同樣的尺寸,不同的清晰度直接比較還是會出現一定的區分度。

但是不同尺寸的比較就不能用一個閾值來設置了。

對於人臉識別中,對人臉的清晰度的檢測就是會遇到這個問題。

一個像素尺寸比較大的模糊人臉在進行resize到一個小的尺寸的時候,拉普拉斯方差值同樣是會提升的,而且有可能提升很多倍。

 

也就是,讓我們比較兩個一樣高的人,看看誰更重,看身材還是大致準確的評估出來,

但是 倆個身高不高的人,僅僅看身材是無法評估出來的。

 

所以,我建議是自己分析圖片尺寸的區間劃分出來,對每個區間去做分析,在每個區間上設置一個合適的閾值來對圖片進行模糊和清晰度的評判。

當然,更爲有效的方式就是神經網絡CNN去訓練,如果對人臉的分析 那就要先檢測圖像中的人臉區域再去做判斷。

不要拿一個包含背景的圖片整圖去分析。

 

參考:https://www.jianshu.com/p/60ac53013be4

 

如果你有好的想法,或者希望探討,歡迎加我微信號:ai_hellohello

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章