Matlab中的bwmorph函数解释

Matlab中的bwmorph函数解释


bwmorph:对二值图像的形态学操作。

BW2 = bwmorph(BW,operation)

BW2 =bwmorph(BW,operation,n)

BW2 = bwmorph(BW,operation)对二值图像应用形态学操作。

BW2 = bwmorph(BW,operation,n)应用形态学操作n次,n可以是Inf,这种情况下该操作被重复执行直到图像不再发生变化为止。

Operation是以下的字符串:

Operation

Description

'bothat'

是形态学上的“底帽”变换操作,返回的图像是原图减去形态学闭操作处理后的图像(闭操作:先膨胀再腐蚀)

'bridge'

连接断开的像素。也就是将0值像素置1如果他有两个非零的不相连(8邻域)的像素,比如:

1 0 0                                            1 1 0

1 0 1   经过bridge连接后变为  1 1 1

0 0 1                              0 1 1

'clean'

移除孤立的像素(被0包围的1)。比如下面这个模型的中心像素:

              0 0 0

              0 1 0

              0 0 0

'close'

执行形态学闭操作(先膨胀后腐蚀)

'diag'

利用对角线填充来消除背景中的8连通区域。比如:

0 1 0                                 1 1 0

1 0 0      经过diag变成   1 1 0

0 0 0                                 0 0 0

'dilate'

利用结构ones(3)执行膨胀操作。

'erode'

利用结构ones(3)执行腐蚀操作。

'fill'

填充孤立的内部像素(被1包围的0),比如下面模型的中心像素:

                1 1 1

                1 0 1

                1 1 1

'hbreak'

移除H连通的像素,例如:

1 1 1                          1 1 1

0 1 0            变成          0 0 0

1 1 1                          1 1 1

'majority'

将某一像素置1如果该像素的3×3邻域中至少有5个像素为1;否则将该像素置0

'open'

执行形态学开操作(先腐蚀后膨胀)

'remove'

移除内部像素。该选项将一像素置0如果该像素的4连通邻域都为1,仅留下边缘像素。

'shrink'

n = Inf时,将目标缩成一个点。没有孔洞的目标缩成一个点,有孔洞的目标缩成一个连通环。

'skel'

n = Inf时,移除目标边界像素,但是不允许目标分隔开,保留下来的像素组合成图像的骨架。

'spur'

移除刺激(孤立)像素。比如:

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  0  0                   0  1  0  0

1  1  0  0                   1  1  0  0

'thicken'

n = Inf时,通过在目标外部增加像素加厚目标直到这样做最终使先前未连接目标成为8连通域。

'thin'

n = Inf时,减薄目标成线。没有孔洞的目标缩成最低限度的连通边;有孔洞的目标缩成连通环。

'tophat'

执行形态学“顶帽”变换操作,返回的图像是原图减去形态学开操作处理之后的图像(开操作:先腐蚀再膨胀)。


对比下面简介理解

bwmorph
功能: 提取二进制图像的轮廓.
语法: BW2 = bwmorph(BW1,operation) ;
BW2 = bwmorph(BW1,operation,n) ; n为次数;
Operation的参数可以有多种选择,现归纳如下:
‘bothat’:闭包运算,即先腐蚀,在膨胀,然后减去原图像;
‘bridge’:做连接运算;
‘clean’:去除孤立的亮点;
‘close’:进行二值闭运算;
‘diag’:采用对角线填充来去除8邻域的背景;
‘dilate’:采用结构元素ones(3)做膨胀运算;
‘erode’:采用结构元素ones(3)作腐蚀运算;
‘fill’:填充孤立的黑点; 
‘hbreak’:断开H形连接;
‘Majority’:若像素的8邻域中有大于或等于5的元素为1,则像素为1,否则为0;
‘open’:执行二值开运算;
‘remove’:去掉内点,即若像素的4邻域都为1,则像素为0;
‘shrink’n=inf:做收缩运算,这样没有孔的物体收缩为一个点,而含孔的物体收缩为一个相连的环,环的位置在孔和物体外边缘的中间,收缩运算保持欧拉数不变,
‘skel’n=inf: 提取物体的骨架,即去除物体外边缘的点,但是保持物体不发生断裂,它也保持欧拉数不变。 ‘spur’:去除物体小的分支;
‘thicken’n=inf;对物体进行粗化,即对物体的外边缘增加像素,知道原来为连接的物体按照8邻域被连接起来。粗化保持欧拉数不变。
‘thin’n=inf:对物体进行细化,使得没有孔的物体收缩为最小连接棒,而含有孔的物体收缩为一个连接的环,同样细化保持欧拉数不变。
‘tophat’:用原图减去开运算后的图像;


支持类:
    输入图像BW1可以是数值或逻辑类型.必须是2-D, 实的和非稀疏的.输出图像BW2是逻辑型的.
 
例子:
        BW1 imread('circles.png');
        imview(BW1)
        BW2 bwmorph(BW1,'remove');
        BW3 bwmorph(BW1,'skel',Inf);
        imview(BW2)
        imview(BW3)


继续加入不同表达的链接,方便理解


案例显示:




  • 20
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值