一.实验目的
1.利用 MATLAB 研究二值形态学图像处理常用算法;
2.掌握 MATLAB 形态学图像处理基本操作函数的使用方法;
3.了解形态学的基本应用。
二、实验内容
1.编程实现二值图像的基本形态学处理(腐蚀、膨胀、开运算和闭运
算);选择不同结构元素筛选图像目标。
2.用形态学运算实现灰度图像的噪声平滑和图像边缘提取。
三、实验步骤
1、二值图像的形态学变换
需要编写的二值图像形态学变换函数:
function newbuf=BwFilter(oldbuf,select)
该函数调用 MATLAB 关于膨胀、腐蚀和图像筛选算法的相关函数,对二
值图像进行相应的处理,最后结果存放在 newbuf 数组中。
编程实现 BwFilter()函数的功能。结构元素也可以用 ones 函数和 zeros
函数创建。
2、对输入图像进行形态学操作,即腐蚀、膨胀、开运算和闭运算,改
变结构元素形状、大小,重做上述实验,比较实验结果,分析结构元素
对运算的影响;
3、以图 FigP0936(bubbles_on_black_background).tif 为例完成分别以下功
能:
(1)提取与图像边界融合的颗粒
(2)提取彼此交叠的颗粒
(3)提取不交叠的颗粒
提示:(1)可利用区域填充算法。如图所示为源图像,可将图像先转换
为二值图像,然后对其进行取反,这样进行区域填充的结果将为与边界
相连的颗粒,再与源图像进行比较,即可得出在源图像中与边界相连的
颗粒图像。
(2)可利用图像的腐蚀与膨胀操作。先用模板对图像进行腐蚀操作,
由于相交叠的颗粒面积必然比独立的颗粒大,因此腐蚀操作之后剩下的
部分为交叠颗粒的部分,再对其进行膨胀,将其与源图像进行比较操作,
则可得出交叠的颗粒图像。
(3)得出交叠的颗粒之后,用源图像对其相减,则得出的为独立分布
的颗粒图像。
四、实验结果
4.1. Morphological transformation of binary image

4.2. Carry out morphological operations on the input image, namely corrosion, expansion, open operation and close operation, change the shape and size of structural elements, repeat the above experiment, compare the experimental results, and analyze the influence of structural elements on the operation;

(1)输入“1”,进行膨胀操作

(2)输入“2”,进行腐蚀操作

(3)输入“3”,进行开运算操作

(4)输入“4”,进行闭运算操作

更改参数后:

膨胀:

腐蚀:

开运算:

闭运算:

改变形状后:

膨胀:

腐蚀:

开运算:

闭运算:

4.3. Take figp0936 (bubbles_on_black_background) Take TIF as an example to complete the following work respectively

Can:(1) Extracting particles fused with image boundary

(2) Extract overlapping particles

(3) Extract non overlapping particles

五、conclusions

(1)学会了使用function newbuf=BwFilter(oldbuf,select)二值图像形态学变换函数。

(2)在第二个实验中,更改结构元素的大小(膨胀腐蚀的参数改小,开闭运算的参数调大),发现,膨胀图像的改变不大,腐蚀的图像程度加深,开运算的图像腐蚀程度加深,闭运算的腐蚀程度减弱;更改结构元素的形状(将两组处理的元素形状互换,即膨胀腐蚀的形状设为“square”,开闭运算设为“disk”),发现膨胀图像的腐蚀程度加强,腐蚀图像的腐蚀程度减弱,开运算图像的腐蚀程度加强,闭运算图像的腐蚀程度减弱。

六、全部代码

