《图形图像实验一1.doc》由会员分享,可在线阅读,更多相关《图形图像实验一1.doc(13页珍藏版)》请在金锄头文库上搜索。
1、甘肃政法学院本科生实验报告(一)姓名: xxx学院:计算机科学学院专业:计算机科学与技术 班级: 计本班实验课程名称:图形图像处理与应用实验日期:2012年3月28日指导教师及职称: 实验成绩:开课时间:2011-2012学年 第二学期甘肃政法学院实验管理中心印制实验题目Matlab语言及数字图像处理基本操作小组合作否姓名 班级10计本班学 号 一、实验目的1、学习MATLAB语言的基本用法;2、掌握MATLAB语言中图像数据与信息的读取方法;3、掌握在MATLAB中绘制灰度直方图的方法;4、掌握灰度直方图的均衡化的方法;5、利用基本灰度变换对图像进行增强二实验环境Windws XP、MATA
2、LAB7.0三、实验内容与步骤1、验证MATLAB中图像数据的读写及显示(1)imread imread函数用于读入各种图像文件,其一般的用法为 X,MAP=imread(filename,fmt)其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的图像文件(可以加上文件的路径)。(2)imwriteimwrite函数用于输出图像,其语法格式为:imwrite(X,map,filename,fmt)按照fmt指定的格式将图像数据矩阵X和调色板map写入文件filename。(3)imfinfoimfinfo函数用于读取图像文件的有关信息,其语法格式为i
3、mfinfo(filename,fmt)imfinfo函数返回一个结构info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。(4)MATLAB中图像文件的显示imshowimshow函数是最常用的显示各种图像的函数,其语法如下:imshow(X,map)其中X是图像数据矩阵,map是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用代替map。需要显示多幅图像时,可以使用figure语句,它的功能就是重新打开一个图像显示窗口。2、验证图像对比度增强函数Imadj
4、ust 如果原图像f(x,y)的灰度范围是m,M,我们希望调整后的图像g(x,y)的灰度范围是n,N,那么下述变换,就可以实现这一要求。MATLAB图像处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度增强。Imadjust函数的语法格式为:J = imadjust(I,low_in high_in,low_out high_out)J = imadjust(I,low_in high_in,low_out high_out)返回图像I经过直方图调整后的图像J,low_in high_in为原图像中要变换的灰度范围,low_out high_out指定了变换后的灰度范围。3、
5、验证MATLAB中灰度直方图的显示MATLAB图像处理工具箱提供了imhist函数来计算和显示图像的直方图,imhist函数的语法格式为:imhist(I,n)imhist(X,map)其中imhist(I,n)计算和显示灰度图像I的直方图,n为指定的灰度级数目,默认值为256。imhist(X,map)计算和显示索引色图像X的直方图,map为调色板。4、验证直方图均衡化MATLAB图像处理工具箱提供了histeq函数来均衡化直方图,histeq函数的语法格式为:J=histeq(I,n)newmap=histeq(X,map)其中imhist(I,n)是对灰度图像I的直方图均衡化,n为指定的
6、灰度级数目,默认值为256。histeq(X,map)是对索引图像而言。5、利用基本灰度变换对图像进行增强灰度变换原理:灰度变换是一种空域处理方法,其本质是按一定的规则修改每个像素的灰度,从而改变图像的动态范围实现期望的增强效果。灰度变换按映射函数可分为线性、分段线性和非线性等多种形式。(1)线性灰度变换 线性灰度变换是将输入图像灰度值的动态范围按线性关系公式拉伸扩展至指定范围或整个动态范围。可突出感兴趣目标,抑制不感兴趣的目标。在实际运算中,原图像f(x,y)的灰度范围为a,b,使变换后图像g(x,y)的灰度扩展为c,d,则采用下述线性变换来实现:线性灰度变换对图像每个灰度范围作线性拉伸,将
7、有效地改善图像视觉效果。(2)分段线性灰度变换 为了突出图像中感兴趣的研究对象,常常要求局部拉伸某一范围的灰度值,或对不同范围的灰度值进行不同拉伸处理,即分段线性拉伸,数学表达式如下:(3)非线性灰度变换非线性灰度变换在整个灰度范围内采用统一的变换函数,利用变换函数的数学性质实现对不同灰度值区间的扩展和压缩。1、对数扩展。对数变换常用来扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节更容易看清,从而达到增强的效果。还可使图像灰度分布与人视觉特性相匹配。其具体形式为:式中:f(x,y)+1是为了避免对零求对数;C为尺度比例系数,用于调节动态范围。四、实验过程与分析复制三个图像文件1.jp
8、g、2.jpg和3.l.jpg到MATLAB目录下work文件夹中。1、 将MATLAB目录下work文件夹中的1.jpg图像文件读出,用到imread,imfinfo等文件,观察一下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。将这个图像显示出来(用imshow)。2、将MATLAB目录下work文件夹中的2.jpg图像文件读出,显示它的图像及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰度值调整到0,1之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别。3、将MATLAB目录下work文件夹中的2.jpg图像文件读
9、出,显示它的图像及灰度直方图,用histeq函数均衡化直方图并将其图像和灰度直方图显示出来,并观察调整后的图像与原图像的差别。4、利用基本灰度变换原理,编写程序对3.jpg图像进行增强附:利用基本灰度变换对图像进行增强 灰度变换原理:灰度变换是一种空域处理方法,其本质是按一定的规则修改每个像素的灰度,从而改变图像的动态范围实现期望的增强效果。灰度变换按映射函数可分为线性、分段线性和非线性等多种形式。1 线性灰度变换 线性灰度变换是将输入图像灰度值的动态范围按线性关系公式拉伸扩展至指定范围或整个动态范围。可突出感兴趣目标,抑制不感兴趣的目标。在实际运算中,原图像f(x,y)的灰度范围为a,b,使
10、变换后图像g(x,y)的灰度扩展为c,d,则采用下述线性变换来实现:线性灰度变换对图像每个灰度范围作线性拉伸,将有效地改善图像视觉效果。源代码如下:1、利用灰度调整函数变换图像A=imread(f:1.jpg,jpg); %读入图像B=imadjust(A,0.1,0.8,0,1); %灰度调整imwrite(B,F: 11.jpg); %图像保存subplot(2,2,1);imshow(A); %显示调整前后图像及其直方图subplot(2,2,2);imhist(A);subplot(2,2,3);imshow(B);subplot(2,2,4);imhist(B);2、利用灰度调整算法
11、变换图像clear;a=60; %图像变换参数设定b=180;c=0;d=255;A=imread(2.jpg,jpg); %读入图像m,n=size(A);A=double(A);for i=1:1:m %灰度调整 for j=1:1:n if (A(i,j)=a)&(A(i,j)b) B(i,j)=(A(i,j)-a)*(d-c)/(b-a)+c; end endenduint8(A); uint8(B);imwrite(B,F:22.jpg); %图像保存subplot(2,2,1); imshow(A); %显示调整前后图像及其直方图subplot(2,2,2); imhist(A);
12、subplot(2,2,3); imshow(B);subplot(2,2,4); imhist(B);2 分段线性灰度变换 为了突出图像中感兴趣的研究对象,常常要求局部拉伸某一范围的灰度值,或对不同范围的灰度值进行不同拉伸处理,即分段线性拉伸,数学表达式如下:源代码如下:clear;a=80; %图像变换参数设定b=160;Mf=255;c=50;d=200;Mg=255;A=imread(3.jpg,jpg); %读入图像m,n=size(A);A=double(A);for i=1:1:m %灰度调整 for j=1:1:n if A(i,j)=a)&(A(i,j)b) B(i,j)=(
13、A(i,j)-a)*(d-c)/(b-a)+c; else B(i,j)=(A(i,j)-b)*(Mg-d)/(Mf-b)+d; end endenduint8(A); uint8(B);imwrite(B,F:33.tif); %图像保存subplot(2,2,1); imshow(A); %显示调整前后图像及其直方图subplot(2,2,2); imhist(A);subplot(2,2,3); imshow(B);subplot(2,2,4); imhist(B);五、实验总结基本掌握了MATLAB语言的基本用法,MATLAB语言中图像数据与信息的读取方法,在器重绘制灰度直方图的方法,基本掌握了灰度直方图均衡化的方法,利用基本灰度变化对图像进行增强。在刚开始的做试验的时候,没有掌握MATLAB的语言所以出现了很多错误,经过看书以及对同学的咨询,改正了那些错误。