为了节省存储空间,matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像。 imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。 因此,matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算。所以要先将图像转为double格式的才能运算, I2=im2double(I1) %把图像I1转换成double精度类型 (假设图形矩阵范围0~255) 或者 I64=double(I8)/255; %uint转换成double 如果不转换,计算会产生溢出。
意思也就是显示的时候用uint8 运算的时候用double;
即,主要是为了保持运算精度, 一般来说用double 来完成复杂的运算。而在存储的时候的一般存储为uint8类型,节省存储空间。
im2double():将图象数组转换成double精度类型
im2uint8():将图象数组转换成unit8类型
im2uint16():将图象数组转换成unit16类型
因为uint8的图像是灰度图像,也就是 像素值是从0~255变化的,而转换为double后像素值成了0~1变化,也就是说0是黑色,1是白色