首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sobel面具的混淆

Sobel面具的混淆
EN

Stack Overflow用户
提问于 2013-03-05 18:57:39
回答 2查看 1.4K关注 0票数 0

索贝尔(Gx和Gy)的确切面具是什么?我所看到的是关于人们如何写它的两种类型,如下所示,

风格1

代码语言:javascript
复制
Gx = [-1 -2 -1
        0 0 0
        1 2 1]

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

风格2

代码语言:javascript
复制
Gx = [-1 0 1
      -2 0 2
      -1 0 1]

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

编辑的

@Aurelis

在Matlab中->(第x行)

在OpenCV -> (col x行)中

然而,下面的图表对两者都是正确的。

代码语言:javascript
复制
-->column
^
|row
|

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

@Abhishek您使用样式1计算水平和垂直边缘?Gx代表水平边缘,而Gy代表垂直边缘?那意味着样式2是对它的补充吗?就像。计算Gx会给出垂直边,Gy会给水平边吗?

EN

回答 2

Stack Overflow用户

发布于 2013-03-05 19:52:59

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

Gx =-1-2-1.0 0<--将提取Y方向的特征,而不是X方向的特征.1 2 1

Gy = -1 0 1 -2 0 2<--将提取X方向的特征,而不是Y方向的特征。-1 0 1

这可以用一个简单的二维卷积来验证.

原始图像:

使用Style1,Gx:

使用style1,Gy:

票数 3
EN

Stack Overflow用户

发布于 2013-03-05 19:49:23

如果您使用的是数学符号,正确的掩码是样式2(参见这里)。

您的困惑可能是由于矩阵之间的差异,在MATLAB和OpenCV。MATLAB矩阵按列-大数顺序指定,而OpenCV矩阵按行-大顺序指定.

样式1以列的主要方式表示Sobel掩码,样式2按行的主要顺序表示相同的掩码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15231863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档