数字图像处理实验报告实验三
更新时间:2023-09-21 19:19:01 阅读量: 工程科技 文档下载
中南大学
数字图像处理实验报告
实验三数学形态学及其应用
实验三 数学形态学及其应用
一.实验目的
1.了解二值形态学的基本运算 2.掌握基本形态学运算的实现 3.了解形态操作的应用 二.实验基本原理
腐蚀和膨胀是数学形态学最基本的变换,数学形态学的应用几乎覆盖了图像处理的所有领域,给出利用数学形态学对二值图像处理的一些运算。
膨胀就是把连接成分的边界扩大一层的处理。而收缩则是把连接成分的边界点去掉从而缩小一层的处理。 二值形态学
I(x,y), T(i,j)为 0/1图像?
腐蚀:E(x,y)?(I?T)(x,y)?AND?I(x?i,y?j)&T(i,j)?
i,j?0m膨胀:D(x,y)?(I?T)(x,y)?OR?I(x?i,y?j)&T(i,j)?
i,j?0m灰度形态学T(i,j)可取01以外的值 腐蚀:
E(x,y)?(I?T)(x,y)?min?I(x?i,y?j)?T(i,j)?
0?i,j?m?1 膨胀:
D(x,y)?(I?T)(x,y)?max?I(x?i,y?j)?T(i,j)?
0?i,j?m?11.腐蚀Erosion:
X?B??x:Bx?x?
B1删两边 B2删右上
图5-1 剥去一层(皮)
2.膨胀Dilation:
X?B=?x:Bx?X?
B1补两边 B2补左下
图5-2 添上一层(漆)
3.开运算open :
XB?(X?B)?B
4.闭close:X?(X?B)?B
5.HMT(Hit-Miss Transform:击中——击不中变换) 条件严格的模板匹配
T?(T1,T2)模板由两部分组成。T1:物体,T2:背景。
X?T?XiT1x?X,T2x?XC
X2T13313图5-3 击不中变换示意图
B???22121性质:
(1)T2??时,X?T?X?T1 (2)(X?T)?(X?T1)?(XC?T2) ?(X?T1)?(X?T2)C ?(X?T1)/(X?T2) 6.细化/粗化 (1)细化(Thin)
XoT?X/?T?X?(X?T)C 去掉满足匹配条件的点。
X???XoT?X?TX?TX?T???X?T????? 图5-4 细化示意图
系统细化Xo?T??(((XoB1)oB2)?Bn, Bi是Bi?1旋转的结果(90?,180?,270?)共8种情况 适于细化的结构元素
000d00 I?d1d L?110
111d1d (2)粗化(Thick) X?T?X?(X?T)
用T1???0,0??T2???1,0??时,X?T?X?X?X
故要选择合适的结构元素,如T1????1,0??,T2???0,0??
对偶性:?X?T?C?XC?T*(验证一下) where T*?(T2,T1) when T?(T1,T2) 7.Morphology小结
A.通过物体(对象)和结构元素的相互作用,得到更本质的形态(shape) (1) 图像滤波
(2) 平滑区域的边界
(3) 将一定形状施加于区域边界
(4) 描述和定义图像的各种几何参数和特征(区域数、面积、周长、连通度、颗粒度、骨架、边界)
B.形态运算是并行运算 C.细化
区域或边界变为1个象素的宽度,但它不破坏连通性 四方向细化算法:逻辑运算(可删除条件) 形态运算是否可用于细化?
(1)腐蚀:收缩(去掉边缘的点)何时结束?能否保证连通性? (2)开:去毛刺,能否细化(去掉尺寸小于结构元素的块) 三.实验提示
Matlab中用imdilate函数实现膨胀。用法为:
Imdilate(X,SE).其中X是待处理的图像,SE是结构元素对象。 例如:
bw = imread('text.png'); se = strel('line',11,90); bw2 = imdilate(bw,se); imshow(bw), title('Original') figure, imshow(bw2), title('Dilated')
Matlab用imerode函数实现图像腐蚀。用法为:
Imerode(X,SE).其中X是待处理的图像,SE是结构元素对象。 如:
I = imread('cameraman.tif'); se = strel('ball',5,5); I2 = imerode(I,se); imshow(I), title('Original') figure, imshow(I2), title('Eroded')
Matlab用imopen函数实现图像开运算。用法为: imopen(I,se);
I为图像源,se为结构元素
Matlab用imclosee函数实现图像闭运算。用法为:
imclose(I,se);
I为图像源,se为结构元素 结构元素的选取: strel函数
SE = strel('arbitrary',NHOOD)
将NHOOD构造成你设定的矩阵;如将NHOOD写在[1 1 1;1 1 1; 1 1 1] SE = strel('diamond',R)
构造一个中心具有菱形结构的结构元素,R为跟中心点的距离 SE = strel('rectangle',MN)
构造一个矩形的结构元素,MN可写在[3 4],表示3行4列 SE = strel('square',W) 构造一个正方形的矩阵。 计算二值图像面积 bwarea 功能:
计算二进制图像对象的面积。 语法:
total = bwarea(BW) 举例
BW = imread('circles.png'); imshow(BW); bwarea(BW) ans = 15799 bwmorph 功能:
提取二进制图像的轮廓。 语法:
BW2 = bwmorph(BW1,operation) BW2 = bwmorph(BW1,operation,n) 举例
BW1 = imread('circles.png'); imshow(BW1);
BW2 = bwmorph(BW1,'remove');
BW3 = bwmorph(BW1,'skel',Inf); imshow(BW2)
figure, imshow(BW3) 四.实验内容与要求
1.设计程序实现对图5-5,实现去除图像中的噪声。 2.设计程序,实现将图5-6转化为二值图像,并计算图中鸡块中骨头的比重。 3.设计程序,实现去除图5-7中的矩形区域外的噪声,并填充矩形区域内部了。
提示:做题是把下面的图另存为单独的图像文件进行处理。
图5-5
图5-6
图5-7
五、实验过程与结果
1.分别用Roberts,Sobel和拉普拉斯高斯算子对图像进行边缘检测。比较三种算子处理的不同之处
代码:
I=imread('test_pattern.tif');
subplot(2,2,1);imshow(I),title('原图'); BW1=edge(I,'roberts');
subplot(2,2,2);imshow(BW1),title('用Roberts算子') BW2=edge(I,'sobel');
subplot(2,2,3);imshow(BW2),title('用Sobel算子 ') BW3=edge(I,'log');
subplot(2,2,4);imshow(BW2),title('用拉普拉斯高斯算子 ')
结果:
(3)比较
Roberts算子:边缘定位准,但是对噪声敏感。适用于边缘明显且噪声较少的图像分割。Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑,会在图像边缘附近的区域内产生较宽的响应,边缘定位的精度不是很高。
Sobel算子:算法的优点是计算简单,速度快。但是由于只采用了2个方向的模板,
只能检测水平和垂直方向的边缘,因此这种算法对于纹理较为复杂的图像,其边缘检测效果就不是很理想。
拉普拉斯:对噪声敏感,会产生双边效果。不能检测出边的方向。通常不直接用于边的检测,只起辅助的角色,检测一个像素是在边的亮的一边还是暗的一边利用零跨越,确定边的位置。
2.设计一个检测图3-2中边缘的程序,要求结果类似图3-3,并附原理说明 代码:
I=imread('lines.png'); F=rgb2gray(I); subplot(2,2,1); imshow(I);
title('原始图像'); thread=130/255; subplot(2,2,2); imhist(F);
title('直方图'); subplot(2,2,3);
J2=im2bw(F,thread); imshow(J2);
title('分割结果');
实验结果:
(3)原理说明:
根据图像的直方图,发现背景和目标的分割值在135左右,将此作为分割值,将图像转换为二值图像。
3.任选一种阈值法进行图像分割: (1)选取阈值为180进行分割: I=imread('lines.png'); F=rgb2gray(I); subplot(2,2,1); imshow(I);
title('原始图像');
thread=180/255; %阈值为180进行分割 subplot(2,2,2); imhist(F);
title('直方图'); subplot(2,2,3);
J2=im2bw(F,thread); imshow(J2);
title('分割结果'); 实验结果:
将阈值调节到180,明显的看到线条的边缘变得模糊,而背景的线条被消除。
4.检测出3.3图像的线条,要求完成的结果为二值图像: 代码:
I=imread('line2.png');
F=rgb2gray(I); subplot(2,2,1); imshow(I);
title('原始图像'); thread=120/255; subplot(2,2,2); imhist(F);
title('直方图'); subplot(2,2,3);
J2=im2bw(F,thread); imshow(J2);
title('分割结果');
实验结果:
说明:根据直方图,分割值在120左右,去120为分割线,得到以上分割结果。
正在阅读:
数字图像处理实验报告实验三09-21
上市新药Lumateperone(卢美哌隆)合成检索总结报告08-08
《食品微生物检验技术》课程作业要求03-14
2012全国二本三本学校排名07-29
高考语文一轮复习 专题1-2 语言表达连贯、得体(教学案)04-28
物理学3章习题解答11-13
乡村学校少年宫经验交流材料12-14
浅谈小学语文课堂教学导入06-11
小学数学教研组计划07-03
- 霍兰德职业兴趣测验及职业代码
- 第一章练习(有答案)(1)
- 中国古代城市规划思想的变迁
- 关于瑕积分收敛的判断
- 《土地资源》教学设计
- 最牛逼的机械制图基础知识
- 苏州地区冷链物流发展现状及问题分析
- 合-操作系统实验指导书(2014-6-12)
- 2010中考探究综合学习与实践 - 3
- 如何在VBA判断EXCEL或WORD文件已经打开,并用代码关闭
- 完整打印版小学六年级上册英语教案及反思11
- 兽医临床诊疗技术简答题
- 新目标七年级英语语法精讲精练与专项练习(全)
- 施工准备阶段监理实施细则
- lab10 - 0101序列检测器仿真(ModelSim)
- 鄂教版-一年级生命安全教育教案
- 关于乐百氏新品牌运动饮料进入沃尔玛商场销售商务谈判计划书
- 2018暑假思修社会实践报告1500字
- 强迫症的治疗全集withboy整理版
- 2017届闵行高三二模作文范文解析