【发布时间】:2018-01-07 19:31:03
【问题描述】:
我有以下矩阵:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 1 0 0 0 0 0
1 0 0 0 0 1 1
1 0 0 0 0 1 1
我想用下面的结构元素来扩展它:
1 0 0
1 1 1
1 1 1
我已经在 Matlab 上进行了膨胀,但结果与我手动做的不匹配。所以我想我在这里遗漏了一些东西。据我所知,如果结构元素的任何“1”触及矩阵中的任何“1”,则意味着它是命中,当前窗口的中心应设置为 1。如果我在这种时尚我会得到关注(不考虑边缘):
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 1 0 0 0 0
1 1 1 0 1 1 0
1 1 1 0 1 1 1
1 0 0 0 0 1 1
但是Matlab给出了以下结果:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 **0** **0** 0 0 0 0
1 1 1 0 1 1 0
1 1 1 0 1 1 1
1 1 0 0 1 1 1
在不考虑边缘的情况下,它几乎看起来像我的结果,但用粗体样式设置的像素在我的结果中为“1”,但在 Matlab 的结果中为“0”。我究竟做错了什么?那些'0'下面的像素是原始图像中的'1',当窗口的中心在那些'0'上时,结构元素在那个空间有'1',所以它是一个命中并且中心必须设置为'1'但是Matlab 不这样做。谁能解释我为什么?我在这里遗漏了一些重要的东西吗?
【问题讨论】:
-
展示你是如何做到的......
-
有两种等效的方法来定义膨胀。下面是 Somaye 使用的那个,还有你的。为了使这两个等效,您需要在两个定义之一中镜像结构元素。似乎是您的定义需要镜像 SE 来匹配 MATLAB 使用的定义。不同的作者对它的定义不同,这很好。
标签: matlab image-processing image-morphology