膨胀算法——分解更多形状
在我的之前关于膨胀算法的帖子我讨论了构造元素分解。我们研究了矩形域结构元素的分解。今天我想继续这个想法,看看其他结构元素形状的分解。
这个斯特雷function提供多种平面结构元素形状:
- 钻石
- 磁盘
- 行
- 八边形
- 一对
- 周期线
- 矩形
- 广场
(斯特雷函数还提供非平面形状和具有任意域的形状。)
让我们看看“钻石”形状。医生说SE=strel('菱形',R)创建一个扁平的菱形结构元素,其中R指定从结构元素原点到菱形顶点的距离。”例如:
se1 = strel (“钻石”, 5)
se1 =包含61个邻居的平面STREL对象。分解:4 STREL对象包含一共有17个邻居邻居:1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
显示显示结构元素在其域内有61个邻居,但4个分解的结构元素总共只有17个邻居。
什么形状构成分解?我们可以使用getsequence和格特伍德找出答案。
se1_seq=getsequence(se1);对于k = 1:元素个数(se1_seq)
getnhood(se1_seq(k))
Ans = 0 1 0 1 1 1 0 1 0
Ans = 0 1 0 1 0 1 0 1 0
ans=0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0
Ans = 0 1 0 1 0 1 0 1 0
终止
这个分解来自Rein van den Boomgard和Richard van Balen,“使用位图二值图像的快速形态图像变换方法”,计算机视觉、图形和图像处理:模型和图像处理,第54卷,第3期,1992年5月,第252-254页。(那本杂志的名字真是太好了!)
现在我们来看看“磁盘”结构元素。默认情况下,strel('磁盘',R)实际上给了你一个近似对于圆盘形状,其中近似值基于一种称为使用周期线的径向分解。参考资料来源如下:
- 罗尔夫·亚当斯,《圆盘和球体的径向分解》计算机视觉,图形和图像处理:图形模型和图像处理,第55卷,第5期,1993年9月,第325-332页。
- 罗纳德·琼斯和皮埃尔·索伊,《周期线:定义、级联和在粒度测定中的应用》模式识别字母,第17卷,1996年,1057-1063年。
se2 = strel (“磁盘”, 5)
se2=包含69个邻居的平面STREL对象。分解:6个STREL对象,共包含18个邻居邻居邻居:0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
类似于“钻石”形状,“磁盘”Shape被分解成一系列较小的结构元素:
se2_seq=getsequence(se2);对于k=1:numel(se2)
getnhood (se2_seq (k))
ans=1
ans=1 0 0 1 0 0 1
ans=1
ans=0 0 1 0 1 0 0
ans=1
ans=1
终止
我上面提到过strel('磁盘',R)提供磁盘的近似值。让我们看看半径较大时近似值是什么样子:
se3=strel(“磁盘”,21岁);imshow(getnhood(se3),“初始放大”,“适合”)
这绝对是一个近似值。它看起来更像八边形而不是圆形。的语法strel('圆盘',R,N)让你对近似有更多的控制。N可以是0、4、6或8。值4、6和8表示不同的近似级别。默认值为4。带N等于8时,结果看起来更接近一个圆,但由于分解效率较低,因此膨胀速度稍慢。
se4=strel(“磁盘”21岁,8);imshow (getnhood (se4),“初始放大”,“适合”)
设置N=0问斯特雷构造无分解近似的圆盘形状。
se5=strel(“磁盘”, 21, 0); imshow(格特伍德(se5),“初始放大”,“适合”)
使用getsequence我们可以看到,没有分解se5:
numel(getsequence(se5))
ans=1
下一次我们将用分解的结构元素做一些计时实验。
- 类别:
- 膨胀算法
评论
如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。