理论

因为清晰聚焦的图像有着比模糊图像更大的灰度差异,可以将方差函数作为评价函数:
方差函数 - 图1
其中:方差函数 - 图2为整幅图像的平均灰度值,该函数对噪声比较敏感,图像画面越纯净,函数值越小。
https://blog.csdn.net/Real_Myth/article/details/50827940

代码

  1. def variance(img):
  2. '''
  3. :param img:narray 二维灰度图像
  4. :return: float 图像约清晰越大
  5. '''
  6. out = 0
  7. u = np.mean(img)
  8. shape = np.shape(img)
  9. for x in range(0,shape[0]):
  10. for y in range(0,shape[1]):
  11. out+=(img[x,y]-u)**2
  12. return out

https://blog.csdn.net/Greepex/article/details/90183018

  1. def _Variance(self, imgName):
  2. """
  3. 灰度方差乘积
  4. :param imgName:
  5. :return:
  6. """
  7. # step 1 图像的预处理
  8. img2gray, reImg = self.preImgOps(imgName)
  9. f = self._imageToMatrix(img2gray)
  10. # strp3: 绘制图片并保存 不应该写在这里 抽象出来 这是共有的部分
  11. score = np.var(f)
  12. newImg = self._drawImgFonts(reImg, str(score))
  13. newDir = self.strDir + "/_Variance_/"
  14. if not os.path.exists(newDir):
  15. os.makedirs(newDir)
  16. newPath = newDir + imgName
  17. cv2.imwrite(newPath, newImg) # 保存图片
  18. cv2.imshow(imgName, newImg)
  19. cv2.waitKey(0)
  20. return score

https://github.com/Leezhen2014/python—/blob/master/BlurDetection.py