数学形态学的基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。数学形态学的基本运算有四个:腐蚀、膨胀、开和闭。基于这些基本运算还可以推导和组合成各种数学形态学实用算法。本实验分别实现针对二值图像和灰度图像的四种形态学操作。

一、二值图像的腐蚀、膨胀、开、闭操作

形态学操作实现

形态学操作实现

实验结果:

形态学操作实现

二、灰度图像的腐蚀、膨胀、开、闭操作

形态学操作实现

形态学操作实现

实验结果:

形态学操作实现

代码:(下载链接)

%本实验完成对二值图像和灰度图像的腐蚀、膨胀、开、闭操作
close all;
clear all;
grayI = imread('rice.png');
binI=im2bw(grayI,0.5);%转二值图
se = [0,1,0;1,1,1;0,1,0]; %结构元
binIerode  = myimerode(binI,se,'binary');
binIdilate = myimdilate(binI,se,'binary');
binIopen   = myimopen(binI,se,'binary');
binIclose  = myimclose(binI,se,'binary');
grayIerode = myimerode(grayI,se,'gray');
grayIdilate= myimdilate(grayI,se,'gray');
grayIopen  = myimopen(grayI,se,'gray');
grayIclose = myimclose(grayI,se,'gray');
figure;
subplot(2,3,1);imshow(binI);title('原始二值图');
subplot(2,3,2);imshow(binIerode);title('腐蚀结果');
subplot(2,3,3);imshow(binIdilate);title('膨胀结果');
subplot(2,3,4);imshow(binIopen);title('开结果');
subplot(2,3,5);imshow(binIclose);title('闭结果')
figure;
subplot(2,3,1);imshow(grayI);title('原始灰度图');
subplot(2,3,2);imshow(uint8(grayIerode));title('腐蚀结果');
subplot(2,3,3);imshow(uint8(grayIdilate));title('膨胀结果');
subplot(2,3,4);imshow(uint8(grayIopen));title('开结果');
subplot(2,3,5);imshow(uint8(grayIclose));title('闭结果');
 
View Code

相关文章: