abyssecho的专栏

clear all;%clear the valuesclc;%clear the command windowstrhead = ‘2005’;%the name of filestrtail = ‘.bmp’ ;% the format of the filestr = strcat(strhead,strtail);img = im2double(imread(str));%read the image and convert to double.N = 15;%the size of filtersigma = [100 , 0.3];%the parameters of bilateral filter retimg = bialteral(img , N , sigma );%get the illumination image

subplot(1,3,1);imshow(img);title(‘the original image’);subplot(1,3,2);imshow(retimg);title(‘the illumination image’);

%% s-limg_copy = rgb2hsv(img);img_copy3 = log(img_copy(:,:,3));retimg_copy = rgb2hsv(retimg);retimg_copy3 = log(retimg_copy(:,:,3));%only to v layerr_img = img_copy3 – retimg_copy3;r_img = exp(r_img);N = 4;sigma = [100,0.3];retinex_img(:,:,3) = bialteral2(r_img,N,sigma);%get reflect image

dim = size(img);for i = 1:dim(1) for j = 1:dim(2) img_copy(i,j,3) = img_copy(i,j,3)^(1/3); endendretinex_img(:,:,3) = retinex_img(:,:,3).*(img_copy(:,:,3));retinex_img(:,:,1) = img_copy(:,:,1);retinex_img(:,:,2) = img_copy(:,:,2);retinex_img = hsv2rgb(retinex_img);

%% Gamma-correction% dim = size(img);% for i = 1:dim(1)% for j = 1:dim(2)% for c=1:3% img(i,j,c) = img(i,j,c)^(1/3);% end% end% end% retinex_img(:,:,1) = retinex_img(:,:,1).*(img(:,:,1));% retinex_img(:,:,2) = retinex_img(:,:,2).*(img(:,:,2));% retinex_img(:,:,3) = retinex_img(:,:,3).*(img(:,:,3));

subplot(1,3,3);imshow(retinex_img);title(‘the retinex image’);string=strcat(strhead,’_retinex.bmp’);imwrite(retinex_img,string,’bmp’);

function retimg = bialteral(img ,N ,sigma)%% colorspace transformation img = rgb2hsv(img);%convert rgb to hsv colorspace in order to process

%% pre-computer domain filteringsigma_d = sigma(1);sigma_r = sigma(2);[X,Y] = meshgrid(-N:N,-N:N);%generate two matrix D = exp(-(X.^2+Y.^2)/(2*sigma_d^2));%domain weights with Euclidean distance

%% create waitbarh = waitbar(0,’illumination retinex algorithm……’);set(h,’Name’,’Illumination Retinex’);

%% rang filtering in v layerdim = size(img);%dim=[height,length,3]B = zeros(dim);%create an image B with the same size and dimension with the zero value.for i = 1:dim(1) for j = 1:dim(2) iMin = max(i-N,1); iMax = min(i+N,dim(1)); jMin = max(j-N,1); jMax = min(j+N,dim(2)); L = img(iMin:iMax,jMin:jMax,3);%extract the local region d = L-img(i,j,3);%the dissimilarity between the surroud and center R = exp(-(d.^2)/(2*sigma_r^2));%range filter weights F = R.*D((iMin:iMax)-i+N+1,(jMin:jMax)-j+N+1);%its row is from iMin-i+N+1 to iMax-i+N+1,and so as line for m = 1:iMax-iMin+1 for n = 1:jMax-jMin+1 if d(m,n) < 0 F(m,n) = 0; end end end norm_F = sum(F(:)); B(i,j,3) = sum(sum(F.*L))/norm_F;

retimg(i,j,1) = img(i,j,1); retimg(i,j,2) = img(i,j,2); retimg(i,j,3) = B(i,j,3); end waitbar(i/dim(1));endclose(h);%close the bar

%% display colorspace transformationimg = hsv2rgb(img);retimg = hsv2rgb(retimg);

天下爱情,大抵如斯。

abyssecho的专栏

相关文章:

你感兴趣的文章:

标签云: