预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
《数字图像处理》实验报告姓名学号ﻩ专业电子科学与工程学院ﻩ实验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);%为避免不必要得计算量,每次填充迭代次数为70I1=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);实验效果图显示细化结果良好,表征了原图像得主要骨架特征.在实现细化算法过程中,一开始在判定就是否满足结构元素时采用得方法就是实现写好一个元胞数组B{k},然后在程序中调用数组进行比较.后来发现这样得运算速度大大降低