·【基于MATLAB的数字图像处理】第一章·绪论
·【基于MATLAB的数字图像处理】第二章·视觉系统与图像处理系统
·【基于MATLAB的数字图像处理】第三章·基本图像变换
·【基于MATLAB的数字图像处理】第四章·图像增强
·【基于MATLAB的数字图像处理】第五章·图像编码
·【基于MATLAB的数字图像处理】第六章·形态学图像处理
·【基于MATLAB的数字图像处理】大作业·综合图像处理平台
目录
前言
一、形态学预备知识
二、腐蚀和膨胀
1.腐蚀
2.膨胀
三、开运算和闭运算
四、击中和击不中变换
这一章老师没讲,我觉得比较有用,也比较接近于中级图像处理的知识,属于我的自学内容,偏向应用
基本思想:用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。
二值图像:图像可以看成是关于坐标x,y的二值函数,图像中的每一点的像素值只有0和1两个取值,这时集合间的运算可以直接应用于二值图像集合
比如两幅图像A、B,可以使用MATLAB中的运算语句,或:A|B,与:A&B,非:~A,差:A-B,直接运算,图像看成像素的集合,其基本操作都和集合运算保持一致。
腐蚀和膨胀是形态学图像处理的基础,主要作用是消除噪点和分割出独立的图像元素等。
腐蚀是缩小和细化图像中的物体,可以看做形态学的滤波操作,这种操作是将小于结构元的图像细节从图像中滤除,下面是图像中的结构元,腐蚀实质上就是将结构元在待处理的图像集合上进行与运算的过程。
腐蚀的操作过程为:
例子参考这篇文章
应用:边界提取:使用原图像减去腐蚀后的图像=前景物体边界。
膨胀与腐蚀不同,腐蚀是一种收缩或细化的操作,而膨胀则会扩张和粗化二值图像中的物体。这两个操作所使用的的结构元是类似的,类似于上图。
膨胀的操作过程为:
例子参考这篇文章
应用:孔洞填充:对原图像进行膨胀操作,对膨胀后的图像求补,将求补后的结果与膨胀的结果求并集即可完全实现孔洞的填充。
实例:
%%腐蚀和膨胀
I=imread('rice.png');
B=im2bw(I); %RGB转二值图像
se=strel('square',5); %设定结构元
ImD=imdilate(B,se); %二值图像的膨胀处理
ImE=imerode(B,se); %二值图像的腐蚀处理
figure;
subplot(131);imshow(B);title('二值图');
subplot(132);imshow(ImD);title('膨胀');
subplot(133);imshow(ImE);title('腐蚀');
效果:
开运算:平滑物体的轮廓、断开较窄的部分并消除细的突出物
闭运算:平滑轮廓的一部分,通常会弥合较窄的间断和细长的沟壑、消除小的孔洞、填补轮廓中的断裂
假设有两个集合(图像)A和B,A对B的形态学开运算定义为结构元B对A先进行腐蚀,然后再用结构元B对A进行膨胀;A对B的形态学闭运算,与之相反,定义为结构元B对A先进行膨胀,然后再用结构元B对A进行腐蚀;
实例:
%%开运算和闭运算
%仍然使用之前的二值图像和结构元
ImO=imopen(B,se); %图像的开运算
ImC=imclose(B,se); %图像的闭运算
figure;
subplot(131);imshow(B);title('二值图');
subplot(132);imshow(ImO);title('开运算');
subplot(133);imshow(ImC);title('闭运算');
效果:
形态学中的击中个击不中变换是一种形状检测的基本工具,基本思想是: