matlab图像数据类型uint8,double关系

数字图像处理深入思考(一)double型的图像矩阵转化为uint8(I)类型(二)图像的【0,1】和【0,255】显示深入思考(一)double型的图像矩阵转化为uint8(I)类型为了节省存储空间,matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像。matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)运...
摘要由CSDN通过智能技术生成

matlab图像数据类型uint8,double关系

(一)double型的图像矩阵转化为uint8(I)类型

为了节省存储空间,matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像。matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)运算。
运算的时候将原图像的灰度值转换成double的作用主要是考虑计算过程中的精度的问题,double的数据是有小数点的,而uint8是0-255的整数,如果直接用uint8计算,会在计算过程中产生舍入误差,这种误差在图像的数据中是比较大的误差。

代码编写:

I = rgb2gray(imread('D:\数字图像处理\第二章学习\dog2.jpg'));    %把图像变为灰度图像
f = im2double(I);   
g = im2uint8(f);
figure;
subplot(1, 2, 1), imshow(f), title('double类型图像');
subplot(1, 2, 2), imshow(g), title('uint8类型图像');

代码分析:

使用im2double()将uint8转换到double类型,而且把数据大小从0-255映射到0-1区间。然后用im2uint8(),这样不仅完成数据类型转换,而且将0-1之间映射为0-255之间的数据。

运行效果如下:

实验结果:

针对“要是把运算后是double型的图像矩阵转化为uint8(I)类型,虽然可以保证显示范围,但是显示精度确实大大降低,好多细节的区域不会显示出来,”,目前代码运行结果显示细节的区域显示差别不大,细节区域基本都能显示出来,但是针对显示精度问题,可以从理论得到论证,double的数据是有小数点的,而uint8是0-255的整数,如果直接用uint8计算,会在计算过程中产生舍入误差,这种误差在图像的数据中是比较大的误差。

matlab中double转化为uint8

下面展示im2uint8()和uint8()两种方法在不同初始状态下的实现效果,分析优劣<

  • 63
    点赞
  • 218
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值