目录
预备知识
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
膨胀和腐蚀
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
1. 常用的结构元素
在matlab中,可以用strel函数,生成一些常用的结构元素。
strel返回的不是矩阵,而是一个strel对象,它可以直接传给imdilate作为参数。也可以通过getnhood得到对应的矩阵。例如:
se = strel('diamond', 3) B = getnhood(se)
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
组合运算
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
1. 其他复合操作
在matlab中,使用bwmorph可以实现多种形态学运算
用法:
g = bwmorph(f, operation, n);
其中,operation是一个指定操作的字符串,n指定操作的重复次数,缺省是1。
例子:
g1 = bwmorph(f, 'thin', 1); g2 = bwmorph(f, 'thin', 2); ginf = bwmorph(f, 'thin', Inf);
骨骼化(也称为提取骨架):
fs = bwmorph(f, 'skel', Inf);
骨骼化的结果中会有一些毛刺,我们可以对起进行修剪,使用endpoints函数实现:
fs = fs&~endpoints(fs)
标记连通分量
1. 标记连通分量
一个像素p的上下左右四个像素称为4邻接像素,上下左右再加上四个对角线像素称为8邻接像素。
如果两个像素p1和pn之间存在一系列像素p1,p2,...pn,其中每相邻两个之间都是4邻接的,则称p1和pn是4连通的;如果每相邻两个像素之间都是8邻接的,则称p1和pn是8连通的;如果不存在这样的路径,则称为p1和pn是不连通的。p1,p2,...pn称为p1到pn的一条路径。与p连通的所有像素的集合称为包含p的连通分量。
在matlab中,可以由bwlabel函数来找出连通分量,为不同的连通分量标上不同的标记。
[L num] = bwlabel(f, conn)
conn是4或者8,表示选择4连通或者8连通。
形态学重构
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
1. 由重构做开运算
普通的开运算可以去掉较小的对象,操作是先腐蚀,再膨胀。但是开运算在膨胀中会使形状变形。
可以用重构代替膨胀来做开运算,这个运算定义为<<latex: execution failed [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
例子:
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>
<<Include: 执行失败 [Missing parentheses in call to 'print'. Did you mean print(...)?] (see also the log)>>