目录

  • 一、实验目的
  • 二、实验环境
  • 三、实验内容
    • 题目
    • 相关知识
    • 核心代码
    • 实验结果
  • 四、实验小结

一、实验目的

1、了解形态学的基本理论和方法。
2、掌握对图像进行开、闭、膨胀、腐蚀的方法。

二、实验环境

Matlab 2020B

三、实验内容

题目

任选一种结构算子实现对图像或目标的开、闭、腐蚀和膨胀运算。

2、采用形态学处理方法实现图像去噪。

3、对图像分割实验(实验四)得到的分割结果进行形态学处理,对肺部区域的空洞进行填充。
*4、请用形态学算法生成只包含边界接触的圆形。(选做题)

相关知识

图像的形态学描述与处理都基于填放结构元素的概念。结构元素的选择与从图像中抽取何种信息有密切关系。图像的形态学基本操作有腐蚀(Erosion)、膨胀(Dilation)、开(Opening)、闭(Closing)四种。利用这几种形态学操作,可以完成图像分割、特征抽取、边缘检测、图像增强等工作。
腐蚀操作是形态学最基本的操作之一。宏观上看,腐蚀运算可以使被处理的图像缩小,消除图像的边界,消除图像中小于结构元素大小的部分。如果图像中两部分存在细小的连通“桥”,则腐蚀运算可以将这一连通消除。腐蚀运算的算法如下:用结构元素,扫描图像中的每一个像素。用结构元素与其覆盖的二值图像做与运算。若结构元素的与元素都为1,则图像的该像素值置为1,否则值置为0。
膨胀操作与腐蚀操作相反,是腐蚀操作的逆运算。膨胀操作可以使被处理的图像增大,扩充图像边界的凹陷部分,填充图像中比结构元素小的空洞。对于多个不同的连通域,若存在缝隙,则填满该缝隙。膨胀运算的算法如下:用结构元素扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算。如果都为0,结果图像该像素为0,否则为1。
形态学的开操作是先用结构元素进行腐蚀操作,而后再用腐蚀的结果再次进行膨胀操作。开操作能使得对象的轮廓变得光滑,断开狭窄的间断、消除细的突出物。
形态学的闭操作就是用结构元素对原图像先进行膨胀操作,后进行腐蚀操作,使得轮廓变得光华,但与开操作相反,用于消除狭窄的间断和鸿沟,消除小的空洞,填补轮廓线中的断裂。
对于灰度图像,也可以进行形态学操作。灰度图像的形态学操作对应了本次实验课的第二题。
设形态学操作的结构元素为 b ( s , t ) b(s,t) b(s,t),原图像为 f ( x , y ) f(x,y) f(x,y)。
在腐蚀操作中,对于腐蚀后图像的每个像素点,其灰度值被更新为 f f f与 b b b重合区域的最小灰度值。即:
f o u t ( x , y ) = min ⁡ s , t ∈ b { f ( x + s , y + t ) } f_{out}(x,y)=\min_{s,t\in b}\{f(x+s,y+t)\} fout​(x,y)=s,t∈bmin​{f(x+s,y+t)}
在膨胀操作中,对于膨胀后图像的每个像素点,其灰度值被更新为 f f f与 b b b的补集的重合区域的最大灰度值。即:
f o u t ( x , y ) = max ⁡ s , t ∈ b { f ( x − s , y − t ) } f_{out}(x,y)=\max_{s,t\in b}\{f(x-s,y-t)\} fout​(x,y)=s,t∈bmax​{f(x−s,y−t)}
本次实验的第四题是利用形态学操作进行一些简单的应用。
为了识别出图像各个圆形的边界,需要进行边界提取。由结构元素对原图像先进行腐蚀,再用原图像减去腐蚀后的图像,就能得到图像的边界。根据图像的边界,可以根据图像边界的周长判断哪些圆是独立的,哪些圆是与另外的圆互相连通的。利用这一种办法,提取出了图像中所有的连通分量。
在提取完连通分量,分离出与其他圆互相连通的圆后,就需要进行区域填充。为了自动地区分出哪些黑色像素点是圆内部的空洞、哪些黑色像素点是圆外部的背景,可以迭代的利用膨胀操作进行填充,直到图像不再发生任何变化。

