📜  MATLAB中的形态运算(1)

📅  最后修改于: 2023-12-03 14:44:11.737000             🧑  作者: Mango

MATLAB中的形态运算

形态运算是数字图像处理领域中常用的一种处理方法,可以用来提取图像的特征、消除噪声、改善图像质量等。MATLAB中也提供了丰富的形态运算函数,包括膨胀、腐蚀、开运算、闭运算、顶帽运算和底帽运算等。

简介

形态运算是基于图像形态学的一种图像处理方法,其本质是将一个特定的结构元素应用于待处理的图像,通过结构元素和像素之间的逻辑运算来改变图像的形态。基本的形态运算包括膨胀和腐蚀两种,其它形态运算都是在这两种基本运算的基础上演变而来的。

膨胀:将结构元素沿着边界向外膨胀,即将结构元素覆盖在图像上,只要有一个像素点在结构元素内,那么该像素点就被赋值为1.

腐蚀:将结构元素沿着边界向内腐蚀,即将结构元素覆盖在图像上,只有结构元素内的所有像素点都为1,才将该像素点赋值为1.

开运算:先对图像进行腐蚀操作,再在腐蚀的基础上进行膨胀操作。

闭运算:先对图像进行膨胀操作,再在膨胀的基础上进行腐蚀操作。

顶帽运算:通过在原图像和开运算之间进行差分得到的图像,可以突出比原图像亮的特征。

底帽运算:通过在闭运算和原图像之间进行差分得到的图像,可以突出比原图像暗的特征。

代码实现

下面是MATLAB中常用的形态运算函数,具体用法可以参见MATLAB官方文档。

膨胀函数(imdilate)
BW2 = imdilate(BW,SE)

其中,BW为二值化图像,SE为选择的结构元素。比如选择一个10x10的矩形:

SE = strel('rectangle',[10 10]);
腐蚀函数(imerode)
BW2 = imerode(BW,SE)

其中,BW为二值化图像,SE为选择的结构元素。

开运算函数(imopen)
BW2 = imopen(BW,SE)

其中,BW为二值化图像,SE为选择的结构元素。

闭运算函数(imclose)
BW2 = imclose(BW,SE)

其中,BW为二值化图像,SE为选择的结构元素。

顶帽运算函数(imtophat)
BW2 = imtophat(BW,SE)

其中,BW为二值化图像,SE为选择的结构元素。

底帽运算函数(imbothat)
BW2 = imbothat(BW,SE)

其中,BW为二值化图像,SE为选择的结构元素。

实例演示

下面是一个简单的实例演示,将结构元素分别设置为音符和圆形,对图像进行膨胀操作,可以看到音符的横线和圆形的圆心得到了放大。

% 使用不同的SE对图像进行膨胀操作
img = imread('music.png');

SE1 = strel('line', 11, 90);
SE2 = strel('disk', 5);

img_d1 = imdilate(img, SE1);
img_d2 = imdilate(img, SE2);

subplot(1,3,1), imshow(img), title('原图');
subplot(1,3,2), imshow(img_d1), title('音符结构元素膨胀');
subplot(1,3,3), imshow(img_d2), title('圆形结构元素膨胀');