在 skimage.measure.shannon_entropy() 中,对不同类型的图像应用了多少个条柱

How many bins are applied to an image of different types in skimage.measure.shannon_entropy()

提问人:shparekh 提问时间:4/27/2023 更新时间:4/27/2023 访问量:65

问:

skimage.measure.shannon_entropy() 在返回熵结果之前如何计算直方图?我以 1、2 和 4 字节有符号和无符号灰度图像以及 32 位浮点灰度图像的格式传递图像。

处理 scikit-图像

评论

0赞 shparekh 4/27/2023
很高兴看到 Mathworks 如何说明其对 entropy() 函数的帮助 - “默认情况下,entropy 对逻辑数组使用两个 bin,对 uint8、uint16 或 double 数组使用 256 个 bin。Entropy 将 logical 以外的任何类转换为 uint8 以进行直方图计数计算,以便像素值是离散的,并且直接对应于 bin 值。
0赞 Cris Luengo 4/27/2023
这看起来像是 skimage 存储库的功能请求。虽然我敢肯定人们知道这些文档永远不可能像 MATLAB 那样完整,但 MATLAB 雇佣了一个团队来编写详细的文档。另一方面,您可以查看 skimage 源代码以了解它是如何进行计算的,因此完整的文档并不像 MATLAB 那么重要。

答:

1赞 Cris Luengo 4/27/2023 #1

源代码在这里:https://github.com/scikit-image/scikit-image/blob/main/skimage/measure/entropy.py

正如你所看到的,它很短,只有两行代码。直方图根本不进行分箱,它使用 的输出。这意味着直方图将具有与图像中唯一值一样多的元素。对于 8 位图像,您最多将有 256 个条柱,但可能更少。对于 16 位图像,您最多有 65536 个 bin 等。countnumpy.unique

对于位深度较高的图像,尤其是浮点图像,应量化图像以获得有意义的结果。对于浮点图像,您可以假设每个像素都有一个唯一的值,这使得熵计算没有那么有意义。由于香农熵不考虑相邻像素之间的关系,因此平滑斜坡的浮点图像与具有随机值的浮点图像具有相同的香农熵。