Matlab Hist Eq PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

MATLAB program for histogram equalization

%This program reads a bmp image, plots its histogram, calculates cumulative
%distribution function from the histogram and then transform the image
%according to it.
clc;
clear all;
close all;
f=imread('w39(300).bmp');
figure('color','w'),imshow(f);
f2=imcrop(f,[170 20 800 746]);
figure(),imshow(f2);
% f2=f;
[m,n]=size(f2);
% histogram calculation
for i=1:256
p(i)=0;
end
for i=1:m
for j=1:n
x=f2(i,j);
p(x+1)=p(x+1)+1;
end
end
x1=linspace(1,256,256);
figure(),plot(x1,p,'LineWidth',1.5,'color','k');
xlim([0 256]);
set(gca,'FontSize',14,'FontName','TimesNewRoman');
xlabel('Intensity levels');
ylabel('Number of occurences');
%calculating normalized histogram
np=m*n;
for i=1:256;
p(i)=p(i)/np;
end
x1=linspace(1,256,256);

figure(),plot(x1,p,'LineWidth',1.5,'color','k');
xlim([0 256]);set(gca,'FontSize',14,'FontName','TimesNewRoman');
xlabel('Intensity levels');
%calculating cumulative probability distribution function
for i=1:256
g(i)=0;
end
g(1)=p(1);
for i=2:256
g(i)=g(i-1)+p(i);
end
x1=linspace(1,256,256);
figure(),plot(x1,g,'LineWidth',1.5,'color','k');
xlim([0 256]);
ylim([0 1]);set(gca,'FontSize',14,'FontName','TimesNewRoman');
xlabel('Intensity levels');
ylabel('Cumulative distribution function');
%transforming the input image according to the transformation function
g=g*255;
for i=1:m
for j=1:n
x=f2(i,j);
new(i,j)=int16(g(x+1));
end
end
figure(), imshow(uint8(new));
for i=1:256
p1(i)=0;
end
for i=1:m
for j=1:n
x=new(i,j);
p1(x+1)=p1(x+1)+1;
end
end
x1=linspace(1,256,256);
figure(),plot(x1,p1,'LineWidth',1.5,'color','k');
xlim([0 256]);set(gca,'FontSize',14,'FontName','TimesNewRoman');

xlabel('Intensity levels');
ylabel('Number of occurences');
np1=m*n;
for i=1:256;
p1(i)=p1(i)/np;
end

You might also like