ImageVerifierCode 换一换
格式:DOC , 页数:25 ,大小:251.50KB ,
资源ID:6175325      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6175325.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《数字图像处理》实验指导书2013.doc)为本站会员(gnk289057)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

《数字图像处理》实验指导书2013.doc

1、 数 字 图 像 处 理 实 验 指 导 书山 东 建 筑 大 学信 息 与 电 气 工 程 学 院2013 年 3 月目 录实验守则 1实验一 图像增强与平滑 2实验二 图像分割与边缘检测 5实验三 图像的几何变换 7实验四 图像形态学处理 9实验五 频域变换 12实验六 数字图像处理应用 14附录 1 MATLAB 简介 16附录 2 实验报告范例-LOG 滤波器提取边缘 171实 验 守 则为了加强实验室管理,提高实验教学质量,培养学生理论联系实际的学风,提高实际操作技能,确保人身和设备的安全,特制定如下守则:1实验前要认真预习,了解实验目的、实验原理、实验线路、实验步骤及欲测的物理量。

2、熟悉和实验有关的仪器设备的用途、使用方法及注意事项。能回答指导教师的提问。2每个实验小组要选出组长 1 名,实验时要认真分工,轮流当记录员和操作者,以便每个人都能得到较全面的训练。实验线路接好后,各组学生要自行检查,然后请指导教师检查,经检查无误后方可接通电源。改接线路必须先断开电源,以免触电及损坏仪表。改接后的线路仍需经教师检查。3实验时应听从教师指导,严格按实验步骤进行,如实记录实验数据,积极思考和分析实验中发生的现象。实验中如遇事故应立即关断电源、保持现场,报告指导教师及时处理。如有损坏仪器或器件,要填写事故原因及报损单。4实验完毕应立即关断电源,把实验记录交指导教师检查合格后方可拆除线

3、路。如发现实验记录有不当和错误之外,应立即重作。要把所有仪器、仪表、工具、导线整理好。经指导教师清点后方可离开实验室。5要爱护公物。实验室所有的仪表、工具、器件等一律不得擅自带出。实验中如需更换仪器、仪表、工具、器件等,必须经指导教师同意。不得擅自更换或乱拿他组物品。未经允许,不得擅自拆卸实验用的仪器、设备。6实验时要严肃认真,讲究文明、礼貌,要保持安静和室内整洁,不随地吐痰和乱抛杂物。实验完毕要打扫实验室卫生。7书写实验报告时,语言要力求简练,书写应端正,作图应正规。实验报告一般应包括以下内容:(1) 实验目的;所用仪器、仪表、器件的名称及规格型号;实验电路原理图。(2) 实验项目(指导书中

4、的详细内容不必抄录);测试记录表;波形图及现象记录。(3) 实验数据整理,计算后的结果、及根据实验数据绘制的曲线。(4) 实验分析,应包括与理论计算值的比较、现象分析。8关于实验考核:学生在实验课中的实际技能水平与实验报告的质量是评定本课程实验成绩的标准。因各种原因缺做实验和缺交实验报告者,实验成绩要受影响。2实验一 图像增强与平滑一实验目的及要求1了解MATLAB的操作环境和基本功能。2掌握MATLAB中图像增强与平滑的函数的使用方法。3加深理解图像增强与平滑的算法原理。二、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。熟悉程序中所使用函数的调用方法,改

5、变有关参数,观察试验结果。 (可将每段程序保存为一个.m文件)1直方图均衡化clear all; close all % Clear the MATLAB workspace of any variables % and close open figure windows.I = imread(pout.tif); % Reads the sample images pout.tif, and stores it in imshow(I) % an array named I.display the imagefigure, imhist(I) % Create a histogram of

6、the image and display it in % a new figure window.I2,T = histeq(I); % Histogram equalization.figure, imshow(I2) % Display the new equalized image, I2, in a new figure window.figure, imhist(I2) % Create a histogram of the equalized image I2.figure,plot(0:255)/255,T); % plot the transformation curve.i

7、mwrite (I2, pout2.png); % Write the newly adjusted image I2 to a disk file named% pout2.png.imfinfo(pout2.png) % Check the contents of the newly written file2直接灰度变换clear all; close allI = imread(cameraman.tif);J = imadjust(I,0 0.2,0.5 1);imshow(I)figure, imshow(J)X,map = imread(forest.tif);figure,im

