3

我试图在 MATLAB 中找到某个概率分布的熵。对于 p,我尝试做

E = -sum(p .* log2(p))

Echeck = entropy(p)

E和Echeck不应该相同吗?

matlab 关于熵的帮助确实说熵被定义为 -sum(p.*log2(p)) 其中 p 包含从 imhist 返回的直方图计数。但是,熵也将逻辑以外的任何类转换为 uint8 以进行直方图计数计算,因为它实际上是在尝试计算灰度图像的熵,因此希望像素值是离散的。所以我想将这个功能用于我的目的是不正确的?有没有好的选择?

4

1 回答 1

3

open entropy以前检查代码,有一行:

if ~islogical(I)
  I = im2uint8(I);
end
p = imhist(I(:));

这意味着输入被转换为 uint8,然后该函数计算输入的直方图的熵,而不是输入本身的熵。

这就解释了差异。

于 2012-01-26T11:11:33.140 回答