clear all;
I = imread('E:\image4.bmp');
subplot(1,2,1);
f=double(I(:,:,1));
ff=double(I(:,:,2));
fff=double(I(:,:,3));
imshow(I);
D=rgb2gray(I);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
k1=4;
k2=5;
r=161; %定义模板的大小
alf=1600; %标准差
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;
k2=8;
r=161;
alf=1400;
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); %高斯函数2
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); %高斯函数2
end
end
Img = double(D);
[m,n]=size(D);
K=imfilter(Img,b,'conv');
KK=imfilter(Img,bb,'conv');
KKK=imfilter(Img,bbb,'conv');
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)=1/3*(log(Img(i,j)+1)-log(KKK(i,j)+1))+G(i,j);
end
end
gamma=0.65;
sI = sort(G(:));
mx = sI(round(length(sI) * (99.9/100)));
mi = sI(round(length(sI) * (0.1/100)));
OUT=(G-mi)*255/(mx-mi);
OUT1=f./Img;
OUT1=(OUT1.^gamma).*OUT;
OUT2=ff./Img;
OUT2=(OUT2.^gamma).*OUT;
OUT3=fff./Img;
OUT3=(OUT3.^gamma).*OUT;
msr=cat(3,OUT1,OUT2,OUT3);
subplot(1,2,2);
imshow(uint8(msr));
imwrite(uint8(msr),'msrretnx.bmp');
retinex 算法matlab仿真
5星 · 超过95%的资源 需积分: 32 60 浏览量
2014-03-18
13:44:41
上传
评论 4
收藏 5.47MB RAR 举报
月神姐夫
- 粉丝: 0
- 资源: 9
- 1
- 2
前往页