【问题标题】:What's the theory behind computing variance of an image?计算图像方差的理论是什么?
【发布时间】:2018-06-27 10:39:50
【问题描述】:

我正在尝试使用 LaplacianFilter 计算图像的模糊度。

根据这篇文章:https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/ 我必须计算输出图像的方差。问题是我从概念上不理解如何计算图像的方差。

每个像素对于每个颜色通道都有 4 个值,因此我可以计算每个通道的方差,但是通过计算方差-协方差矩阵,我得到 4 个值,甚至 16 个值,但是根据 OpenCV 示例,它们只有1 个号码。

在计算出这个数字之后,他们只是使用阈值来做出二元决定,图像是否模糊。

附言。我绝不是该主题的专家,因此我的陈述毫无意义。如果是这样,请编辑问题。

【问题讨论】:

  • “他们只是玩弄阈值来做出二元决策”。确实。无法声明图像是否在焦点上。例如,您在此处计算的方差取决于场景中碰巧有多少边。唯一能做的就是比较同一场景在不同焦深的图像,并确定哪一张最清晰(它的方差最大)。

标签: opencv computer-vision pixel variance blurry


【解决方案1】:

关于句子描述:

模糊图像的边缘是smoothed,所以variance很小。


1.如何计算方差。

post的核心功能是:

def variance_of_laplacian(image):
    # compute the Laplacian of the image and then return the focus
    # measure, which is simply the variance of the Laplacian
    return cv2.Laplacian(image, cv2.CV_64F).var()

由于Opencv-Python使用numpy.ndarray来表示图像,那我们看看numpy.var:

Help on function var in module numpy.core.fromnumeric:

var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<class 'numpy._globals$
    Compute the variance along the specified axis.

    Returns the variance of the array elements, a measure of the spread of a distribution.
    The variance is computed for the flattened array by default, otherwise over the specified axis.

2。用于图片

也就是说,var 是在扁平拉普拉斯图像或扁平一维数组上计算的。

计算数组x的variance,是:

var = mean(abs(x - x.mean())**2)


例如:

>>> x = np.array([[1, 2], [3, 4]])
>>> x.var()
1.25
>>> np.mean(np.abs(x - x.mean())**2)
1.25

对于拉普拉斯图像,它是edged 图像。使用GaussianBlur 和不同的r 制作图像,然后对它们执行laplacian filter,并计算变量:

模糊图像的边缘是smoothed,所以variance 很小。

【讨论】:

    【解决方案2】:

    首先,如果您看到您提供的教程,他们会将图像转换为灰度,因此它将只有 1 个通道和 1 个方差。您可以为每个通道执行此操作并尝试使用它计算更复杂的公式,或者仅使用所有数字的方差...但是我认为作者也将其转换为灰度,因为它是融合信息的好方法在作者提供的一篇论文中,实际上是这样说的

    对焦良好的图像的灰度变化应该很大 级别。

    教程的作者其实是用简单的方式解释的。首先,想想拉普拉斯滤波器的作用。它将显示良好定义的边缘,这是一个使用他拥有的图片网格的示例。 (点击查看详情)

    如您所见,模糊的图像几乎没有任何边缘,而聚焦的图像有很多反应。现在,如果你计算方差会发生什么。让我们想象一下白色是 255 而黑色是 0 的情况。如果一切都是黑色的......那么方差很低(模糊的情况),但如果它们有一半和一半那么方差就很高。

    然而,正如作者已经说过的,这个阈值取决于领域,如果你拍一张天空的照片,即使它是焦点,它也可能具有低方差,因为它非常相似并且没有很好的定义边缘...

    我希望这能回答你的疑问:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-27
      • 2015-05-09
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 2021-12-03
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多