核心代码

I=imread("lab5_1.tif");
se = strel('line',10,10);
subplot(1,2,1);imshow(I);
I=imerode(I,se);
subplot(1,2,2);imshow(I);

随意地选取了一个线性的结构元素,对图像进行腐蚀操作。

I=imread("lab5_1.tif");
se = strel('line',5,5);
subplot(1,2,1);imshow(I);
I=imdilate(I,se);
subplot(1,2,2);imshow(I);

随意选取了一个线性结构元素,对图像进行膨胀操作。

I=imread("lab5_1.tif");
se = strel('line',10,10);
subplot(1,2,1);imshow(I);
I=imopen(I,se);
subplot(1,2,2);imshow(I);

随意选取了一个线性结构元素,对图像进行开操作。

I=imread("lab5_1.tif");
se = strel('disk',6,6);
subplot(1,2,1);imshow(I);
I=imclose(I,se);
subplot(1,2,2);imshow(I);

随意选取了一个线性结构元素,对图像进行闭操作。

I=imread("lab5_2.bmp");
%subplot(2,3,1);imshow(I);
J1=imerode(I,strel('disk',3));
%subplot(2,3,2);imshow(J1);
J2=imdilate(J1,strel('disk',1));
%subplot(2,3,3);imshow(J2);
J3=imcomplement(J2);
%subplot(2,3,4);imshow(J3);
J4=imclose(J3,strel('square',2));
%subplot(2,3,5);imshow(J4);
J5=imcomplement(J4);
%subplot(2,3,6);imshow(J5);
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(J5);

对于题目2中的图像,首先去除黑噪点。灰度图像的形态学处理已在上文介绍。首先,利用腐蚀操作与膨胀操作,先去除黑噪点。为了去除白噪点,还需要将图像的灰度级翻转,并再次利用相反的方法处理白噪点。利用闭操作,即先膨胀,再腐蚀,将白噪点消除。最后,将图像的灰度级再次翻转。最后输出的图像就是处理掉了黑色噪点与白色噪点的图像。

I=imread("lab4_out.jpg");
se = strel('disk',3);
J=imclose(I,se);
subplot(2,2,1);imshow(I);title('原图');
subplot(2,2,2);imshow(J);title('disk半径3');
J=imclose(I,strel('disk',10));
subplot(2,2,3);imshow(J);title('disk半径10');
J=imclose(I,strel('disk',7));
subplot(2,2,4);imshow(J);title('disk半径7');

对于实验4中的肺部图像,需要经过多次试验找到最合适disk圆盘形状的结构元素。在结果展示章节,会体现:结构元素半径过小不合适,结构元素半径过大也不合适。

I=imread("lab5_3.tif");
%subplot(2,2,1);imshow(I);
[h,w]=size(I);
A=I;
B=imerode(I,strel('disk',1));
C=A-B;
%subplot(2,2,2);imshow(C);
L=bwlabel(C,8);
s=regionprops(L,'Perimeter');
J2=ismember(L,find([s.Perimeter]>=200));
%subplot(2,2,3);imshow(J2);
Jc=imcomplement(J2);
marker=zeros(h,w);
marker(1,:)=1;
marker(h,:)=1;
marker(:,1)=1;
marker(:,w)=1;
while 1marker_pre=marker;dilation=imdilate(marker,strel('disk',1));marker=dilation.*Jc;if marker_pre==markerJ3=marker;break;end
end
J3=imcomplement(J3);
%subplot(2,2,4);imshow(J3)
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(J3)

