2014-7自编数字图像处理实验-参考答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数字图像处理—及MATLAB实现实验指导参考答案目录实验1MATLAB软件入门及数字图像处理工具箱(2学时)..................................................2实验3MATLAB实现数字图像的变换技术(2学时)............................................................20实验4MATLAB实现数字图像增强(2学时)......................................................................24实验5MATLAB实现图像的复原(2学时)...................................................................36实验6MATLAB实现图像分割(2学时).........................................................................39实验7MATLAB实现彩色图像处理(2学时).................................................................55实验8MATLAB实现数字图像其它处理(2学时)..........................................................60实验1MATLAB软件入门及数字图像处理工具箱(2学时)【实验内容】一、二两项略一、运行MATLAB,要求完成:(1)、了解MATLAB工作环境(2)、运用MATLAB帮助系统,查询imread,imwrite,imshow这3个工具箱函数的功能,给出解释(3)、在桌面上建立一个文件夹,以本人姓名拼音缩写为文件名,将该文件夹通过setpath设置,放到MATLAB的搜索路径下。截图最后操作的界面,保存至该文件夹下。二、了解MATLAB的一些简单的工具箱函数使用,在MATLAB下完成一些图像处理操作。1、在命令窗口下依次输入如下带下划线的英文命令,无需写注释,对比查看结果:(1)、读入并显示一幅图像clear;closeall;%首先清除MATLAB所有的工作平台变量,关闭已打开的图形窗口。I=imread(′pout.tif′);%然后使用图像读取函数imread来读取一幅图像。假设要读取图像pout.tif,并将其存储在一个名为I的数组中imshow(I)%使用imshow命令来显示数组I观察显示结果(2)、检查内存中的图像Whos%使用whos命令来查看图像数据I是如何存储在内存中,MATLAB做出的响应如下:NameSizeBytesClassI291×24069840uint8arrayGrandtotalis69840elementsusing69840bytes(3)、实现直方图均衡化如pout.tif图像对比较低,为了观察图像当前状态下亮度分布情况,可以通过使用imhist函数创建描述该图像灰度分布的直方图。figure,imhist(I);%首先使用figure命令创建一个新的图像窗口,避免直方图覆盖图像数组I的显示结果。I2=histeq(I);figure,imshow(I2);%可以通过调用histeq函数将图像的灰度值扩展到整个灰度范围中,从而达到提高数组I的对比度。此时修改过的图像数据保存在变量I2中。然后,再通过调用imhist函数观察其拓展后的灰度值的分布情况。(4)保存图像将新调节后的图像I2保存到磁盘中。假设希望将该图像保存为PNG格式图像文件,使用imwrite函数并指定一个文件名,该文件的扩展名为.png。imwrite(I2,′pout2.png′);(5)检查新生成文件的内容利用imfinfo函数可以观察上述语句写了什么内容在磁盘上。值得注意的是:在imfinfo函数语句行末尾不要加上分号,以保证MATLAB能够显示图像输出结果;另外,要保证此时的路径与调用imwrite时的路径一致。imfinfo(′pout2.png′)2、对一幅灰度图像rice.tif进行一些较为高级的操作,在文本编辑器下输入如下程序,保存成test.m文件,按要求做,调试成功,并观察显示结果:clear;closeall;I=imread(′rice.tif′);imshow(I);%此处加一个断点,观察结果background=imopen(I,stre(′disk15));%实现了背景亮度的估计I2=imsubtract(I,background);%得到背景一致的图像figure,imshow(I2);%此处加一个断点,观察结果I3=imadjust(I2,stretchlim(I2),[0,1]);%修改后图很暗,调节对比度figure,imshow(I3);%此处加一个断点,观察结果level=graythresh(I3);bw=im2bw(I3,level);%通过阈值法实现图像的二值化figure,imshow(bw);%此处加一个断点,观察结果[labeled,numobjects]=bwlabel(bw,4);%labelcomponents%找出米粒的个数:numobjects=80grain=imcrop(labeled);%使用imcrop选择标记区域RGB_label(grain,@spring,’c’,’shuffle’);%伪彩色显示标记矩阵Figure,imshow(RGB_label)%此处加一个断点,观察结果graindata=regionprops(labeled,′basic′)allgrains=[graindata.area];max(allgrains)%找最大的那粒米的尺寸biggrain=find(allgrains==695)%返回最大的那粒米的标记号,%biggrain=68mean(allgrains)%米粒的平均尺寸hist(allgrains,20);%绘制一个包含20柱的直方图来说明米粒大小的分布三、编程综合练习1、试对lena图像分别进行4和16倍减采样,查看其减采样效果,分析。提示:二维图像处理,行每隔2,列每隔2,抽取,则实现4倍减采样;行每隔4,列每隔4,抽取,则实现16倍减采样参考程序如下:cleara=imread('lena.bmp');b=rgb2gray(a);figuresubplot(1,3,3),imshow(a),title('原图像');m=[24];formn=1:2[width,height]=size(b);quartimage=zeros(floor(width/(m(mn))),floor(height/(m(mn))));k=1;n=1;fori=1:(m(mn)):widthforj=1:(m(mn)):heightquartimage(k,n)=b(i,j);n=n+1;endk=k+1;n=1;endsubplot(1,3,mn)imshow(uint8(quartimage));mm=m(mn)*m(mn);title([int2str(mm),'倍减采样图像'])end图1.1减采样显示结果2、任选一副彩色图像,将其转换成256级灰度图像,64级灰度图像,16级灰度图像,2级灰度图像,显示并存储显示结果图,观察转换后图像的变换,并分析。(即灰度级的量化)cleara=imread('lena.bmp');b=rgb2gray(a);figuresubplot(2,3,1)imshow(b),title('256级原图像')[width,hei]=size(b);img64=zeros(width,hei);img32=zeros(width,hei);img8=zeros(width,hei);img2=zeros(width,hei);fori=1:widthforj=1:heiimg64(i,j)=floor(b(i,j)/4);endendsubplot(2,3,2)imshow(uint8(img64),[0,63]);title('64级图像')fori=1:widthforj=1:heiimg32(i,j)=floor(b(i,j)/16);endendsubplot(2,3,3)imshow(uint8(img8),[0,7]);title('8级图像')fori=1:widthforj=1:heiimg2(i,j)=floor(b(i,j)/128);endendsubplot(2,3,4)imshow(uint8(img2),[0,1]);title('2级图像')【思考题】1、数字图像在MATLAB中以数据矩阵方式表达,如何通过MATLAB语句截取图像的一部分矩形区域进行分析处理。答:由于数字图像在MATLAB中以数据矩阵方式表达,因此可用截取矩阵的方式来实现对图像的截取,如原图像大小为A(256,256),则A(1:100,1:200)则实现了对图像截取(1-100行,1-200列)进行读取。2、图像的数字化工作包括哪两个方面?答:图像的数字化工作包括采样和量化两个方面,采样指的是空间域的离散化,量化指的是灰度(亮度)的离散化。3、图像工程包含哪3个层次?你最感兴趣的是图像处理哪个方面的内容?答;图像工程包含由低到高图像处理,图像分析,图像理解3个层次。实验2数字图像的MATLAB基本操作(2学时)【实验内容】一、图像读取,显示,保存1、利用imread()函数从内存中读取一幅绘有花朵的tif图像,假设其名为flower.tif,存入一个数组I中;利用whos命令提取该读入图像flower.tif的基本信息;利用imshow()函数来显示这幅图像,并添加颜色条;利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,放在桌面上,并显示出来,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q),q取0-100。程序段及显示结果如下:(1)I=imread('flower.tif');Imshow(I)(2)whosNameSizeBytesClassAttributesI296x394x3349872uint8(3)imfinfo('flower.tif')ans=Filename:'flower.tif'FileModDate:'09-十月-201310:35:38'FileSize:48384Format:'jpg'FormatVersion:''Width:394Height:296BitDepth:24ColorType:'truecolor'FormatSignature:''NumberOfSamples:3CodingMethod:'Huffman'CodingProcess:'Sequential'Comment:{}(4)imwrite(I,'flower.jpg','quality',10);(5)imwrite(I,'flower.bmp','quality',10);2、用函数imread()读入图像forest.tif和trees.jpg,使用imshow命令在同一图形窗中显示两者;再打开另一个图形窗,利用subimage函数实现在同一个图形窗口中显示该两幅图像,对比前后两者的显示效果,给出解释。程序如下:I1=imread(‘forest.tif’);I2=imread(‘trees.jpg’)figure,subplot(2,1,1),imshow(I1);subplot(2,1,2),imshow(I2);figure,subplot(2,1,1),subimage(I1);sublot(2,1,2),subim

1 / 68
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功