%8.2 对输入图像进行形态学操作,即腐蚀、膨胀、开运算和闭运算,改
%变结构元素形状、大小,重做上述实验,比较实验结果,分析结构元素
%对运算的影响;
clear all;              %清除
a=imread('C:\PICTURE_YUWEI\lax.tif');           %载入图像
addpath('C:\PICTURE_YUWEI\dipum_toolbox_2.0.2');%添加相应的.p文件
m=input('');            %m代表select的种类,1,2,3,4分别代表膨胀、腐蚀、开运算和闭运算
a1=im2bw(a);            %将原图转化为二值图像
a2=BwFilter(a1,m);      %调用BwFilter函数进行低通滤波
subplot(131)            %显示原图
imshow(a);title('原图');
subplot(132)            %显示二值图像
imshow(a1);title('原图的二值图像');
subplot(133)            %显示转化后图像
imshow(a2);title('变换后的图像');
%8.1 二值图像的形态学变换;BwFilter子程序,功能是进行低通滤波,实现不同的四个功能
function newbuf=BwFilter(oldbuf,select)
if select==1                  %select==1,膨胀    A=strel('disk',1);        %结构元素    newbuf=imdilate(oldbuf,A);%膨胀处理
elseif select==2              %select==2,腐蚀        B=strel('disk',1);        newbuf=imerode(oldbuf,B);elseif select==3          %select==3,开运算           C=strel('square',7);           newbuf=imopen(oldbuf,C);else D=strel('square',7); %select==4,闭运算newbuf=imclose(oldbuf,D);        endend
end
end%以图 FigP0936(bubbles_on_black_background).tif 为例完成分别以下功
%(1)提取与图像边界融合的颗粒
%(2)提取彼此交叠的颗粒
%(3)提取不交叠的颗粒clear all;                %清空
addpath('C:\PICTURE_YUWEI\dipum_toolbox_2.0.2');%添加相应的.p文件
a=imread('C:\PICTURE_YUWEI\FigP0936(bubbles_on_black_background).tif');%读图像
%(1)提取与图像边界融合的颗粒
a1=im2bw(a);                               %将原图转化为二值图像
a2=~a1;                                    %对图像取反
figure(1);
subplot(1,3,1);imshow(a2);title('取反后图像'); %显示取反图像
a3=imfill(a2,'holes');                     %区域填充
subplot(1,3,2);imshow(a3);title('区域填充后图像'); %显示区域填充后的图像
g=a;                                       %将原图备份
[m,n]=size(g);        %取原图备份的大小
for i=1:m             %将区域填充的结果与原图逐点比较for j=1:n         %若在填充结果时为白,该点在新图像中,为黑点if a3(i,j)==1g(i,j)=0;end    end
end
subplot(1,3,3);imshow(g);title('与边界相连的颗粒图像');
%(2)提取彼此交叠的颗粒
%(3)提取不交叠的颗粒
mask1=strel(ones(15,15));       %构造结构元素mask1
mask1f2=imerode(a,mask1);       %对原图进行腐蚀
a4=filter2(fspecial('average',7),im2double(a2));%对腐蚀结果进行滤波
a4=medfilt2(a4);           %中值滤波
a4=im2uint8(a4);           %将滤波结果转化为uint8形式
figure(2);subplot(2,2,1);imshow(a4);title('腐蚀并滤波后图像');%显示腐蚀并滤波后的图像
mask2=strel('ball',12,12); %构造结构元素mask2
a5=imdilate(a4,mask2);     %将uint8形式的图像再进行膨胀
subplot(2,2,2);imshow(a5);title('膨胀后图像');%显示膨胀后的图像
a6=a;                      %将原图备份
[m,n]=size(a);             %得到原图大小
for i=1:m                  %将处理后的图像与原图逐点进行比较for j=1:nif a5(i,j)<=40      %做限幅处理,若处理后的图像中<=40,则去掉a6(i,j)=0;else            a6(i,j)=a(i,j);    %若处理后的图像中>40,则取原图中的白点    end    end
end
subplot(2,2,3);imshow(a6);title('交叠颗粒图像');%显示限幅比较后的图像
f6=a-a6;                   %将原图和交叠图像相减,得到独立分布颗粒图像
subplot(2,2,4);imshow(f6);title('独立分布颗粒图像');%显示相减后的图像

