在Matlab中计算共生矩阵的熵

时间:2018-01-30 11:23:24

标签: matlab entropy glcm

我试图从Matlab中零条目的共生矩阵中提取熵。根据共生矩阵的熵定义:

definition of entropy
必须计算,其中 c ij 代表( i j )共生矩阵的输入。因此在我看来,如果存在单个零条目,则熵将是未定义的。当x = 0时,你是否设置log(x)的某种下限,或者你如何处理它?<​​/ p>

使用GLCM的熵定义链接到pdf:http://www.code.ucsd.edu/pcosman/glcm.pdf

编辑:感谢有关如何处理log(0)的建议,但该等式实际上要求评估0 * log(0),无论如何都是0。如果我可以使用公式会更容易解释,但也许我的问题更多是数学,因此在错误的论坛上。

2 个答案:

答案 0 :(得分:4)

如果我在登录时不想要-Inf,我总是这样做。

设置一个非常非常小的epsilon,并像

一样处理你的矩阵C.
e = 1e-99;
C = C + e;

然后您可以运行旧代码,答案不会是 -Inf

感谢@ CrisLuengo在评论中提供的有用建议

答案 1 :(得分:1)

我通常使用以下解决方法来避免此问题:

X = C .* log2(C + (C == 0));
entropy = -sum(X(:));

对于C(共生矩阵)0的条目,对数函数的参数为​​1,因为表达式(C == 0)被评估为1