计算开放cv中laplacian方差的模糊度

时间:2018-04-13 01:45:54

标签: python opencv image-processing computer-vision

我尝试获取图像的模糊度。我参考this tutorial来计算开放式cv中laplacian的方差。

import cv2
def variance_of_laplacian(image):
  return cv2.Laplacian(image, cv2.CV_64F).var()

def check_blurry(image):
  """
  :param: the image 
  :return: True or False for blurry
  """
  gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  fm = variance_of_laplacian(gray)
  return fm

当我尝试从两张图像中计算fm时,这些图像看起来完全相同但尺寸不同。

filePath = 'small.jpeg'
image1 = cv2.imread(filePath)
print('small image shape', image1.shape)
print('small image fm', check_blurry(image1))

filePath = 'large.jpg'
image2 = cv2.imread(filePath)
print('large image shape', image2.shape)
print('large image fm', check_blurry(image2))

输出是:

small image shape (1440, 1080, 3)
small image fm 4.7882723403428065
large image shape (4032, 3024, 3)
large image fm 8.44476634687877
显然,小图像缩小了2.8的大图像比例。 fm与图像的大小有关吗?如果是这样,他们之间的关系是什么?或者是否有任何解决方案来评估不同尺寸图像的模糊度?

1 个答案:

答案 0 :(得分:0)

“fm与图像大小有关吗?”

是部分(至少在您的问题方面),因为如果缩放图像,则必须插入像素值。降尺度不仅会丢失信息,还会通过像素插值创建信息(如果它不是最近邻插值),从而影响结果图像的方差。但这仅适用于缩放图像,而不适用于首先不同的图像。