8、show(X,map)I2 = ind2gray(X,map);注意:imadjust()功能:调整图像灰度值或颜色映像表,也可实现伽马校正。语法:J = imadjust(I,low_in high_in,low_out high_out,gamma)newmap = imadjust(map,low_in high_in,low_out high_out,gamma)RGB2 = imadjust(RGB1,.)3J2 = imadjust(I2,0.5); figure,imshow(I2)figure, imshow(J2)J3 = imadjust(I2,1.5); figure,

9、imshow(J3)help imadjust % Display the imadjust() function information.3空域平滑滤波(模糊、去噪)clear all; close allI = imread(eight.tif);h1 = ones(3,3) / 9;h2 = ones(5,5) / 25;I1 = imfilter(I,h1);I2 = imfilter(I,h2);figure(1), imshow(I), title(Original Image);figure(2), imshow(I1), title(Filtered Image With 3*

10、3 )figure(3), imshow(I2), title(Filtered Image With 5*5 )% 加入 Gaussian 噪声J1 = imnoise(I,gaussian,0,0.005);% 加入椒盐噪声J2 = imnoise(I,salt % 对J1、J2进行平均值平滑滤波K1 = imfilter(J1,fspecial(average,3);K2 = imfilter(J2,fspecial(average,3);figure(4);subplot(2,2,1), imshow(J1) , title(gaussian);subplot(2,2,2), imsh

11、ow(J2), title(salt subplot(2,2,3), imshow(K1), title(average );subplot(2,2,4), imshow(K2);% 对J1、J2进行中值滤波K3 = medfilt2(J1,3 3);K4 = medfilt2(J2,3 3);figure(5);subplot(2,2,1), imshow(J1) , title(gaussian);subplot(2,2,2), imshow(J2), title(salt subplot(2,2,3), imshow(K3), title( Median filtering );4sub

12、plot(2,2,4), imshow(K4)4空域锐化滤波clear all; close allI = imread(moon.tif);w=fspecial(laplacian,0)w8=1,1,1;1,-8,1;1,1,1I1= imfilter(I,w, replicate);figure(1); imshow(I), title(Original Image);figure(2), imshow(I1), title(Laplacian Image);f = im2double(I);f1= imfilter(f,w, replicate);figure(3), imshow(f1

13、,), title(Laplacian Image);f2= imfilter(f,w8, replicate);f4 = f-f1;f8 = f-f2;figure(4), imshow(f4);figure(5), imshow(f8);(二)采用MATLAB底层函数编程实现1灰度变换之动态范围扩展假定原图像f(x , y)的灰度范围为a, b,希望变换后图像 g(x, y)的灰度范围扩展至c, d,则线性变换可表示为: caxfcdg),(),(用MATLAB底层函数编程实现上述变换函数。观察图像 pout.tif的灰度直方图,选择合适的参数a, b、c, d对图像pout.tif进行灰

14、度变换,以获得满意的视觉效果。2非锐化掩蔽和高升滤波从原图像中减去其非锐化(平滑过的)图像的过程称为非锐化掩蔽,其基本步骤为:对原图像进行平滑滤波得到模糊图像 ;(,)fxy从原图像中减去模糊图像,产生的差值图像称为模板 ;(,)maskgxy将模板加到原图像上,得到锐化后的图像 。 即,(,)xy5(,)(,) -(,)maskgxyfxyf1maskgxyk;用MATLAB函数编程实现上述功能。三、实验设备1PIII 以上微机;2MATLAB6.5 及以上;四、预习与思考1预习实验内容,阅读教材熟悉实验原理;2查阅资料,熟悉 MATLAB 的操作环境和基本功能。熟悉实验中涉及的有关函数。3

15、利用课余时间,用 MATLAB 底层函数编程实现实验内容(二)中的灰度线性变换。4你能否给出实现样例程序功能的其它方法?五、实验报告要求1. 简述试验的目的和试验原理;2. 叙述各段程序功能,改变有关函数的参数,分析比较实验结果;3. 打印出所编写的实验程序。4. 写出本实验的心得体会及意见。6实验二 图像分割与边缘检测一实验目的及要求1利用 MATLAB 研究图像分割与边缘检测的常用算法原理;2掌握 MATLAB 图像域值分割与边缘检测函数的使用方法;3了解边缘检测的算法和用途,比较 Sobel、Prewitt、Canny 等算子边缘检测的差异。二、实验内容(一)研究以下程序,分析程序功能;

16、输入执行各命令行,认真观察命令执行的结果。熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。1图像阈值分割clear all, close all;I = imread(rice.tif);figure (1),imshow(I)figure(2); imhist(I)T=120/255;Ibw1 = im2bw(I,T); %选择阈值 T=120/255 对图像二值化;figure(3);subplot(1,2,1), imshow(Ibw1);T=graythresh(I); %采用 Otsu 方法计算最优阈值 T 对图像二值化;L = uint8(T*255)Ibw2 = im

17、2bw(I,T); subplot(1,2,2), imshow(Ibw2);help im2bw;help graythresh;(令取不同值,重做上述试验,观察试验结果)2边缘检测clear all, close all;I = imread(rice.tif);BW1 = edge(I,sobel);BW2 = edge(I,canny);BW3 = edge(I,prewitt);BW4 = edge(I,roberts);BW5 = edge(I,log);7figure(1), imshow(I), title(Original Image);figure(2), imshow(B

18、W1), title(sobel);figure(3), imshow(BW2), title(canny);figure(4), imshow(BW3), title(prewitt);figure(5), imshow(BW4), title(roberts);figure(6), imshow(BW5), title(log);% 在完成上述试验后,查看函数 edge()使用说明。help edge% 仔细阅读函数 edge()使用说明后,研究 IPT 提供的边缘检测演示程序。edgedemo(二)利用 MATLAB 熟悉并验证其它图像分割方法(三)采用 MATLAB 编程实现自动全局阈

19、值算法,对图像 rice.tif进行二值化分割算法步骤:1)选取一个的初始估计值 T;2)用 T 分割图像。这样便会生成两组像素集合:G 1 由所有灰度值大于 T 的像素组成,而 G2 由所有灰度值小于或等于 T 的像素组成。3)对 G1 和 G2 中所有像素计算平均灰度值 1 和 2。4)计算新的阈值: T =(1+2)/25)重复步骤(2)到(4) ,直到逐次迭代所得到的 T 值之差小于一个事先定义的参数 To,即,如果 |Tn Tn-1|K 时,所用的乘法次数约为 N*M*K*K。可见乘法次数和模板宽度的平方成正比。事实上,LOG 滤波器可以分解成一只高斯滤波器和另一只模板宽度更小的 L

