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