matlab:具有不同数据类型的同一图像的不同熵值

matlab: different entropy values for the same image with different data type

在 matlab 中给定 uint8 类型的图像 I

entropy(I)

给我的结果与

截然不同
entropy(im2double(I)) 

(例如第一种情况下为 6.98,第二种情况下为 0.51) 为什么数据类型会更改此值?

当您使用 imread 读取图像时,您的图像被读入 uint m×n×3 数组。根据图像格式,每个颜色平面(红色、绿色、蓝色)使用 16 位或更少位来存储图像像素。

uint8(无符号 8 位整数)是整数的数字格式,允许最小值为 0,最大值为 255uint16(无符号 16 位整数)是整数的数字格式,允许最小值为 0,最大值为 65535。当你将这些数字格式转换成 double 时,你基本上是将它们除以它们的最大值:

% Pseudocode

uint8 val = 127;
double val_new = val / 255.0d; % 0.49803921568627450980392156862745

uint16 val = 42133;
double val_new = val / 65535.0d; % 0.64290836957351033798733501182574

double 数值格式通常用于存储需要确保高精度的非常大(64 位)的浮点值。这意味着您的 uint 值将被转换为 0.something 值,其中 something 表示(可变但可能)大量数字。

由于 香农熵(更多信息 here)被定义为随机数据源产生的平均信息量...您的结果很容易解释:您正在为 entropy 函数提供更高程度的信息(更多字节、更多数字、更多信息)。