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

时间:2017-11-20 21:33:05

标签: image matlab double entropy uint

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

entropy(I)

给了我一个非常不同的结果

entropy(im2double(I)) 

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

1 个答案:

答案 0 :(得分:2)

使用imread读取图像时,图像会被读入uint m-by-by-by-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代表(可变但可能)大量数字。

由于 Shannon熵(更多信息here)被定义为随机数据源产生的平均信息量...您的结果很容易解释:您正在喂食具有更高信息度的entropy函数(更大的字节数,更大的数字量,更多的信息量)。