这是一篇基于matlab,数字图像处理的形态学研究与实现的文章,希望能对你产生帮助。
我还写了一套《数字图像处理》(冈萨雷斯版本)的学习笔记,欢迎关注我的csdn同名主页,一起学习成长~
1.Objectives:
1.利用 MATLAB 研究二值形态学图像处理常用算法;
2.掌握 MATLAB 形态学图像处理基本操作函数的使用方法;
3.了解形态学的基本应用。
2.Experiment Content:
1.编程实现二值图像的基本形态学处理(腐蚀、膨胀、开运算和闭运算) ;选择不同结构元素筛选图像目标。
2.用形态学运算实现灰度图像的噪声平滑和图像边缘提取。
3.Experiment Principle:
见书《数字图像处理》
(冈萨雷斯著作,电子工业出版社于2009年12月1日出版)
4.Experiment Steps Result and Conlusion:
1、二值图像的形态学变换
需要编写的二值图像形态学变换函数:
functionnewbuf=BwFilter(oldbuf,select) 该函数调用 MATLAB 关于膨胀、腐蚀和图像筛选算法的相关函数,对二值图像进行相应的处理,最后结果存放在 newbuf 数组中。 编程实现 BwFilter()函数的功能。结构元素也可以用 ones 函数和 zeros函数创建。
2、对输入图像进行形态学操作
即腐蚀、膨胀、开运算和闭运算,改变结构元素形状、大小,重做上述实验,比较实验结果,分析结构元素对运算的影响;
图1 膨胀
图2 腐蚀
图3 开运算
图4 闭运算
Conv:相比较于原图像,因为腐蚀的结果要使得各像元比之前变得更小,所以适用于去除高峰噪声。而灰度值膨胀的结果会使得各像元比之前的变得更大,所以适用于去除低谷噪声。但是由于该实验中对原图像损失太大,使得膨胀后为较大颗粒,腐蚀后只剩较少颗粒。
开运算 = 先腐蚀运算,再膨胀运算(看上去把细微连在一起的两块目标分开了) 。即分割出图像。
闭运算 = 先膨胀运算,再腐蚀运算(看上去将两个细微连接的图块封闭在一起) 。即让图像更加充实。
改变结构元素形状、大小后效果:
(1)膨胀
(2)腐蚀
开运算
闭运算
Conv:改变结构元素的形状和大小,分别使用了’disk’、’square’、’ones’和自定义矩阵等类型,大小由参数决定。以膨胀为例,可以看到同类型下,增大结构元素大小,白点部分膨胀得更厉害,而不同类型下,膨胀的方向和程度有所不同。对于腐蚀则使图像被腐蚀,对于开运算图像细的部分连接被打断,结构参数大小越大,图像白色部分越少;对于闭运算,图像连接增多,白色部分变多并变模糊,同样大小增大,程度加深,不同类型效果不同。
3、实现功能
以图FigP0936(bubbles_on_black_background).tif 为例完成分别以下功能:
(1)提取与图像边界融合的颗粒
(2)提取彼此交叠的颗粒
(3)提取不交叠的颗粒
提示:
(1)可利用区域填充算法。如图所示为源图像,可将图像先转换为二值图像,然后对其进行取反,这样进行区域填充(闭运算)的结果将为与边界相连的颗粒,再与源图像进行比较,即可得出在源图像中与边界相连的颗粒图像。
(2)可利用图像的腐蚀与膨胀操作。先用模板对图像进行腐蚀操作,由于相交叠的颗粒面积必然比独立的颗粒大,因此腐蚀操作之后剩下的部分为交叠颗粒的部分,再对其进行膨胀,(开运算)将其与源图像进行比较操作,则可得出交叠的颗粒图像。
(3)得出交叠的颗粒之后,用源图像对其相减,则得出的为独立分布的颗粒图像
(1)
(2)
(3)
Conv:(1)对原图进行填充,可明显观察到原先的白点变多,对原图实现了滤除噪声的效果。(2)对原图先腐蚀运算,再膨胀运算(看上去把细微连在一起的两块目标分开了) 。是进行了开运算即分割出主要图像。(3)在进行相减,则为出去的小颗粒也就是分散的颗粒图。
【附录】实现代码
由于排版问题,无法显示代码块,需要原码的欢迎点击下方:
程序一
程序二
程序三
附:本人对数学形态学的研究笔记
都看到这里了不如点个赞加关注哦~
还有很多优质文章在我的csdn主页,ID豆干花生,欢迎关注哦~