matlab 形态学 颗粒_数字图像处理Matlab-形态学图像处理(附代码)

这是一篇基于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豆干花生,欢迎关注哦~

你可能感兴趣的:(matlab,形态学,颗粒)