[数图] 实验八 形态学图像处理相关推荐

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

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

  2. 数图实验1直方图均衡化c语言,直方图均衡化

    直方图均衡化Tag内容描述: 1.直方图均衡化的matlab实现 海南大学课程论文课程名称:数字图像处理 题目名称:直方图均衡化的matlab实现 学 院:信息科学技术学院 专业班级:2010级计算机 ...

  3. MATLAB【数字图像处理】 实验五:形态学图像处理

    目录 一.实验目的 二.实验环境 三.实验内容 题目 相关知识 核心代码 实验结果 四.实验小结 一.实验目的 1.了解形态学的基本理论和方法. 2.掌握对图像进行开.闭.膨胀.腐蚀的方法. 二.实验 ...

  4. [数图] 实验三 傅里叶变换及其应用

    一. 实验目的 1. 掌握二维 DFT 变换及其物理意义 2. 掌握二维 DFT 变换的 MATLAB 程序 3. 空间滤波及频域滤波 二. 实验内容 学习使用函数 fft2, ifft2, abs, ...

  5. opencv-python数图实验(三)膨胀腐蚀、击中

    1.基础实验部分 1. 了解膨胀.腐蚀原理 2. 了解开运算.闭运算原理 3. 掌握膨胀.腐蚀函数的使用 4. 掌握开运算.闭运算函数的使用 实现效果 开运算.闭运算 腐蚀.膨胀 二.思考题 2.1: ...

  6. 数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)

    文章目录 一.实验目的 二.实验仪器 三.实验原理 1. 结构元素: 2. 腐蚀运算: 3. 膨胀运算: 4. 开运算: 5. 闭运算: 四.实验内容: 1. 形态学图像处理用于图像边界提取 2.数学 ...

  7. 数据结构实验八 图及其应用

    数据结构实验八 图及其应用 实验内容 1.编写一个程序,完成如下功能: (1) 建立如下有向图G1的邻接矩阵输出,并由邻接矩阵产生邻接表输出之: (2) 输出图G1从顶点0开始的深度优先遍历序列: ( ...

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

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

  9. 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/23184547 作者:毛星云(浅墨) ...

最新文章

  1. Memcached安装使用和源码调试
  2. 如何使用php将字符从全角转为半角
  3. 4.4 IPv6(诞生原因、数据报格式、与IPv4的不同、地址表现形式、基本地址类型、IPv6与IPv4的过渡策略)
  4. 二维码类库--phpqrcode使用简介
  5. 使用JavaScript给对象修改注册监听器
  6. 通过图书编号查询python_Python图书接口调用代码实例
  7. Linux 命令之 tar 命令-打包和备份的归档工具(附压缩/解压工具)
  8. 【Docker】Docker学习笔记:安装部署
  9. Android DDMS的打开以及查看手机页面布局层次
  10. 利于前台开发的两大工具flex和vue
  11. 周记【距gdoi:105天】
  12. 手机号码归属地批量查询功能
  13. mathematica画图
  14. 超详细从零记录Hadoop2.7.3完全分布式集群部署过程
  15. 阿里云云虚拟主机开启安装SSL证书,开启HTTPS访问
  16. python关键词对联_使用百度 AI 进行智能写诗 智能春联
  17. 爬虫采集数据遇到验证码怎么解决?
  18. houseoforange_hitcon_2016(House of orange, unsorted bin attack,FSOP)
  19. js中耦合与解耦问题总结
  20. Java基础18-String类【String类的特点对象个数常用方法】【超详细讲解】

热门文章

  1. c语言编求二重积分_如何用C语言求二重定积分?
  2. BP神经网络在双色球彩票上的预测实验及实现
  3. CentOS7硬盘扩容
  4. 高薪=高风险?快手大幅度裁掉 30%人,年薪100万+资深员工照样裁?
  5. 搭建webassembly网页播放器(六)---websocket后台服务程序
  6. python 电路仿真spice_通过Python调用Spice-gtk
  7. 仙剑五手游服务器维护,新仙剑奇侠传游戏进不去怎么办 游戏进不去解决方法...
  8. 06注解驱动的入门案例
  9. 微型计算机周明德课后答案,微机原理(周明德)课后题答案..doc
  10. 彻底解决git clone速度慢的问题(ubuntu)