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');