【问题标题】:Is the Sobel Filter meant to be normalized?Sobel 过滤器是否意味着要归一化?
【发布时间】:2013-04-09 02:06:44
【问题描述】:

x-导数 Sobel 看起来是这样的:

-1 0 +1
-2 0 +2
-1 0 +1

假设我的图像中有两个样本看起来像这样(0=黑色,1=白色):

0 0 1            1 0 0
0 0 1      &     1 0 0
0 0 1            1 0 0

如果我执行卷积,我将分别得到 4 和 -4。

所以我的自然反应是将结果标准化 8 并将其转换 0.5 - 那是对的吗? (我想知道找不到维基百科等提及任何规范化)

编辑: 我使用 Sobel 滤波器创建一个 2D 结构张量(带有导数 dX 和 dY):

                   A B 
Structure Tensor = C D

with  A = dx^2 
      B = dx*dy
      C = dx*dy 
      D = dy^2

最终我想将结果存储在 [0,1] 中,但现在我只是想知道是否必须规范化 Sobel 结果(默认情况下,不仅仅是为了存储它),即:

A = dx*dx 
//OR
A = (dx/8.0)*(dx/8.0)
//OR
A = (dx/8.0+0.5)*(dx/8.0+0.5)

【问题讨论】:

  • 它只取决于您的应用程序。如果目标是存储它并将结果可视化为位图,那么您应该平移和缩放以使其落在 0..255 范围内。你的目标是什么?
  • “所以我的自然反应是将结果标准化 8 并将其转换 0.5 - 对吗?”你对什么的回应?
  • @WhitAngl:存储和可视化是最终目标(所以我会在最后进行适当的规范化/翻译),但我必须在两者之间进行更多计算。而且我想知道 Sobel 过滤器是否必须始终标准化(请参阅更新的问题)。
  • @Lajos Arpad:对获得不再在输入范围内的结果的自然反应,即 [0=black to 1=white]
  • 对任何卷积进行归一化的唯一原因是我想查看结果,或者算法需要归一化。如果您只是将生成的系数用于进一步计算,则没有理由进行归一化。

标签: image-processing discrete-mathematics


【解决方案1】:

Sobel滤波器是一维有限差分滤波器的组合:

[ 1  0  -1 ] / 2

和另一个维度的平滑过滤器:

[ 1  2  1 ] / 4

因此,通常定义的内核的正确归一化是 1/8。

当需要对导数进行正确估计时,需要进行这种归一化。在计算边缘检测的梯度大小时,缩放是无关紧要的。

平滑滤波器中的 1/4 是将其归一化为 1。有限差分滤波器中的 1/2 来自比较的两个像素之间的距离。导数定义为[f(x+h)-h到零的极限>f(x)]/h。对于有限差分逼近,我们可以选择h=1,得到一个过滤器[1,-1],或者h=2,得到上面的过滤器。 h=2 的优点是过滤器是对称的,如果 h=1 您最终会计算两个像素中间的导数,因此结果会发生偏移半个像素。

【讨论】:

    【解决方案2】:

    Sobel 滤波器在数学上正确的归一化是 1/8,因为它将结果带入每个像素一个灰度级的自然单位。但在实际编程中,这不一定是正确的做法。

    【讨论】:

      【解决方案3】:

      Sobel 滤波器是一种沿水平或垂直方向进行微分的启发式方法。因此,标准化可以是任意的。我发现遵循归一化比其他方法更有意义,后者占绝对值总和的一半。

      http://www.imagemagick.org/discourse-server/viewtopic.php?t=14434&start=30

      事实上,scikit-image 使用了这种方法。例如,

      >>>from skimage import filters
      >>>import numpy as np
      >>>one[:,0] = 2
      >>>one
      array([[ 2.,  1.,  1.],
             [ 2.,  1.,  1.],
             [ 2.,  1.,  1.]])
      >>>filters.sobel_v(one)
      array([[ 0.,  0.,  0.],
             [ 0., -1.,  0.],
             [ 0.,  0.,  0.]])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-15
        • 1970-01-01
        • 1970-01-01
        • 2013-02-05
        • 2010-09-07
        • 2016-08-29
        • 2019-03-10
        • 2015-03-12
        相关资源
        最近更新 更多