即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

Matlab图像处理里uint8与double的相关疑难问题

编程语言 SMF0504 35℃ 0评论

为了节省存储空间,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是白色

转载请注明:CodingBlog » Matlab图像处理里uint8与double的相关疑难问题

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情