对于题目4,首先需要像进行图像的边界提取。在边界提取的过程中也进行了腐蚀操作,腐蚀操作能够将肉眼看上去互相接触但实际上却没有接触的不同圆形也分离。之后,根据图像边界的周长,判断哪些圆是互相接触的,哪些圆没有互相接触。在本实验中,可以认为周长大于等于200的连通域是有互相接触的圆,而周长小于等于200的连通域没有互相接触的圆。在判断圆是否互相接触后,对这些圆内部的空洞进行填充,即边界提取的反向操作。最后,利用形态学操作得到了只包含边界接触的圆形。

实验结果


利用线性结构元素对图像进行腐蚀操作,可以看到连接线被明显地消除了。图像中心的圆角矩形边界也减小了一圈,图像周围的各个连通域也缩小了一圈。

利用线性结构元素对图像进行膨胀操作,可以看到连接线被明显地加粗了。图像中心的圆角矩形边界也扩大了一圈,图像周围的各个连通域也扩大了一圈。

利用线性结构元素对图像进行开操作,可以看到细小的连接线被消除了。但图像中心的圆角矩形边界保持不变,没有扩大没有缩小。图像周围的各个连通域也没有扩大没有缩小。

利用线性结构元素对图像进行闭操作,可以看到输出图像与原图像并无较大区别。但是,在图像中心的圆角矩形和直线间存在一部分狭小的空隙,这一部分空隙却被填充了。图像周围的部分与直线之间也存在空隙,而这些空隙也被填充了。

首先,使用腐蚀和膨胀操作消除图像黑色背景区域中的灰黑色噪声像素点。将图像的灰度值翻转,利用闭操作再消除图像出现的白色噪声像素点。最后,将消除了噪声的图像再次翻转,得到了背景为黑色且消除了噪声点的输出图像。输出图像与原图的对比如图9所示。可以看到,在去噪的同时也丢失了部分细节。但背景区域的大量噪点都被去除了。


为了对肺部图像进行填充,需要尝试不同的半径的结构元素作为参数。当半径过小时(半径为3),肺部仍然有一些部分不能得到填充。当半径过大时(半径为10),两个肺部区域被错误地连通了。只有当半径为7时,不仅能够正确地填充肺部内部区域,而且不同的肺部区域不会被连通。

利用形态学算法提取出只包含边界接触的圆时,先提取出这些圆的边界信息,利用边界的周长信息判断哪些连通域属于不同的圆连通在了一起,并认为周长大于等于200的连通域属于不同的圆连通在了一起。如图11.3所示,只保留这些周长大于等于200的连通域。最后,对这些连通域边界,对其内部的空洞重新进行填充,如图11.4所示。如图12,为实验题目4的整体效果。

四、实验小结

