我试图计算对角线(从左下到右上)索贝尔算子,但无法做到。我知道它应该是什么样子,但我无法到达那里。 :( 因此,如果有好心人可以解释一下,请提前致谢。
我已经尝试从水平和垂直索贝尔算子中合成它,但陷入了多个错误的结果。
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