17.6 使用纹理滤波器分割图像(2)http://book.51cto.com 2009-06-24 13:35 张强/王正林 电子工业出版社 我要评论()
17.6 使用纹理滤波器分割图像(2) 分割后的图像目标区域显示为白色,跟原图像相比,图像顶部的纹理被过度分割,而底部的纹理则以一个整体被分割出来,可以使用bwareaopen函数提取图像的底部纹理,如图17-31左边图像所示。在这个图像中,分割出的边界并不光滑,并且含有很多孔洞,可以使用imclose函数对图像执行形态学关操作,处理后的图像如图17-31右边图像所示。 使用imfill函数对图像中的孔洞进行填充,填充后的图像如图17-32左边图像所示,跟原图像相比,生成的图像底部纹理并不完全吻合,可以使用这个图像对原图像顶部的纹理进行分割,得到的图像顶部纹理如图17-32右边图像所示。
使用entropyfilt进行滤波分割。 代码如下:
使用entropyfilt函数对图像进行滤波,求取纹理图像,如图17-33左边图像所示。选择合适的阈值将纹理图像转化为二值图像,如图17-33右边图像所示。 使用bwareaopen函数对图像进行开操作,得到图像顶部纹理的掩膜图像,如图17-34所示。
分别提取图像的顶部纹理和底部纹理,如图17-35所示,其中左边图像为顶部纹理的图像,右边图像为底部纹理的图像。 上下两种纹理的边界线以白色显示,如图17-36所示。
使用stdfilt和rangefilt进行滤波分割。 代码如下:
除了使用entropyfilt函数,还可以使用stdfilt函数和rangefilt函数来达到类似的分离效果,分离的效果如图17-37所示,其中左边图像为使用stdfilt函数滤波后分割的图像,右边图像为使用rangefilt函数滤波后分割的图像。
|
|