20、OG 滤波器。另外,由于高斯滤波器是低通的而且可分解的的,所以。可以把原图尺寸缩小后再进行滤波,滤波结束后再进行插补,这样可以大大减少所要做的工作量。三、程序设计程序基于 MFC 的单文档界面,增加一个位图包裹类(设计模式的适配器模式)来封装对位图的操作,增加一个滤波类来进行通用的滤波操作。程序结构如下:位图文件 位图包裹类 滤波器类位图数据滤波后的位图数据视图类显示19类定义如下:位图包裹类:class CWrapBitmappublic:long GetSize(); /接口:得到位图大小,成功返回阵列大小,失败返回 falseint GetHeight(); /接口:得到位图高度,成功返

21、回高度,失败返回 falseint GetWidthBytes(); /接口:得到位图比特宽度,成功返回宽度,失败返回 falseint GetWidth(); /接口:得到位图实际宽度,成功返回宽度,失败返回 falseBYTE* GetpBuffer(); /接口:得到位图阵列指针,成功返回指针,失败返回 NULLCBitmap* GetpBitmap(); /接口:得到 CBitmap 类指针。成功返回指针,失败返回 NULLBOOL Save(LPCTSTR lpszPathName); /接口: 保存位图文件. 成功返回 true,失败返回 falseBOOL Load(LPCTST

22、R lpszPathName);/接口: 打开位图文件. 成功返回 true,失败返回 falseCWrapBitmap();virtual CWrapBitmap();private:BYTE* m_pBuffer; /位图阵列指针CBitmap m_Bitmap; /位图类HBITMAP m_hBitmap; /打开位图指针protected:HANDLE DDBToDIB(CBitmap ;滤波器类:const int TEMPLATE_LOG =1; /LOG 滤波器const int TEMPLATE_LAPLACIAN=2; /拉普拉斯滤波器(锐化)const int TEMPLA

23、TE_GAUSS =3; /Gauss 滤波器(平滑)class CFilter public:long GetCount(); /接口:得到滤波所用的乘法次数20BOOL Filter(const int nDefTemplate,BYTE *pBuffer, DWORD Size,DWORD Width, DWORD Height); /接口: 对二维数组(阵列)滤波. 成功返回 true,失败返回 falseCFilter();virtual CFilter();private:long m_lCount; /记录滤波所用的乘法次数float m_fCoef; /模板系数BYTE m_T

24、emplateWidth; /模板宽度char* m_pTemplate; /模板指针protected:BYTE CutOverflow(float fNum); /截取超出范围的数字void Multiply(BYTE* pBuffer,DWORD Size,DWORD Width,DWORD Height);/模板和阵列的操作void SetTemplate(const int nDefTemplate); /设置模板的参数;四、实验结果与分析实验采取如附图 2.1 的灰度图片,图片大小 170375,模板选为 55,如下所示:-2,-4,-4,-4,-2,-4, 0, 8, 0,-4,

25、-4, 8,24, 8,-4,-4, 0, 8, 0,-4,-2,-4,-4,-4,-2经一次 LOG 滤波得结果附图 2.2,所用得乘法次数为 1539650,经验证可知1539650(17051)(37551)55,符合前面所推导公式。若先把原图缩小到一半大小(85188) ,再经过高斯滤波,和 LOG 滤波,再插补到原图大小,得结果附图 2.3。所用乘法次数为 517816,其中高斯滤波用乘法次数 140616(85131)(18831)33,LOG 滤波用乘法次数 377200(85151)(188-5+1)55。显然大大减少了乘法次数。21附图 2.1(原图) 附图 2.2(LOG

26、滤波结果) 附图 2.3(滤波后插补结果)五、附关键源程序BOOL CFilter:Filter(const int nDefTemplate,BYTE *pBuffer,DWORD Size,DWORD Width, DWORD Height)SetTemplate(nDefTemplate);if(!pBuffer) return false; /Buf 为空if(Width+16)*HeightSize)/非 8 位色彩的位图 /MYTODO:转化到 8 位AfxMessageBox(“不支持非 256 色位图“);/return false;Multiply(pBuffer,Size,

27、Width,Height);return true;void CFilter:SetTemplate(const int nDefTemplate)if(m_pTemplate) delete m_pTemplate; switch(nDefTemplate)case TEMPLATE_LOG: m_TemplateWidth=5;m_fCoef=1;BYTE btTemplateSize=m_TemplateWidth*m_TemplateWidth;m_pTemplate=new charbtTemplateSize;char btTemp25=22-2,-4,-4,-4,-2,-4, 0