MATLAB【数字图像处理】 实验五:形态学图像处理相关推荐

  1. 【数字图像处理】实验五 形态学图像处理

    实验五 形态学图像处理 1 实验目的 2 实验环境 3 实验内容 4 实验心得 1 实验目的 1.了解形态学的基本理论和方法. 2.掌握对图像进行膨胀.腐蚀的方法. 3.掌握开闭运算. 2 实验环境 ...

  2. [数图] 实验八 形态学图像处理

    一.实验目的 1.利用 MATLAB 研究二值形态学图像处理常用算法: 2.掌握 MATLAB 形态学图像处理基本操作函数的使用方法: 3.了解形态学的基本应用. 二.实验内容 1.编程实现二值图像的 ...

  3. 数字图像处理——第九章 形态学图像处理

    数字图像处理--第9章 形态学图像处理 文章目录 数字图像处理--第9章 形态学图像处理 1 基础知识 1.1 形态学图像 1.2 二值图像 2 腐蚀和膨胀 2.1 腐蚀 2.2 膨胀 3 开操作与闭 ...

  4. 数字图像处理第九章——形态学图像处理

    数字图像处理第九章 数字图像处理---形态学图像处理 (一)预备知识 1.1 集合理论中的基本概念 1.2 二值图像.集合及逻辑算子 (二)膨胀和腐蚀 2.1 膨胀 2.2 结构元的分解 2.3 st ...

  5. 数字图像处理第九章----形态学图像处理

    文章目录 1.概念 2.腐蚀与膨胀 3.开闭运算 4.顶帽与黑帽运算 5.边界提取与区域填充 6.细化 7.总结 1.概念 形态学操作:数学形态学时基于集合论的图像处理方法,最早出现在生物学的形态与结 ...

  6. 数字图像处理第九章 形态学图像处理

    形态学图像处理 1 预备知识 1.1 集合理论中的基本概念 1.2 二值图像.集合及逻辑算子 2 膨胀和腐蚀 2.1 膨胀 2.2 腐蚀 3 膨胀与腐蚀的结合 3.1 开操作和闭操作 3.2 击中或击 ...

  7. fir1截止频率计算_数字信号处理 实验五:FIR数字滤波器设计与软件实现

    10.5 实验五:FIR数字滤波器设计与软件实现 10.5.1 实验指导 1.实验目的 (1)掌握用窗函数法设计FIR数字滤波器的原理和方法. (2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和 ...

  8. 数字信号与图像处理实验三:图像处理基础与图像变换

    实验三:图像处理基础与图像变换 通过本实验加深对数字图像的理解,熟悉MATLAB中的有关函数:应用DCT对图像进行变换:熟悉图像常见的统计指标,实现图像几何变换的基本方法. 班级 姓名 实验名 完成时 ...

  9. matlab调用mstg,实验五 双线性变换法设计IIR数字滤波器

    实验五 IIR 数字滤波器设计 一.实验目的 (1)熟悉用双线性变换法设计IIR 数字滤波器的原理与方法: (2)学会调用MATLAB 信号处理工具箱中滤波器设计函数设计各种IIR 数字滤波器,学会根 ...

最新文章

  1. 外企员工职场跃迁:他们将目光转向杭州 转向云计算
  2. 关于this的指向问题
  3. 11kw星三角启动延时几秒_电机星三角降压启动接线方法图解
  4. iframe和HTML5 blob实现JS,CSS,HTML直接当前页预览
  5. C语言spirograph算法图形绘制(附完整源码)
  6. Filter(过滤器) 和 interceptor(拦截器)的区别
  7. html5 接收蓝牙广播_蓝牙定位技术浅析(化工厂应用)
  8. 计算机硬件系统都是看得见的,计算机组成硬件系统).doc
  9. [51单片机] 定时器3-计时示例
  10. 【共读Primer】52.[6.3]返回类型和return语句--返回数组指针 Page205
  11. 访问量冲破1000大关,截图庆祝!
  12. 广义积分中值定理的证明(柯西中值定理)
  13. 将excel中的列转置成行
  14. 面试的准备——公子禹
  15. freyja对分库分表设计绝对是最强大的
  16. 【python数据分析】分组聚合操作
  17. [影评]《太阳照样升起》
  18. Aras Innovator-学-习-之-旅-
  19. 360大战QQ演义之一:一场腾讯可能连底裤都输掉的战争!
  20. 返回一个月中最大的天数(适用于2000年到2099年之间)

热门文章

  1. 袁萌浅谈C919大飞机(二)
  2. DebugView使用方法
  3. 清默网络——我的CCIE考试经验与心得(2)
  4. 凌恩生物文献分享|转录组高级分析--植物抗性基因分析
  5. excel切片器_浅谈Excel , PBI 切片器系列之二:重新认识切片器
  6. 中心极限与大数定理律的关系_CLT 中心极限定理
  7. Linux服务器开发,Posix API与网络协议栈
  8. python中的位运算符
  9. 单片机双机通信c语言,单片机双机通信(C51程序)
  10. 两个电脑主机共用一个显示器