Sobel(Gx和Gy)的确切遮罩是什么?我所看到的是人们如何编写它的两种类型,如下所示,

样式1

Gx = [-1 -2 -1
        0 0 0
        1 2 1]

Gy = [-1 0 1
      -2 0 2
      -1 0 1]

样式2
Gx = [-1 0 1
      -2 0 2
      -1 0 1]

Gy = [-1 -2 -1
        0 0 0
        1 2 1]

编辑

@奥雷利斯

在Matlab中->(第x行)

在OpenCV中->(col x行)

但是,下面的图对两个都是正确的
-->column
^
|row
|

在Matlab中,如果使用样式1,则可能输出Gx ==水平边缘,如果使用样式2,则Gy ==垂直边缘,而Gx ==水平边缘,Gy ==垂直边缘。两者都会产生相同的输出(由于行的主要顺序,内部操作可能会有所不同)。

@Abhishek您正在使用样式1计算水平和垂直边缘吗?和Gx对应于水平边缘,而Gy对应于垂直边缘?
这是否意味着样式2是对此的补充?例如。计算Gx将给出垂直边缘,而Gy将给出水平边缘?

最佳答案

样式2是正确的。但是,使用两种样式,由于内核与图像卷积,我们将获得相同的结果

Gx = [-1 -2 -1
0 0 0 1 2 1]

Gy = [-1 0 1
-2 0 2 -1 0 1]

这可以通过使用简单的2D卷积来验证。

原始图片:

使用Style1,Gx:

使用style1,Gy:

10-08 05:06