常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html)
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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 形态学开操作的作用 开操作一般使对象的轮廓变得光滑,断开狭窄的间断和消除细的突出物 。 形态学闭操作的作用 闭操作可使轮廓线更光滑,但与开操作相反的是,闭操作通常消弥狭窄的间断和长细的鸿沟,消除小的空洞,并填补轮廓线中的断裂 腐蚀操作 腐蚀就是使用算法,将图像的边缘腐蚀掉。作用就是将目标的边缘的“毛刺”踢除掉。 膨胀操作 膨胀就是使用算法,将图像的边缘扩大些。作用就是将目标的边缘或者是内部的坑填掉。
imclose函数,imopen函数 代码示例;
%% 开运算和闭运算 clc clearf=imread('E:\示例图像\雾图像\8.jpg');%se=strel('square',5');%方型结构元素 se=strel('disk',5');%圆盘型结构元素 imshow(f);%原图像 title('开闭运算原始图像')%运行结果如下: %开运算数学上是先腐蚀后膨胀的结果 %开运算的物理结果为完全删除了不能包含结构元素的对象区域,平滑 %了对象的轮廓,断开了狭窄的连接,去掉了细小的突出部分 fo=imopen(f,se);%直接开运算 figure,subplot(221),imshow(fo);title('直接开运算');
fc=imclose(f,se);%直接闭运算 subplot(222),imshow(fc);
title('直接闭运算');
函数功能:使用 最大类间方差法找到图片的一个合适的阈值(threshold)。在使用 im2bw函数将灰度图像转换为二值图像时,需要设定一个阈值,这个函数可以帮助我们获得一个合适的阈值。利用这个阈值通常比人为设定的阈值能更好地把一张灰度图像转换为二值图像。 调用格式: level = graythresh(I); % level表示得到的合适阈值;