走捷径用了 skimage.measure.shannon_entropy 这个函数计算图像的信息熵,结果算出来的跟论文中计算的结果相差很大。折腾了好久,总算发现问题了,具体这个函数的计算方法我没深究,但是肯定不是先计算直方图再-sum(pk*log(pk))。因此,在函数里面添加了一句:
imagea = np.histogram(image.ravel(), bins=256)[0]
然后再按照源代码
return scipy_entropy(imagea, base=base)
这样,代码继续按照scipy.stats.entropy进行计算,这就没毛病了。调用的时候还得注意一下,加上base=2.