《数字图像处理 最终版打印.doc》由会员分享,可在线阅读,更多相关《数字图像处理 最终版打印.doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、郑州航空工业管理学院结 课 设 计(论文) 级 电子信息工程 专业 班级 课 程 数字图像处理 姓 名 学号 指导教师 职称 二一 三 年 十二 月 二 日目录1. MATLAB基本知识介绍31.1 MATLAB的概述31.2 MATLAB产生的历史背景31.3 MATLAB语言的特点41.4 MATLAB在图像处理中的应用52. 使用MATLAB对图片处理62.1 光栅重合62.1.1 读取图片62.1.2 截取图片的一部分72.1.3 做归一化互相关和找峰值坐标72.1.4 找图片间的互补点82.1.6 把onion images 填补到peppers images的位置92.1.7 透明
2、叠加onion images 到peppers images上92.2 去模糊102,2,1 读取图片102.2.2 对图片进行模糊处理102.2.3 使用不同大小的PSFs恢复模糊图像112.2.4 提高修复122.2.5 对PSF恢复使用额外的约束132.3 增强142.3.1 读取图片pout.tif142.3.2 整理图片大小pout.tif142.3.3 增强处理图片pout.tif142.4 空间演变152.4.1 读取图片并简单转换图片152.4.2 分析图片的转换结果162.4.3 比较fill、replicate、bound三种填补方式172.4.4 练习circular、s
3、ymmetric两种填补方式191. MATLAB基本知识介绍1.1 MATLAB的概述MATLAB 是MATrix LABoratory(“矩阵实验室”)的缩写,是由美国MathWorks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。MATLAB包括拥有数百个内部函数的主包和三十几种工具包(Toolbox)。工具包又可以分为功能性工具包和学科工具包.功能工
4、具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。1.2 MATLAB产生的历史背景在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,
5、这两个程序库代表矩阵运算的最高水平。到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序.Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合。在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。1983年春天,Cle
6、ve Moler到Standford大学讲学,MATLAB深深地吸引了工程师John Little.John Little敏锐地觉察到MATLAB在工程领域的广阔前景.同年,他和Cleve Moler,Steve Bangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能。1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发。在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类。一类是数值计算型软件,如MATLAB,Xm
7、ath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低。MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB。经过多年的国际竞争,MATLAB以经占据了数值软件市场的主导地位。在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC语言等编程语言开发的。这种软件的缺点是使
8、用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB的出现,为各国科学家开发学科软件提供了新的基础。在MATLAB问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大大大型软件。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。在
9、设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。在国内,特别是工程界,MATLAB一定会盛行起来。可以说,无论你从事工程方面的哪个学科,都能在MATLAB里找到合适的功能。1.3 MATLAB语言的特点一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和FOR
10、TRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。(2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。 (3)MATLAB既具有结构化的控制语句(如for循环,while
11、循环,break语句和if语句),又有面向对象编程的特性。(4)程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。(5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。(6)MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。(7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。(8)功能强大的工具箱是MATLAB的另一
12、特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如control,toolbox, signl processing toolbox,commumnication toolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。(9) 源程序的开放性。开放性也许是MATLAB最受人
13、们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。1.4 MATLAB在图像处理中的应用图像处理工具包是由一系列支持图像处理操作的函数组成的。所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等) 、图像分析和统计、二值图像操作等。下面就MATLAB 在图像处理中各方面的应用分别进行介绍。(1) 图像文件格式的读写和显示。MATLAB 提供了图像文件读入函数 imread(),用来读取如:bmp、tif、tiffpcx 、jpg
14、 、gpeg 、hdf、xwd等格式图像文;图像写出函数 imwrite() ,还有图像显示函数 image()、imshow()等等。(2) 图像处理的基本运算。MATLAB 提供了图像的和、差等线性运算 ,以及卷积、相关、滤波等非线性算。例如,conv2(I,J)实现了I,J两幅图像的卷积。(3) 图像变换。MATLAB 提供了一维和二维离散傅立叶变换(DFT) 、快速傅立叶变换(FFT) 、离散余弦变换 (DCT) 及其反变换函数,以及连续小波变换(CWT)、离散小波变换(DWT)及其反变换。(4) 图像的分析和增强。针对图像的统计计算MATLAB 提供了校正、直方图均衡、中值滤波、对比
15、度调整、自适应滤波等对图像进行的处理。(5) 图像的数学形态学处理。针对二值图像,MATLAB 提供了数学形态学运算函数;腐蚀(Erode)、膨胀(Dilate)算子,以及在此基础上的开 (Open)、闭(Close)算子、厚化 (Thicken) 、薄化 (Thin) 算子等丰富的数学形态学运算。以上所提到的 MATLAB在图像中的应用都是由相应的MATLAB函数来实现的,使用时,只需按照函数的调用语法正确输入参数即可。具体的用法可参考MATLAB丰富的帮助文档。图像边缘对图像识别和计算机分析十分有用,在MATLAB中,函数 edge()用于灰度图像边缘的提取,它支持六种不同的边缘提取方法,
16、即Sobel方法、Prewitt 方法、Robert 方法,Laplacian2Gaussian方法、过零点方法和Canny方法。2. 使用MATLAB对图片处理在这里运用MATLAB 7.11.0来对图片进行以下相关处理。2.1 光栅重合2.1.1 读取图片如图2.1.1,图2.1.2onion = imread(onion.png);peppers = imread(peppers.png);imshow(onion)figure, imshow(peppers)图2.1.1图2.1.22.1.2 截取图片的一部分如图2.1.3,图2.1.4rect_onion = 111 33 65 5
17、8;rect_peppers = 163 47 143 151;sub_onion = imcrop(onion,rect_onion);sub_peppers = imcrop(peppers,rect_peppers);figure, imshow(sub_onion)figure, imshow(sub_peppers) 图2.1.3 图2.1.42.1.3 做归一化互相关和找峰值坐标如图2.1.5c = normxcorr2(sub_onion(:,:,1),sub_peppers(:,:,1);figure, surf(c), shading flat图2.1.52.1.4 找图片间
18、的互补点max_c, imax = max(abs(c(:);ypeak, xpeak = ind2sub(size(c),imax(1);corr_offset = (xpeak-size(sub_onion,2) (ypeak-size(sub_onion,1);rect_offset = (rect_peppers(1)-rect_onion(1) (rect_peppers(2)-rect_onion(2);offset = corr_offset + rect_offset;xoffset = offset(1);yoffset = offset(2);2,1,5 把onion im
19、ages 从peppers images中抽出来xbegin = round(xoffset+1);xend = round(xoffset+ size(onion,2);ybegin = round(yoffset+1);yend = round(yoffset+size(onion,1);extracted_onion = peppers(ybegin:yend,xbegin:xend,:);if isequal(onion,extracted_onion) disp(onion.png was extracted from peppers.png)end2.1.6 把onion imag
20、es 填补到peppers images的位置运行结果如图2.1.6recovered_onion = uint8(zeros(size(peppers);recovered_onion(ybegin:yend,xbegin:xend,:) = onion;figure, imshow(recovered_onion)图2.1.62.1.7 透明叠加onion images 到peppers images上运行结果如图2.1.7m,n,p = size(peppers);mask = ones(m,n);i = find(recovered_onion(:,:,1)=0);mask(i) =
21、.2;figure, imshow(peppers(:,:,1) hold onh = imshow(recovered_onion); set(h,AlphaData,mask)图2.1.72.2 去模糊2,2,1 读取图片如图2.2.1I = imread(cameraman.tif);figure;imshow(I);title(Original Image);图2.2.12.2.2 对图片进行模糊处理PSF = fspecial(gaussian,7,10);Blurred = imfilter(I,PSF,symmetric,conv);figure;imshow(Blurred);
22、title(Blurred Image);图2.2.22.2.3 使用不同大小的PSFs恢复模糊图像UNDERPSF = ones(size(PSF)-4);J1 P1 = deconvblind(Blurred,UNDERPSF);figure;imshow(J1);title(Deblurring with Undersized PSF);图2.2.3OVERPSF = padarray(UNDERPSF,4 4,replicate,both);J2 P2 = deconvblind(Blurred,OVERPSF);figure;imshow(J2);title(Deblurring w
23、ith Oversized PSF);图2.2.4INITPSF = padarray(UNDERPSF,2 2,replicate,both);J3 P3 = deconvblind(Blurred,INITPSF);figure;imshow(J3);title(Deblurring with INITPSF);图2.2.52.2.4 提高修复WEIGHT = edge(I,sobel,.3);se = strel(disk,2);WEIGHT = 1-double(imdilate(WEIGHT,se);WEIGHT(1:3 end-0:2,:) = 0;WEIGHT(:,1:3 end
24、-0:2) = 0;figure;imshow(WEIGHT);title(Weight array);J P = deconvblind(Blurred,INITPSF,30,WEIGHT);figure;imshow(J);title(Deblurred Image); 图2.2.6 图2.2.72.2.5 对PSF恢复使用额外的约束P1 = 2;P2 = 2;FUN = (PSF) padarray(PSF(P1+1:end-P1,P2+1:end-P2),P1 P2);JF PF = deconvblind(Blurred,OVERPSF,30,WEIGHT,FUN);figure;i
25、mshow(JF);title(Deblurred Image);图2.2.82.3 增强2.3.1 读取图片pout.tif pout = imread(pout.tif);2.3.2 整理图片大小pout.tifwidth = 210;images = pout; dim = size(images); images = imresize(images,width*dim(1)/dim(2) width,bicubic);pout = images;2.3.3 增强处理图片pout.tif结果如图2.3.1,图2.3.2,图2.3.3和图2.3.4pout_imadjust = imadj
26、ust(pout);pout_histeq = histeq(pout);pout_adapthisteq = adapthisteq(pout);imshow(pout);title(Original);figure, imshow(pout_imadjust);title(Imadjust);figure, imshow(pout_histeq);title(Histeq);figure, imshow(pout_adapthisteq);title(Adapthisteq); 图2.3.1 图2.3.2 图2.3.3 图2.3.42.4 空间演变 2.4.1 读取图片并简单转换图片如图2
27、.4.1,图2.4.2a = 0.45;T = maketform(affine, 1 0 0; a 1 0; 0 0 1 );A = imread(football.jpg);h1 = figure; imshow(A); title(Original Image);orange = 255 127 0;B = imtransform(A,T,cubic,FillValues,orange);R = makeresampler(cubic,nearest,fill);B = imtransform(A,T,R,FillValues,orange);h2 = figure; imshow(B)
28、;title(Sheared Image);图2.4.1图2.4.22.4.2 分析图片的转换结果运行程序结果如图2.4.3,图2.4.4U,V = meshgrid(0:64:320,0:64:256);X,Y = tformfwd(T,U,V);gray = 0.65 * 1 1 1;figure(h1);hold on;line(U, V, Color,gray);line(U,V,Color,gray);figure(h2);hold on;line(X, Y, Color,gray);line(X,Y,Color,gray);图2.4.3图2.4.42.4.3 比较fill、repl
29、icate、bound三种填补方式结果如图2.4.5,图2.4.6,图2.4.7,图2.4.8R = makeresampler(cubic,nearest,fill);Bf = imtransform(A,T,R,XData,-49 500,YData,-49 400,. FillValues,orange);figure, imshow(Bf);title(Pad Method = fill);图2.4.5R = makeresampler(cubic,nearest,replicate);Br = imtransform(A,T,R,XData,-49 500,YData, -49 40
30、0);figure, imshow(Br);title(Pad Method = replicate);图2.4.6R = makeresampler(cubic,nearest, bound);Bb = imtransform(A,T,R,XData,-49 500,YData,-49 400,. FillValues,orange);figure, imshow(Bb);title(Pad Method = bound);图2.4.7R = makeresampler(cubic,nearest,fill);Cf = imtransform(A,T,R,XData,423 439,YDat
31、a,245 260,. FillValues,orange);R = makeresampler(cubic,nearest,bound);Cb = imtransform(A,T,R,XData,423 439,YData,245 260,. FillValues,orange);Cf = imresize(Cf,12,nearest);Cb = imresize(Cb,12,nearest);figure;subplot(1,2,1); imshow(Cf); title(Pad Method = fill);subplot(1,2,2); imshow(Cb); title(Pad Me
32、thod = bound);图2.4.82.4.4 练习circular、symmetric两种填补方式如图2.4.9,图2.4.10Thalf = maketform(affine,1 0; a 1; 0 0/2);R = makeresampler(cubic,nearest,circular);Bc = imtransform(A,Thalf,R,XData,-49 500,YData,-49 400,. FillValues,orange);figure, imshow(Bc);title(Pad Method = circular);图2.4.9R = makeresampler(c
33、ubic,nearest,symmetric);Bs = imtransform(A,Thalf,R,XData,-49 500,YData,-49 400,. FillValues,orange);figure, imshow(Bs);title(Pad Method = symmetric);图2.4.10总结这个学期学习数字图像处理知识,一方面学习了visual basic知识,熟悉了vb软件的应用,另一方面,尤为重要的是进一步巩固了Matalab的知识,这次论文书写的内容是基于Matalab软件的相关图像处理,以前对Matalab学习的不是太深入,通过这次课程的学习,我对image p
34、rocessing toolbox及imread()、imshow()等相关的处理函数有了进一步的学习,可以很好地完成一般的数字图像处理操作。对于Matalab进行数字图像处理的专业知识的学习是一个很重要的方面,另外,我深深地体会到事无巨细,都需要一点一滴去实践,做学问来不得半点的懒惰和马虎,就如这次撰写论文,我对论文的基本格式有了一个全新的认识,总之,学习的事需要严谨的态度,尤其是我们这样的工科学生,更应该从一点一滴去把握。非常感谢老师一直以来的鼓励和教导,在以后的日子里我会更深一步的学习。参考资料1 徐明远,刘增力 MATLAB仿真在信号处理中的应用 西安电子科技大学出版社 2007.112 Rafael C. Gonzalez,Richard E. Woods,数字图像处理 电子工业出版社 2013.1