您的位置:首页 > 编程语言 > MATLAB

形态学处理

2016-04-09 15:03 363 查看
形态学处理利用数学中的“集合”概念对图像进行处理,按照处理对象不同,分为对二值图像处理和对灰度图像处理,处理函数大部分都是相同的,除了击中或击不中变换(仅适用于二值图像)。

二值图像

1.膨胀

D=imdilate(A,B);A为输入图像,B为结构元。膨胀是图像中的目标“生长”或“变粗”的操作。

2.腐蚀

D=imerode(A,B);A为输入图像,B为结构元。腐蚀是图像中的目标“收缩”或“变细”的操作。

3.结构元

结构元本质上和掩膜比较相似,也是0-1矩阵,不过进行的是集合运算而不是卷积运算。除了自己写结构元,也有特定的函数来产生结构元。

se=strel(shape,parameters)

shape是用来指定结构元形状的字符串,parameters值描述形状信息的参数列表。详见help.

3.开操作

先腐蚀,再膨胀 C=imopen(A,B)

开操作可以去除所有不能包含结构元的部分,平滑目标的轮廓,断开了细的连接部分。

4.闭操作

先膨胀,再腐蚀 C=imclose(A,B)
闭操作可以平滑目标的轮廓,并且连接窄的断裂并填满细长的“港湾”,填满闭结构元小的洞。
5.击中或击不中变换
结构元是一对儿结构元,A被B1腐蚀 ∩ A的补集被B2腐蚀
C=bwhitmiss(A,B1,B2)

6.bwmorph函数可以执行许多以膨胀、腐蚀为基础的形态学操作

g=bwmorph(f,opration,n)

operation是指定的所希望运算的字符串,n是重复次数,默认为1,可以是Inf.

举例:

g=bwmorph(f,'thin',n),细化没有洞的物体到最低限度相连的笔画,有洞的可以细化为环形。

g=bwmorph(f,'skel',n),骨骼化图像。

g=bwmorph(f,'thicken',n),粗化物体,并且不加入不连贯的1

g=bwmorph(f,'spur',n),去掉“毛刺”像素

7.标记连通分量

连通分量就是前景图像内部单个元素之间的关系,是通过连通得到的像素集合。连通分为4连通和8连通。

计算二值图像中所有连通分量,用函数[L,num]=bwlabel(f,conn)

f为二值图像,connb表示联通方式(4或者8);L叫做标记矩阵,不同的联通分量分别用数字1,2,3...标记。num(可选)则给出找到的连通分量的总数。

8.形态学重建

重建是一种形态学变换,包括一幅原图像G(模板),一幅标记图像F(标记),一个结构元B。其中F被包含于G。

out=imreconstruct(marker,mask)

有一些重建和其他操作结合的方法并能取得很好的效果。

(1)通过重建开操作

对图像先进行腐蚀操作,利用腐蚀的图像作为标记,利用原图像作为模板,进行重建。

(2)填充空洞

函数g=imfill(f),这个函数对于二值图像和灰度图像处理起来略有不同,参考help。

(3)清除边界物体

g=imclearborder(f,conn),可以去除比周围物体更亮且与图像边界相连的结构。

灰度形态学

除了击中或击不中变换,的其他函数都一样,知识在图像理解含义上不同,有一些组合会产生特别的效果。

1.膨胀和腐蚀

从膨胀结果中减去腐蚀的结果,可产生形态学梯度,这是图像局部灰度变化的一种度量。

2.开操作和闭操作

开操作可以去除小的亮点细节,同时保留所有的灰度并保证较大的亮区特征不受干扰。

闭操作去除比结构元校的黑暗结构。

(1)两者组合可以平滑图像并去除噪声。

(2)交替顺序滤波

就是用不断增大的一系列结构元执行开—闭操纵。

for k=2:5

     se=strel('disk',k);

     fasf=imclose(imopen(fasf,se),se);

end

(3)开操作可以用来补偿非均匀照明的背景(就是图像背景的亮度不一样,有暗有亮)

顶帽操作,原图像减去图像开操作结果

q=imtophat(f,NHOOD),NHOOD为0--1组成的结构元

底帽操作,原图像减去图像闭操作结果

q=imbothat(f,NHOOD),NHOOD为0--1组成的结构元

这两个操作配合可以增强图像的对比度。

g=f+imtophat(f,se)-imbothat(f,se)

3.重建

1.h极小变换,抑制小的灰度峰值

imhmin

2.重建的开操作

fe=imerode(f,se);

fobr=imreconstruct(fe,f);

3.重建的闭操作 先对图像求补,再重建的开操作,再求补.  可以接在重建开操作以后,滤波更好

fobrc=imcomplement(fobr);

fobrce=imerode(fbrc,se);

fobrcbr=imcomplement(imrconstruct(fobrce,fobrc));

4.用重建移去复杂的背景

结合腐蚀,重建的开操作,并选择合适的结构元。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 图像处理