实验六-图像增强-灰度变换_第1页
实验六-图像增强-灰度变换_第2页
实验六-图像增强-灰度变换_第3页
实验六-图像增强-灰度变换_第4页
实验六-图像增强-灰度变换_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验六图像增强-灰度变换一、灰度校正(20S)1、概念(5S)图像在成像过程中,往往由于光照、摄像靶面灵敏度以及光学系统等不均匀性而引起图像某些局部较暗或较亮。对这类图像使用灰度校正,可得到很好的效果。方法如下:设原始图像为,经系统成像后的不均匀图像为,那么:假设为常数,那么表示成像系统是均匀成像,否那么,成像系统不均匀。为求,用一原始均匀图像常数来成像,得到输出为,显然有:所以用数字图像表示为:即不均匀图像经校正后有均匀图像。注意:●经以上逐点校正后,校正后的图像灰度范围有可能超出记录器件的动态范围,必须用下面所述的灰度变换进行修正;●降质图像经修正后的量化值已经改变,在图像重建时要同时修正量化值。2、举例(15S)一般得到一幅图像后很难再用同一个环境来进行成像。所以,上述方法仅仅在理论上可行,实践上难以操作。一般采用下面简单的方法来处理。●一幅图像,图像的下部灰度比上部和中部灰度要低。clf;rice=imread('rice.tif');rice=im2double(rice);imshow(rice);●取32×32大小的图像块中的最小值作为图像背景的照度clf;rice=imread('rice.tif');rice=im2double(rice);bg32=blkproc(rice,[3232],'min(x(:))');surf(bg32);●然后将粗略估计出的背景照度矩阵扩展成原始图像大小相同的矩阵clf;rice=imread('rice.tif');rice=im2double(rice);bg32=blkproc(rice,[3232],'min(x(:))');bg256=imresize(bg32,[256256],'bicubic');imshow(bg256);●将估算出的背景照度从原始图像中减去,即可修正照度不均匀的影响,这样作的结果是使图像变暗。clf;rice=imread('rice.tif');rice=im2double(rice);bg32=blkproc(rice,[3232],'min(x(:))');bg256=imresize(bg32,[256256],'bicubic');d=rice-bg256;imshow(d);●通过调整图像灰度范围来校正图像变暗clf;rice=imread('rice.tif');rice=im2double(rice);bg32=blkproc(rice,[3232],'min(x(:))');bg256=imresize(bg32,[256256],'bicubic');d=rice-bg256;adjusted=imadjust(d,[0max(d(:))],[01],1);imshow(adjusted);三、灰度变换(35S)1、概念(10S)在某些情况下,为了将图像灰度级整个范围或其中某一段扩展或压缩到另一灰度范围质内,称灰度的线性变换。〔1〕当图像曝光不充分,使区间小于区间,即:、可选用这样的变换:通过这种变换,使得图像灰度范围从扩展到,实际上使曝光不充分的图像中黑的更黑、白的更白,从而提高了图像灰度的比照度。〔2〕假设图像的绝大局部灰度集中在之间,那么用这样的变换:这种变换实际上失去了一局部图像的信息。〔3〕在某些情况下,为不失去信息,可采用局部压缩,局部扩展的分段变换的方法,如下列图所示。注意:●灰度变换在图像量化之前和量化之后是不同的,量化后,变换不能增加灰度级数,信息量是不变的,或者会损失信息量。而量化前的变换往往能增加信息量。●假设有这样的变换:那么变换结果产生负片。2、举例(15S)〔1〕例1:分段线性变换clfX1=imread('pout.tif');subplot(221),imshow(X1);f0=0;g0=0;f1=70;g1=30;f2=180;g2=230;f3=255;g3=255;%绘制变换曲线subplot(222),plot([f0f1f2f3],[gaxistight,xlabel('f'),ylabel('g'),title('灰度变换曲线')r1=(g1-g0)/(f1-f0);b1=g0-r1*f0;r2=(g2-g1)/(f2-f1);b2=g1-r2*f1;r3=(g3-g2)/(f3-f2);b3=g2-r3*f2;[mn]=size(X1);X2=double(X1);%变换矩阵中的每一个元素forI=1:mforJ=1:nf=X2(I,J);g(I,J)=0;if(f>=0)&(f<=f1)g(I,J)=r1*f+b1;elseif(f>f1)&(f<=f2)g(I,J)=r2*f+b2;elseif(f>f2)&(f<=f3)g(I,J)=r3*f+b3;endendendsubplot(223),imshow(mat2gray(g));〔2〕例2:图像求反clfX1=imread('pout.tif');subplot(221),imshow(X1);f1=200;g1=256;subplot(222),plot([0f1],[g10]);axistight,xlabel('f'),ylabel('g'),title('灰度变换曲线')k=g1/f1;[mn]=size(X1);X2=double(X1);forI=1:mforJ=1:nf=X2(I,J);g(I,J)=0;if(f>=0)&(f<=f1)g(I,J)=g1-k*f;elseg(I,J)=0;endendendsubplot(223),imshow(mat2gray(g));〔3〕例3:灰度切分clfX1=imread('pout.tif');subplot(221),imshow(X1);s1=100;s2=200;g1=20;g2=200;subplot(222),plot([0s1s1s2s2255],[g1g1gaxistight,xlabel('f'),ylabel('g'),title('灰度变换曲线')[mn]=size(X1);X2=double(X1);forI=1:mforJ=1:nf=X2(I,J);g(I,J)=0;if(f>=s1)&(f<=s2)g(I,J)=g2;elseg(I,J)=g1;endendendsubplot(223),imshow(mat2gray(g));3、函数(10S)MATLAB图像处理工具箱中提供的imadjust函数,可以实现上述的线性变换比照度增强。〔1〕imadjust函数函数的格式为:J=imadjust(I,[lowhigh],[bottomtop],gamma)其中:J为图像I调整后返回的图像。[lowhigh]为原图像的灰度范围,[bottomtop]为指定变换后的灰度范围。gamma为校正量。newmap=imadjust(map,[lowhigh],[bottomtop],gamma)用于调整索引色图像的调色板。【例】clfI=imread('rice.tif');J=imadjust(I,[0.30.7],[]);subplot(221),imshow(I);subplot(222),imshow(J);subplot(223),imhist(I);subplot(224),imhist(J);从原理上来讲,我们也可以用数学上的非线性函数进行变换,如平方、指数、对数等,但其中有意义的还是对数变换。〔2〕对数变换对数变换常用来扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节更容易看清楚。对数变换的表达式为:g(x,y)=log[f(x,y)+1]【例】I=imread('pout.tif');subplot(121),imshow(I);I=double(I);J=log(I+1);subplot(122),imshow(J,[]);〔3〕Gamma校正Gamma校正也是数字图像处理中常用的图像增强技术。imadjust函数中的gamma因子即是这里所说的校正因子。gamma等于1时为线性变换。观看Matlab演示函数imadjdemo。四、直方图修正(40S)1、直方图的概念(10S)设图像的灰度范围为,为此灰度范围内的任一灰度级,为这幅图像中灰度级为的象素出现的频数,可以看出是的函数。该函数的图形称为这幅图像的直方图。其中:,显然有:Matlab图像处理工具箱中,用imhist函数来计算和显示直方图。格式为:imhist(I,n)-显示指定灰度级为n的图像I的直方图,缺省为n=256imhist(X,map)-计算和显示索引图像X的调色板为map的直方图[counts,x]=imhist(...)-返回直方图数据向量和相应的色彩向量【例】灰度直方图clfI=imread('rice.tif');subplot(121);imshow(I);subplot(122);imhist(I);【例】索引图像直方图clf;loadtrees;subplot(121);imshow(X,map);subplot(122);imhist(X,map);2、直方图均匀化(20S)clfz=0:0.01:1;z1=-z.*z+2*z;p=-2*z+2;p1=ones(size(z));subplot(221),plot(p1,z1);subplot(222),plot(z,z1);subplot(224),plot(z,p);(2)数字图像的直方图均匀化Matlab图像处理工具箱提供了用于直方图均匀化的函数histeq,格式如下:J=histeq(I,n)-指定直方图均匀化后的灰度级为n,缺省为64[J,T]=histeq(I,n)-同时返回变换Tnewmap=histeq(X,map)-针对索引图像[newmap,T]=histeq(X,map)【例】clfI=imread('tire.tif');J=histeq(I);subplot(221),imshow(I);subplot(222),imhist(I,64);subplot(223),imshow(J);subplot(224),imhist(J,64);3、直方图匹配(10S)Matlab图像处理工具箱同样提供了直方图匹配的函数,格式如下:J=histeq(I,hgram)-将原始图像I的灰度直方图变换成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论