Code covered by the BSD License  

Highlights from
AUTO LEVEL

from AUTO LEVEL by Divakar Roy
Automatic adjustment of brightness & color of images

autolevel(input_img,output_img)
% 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);

Contact us at files@mathworks.com