28、, 8, 0,-4,-4, 8,24, 8,-4,-4, 0, 8, 0,-4,-2,-4,-4,-4,-2;:memcpy(m_pTemplate,break;case TEMPLATE_LAPLACIAN:m_TemplateWidth=3;m_fCoef=1;BYTE btTemplateSize=m_TemplateWidth*m_TemplateWidth;m_pTemplate=new charbtTemplateSize;char btTemp9=-1,-1,-1,-1,9,-1,-1,-1,-1;:memcpy(m_pTemplate,break;case TEMPLATE_G

29、AUSS:m_TemplateWidth=3;m_fCoef=1/16.0; /不能 1/16,否则会变成 0BYTE btTemplateSize=m_TemplateWidth*m_TemplateWidth;m_pTemplate=new charbtTemplateSize;char btTemp9=1,2,1,2,4,2,1,2,1;:memcpy(m_pTemplate,break;default:TRACE(“没有该默认的模板“);void CFilter:Multiply(BYTE *pBuffer, DWORD Size, DWORD Width, DWORD Height)23int nBorder=m_TemplateWidth/2; /需要空开的大小DWORD dwOffset=0;float fResult=0;int nTempNum=0;BYTE* pTempBuffer=new BYTESize;for(DWORD y=0+nBorder;y255.0) return (BYTE)255;else if(fNum0.0) return (BYTE)0;else return (BYTE)fNum;long CFilter:GetCount()return m_lCount;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报