% AUTOLEVEL : Automatically adjusts the brightness and color levels
% of images to "optimum levels".
% e.g. autolevel('Sunset.jpg','Output.jpg')
function autolevel(input_img,output_img)
my_limit=0.5;
%----------------------------------------------------------------------
img=imread(input_img);
%----------------------------------------------------------------------
if size(input_img,3)==3
my_limit2=0.04;my_limit3=-0.04;
a=rgb2ntsc(img);
mean_adjustment=my_limit2-mean(mean(a(:,:,2)));
a(:,:,2)=a(:,:,2)+mean_adjustment*(0.596-a(:,:,2));
mean_adjustment=my_limit3-mean(mean(a(:,:,3)));
a(:,:,3)=a(:,:,3)+mean_adjustment*(0.523-a(:,:,3));
else
a=double(img)./255;
end
%----------------------------------------------------------------------
mean_adjustment=my_limit-mean(mean(a(:,:,1)));
a(:,:,1)=a(:,:,1)+mean_adjustment*(1-a(:,:,1));
if size(input_img,3)==3
a=ntsc2rgb(a);
end
imwrite(uint8(a.*255),output_img);