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: