2013-03-05 20 views
0

索贝尔(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] 

编辑

@Aurelis

在Matlab中 - >(行X列)

在的OpenCV - >(列X行)

但是,下面的图是用于既

-->column 
^ 
|row 
| 

大概在Matlab正确将输出Gx ==水平边缘,如果使用样式1,则Gy ==垂直边缘,如果使用样式2,则使用Gx ==水平边缘,Gy ==垂直边缘。两者都会产生相同的输出(内部操作可能因col-row主要订单而有所不同)。

@Ahishek您正在使用样式1来计算水平和垂直边缘?并且Gx对应于水平边缘,而Gy对应于垂直边缘? 这是否意味着风格2是补充?例如。计算Gx会产生垂直边缘而Gy会产生水平边缘?

+0

您已切换的订单你的编辑给我。 MATLAB是第二个命令; OpenCV的第一个, – Aurelius 2013-03-15 17:11:20

回答

1

如果您使用的是数学表示法,则适当的蒙版是样式2(请参阅here)。

您的困惑可能是由MATLAB和OpenCV中的矩阵之间的差异引起的。 MATLAB矩阵按列主要顺序指定,而OpenCV矩阵按行主要顺序指定。

样式1以列主要方式表示索贝尔蒙版,样式2表示按行主要顺序相同的蒙版。

+0

刚刚编辑。现在可能是正确的? – Mzk 2013-03-16 02:21:31

+0

我不太了解你的编辑。也许[this](http://en.wikipedia.org/wiki/Row-major_order)可能会有所帮助。 – Aurelius 2013-03-18 15:08:36

+0

啊。我懂了。太好了,谢谢。 – Mzk 2013-03-20 05:54:06

3

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

Gx = [-1 -2 -1 ---将在Y方向提取特征而不是在X方向。 1 2 1]

Gy = [-1 0 1 -2 0 2 < ---将在X方向而不是在Y方向上提取特征。 -1 0 1]

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

原始图像:original image

使用样式1,GX: enter image description here

使用STYLE1,戈瑞: enter image description here