理论

Vollath函数定义如下:
Vollath函数 - 图1
其中:Vollath函数 - 图2为整幅图像的平均灰度值,M和N分别为图像宽和高。
https://blog.csdn.net/Real_Myth/article/details/50827940

代码

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

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

  1. def _Vollath(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. source=0
  11. x,y=f.shape
  12. for i in range(x-1):
  13. for j in range(y):
  14. source+=f[i,j]*f[i+1,j]
  15. source=source-x*y*np.mean(f)
  16. # strp3: 绘制图片并保存 不应该写在这里 抽象出来 这是共有的部分
  17. newImg = self._drawImgFonts(reImg, str(source))
  18. newDir = self.strDir + "/_Vollath_/"
  19. if not os.path.exists(newDir):
  20. os.makedirs(newDir)
  21. newPath = newDir + imgName
  22. cv2.imwrite(newPath, newImg) # 保存图片
  23. cv2.imshow(imgName, newImg)
  24. cv2.waitKey(0)
  25. return source

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

8. Vollath函数

Vollath函数定义如下:
Vollath函数 - 图3
其中: u为整幅图像的平均灰度值,M和N分别为图像宽和高。
代码:

  1. def Vollath(img):
  2. # 图像的预处理
  3. reImg = cv2.resize(img, (800, 900), interpolation=cv2.INTER_CUBIC)
  4. img2gray = cv2.cvtColor(reImg, cv2.COLOR_BGR2GRAY) #
  5. f = self._imageToMatrix(img2gray)
  6. D = 0
  7. x,y=f.shape
  8. for i in range(x-1):
  9. for j in range(y):
  10. D += f[i,j]*f[i+1,j]
  11. D = D - x * y * np.mean(f)
  12. return D

https://gist.github.com/JuneoXIE/d595028586eec752f4352444fc062c44