www.gusucode.com > 基于retinex理论的图象增强处理,一种新型的算法 > code2/MSRCR.m
I = imread('C:\MATLAB7\work\1.jpg'); subplot(1,2,1); imshow(I); I=double(I); f=I(:,:,1); ff=I(:,:,2); fff=I(:,:,3); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% k1=4; k2=5; r=161; alf=1458; nn=floor((r+1)/2); for i=1:r for j=1:r b(i,j) =exp(-((i-nn)^2+(j-nn)^2)/(k1*alf))/(k2*pi*alf*10000); %高斯函数1 end end k1=8; %高斯函数2 k2=8; r=161; alf=1458; nn=floor((r+1)/2); for i=1:r for j=1:r bb(i,j) =exp(-((i-nn)^2+(j-nn)^2)/(k1*alf))/(k2*pi*alf*10000); end end k1=0.5; k2=0.5; r=161; alf=1458; nn=floor((r+1)/2); for i=1:r for j=1:r bbb(i,j) =exp(-((i-nn)^2+(j-nn)^2)/(k1*alf))/(k2*pi*alf*10000); %高斯函数23 end %%%%%%%%%%%对R分量的处理%%%%%%%%%%%%% Img = double(f); [m,n]=size(f); aa=125; for i=1:m for j=1:n C(i,j)=log(1+aa*(Img(i,j)/I(i,j))); end end K=imfilter(Img,b); KK=imfilter(Img,bb); KKK=imfilter(Img,bbb); for i=1:m for j=1:n G(i,j)=1/3*(log(Img(i,j)+1)-log(K(i,j)+1)); G(i,j)=1/3*(log(Img(i,j)+1)-log(KK(i,j)+1))+G(i,j); G(i,j)=C(i,j)*(1/3*(log(Img(i,j)+1)-log(KKK(i,j)+1))+G(i,j)); end end mi=min(min(G)); ma=max(max(G)); L=(G-mi)*255/(ma-mi); %%%%%%%%%%%%%%对G分量的处理%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Img = double(ff); [m,n]=size(ff); aa=125; for i=1:m for j=1:n CC(i,j)=log(1+aa*(Img(i,j)/I(i,j))); end end K=imfilter(Img,b); KK=imfilter(Img,bb); KKK=imfilter(Img,bbb); for i=1:m for j=1:n G(i,j)=1/3*(log(Img(i,j)+1)-log(K(i,j)+1)); G(i,j)=1/3*(log(Img(i,j)+1)-log(KK(i,j)+1))+G(i,j); G(i,j)=CC(i,j)*(1/3*(log(Img(i,j)+1)-log(KKK(i,j)+1))+G(i,j)); end end mi=min(min(G)); ma=max(max(G)); LL=(G-mi)*255/(ma-mi); %%%%%%%%%%%%%随B分量的处理%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Img = double(fff); [m,n]=size(fff); aa=125; for i=1:m for j=1:n CCC(i,j)=log(1+aa*(Img(i,j)/I(i,j))); end end K=imfilter(Img,b); KK=imfilter(Img,bb); KKK=imfilter(Img,bbb); for i=1:m for j=1:n G(i,j)=1/3*(log(Img(i,j)+1)-log(K(i,j)+1)); G(i,j)=1/3*(log(Img(i,j)+1)-log(KK(i,j)+1))+G(i,j); G(i,j)=CCC(i,j)*(1/3*(log(Img(i,j)+1)-log(KKK(i,j)+1))+G(i,j)); end end mi=min(min(G)); ma=max(max(G)); LLL=(G-mi)*255/(ma-mi); %%%%%%%%%%%%对彩色图像的综合处理 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% msrcr=cat(3,L,LL,LLL); subplot(1,2,2); imshow(uint8(msrcr)); imwrite(uint8(msrcr),'msrcrsretnx.bmp');