MATLAB Answers

Code computes histogram equalization not similar to Matlab's histeq function

93 views (last 30 days)
Mohsin Shah
Mohsin Shah on 5 May 2018
Answered: xiao on 11 May 2018
I have a written a simple code for histogram equalization based on this formula: HistEq = (max gray leve/total no of pixels)*cumulative sum(count). I wonder why the result is quite different from Matlab's function histeq? Can someone please figure out where I am wrong?
clear;
clc;
% Input image
Img = imread('lena.bmp');
I = double(Img);
[H, W] = size(I);
total = H * W;
count = imhist(Img);
maxL = 255;
csum = 0; % Initialize to zero
cumuSum = zeros(1, length(count))';
for idx = 1 : length(count)
csum = csum + count(idx);
cumuSum(idx) = csum;
end
HistEq = round(maxL/total * cumuSum);
HIm = zeros(H, W);
for idx = 1 : H
for idy = 1 : W
HIm(idx, idy) = HistEq(Img(idx, idy));
end
end
<<
>>

  0 Comments

Sign in to comment.

Answers (1)

xiao
xiao on 11 May 2018
you can refer the function (histogram equalization) doc page and there are related references, then you can check the algorithm details.

  0 Comments

Sign in to comment.

Sign in to answer this question.