matlab 二值图像的数学形态学变换

matlab 二值图像的数学形态学变换,第1张

1、dilate函数

该函数能够实现二值图像的膨胀 *** 作,有以下形式:

BW2=dilate(BW1,SE)

BW2=dilate(BW1,SE,…,n)

其中:BW2=dilate(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行膨胀 *** 作。输入图像BW1的类型为double或unit8,输出图像BW2的类型为unit8。BW2=dilate(BW1,SE,…,n)表示执行膨胀 *** 作n次。

2、erode 函数

该函数能够实现二值图像的腐蚀 *** 作,有以下形式:

BW2= erode(BW1,SE)

BW2= erode(BW1,SE,…,n)

其中:BW2= erode(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行腐蚀 *** 作。输入图像BW1的类型为double或unit8,输出图像BW2的类型为unit8。BW2= erode(BW1,SE,…,n)表示执行腐蚀 *** 作n次。

3、bwmorph函数

该函数的功能是能实现二值图像形态学运算。它的格式如下:

① BW2=bwmorph(BW1,operation)

② BW2=bwmorph(BW1,operation,n)

其中:对于格式①,bwmorph函数可对二值图像BW1采用指定的形态学运算;对于格式②,bwmorph函数可对二值图像BW1采用指定的形态学运算n次。operation为下列字符串之一:

‘clean’:除去孤立的像素(被0包围的1)

‘close’:计算二值闭合

‘dilate’:用结构元素计算图像膨胀

‘erode’:用结构元素计算图像侵蚀

4、imclose函数

该函数功能是对灰度图像执行形态学闭运算,即使用同样的结构元素先对图像进行膨胀 *** 作后进行腐蚀 *** 作。调用格式为:

IM2=imclose(IM,SE)

IM2=imclose(IM,NHOOD)

5、imopen函数

该函数功能是对灰度图像执行形态学开运算,即使用同样的结构元素先对图像进行腐蚀 *** 作后进行膨胀 *** 作。调用格式为:

IM2=imopen(IM,SE)

IM2=imopen(IM,NHOOD)

3用MATLAB编程实现图像去噪

31 二值形态学消除图像噪声

用二值形态学方法对图像中的噪声进行滤除的基本思想[4]是:使用具有一定形态的结构元素去度量和提取图像中的对应形状,以达到消除图像噪声的目的。下面是二值形态学消除图像噪声的一个实例。

首先将tiretif图像加入椒盐噪声,这种噪声前面已经介绍过,它在亮的图像区域内是暗点,而在暗的图像区域内是亮点,再对有噪声图像进行二值化 *** 作,再对有噪声图像进行开启 *** 作,由于这里的结构元素矩阵比噪声的尺寸要大,因而开启的结果是将背景上的噪声点去除了,最后对前一步得到的图像进行闭合 *** 作,将轮胎上的噪声点去掉了。

下面是算法实现的程序代码:

I1=imread('tiretif'); %读灰度图tiretif

I2=imnoise(I1,'salt & pepper'); %在图像上加入椒盐噪声

figure,imshow(I2) %显示加椒盐噪声后的灰度图像

I3=im2bw(I1); %把加椒盐噪声后的灰度图像二值化

figure,imshow(I3) %显示二值化后的图像

I4=bwmorph(I3,'open'); %对二值噪声图像进行二值形态学开运算

figure,imshow(I4) %显示开运算后的图像

I5=bwmorph(I4,'close'); %对上述图像进行形态学闭运算

figure,imshow(I5) %显示最终处理后的图像

检测出边缘后,使用bwmorph函数细化得到边缘骨架,然后用Hough变换检测直线,程序比较长,可以参看数字图像处理(MATLAB版)张德丰编著或者数字图像处理(MATLAB版)冈萨雷斯编著 阮秋奇 译 等书。

1、dilate函数

该函数能够实现二值图像的膨胀 *** 作,有以下形式:

BW2=dilate(BW1,SE)

BW2=dilate(BW1,SE,…,n)

其中:BW2=dilate(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行膨胀 *** 作。输入图像BW1的类型为double或unit8,输出图像BW2的类型为unit8。BW2=dilate(BW1,SE,…,n)表示执行膨胀 *** 作n次。

2、erode 函数

该函数能够实现二值图像的腐蚀 *** 作,有以下形式:

BW2= erode(BW1,SE)

BW2= erode(BW1,SE,…,n)

其中:BW2= erode(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行腐蚀 *** 作。输入图像BW1的类型为double或unit8,输出图像BW2的类型为unit8。BW2= erode(BW1,SE,…,n)表示执行腐蚀 *** 作n次。

3、bwmorph函数

该函数的功能是能实现二值图像形态学运算。它的格式如下:

① BW2=bwmorph(BW1,operation)

② BW2=bwmorph(BW1,operation,n)

其中:对于格式①,bwmorph函数可对二值图像BW1采用指定的形态学运算;对于格式②,bwmorph函数可对二值图像BW1采用指定的形态学运算n次。operation为下列字符串之一:

‘clean’:除去孤立的像素(被0包围的1)

‘close’:计算二值闭合

‘dilate’:用结构元素计算图像膨胀

‘erode’:用结构元素计算图像侵蚀

4、imclose函数

该函数功能是对灰度图像执行形态学闭运算,即使用同样的结构元素先对图像进行膨胀 *** 作后进行腐蚀 *** 作。调用格式为:

IM2=imclose(IM,SE)

IM2=imclose(IM,NHOOD)

5、imopen函数

该函数功能是对灰度图像执行形态学开运算,即使用同样的结构元素先对图像进行腐蚀 *** 作后进行膨胀 *** 作。调用格式为:

IM2=imopen(IM,SE)

IM2=imopen(IM,NHOOD)

3用MATLAB编程实现图像去噪

31 二值形态学消除图像噪声

用二值形态学方法对图像中的噪声进行滤除的基本思想[4]是:使用具有一定形态的结构元素去度量和提取图像中的对应形状,以达到消除图像噪声的目的。下面是二值形态学消除图像噪声的一个实例。

首先将tiretif图像加入椒盐噪声,这种噪声前面已经介绍过,它在亮的图像区域内是暗点,而在暗的图像区域内是亮点,再对有噪声图像进行二值化 *** 作,再对有噪声图像进行开启 *** 作,由于这里的结构元素矩阵比噪声的尺寸要大,因而开启的结果是将背景上的噪声点去除了,最后对前一步得到的图像进行闭合 *** 作,将轮胎上的噪声点去掉了。

下面是算法实现的程序代码:

I1=imread('tiretif'); %读灰度图tiretif

I2=imnoise(I1,'salt & pepper'); %在图像上加入椒盐噪声

figure,imshow(I2) %显示加椒盐噪声后的灰度图像

I3=im2bw(I1); %把加椒盐噪声后的灰度图像二值化

figure,imshow(I3) %显示二值化后的图像

I4=bwmorph(I3,'open'); %对二值噪声图像进行二值形态学开运算

figure,imshow(I4) %显示开运算后的图像

I5=bwmorph(I4,'close'); %对上述图像进行形态学闭运算

figure,imshow(I5) %显示最终处理后的图像

% rgb=imread('source1bmp');

% I=rgb2gray(rgb); % 色彩转换成灰度

I=imread('source3bmp');

level= graythresh(I); %得到合适的阈值 得到合适的阈值

bw= im2bw(I,level); %二值化

SE= strel('square',3); %设置膨胀结构元素

BW1= imdilate(bw,SE); % 膨胀

SE1= strel('arbitrary',eye(5)); %设置腐蚀结构元素

BW2= imerode(bw,SE1); %腐蚀

BW3= bwmorph(bw,'open'); %开运算

BW4= bwmorph(bw,'close'); %闭运算

figure(1),

subplot(2,3,1),imshow(I);title('原图');

subplot(2,3,2),imshow(bw);title('二值图');

subplot(2,3,3),imshow(BW1);title('膨胀');

subplot(2,3,4),imshow(BW2);title('腐蚀');

subplot(2,3,5),imshow(BW3);title('开运算');

subplot(2,3,6),imshow(BW4);title('闭运算');

%

figure(2)

BW5 = imfill(bw,'holes');

subplot(121), imshow(bw), title('源图像二值化')

subplot(122), imshow(BW5), title('填充后的图像')

%轮廓提取

figure(3)

contour = bwperim(bw);

imshow(contour);

title('轮廓')

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/13493047.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存