estimation/measure of entropy

How to calculate entropy of an image without using the inbuilt functions? Entropy is the measure of loss of information.
-summation(P.*log2 P)
P is the count of histogram..but not getting the proper result!Anyone plz help.

 Accepted Answer

Thorsten
Thorsten on 28 Nov 2014
Edited: Thorsten on 28 Nov 2014
Make sure you run log2 only on values > 0. Otherwise you would get NaN.
I = im2double(rgb2gray(imread('peppers.png')));
P = hist(I(:), linspace(0, 1, 256)); P = P(:); P = P(P(:)>0);
E = -sum(P.*log2(P))

4 Comments

a minus sign as remark to the code, this method can be sensitive to the number of bins used in function Hist.
I've added the minus. And, yes, this method is sensitive to the number of bins:
for b = 1:512
P = hist(I(:), linspace(0, 1, b)); P = P(:); P = P(P(:)>0);
E(b) = -sum(P.*log2(P));
end
plot(E)
So use the minimum number of bins where the entropy does not change anymore
Nbins = min(find(diff(E) == 0))
Nbins =
256
I've changed the number of bins in the code above accordingly.
that is an efficient technique for controlling the histogram.
Thanks a lot for helping me to understand.

Sign in to comment.

More Answers (1)

Behrang Mehrparvar
Behrang Mehrparvar on 10 May 2015
this link might be useful in setting the bin size [ link ]

Categories

Find more on Modify Image Colors in Help Center and File Exchange

Tags

Asked:

on 28 Nov 2014

Answered:

on 10 May 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!