Matlab图像数据类型unit8与double

本文介绍了图像处理中常见的数据类型uint8和double的区别及转换方法。解释了为何图像通常以uint8存储来节省空间,以及为何在计算过程中转为double以提高精度。同时,讨论了在不同数据类型下图像显示的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据类型

        uint16 :无符号16bit整数,

        unit8:无符号8bit整数,

        int8:有符号8bit整数。

        double:有符号64bit浮点数。(8bit即一个字节)

二、图像数据类型

        im2double: 将uint8转换到double类型,把数据大小从0-255映射到0-1区间,即数组元素在0-1之间;

        im2uint8(): 将double转换到unit8类型,把数据大小从0-1映射到0-255区间,即数组元素在0-255之间。

三、两种数据类型

1、为什么图片以unit8的数据类型存储?

        matlab读取图片后保存的数据是uint8类型,以此方式存储的图像称作8位图像,相比较matlab默认数据类型双精度浮点double(64位,8个字节)可以节省存储空间。

2、为什么在图片计算过程中要转换为double类型?

        在运算的时候将原图像的数据转换成double类型,其作用主要是考虑计算过程中的精度的问题,double的数据是有小数点的,而uint8是0-255的整数,如果直接用uint8计算,会在计算过程中产生舍入误差,这种误差在图像的数据中是比较大的。

3、两种数据类型元素之间的区别与转换

        matlab默认double类型图片数据是位于0~1之间的,而uint8是位于0-255之间。

4、0~255范围的double图像会显示为白色

        对于0-255之间的数据,matlab处理完图像矩阵后,用imshow()显示图像或用inwrite()写入图片。如果参数数据类型是double型,输出的图像部分区域会显示白色。如果参数数据类型是unit8,输出的图像显示范围为0-255。

        这是因为imshow()显示图像时,认为double型数据位于(0,1),对于数组中大于1的元素,会将其归为1,显示为白色。

        因此,当面对0~255范围的double图像数组时,matlab会将大于1的数据都转换为255,要想正常显示,要么除以255进行归一化处理,要么将其转换成uint8型图像数组显示。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值