数字图像处理实验报告班级:姓名:学号:数字图像处理实验报告一.实验名称:图像灰度变换二.实验目的:1学会使用Matlab;2学会用Matlab软件对图像灰度进行变换,感受各种不同的灰度变换方法对最终图像效果的影响。三.实验原理:Matlab中经常使用的一些图像处理函数:读取图像:img=imread('filename');//支持TIFF,JPEG,GIF,BMP,PNG,XWD等文件格式。显示图像:imshow(img,G);//G表示显示该图像的灰度级数,如省略则默认为256。保存图片:imwrite(img,'filename');//不支持GIF格式,其他与imread相同。亮度变换:imadjust(img,[low_in,high_in],[low_out,high_out]);//将low_in至high_in之间的值映射到low_out至high_out之间,low_in以下及high_in以上归零。绘制直方图:imhist(img);直方图均衡化:histeq(img,newlevel);//newlevel表示输出图像指定的灰度级数。像平滑与锐化(空间滤波):w=fspecial('type',parameters);imfilter(img,w);//这两个函数结合将变得十分强大,可以实现photoshop里的任意滤镜。图像复原:deconvlucy(img,PSF);//可用于图像降噪、去模糊等处理。四.实验步骤:1.获取实验用图像:Fig3.10(b).jpg.使用imread函数将图像读入Matlab。2.产生灰度变换函数T1,使得:0.3rr0.35s=0.105+2.6333(r–0.35)0.35≤r≤0.651+0.3(r–1)r0.65用T1对原图像Fig3.10(b).jpg进行处理,打印处理后的新图像。3.产生灰度变换函数T2,使得:15.9744r5r≤0.5s=(r–0.5)0.2+0.12r0.5用T2对原图像Fig3.10(b).jpg进行处理,打印另一处理后的新图像。4.分别用s=r0.6;s=r0.4;s=r0.3对Fig3.08(a).jpg图像进行处理。为简便起见,请使用Matlab中的imadjust函数。5.对Fig3.04(a).jpg图像实施反变换(NegativeTransformation)。s=1-r;6.对Fig3.10(b).jpg图像实施灰度切片(Gray-levelslicing)。具体要求如下:当0.2≤r≤0.4时,将r置为0.6,当r位于其他区间时,保持其灰度与原图像一样。五.实验程序:%1figure;subplot(4,3,1);i=imread('Fig3.10(b).jpg');i=im2double(i);imshow(i);title('1');%2subplot(4,3,2);r=[0:0.001:1];s=[r0.35].*r*0.3+[r=0.65].*[r=0.35].*(0.105+2.6333*(r-0.35))+[r0.65].*(1+0.3*(r-1));plot(r,s);title('2p,');subplot(4,3,3);T1=[i0.35].*i*0.3+[i=0.65].*[i=0.35].*(0.105+2.6333*(i-0.35))+[i0.65].*(1+0.3*(i-1));imshow(T1);title('2i,');imwrite(T1,'Fig3.10(b)_T1.jpg','jpg');%3subplot(4,3,4);r=[0:0.001:1];s=[r=0.5].*(r.^5)*15.9744+[r0.5].*((r-0.5).^0.2+0.12);plot(r,s);title('3p,');subplot(4,3,5);T2=[i=0.5].*(i.^5)*15.9744+[i0.5].*((i-0.5).^0.2+0.12);imshow(T2);title('3i,');imwrite(T2,'Fig3.10(b)_T2.jpg','jpg');%4subplot(4,3,6);ss1=r.^0.6;ss2=r.^0.4;ss3=r.^0.2;plot(r,ss1,r,ss2,r,ss3);title('4p,');subplot(4,3,7);s1=imadjust(i,[],[],0.6);imshow(s1);title('41i,');subplot(4,3,8);s2=imadjust(i,[],[],0.4);imshow(s2);title('42i,');subplot(4,3,9);s3=imadjust(i,[],[],0.3);imshow(s3);title('43i,');%5subplot(4,3,10);rr=imread('Fig3.04(a).jpg');rr=im2double(rr);imshow(rr);title('5i,');ss=1-rr;imwrite(ss,'Fig3.10(a)_ss.jpg','jpg');%6subplot(4,3,11);r=[0:0.001:1];s=[r=0.4].*[r=0.2]*0.6;plot(r,s);title('6p,');subplot(4,3,12);s6=[i=0.4].*[i=0.2]*0.6+[i0.4].*i+[i0.2].*i;imshow(s6);title('6i,');imwrite(s6,'Fig3.10(b)_s6.jpg','jpg');六.实验处理前后图像:七.实验小结在学习了数字图形图像处理之后,我知道了如何学会用VC++6.0和Matlab简单的处理图像,这次的实验我主要是用Matlab软件对图像灰度进行变换。在上机操作的过程中,我遇到了一些难题,在刚开始时,我连Matlab如何使用都不知道,但是上网找到一些资料最终知道了如何使用,到后来在使用Matlab时,我不知道Matlab的一些函数的用法,如imread()函数,imshow()函数等,在运行时总会报错。但是我通过上网查找或者通过与同学讨论,最后将这些问题一一解决,虽然将结果最后弄了出来,但是我还是对Matlab的其它函数有些不懂。我想以后还需要对其进行深入的学习。在本次实验中,我感受各种不同的灰度变换方法对最终图像效果的影响。感觉很有趣,虽然用Matlab简单的处理图像相较于photoshop要麻烦一些,但是当看到数字图像处理在各个领域的应用是如此的广泛。通过本次实验我学会了很多。对其有了初步了解,在查找资料中也知道了用VC++6.0对图像的一些处理方法。总之,这次的收获很多。