Lets Learn together... Happy Reading

" Two roads diverged in a wood, and I,
I took the one less traveled by,
And that has made all the difference "-Robert Frost

Matlab code: Histogram equalization without using histeq function


              It is the re-distribution of gray level values uniformly. Let’s consider a 2 dimensional image which has values ranging between 0 and 255.




MATLAB CODE:

GIm=imread('tire.tif');
numofpixels=size(GIm,1)*size(GIm,2);
figure,imshow(GIm);
title('Original Image');


HIm=uint8(zeros(size(GIm,1),size(GIm,2)));
freq=zeros(256,1);
probf=zeros(256,1);
probc=zeros(256,1);
cum=zeros(256,1);
output=zeros(256,1);
%freq counts the occurrence of each pixel value.
%The probability of each occurrence is calculated by probf.
for i=1:size(GIm,1)
    for j=1:size(GIm,2)
        value=GIm(i,j);
        freq(value+1)=freq(value+1)+1;
        probf(value+1)=freq(value+1)/numofpixels;
    end
end
sum=0;
no_bins=255;
%The cumulative distribution probability is calculated. 
for i=1:size(probf)
   sum=sum+freq(i);
   cum(i)=sum;
   probc(i)=cum(i)/numofpixels;
   output(i)=round(probc(i)*no_bins);
end
for i=1:size(GIm,1)
    for j=1:size(GIm,2)
            HIm(i,j)=output(GIm(i,j)+1);
    end
end
figure,imshow(HIm);
title('Histogram equalization');



             




%The result is shown in the form of a table
figure('Position',get(0,'screensize'));
dat=cell(256,6);
for i=1:256
dat(i,:)={i,freq(i),probf(i),cum(i),probc(i),output(i)};   
end
   columnname =   {'Bin''Histogram''Probability''Cumulative histogram','CDF','Output'};
columnformat = {'numeric''numeric''numeric''numeric''numeric','numeric'};
columneditable =  [false false false false false false];
t = uitable('Units','normalized','Position',...
            [0.1 0.1 0.4 0.9], 'Data', dat,...
            'ColumnName', columnname,...
            'ColumnFormat', columnformat,...
            'ColumnEditable', columneditable,...
            'RowName',[]); 
    subplot(2,2,2); bar(GIm);
    title('Before Histogram equalization');
    subplot(2,2,4); bar(HIm);
    title('After Histogram equalization');




                              

Here is a simple Version of Histogram Equalization MATLAB CODE:

%Read a grayscale Image or a matrix mxn
A=imread('tire.tif');
figure,imshow(A);
%Specify the bin range[0 255]
bin=255;
%Find the histogram of the image.
Val=reshape(A,[],1);
Val=double(Val);
I=hist(Val,0:bin);
%Divide the result by number of pixels
Output=I/numel(A);
%Calculate the Cumlative sum
CSum=cumsum(Output);
%Perform the transformation S=T(R) where S and R in the range [ 0 1]
HIm=CSum(A+1);
%Convert the image into uint8
HIm=uint8(HIm*bin);
figure,imshow(HIm);



                          
                                 
like button Like "IMAGE PROCESSING" page

YIQ Image to RGB Image

MATLAB code:
%YIQ to RGB

%R=Y+0.956*I+0.621*Q
%G=Y-0.272*I-0.647*Q
%B=Y-1.106*I+1.703*Q
RGB=uint8(zeros(size(YIQ)));
for i=1:size(YIQ,1)
    for j=1:size(YIQ,2)
          RGB(i,j,1)=YIQ(i,j,1)+0.956*YIQ(i,j,2)+0.621*YIQ(i,j,3);
          RGB(i,j,2)=YIQ(i,j,1)-0.272*YIQ(i,j,2)-0.647*YIQ(i,j,3);
          RGB(i,j,3)=YIQ(i,j,1)-1.106*YIQ(i,j,2)+1.703*YIQ(i,j,3);
    end
end

figure,imshow(RGB);
title('RGB Image');

like button Like "IMAGE PROCESSING" page

RGB Image to YIQ Image

YIQ  builds the basis for the NTSC (National Television System Commitee) format.
The Component division of YIQ :
Y=0.30R+0.59G+0.11B
I=0.60R-0.28G-0.32B
Q=0.21R-0.52G+0.31B


MATLAB code:
Im=imread('peppers.png');


figure,imshow(Im);
title('Original Image')

%y=0.2989 * R + 0.5870 * G + 0.1140 * B 

%I=0.60*R - 0.28*G-0.32*B
%Q=0.21*R -0.52*G+0.31*B
YIQ=uint8(zeros(size(Im)));
for i=1:size(Im,1)
    for j=1:size(Im,2)
        YIQ(i,j,1)=0.2989*Im(i,j,1)+0.5870*Im(i,j,2)+0.1140*Im(i,j,3);
        YIQ(i,j,2)=0.596*Im(i,j,1)-0.274*Im(i,j,2)-0.322*Im(i,j,3);
        YIQ(i,j,3)=0.211*Im(i,j,1)-0.523*Im(i,j,2)+0.312*Im(i,j,3);
    end
end
figure,imshow(YIQ);
title('YIQ Image');

like button Like "IMAGE PROCESSING" page
Previous Post Next Post Home
Google ping Hypersmash.com