- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
/
《数字图像处理》
实验报告
姓名 学号 专业 电子科学与工程学院 实验 5
实验目的
本次实验的处理对象是二值图像,关于二值图像的处理运算主要包括腐蚀和膨胀。它们是其他处理过程的主要运算环节。开闭操作通过腐蚀和膨胀的不同顺序组合,能够使图像平滑,开闭操作再组合能够成噪声滤波器。形态学中的击中击不中变换也应用了腐蚀的运算,用于判断图像中能否找到目标结构,这在图像细化中也得到了应用。
本次实验主要实现:
图像的边缘提取;
在边缘提取的基础上实现区域填充;
在区域填充的基础上实现图像细化;
在图像细化的基础上实现图像粗化。
在Matlab软件的自带函数库中其实本身就包含有以上处理过程的函数,为了深入理解每种处理过程的原理,本次实验所有运算都自行编写实现。
核心代码及运行后截图
主函数:
%% 读取图像
clear;clc;
I = imread(onepiece.jpg);
I = im2bw(I); % 转换为二值图像
[m,n] = size(I);
%% 边界提取
f = im2bw([0,1,0;1,1,1;0,1,0]); % 腐蚀用的结构元素
F = fs(I,f);
BW = im2bw(I-F); % 用原图减去腐蚀获得边缘
figure;imshow(I);title(原图);
figure;imshow(F);title(腐蚀图像);
figure;imshow(BW);title(边界);
在上面的运行效果图上看来,由于原图选择的原因,周围一圈白线有一定宽度但不足够粗,大概只有2~3个像素宽度而腐蚀用元素大小为3×3,这导致腐蚀后图像留下的白线看起来残缺不全,用原图减去腐蚀后得到的边缘图像也在白线处有“粘在一块”的现象。只要使用更高一些分辨率的图片即可避免这样的情况。但出于后续试验的运行速度考虑,本实验就使用此图(300×300)。观察图像其他地方,有足够的像素宽度被腐蚀,由此提取的边缘也很清晰。
%% 区域填充
I1 = fillbw(BW,40,40); % fillbw函数实现指定坐标填充边缘内部,详见主函数后的各子函数
I1 = I1 | fillbw(BW,40,260); % 为避免不必要的计算量,每次填充迭代次数为70
I1 = I1 | fillbw(BW,100,150); % 逐次在图像中选择需填充区域中的起始点以完成填充
I1 = I1 | fillbw(BW,100,160);
I1 = I1 | fillbw(BW,136,86);
I1 = I1 | fillbw(BW,132,212);
I1 = I1 | fillbw(BW,147,120);
I1 = I1 | fillbw(BW,157,214);
I1 = I1 | fillbw(BW,210,171);
I1 = I1 | fillbw(BW,206,109);
I1 = I1 | fillbw(BW,233,129);
I1 = I1 | fillbw(BW,234,140);
I1 = I1 | fillbw(BW,237,153);
I1 = I1 | fillbw(BW,234,167);
I1 = I1 | fillbw(BW,231,178);
I1 = I1 | fillbw(BW,248,125);
I1 = I1 | fillbw(BW,252,142);
I1 = I1 | fillbw(BW,252,162);
I1 = I1 | fillbw(BW,247,182);
I1 = I1 | fillbw(BW,272,149);
I1 = I1 | fillbw(BW,256,50);
I1 = I1 | fillbw(BW,253,248);
I2 = I1 | F; % 因外围白线边缘之间没有足够空间,很难逐个填充空洞
figure; % 故此处直接叠加腐蚀图像,把外围白线加上
subplot(1,3,1);imshow(I);title(原图);
subplot(1,3,2);imshow(I1);title(区域填充);
subplot(1,3,3);imshow(I2);title(区域填充+腐蚀);
实际上边缘图像是由原图像减去腐蚀图像得到的,而区域填充是在边缘图像的区域内填满的结果,故理论上来说最后区域填充的结果其实就是原来的腐蚀图像。从上图比较就可以看出,除了区域填充中未填的外围白线外,叠加了腐蚀图像的结果与区域填充是一样的,也与腐蚀图像一样(具体可以查看附件中的”区域填充.jpg”、”腐蚀.jpg”和”区域填充+腐蚀.jpg”)。
%% 细化
A1 = fs(I2,20);
figure;imshow(A1);
文档评论(0)