计算图像熵时如何处理直方图零计数?

Jay*_*ong 2 python matlab entropy

我正在尝试entropy()在 Python 中实现 Matlab 函数。

熵是随机性的统计量度,可用于表征输入图像的纹理。

熵定义为 -sum(p.*log2(p)),其中 p 包含从 imhist 返回的归一化直方图计数。

我使用 openCV 来获得归一化的直方图计数。如果直方图计数中有零,我该怎么办?

Tom*_*zzo 5

由于您正在将该函数移植到另一个编程框架中,因此在我看来,对您的问题的一个很好的回答是:“与 Matlab 做的事情相同”

0在对直方图进行归一化之前,Matlab 丢弃的计数等于。如果您使用命令打开原始函数open entropy,您将在其代码中找到您要查找的内容:

% calculate histogram counts
p = imhist(I(:));

% remove zero entries in p 
p(p==0) = [];

% normalize p so that sum(p) is one.
p = p ./ numel(I);

E = -sum(p.*log2(p));
Run Code Online (Sandbox Code Playgroud)