计算对角索贝尔算子

问题描述 投票:0回答:1

我试图计算对角线(从左下到右上)索贝尔算子,但无法做到。我知道它应该是什么样子,但我无法到达那里。 :( 因此,如果有好心人可以解释一下,请提前致谢。

我已经尝试从水平和垂直索贝尔算子中合成它,但陷入了多个错误的结果。

math computer-vision
1个回答
0
投票

x 和 y 导数共同构成梯度向量。使用 Sobel 算子,您可以计算这两个导数。

将梯度向量投影到单位向量上,即可求出方向梯度。您想要的方向对应于单位向量

[sqrt(2), -sqrt(2)]
。投影是点积。因此,您想要的衍生图像对应于:

dx = sobel(img)
dy = sobel(img)
out = sqrt(2)*dx - sqrt(2)*dy

知道 Sobel 算子与卷积一起应用,并且卷积是关联且线性的,我们可以看到上面的操作对应于具有由

sqrt(2)*sobel_x - sqrt(2)*sobel_y
形成的内核的单个卷积。我们可以计算这个内核:

         0    2.8284    2.8284
   -2.8284         0    2.8284
   -2.8284   -2.8284         0   

当然,您可以选择以不同的方式标准化内核,无论如何,Sobel 算子的大小都是错误的。所以你可以改为使用例如

     0     1     1
    -1     0     1
    -1    -1     0
© www.soinside.com 2019 - 2024. All rights reserved.