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.

 採用された回答

Thorsten
Thorsten 2014 年 11 月 28 日
編集済み: Thorsten 2014 年 11 月 28 日

2 投票

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 件のコメント

Youssef  Khmou
Youssef Khmou 2014 年 11 月 28 日
a minus sign as remark to the code, this method can be sensitive to the number of bins used in function Hist.
Thorsten
Thorsten 2014 年 11 月 28 日
編集済み: Thorsten 2014 年 11 月 28 日
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.
Youssef  Khmou
Youssef Khmou 2014 年 11 月 29 日
that is an efficient technique for controlling the histogram.
Durga
Durga 2015 年 1 月 13 日
Thanks a lot for helping me to understand.

サインインしてコメントする。

その他の回答 (1 件)

Behrang Mehrparvar
Behrang Mehrparvar 2015 年 5 月 10 日

0 投票

this link might be useful in setting the bin size [ link ]

カテゴリ

ヘルプ センター および File ExchangeModify Image Colors についてさらに検索

タグ

質問済み:

2014 年 11 月 28 日

回答済み:

2015 年 5 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by