1、实验三 空域图像增强实验三 空域图像增强(灰度变换、直方图处理)一、实验目的1. 掌握灰度变换的基本原理。2. 掌握直方图处理的基本原理。3. 掌握Matlab中灰度变换和直方图处理的实现方法。二、实验内容1. 灰度变换(直接正比变换)。2. 灰度变换(截取式正比变换)。3. 灰度变换(反比变换)。4. 灰度变换(对比拉伸)。5. 灰度变换(灰度切割)。6. 灰度变换(对数变换)。7. 灰度变换(幂次变换)。8. 直方图处理(直方图均衡化)。三、实验仪器、设备及材料1. 电脑一台(2G CPU、2GB RAM、50GB Disk及以上)。2. Windows 2000 / Windows XP
2、 / Windows 7。3. Matlab R2006b及以上版本。4. 记录用的笔、纸。四、实验原理1. 灰度变换 灰度变换是一种点操作,根据原始图像中每个像素的灰度值,按照某种映射规则将其转化为另一灰度值。其原理是将原图像f(x , y)中的每个像素的灰度按EH操作直接变换以得到目标图像g(x , y)。若以s表示f(x , y),以t表示g(x , y),则灰度变换原理如下图所示: 2. 直方图处理 直方图变换可以清晰图像细节,突出目标物体,改善亮度比例关系,增强图像对比度。直方图变换基于概率论。直方图均衡化主要用于增强动态范围偏小的图像的反差。其基本思想是把原图像的直方图转换为均匀分
3、布的形式,增加像素灰度值的动态范围,增强图像整体对比度。五、实验步骤1. 灰度变换(直接正比变换) (1) 程序源代码: close all clear15clc disp(=E4_4_1.m=); I=imread(rice.png); subplot(3,3,1),imshow(I),ylabel(原图像); subplot(3,3,2),imhist(I); %方法1-系统函数J=imadjust(I,40/255 204/255,0 1); %图像的最小灰度值为40,最大灰度值为204 subplot(3,3,4),imshow(J),ylabel(变换图像(方法1); subplot
4、(3,3,5),imhist(J); %方法2-编程实现%把灰度值范围从40,204映射到0,255 f0=0;g0=0; %分段曲线的第1个点f1=40;g1=0; %分段曲线的第2个点f2=204;g2=255; %分段曲线的第3个点f3=255;g3=255; %分段曲线的第4个点subplot(3,3,9),plot(f0,f1,f2,f3,g0,g1,g2,g3),xlabel(f),ylabel(g),axis(0 255 0 255); %绘制变换曲线r1=(g1-g0)/(f1-f0); %曲线1的斜率b1=g0-r1*f0; %曲线1的截距r2=(g2-g1)/(f2-f1)
5、; %曲线2的斜率b2=g1-r2*f1; %曲线2的截距r3=(g3-g2)/(f3-f2); %曲线3的斜率b3=g2-r3*f2; %曲线3的截距m,n=size(I); K=double(I); for i=1:m for j=1:n f=K(i,j); g(i,j)=0; if(f=f0)&(f=f1)&(f=f2)&(f=f0)&(f=f1)&(f=f2)&(f=f0)&(f=f1)&(f=f2)&(f=f0)&(f=f1)&(f=f2)&(f=f0)&(f=f1)&(f=f2)&(f=f3)&(f=f4)&(f=f0)&(f=f1)&(f=f2)&(f=f3)&(f=f4)&(f
6、=f5) g(i,j)=r5*f+b5; %曲线5的方程y=r5*x+b4 end endend end end end end subplot(3,3,7),imshow(uint8(g),ylabel(第2种方法); subplot(3,3,8),imhist(uint8(g); (2) 观察并记录实验结果:作为实验报告的内容。(3) 在“第1种方法”中将“分段曲线的第1个点”更改为“f0=0;g0=0;”,观察并记录实验结果,分析产生该结果的原因:作为实验报告的内容。(4) 在“第2种方法”中将“分段曲线的第1个点”更改为“f0=0;g0=100;”,观察并记录实验结果,分析产生该结果的
7、原因:作为实验报告的内容。6. 灰度变换(对数变换) (1) 程序源代码: close all clear clc disp(=E4_4_6.m=); I=imread(rice.png); subplot(3,3,1),imshow(I),ylabel(原图像); subplot(3,3,2),imhist(I); %对数变换c=255/log(1+255); % 语句1 x=0:1:255; y=c*log(1+x); subplot(3,3,6),plot(x,y),axis tight,xlabel(f),ylabel(g); %绘制变换曲线m,n=size(I); K=double(
8、I); g=c*log(K+1); % %等价的循环语句实现for i=1:m for j=1:n g(i,j)=0; g(i,j)=c*log(K(i,j)+1); end end % subplot(3,3,4),imshow(uint8(g),ylabel(对数变换);subplot(3,3,5),imhist(uint8(g); %#系统函数调用# J=imadjust(I,0.216); subplot(3,3,7),imshow(J),ylabel(对数变换(系统调用); subplot(3,3,8),imhist(J); (2) 观察并记录实验结果:作为实验报告的内容。(3) 指
9、出“语句1”把变量c定义为“c=255/log(1+255);”的原因。(4) 将“语句1”更改为“c=1”,观察并记录实验结果,分析产生该结果的原因:作为实验报告的内容。7. 灰度变换(幂次变换) (1) 程序源代码: close all clear clc disp(=E4_4_7.m=); I=imread(rice.png); subplot(3,3,1),imshow(I),ylabel(原图像); subplot(3,3,2),imhist(I); %幂次变换C=1/(2553); % 语句1 x=0:1:255; y=C*(x.4); subplot(3,3,6),plot(x,
10、y),axis tight,xlabel(f),ylabel(g); %绘制变换曲线m,n=size(I); K=double(I); g=C*(K.4); % %等价的循环语句实现for i=1:m for j=1:n g(i,j)=0; g(i,j)=C*(K(i,j)4); end end % subplot(3,3,4),imshow(uint8(g),ylabel(幂次变换); subplot(3,3,5),imhist(uint8(g); %#系统函数调用#J=imadjust(I,4); subplot(3,3,7),imshow(J),ylabel(幂次变换(系统调用); su
11、bplot(3,3,8),imhist(J); (2) 观察并记录实验结果:作为实验报告的内容。(3) 指出“语句1”把变量c定义为“C=1/(2553);”的原因。(4) 将“语句1”更改为“c=1”,观察并记录实验结果,分析产生该结果的原因:作为实验报告的内容。8. 直方图处理(直方图均衡化) (1) 程序源代码: close all clear clc disp(=E4_5_2.m=); I=imread(tire.tif); J=histeq(I); subplot(2,2,1),imshow(I),ylabel(原图像); subplot(2,2,2),imhist(I); subplot(2,2,3),imshow(J),ylabel(直方图均衡图像); subplot(2,2,4),imhist(J); (2) 观察并记录实验结果:作为实验报告的内容。(3) 将图片“tire.tif”更改为另外一张新的图片,观察并记录实验结果:作为实验报告的内容。六、实验报告要求1. 实验名称、实验日期、学生姓名、班级、教学班号、学号。2. 实验目的和要求。3. 实验仪器、设备及材料4. 实验原理。5. 实验步骤。 6. 实
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1