您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 河北工业大学《计算机图像处理》实验指导书
实验一MATLAB数字图像处理基本操作一、实验目的与要求1.熟悉MATLAB软件的开发环境、基本操作以及图像处理工具箱,为编写图像处理程序奠定基础。2.掌握二值、灰度和彩色图像的读、写和显示方法,以及图像的高、宽、颜色等参数的获取方法。3.根据实验内容进行问题的简单分析和初步编码。二、实验相关知识1、Matlab软件ImageProcessingToolbox简介MatLab的原文是MatrixLaboratory,它包括若干个工具箱,如CommunicationsToolbox、ControlSystemToolbox、NeuralNetworkToolbox、WaveletToolbox等等,其中ImageProcessingToolbox图像处理工具箱可以完成GeometricOperations、Enhancement、ColorSegmentation、ImageTransformation、ImageAnalysis、MorphologicalOperations等操作。在MatLab中,图像就是一个矩阵,在进行处理时当作一个变量即可,因此运算的书写十分简洁,故MatLab有草稿纸式的算法语言之称。例如:J=I+50;%为原始图像I加上一常数50,并将结果赋予变量J,其效果相当于得到一幅加亮的图像J以此类推可以书写出减法J=I-0.5;乘法J=I*2;除法J=I/3;等等。利用MatLab提供的imread和imwrite函数可以完成对图像文件的读写操作,它们所支持的一些常用的图像文件格式见表1-1。表1-1MATLAB支持的一些常用的图像文件格式格式名称描述可识别的扩展符TIFF加标签的图像文件格式.tiff、.tifJPEG联合图像专家组.jpg、.jpegGIF图像交换格式.gifBMPWindows位图.bmpPNG可移植网络图形.pngXWDXWindow转储.xwdMatLab提供了两种运行方式,即命令行方式和M文件方式。打开MatLab界面后,在Command窗口的提示符号“”下直接键入命令即可运行,如键入:clear%执行本命令将会清除内存中的全部变量figure(1);%生成一个图像窗口1I=imread('e:lena.bmp');%将硬盘e:根目录上的图像文件lena.bmp的数据读入矩阵变量I中imshow(I);%在当前的图像窗口中显示图像矩阵Ititle('原始图像');%在当前的图像窗口中加上标题但为了能够对程序进行调试和重复应用,我们要求用M文件的方式完成实验中各个程序的编写。2、数字图像的表示和类别根据图像数据矩阵解释方法的不同,MATLAB把其处理为四类:(1)亮度图像(Intensityimages)一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。若图像是double类,则像素取值就是浮点数。规定双精度型归一化亮度图像的取值范围是[0,1]。(2)二值图像(Binaryimages)一幅二值图像是一个取值只有0和1的逻辑数组。而一幅取值只包含0和1的uint8类数组,在MATLAB中并不认为是二值图像。使用logical函数可以把数值数组转化为逻辑数组,其语法为B=logical(A);其中A是由0和1构成的数值数组。要测试一个数组是否为逻辑数组,可以使用函数islogical(C);若C是逻辑数组,则该函数返回1;否则,返回0。(3)索引图像(Indexedimages)索引颜色通常也称为映射颜色,在这种模式下,颜色都是预先定义的,并且可供选用的一组颜色也很有限,索引颜色的图像最多只能显示256种颜色。一幅索引颜色图像在图像文件里定义,当打开该文件时,构成该图像具体颜色的索引值就被读入程序里,然后根据索引值找到最终的颜色。(4)RGB图像(RGBimages)一幅RGB图像就是彩色像素的一个M×N×3数组,其中每一个彩色像素点都是在特定空间位置上相对应的红、绿、蓝三个分量。按照惯例,形成一幅RGB彩色图像的三个矩阵常称为红、绿或蓝分量图像。令fR,fG和fB分别代表三种RGB分量图像。一幅RGB图像就利用cat(级联)操作将这些分量图像组合成彩色图像:rgb_image=cat(3,fR,fG,fB)在操作中,图像按顺序放置。3、数据类和图像类型间的转化表1-2中列出了MATLAB和ImageProcessingToolbox为表示图像所支持的各种数据类。表中的前8项称为数值数据类,第9项称为字符类,最后一项称为逻辑数据类。表1-3列出了工具箱中提供的一些必要函数,以便在图像类和数据类之间进行转化。表1-2MATLAB和IPT支持数据类型名称描述double双精度浮点数,范围为uint8无符号8比特整数,范围为[0255]uint16无符号16比特整数,范围为[065536]uint32无符号32比特整数,范围为[04294967295]int8有符号8比特整数,范围为[-128127]int16有符号16比特整数,范围为[-3276832767]int32有符号32比特整数,范围为[-21474836482147483647]single单精度浮点数,范围为char字符logical值为0或1表1-3格式转换函数名称将输入转化为有效的输入图像数据类im2uint8uint8logical,uint8,uint16和doulbeim2uint16uint16logical,uint8,uint16和doulbemat2graydouble,范围为[01]doubleim2doubledoublelogical,uint8,uint16和doulbeim2bwlogicaluint8,uint16和double4、常用函数和命令(1)读写图像文件a)imread:用于读入各种图像文件,返回一个矩阵,如:a=imread('d:\p1.jpg')b)whos:用于读取图像的基本信息,如:whosac)imwrite:用于写入图像文件,如:imwrite(a,'d:\p2.tif',’tif’)d)imfinfo:用于读取图像文件的有关信息,如:imfinfo('d:\p2.tif')(2)图像的显示a)image:image函数是MATLAB提供的最原始的图像显示函数,如:a=[1,2,3,4;4,5,6,7;8,9,10,11];image(a);b)imshow:用于图像文件的显示,如:i=imread('d:\p1.jpg');imshow(i);c)colorbar:用于显示图像的颜色条,如:i=imread('d:\p1.jpg');imshow(i);colorbar;d)figure:用于设定图像显示窗口,如:figure(1);figure(2);%n为图形窗口号数e)subplot:把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示,如:subplot(m,n,p)分成m×n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形f)plot:绘制二维图形,如:plot(y);plot(x,y);%x、y可以是向量、矩阵(3)图像类型转换a)rgb2gray:把真彩图像转换为灰度图像,如:i=rgb2gray(j)b)im2bw:通过阈值化方法把图像转换为二值图像,如:I=im2bw(j,level)Level表示灰度阈值,取值范围0~1,即0.n表示阈值取自原图像灰度范围的n%(4)其它运算函数a)zeros:生成全0数组或矩阵,如:B=zeros(m,n)或B=zeros([mn]),返回一个m×n的全0矩阵b)取整函数:round四舍五入取整函数;floor最小取整函数;ceil最大取整函数,如:a=[-1.9-0.23.45.62.4+3.6i];I=round(a)输出I=[-20362+4i]三、实验内容1、读入一幅RGB图像(sunset.jpg),分别转换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示这三幅图像,注上文字标题,即“原图像”、“灰度图像”、“二值图像”。subplot(1,3,1);I=imread('d:\sunset.jpg');30830810103083081010imshow(I);title('原图像');subplot(1,3,2);J=rgb2gray(I);imshow(J);title('灰度图像');subplot(1,3,3);Q=im2bw(J,0.5);imshow(Q);title('二值图像');2、说明以下程序的显示结果为何是一幅几乎全黑的图像。clear;closeall;myi=zeros(20,20);myi(2:2:18,2:2:18)=1;myi=uint8(myi);figure,imshow(myi,'notruesize');3、阅读分析下列程序,对每条语句给出注释,运行并解释最终执行结果;若将for循环改为方框中的程序,有何不同?clearall;closeall;I=imread('d:\lena512.jpg');[height,width]=size(I);figure;subplot(2,3,1);imshow(I);title('原图像');L=1;form=1:5L=2*L;quartimage=zeros(ceil(height/L),ceil(width/L));k=1;n=1;fori=1:L:heightforj=1:L:widthquartimage(k,n)=I(i,j);n=n+1;endk=k+1;n=1;endsubplot(2,3,m+1);imshow(uint8(quartimage));endform=1:5L=2*L;quartimage=I(1:L:height,1:L:width);subplot(2,3,m+1);imshow(uint8(quartimage));end4、编写程序将一幅灰度图像(orangutan.tif)每两行之间增加一行,即将图像的高度拉伸一倍、宽度不变,然后将其存储为图像文件。要求拉伸后图像的奇数行对应原图像的各行,偶数行是原图像相邻两行的灰度平均值(即偶数行由插值得到),并将结果与MATLAB图像处理工具箱中提供的改变图像大小的函数imresize(imresize(I,[mn])将图像I大小调整为m行n列)的处理结果进行比较。T1=maketform('affine',[100;020;001]);I=imread('c:\orangutan.tif');I1=imtransform(I,T1);imshow(I),figure,imshow(I1)5、熟悉数字图像处理常用函数的使用,调出帮助文档查看其各种不同用法。MatLab具有完善的帮助系统,包括命令行帮助、联机帮助和演示帮助等,应学会充分利用帮助系统来解决问题。获得帮助的途径有多种,如:(1)在MatLab界面中单击工具条上的问号,或单击Help菜单中的MATLABHelp选项;或按F1键打开Help窗口。(2)选择函数(函数所在区变暗),点右键弹出菜单,选择HelponSelection;或在command窗口键入help函数名(或工具箱名)。实验二图像直方图及灰度变换一、实验目的与要求1.掌握图像灰度直方图的概念及其计算方法,编写灰度直方图统计程序。2.通过对图像直方图的分析,学习应用直方图法解决诸如图像二值化等具体问题。3.熟悉直方图均衡化的计算过程及其应用。4.掌握图像灰度变换技术,通过调整图像的对比度和亮度等参数,改善视觉效果。二、实验相关知识直方图是图像最基本的统计特征,是图像亮度分布的概率密度函数,反映了图像灰度值的分布情况。直方图是多种空间域处理技术的基础。直方图操作能有效地用于图像增强,如通过直方图均衡化处理,可使图像在整个灰度级范围内的分布均匀
本文标题:河北工业大学《计算机图像处理》实验指导书
链接地址:https://www.777doc.com/doc-7116725 .html