关于matlab的imwrite操作的理解

问题:

MATLAB保存的图像使用别的代码/程序打开后,发现和保存前的图像不一致。为什么?怎么办?

先说结论

使用MATLAB对浮点型的图像结果进行保存,imwrite函数,会对当前保存的图像格式进行一个分类。
在这里插入图片描述
uint8和uint16自然不必多说, 主要对于浮点型数据的处理,

如果 A 是灰度图像或者属于数据类型 double 或 single 的 RGB 彩色图像,则 imwrite 假设动态范围是
[0,1],并在将其作为 8 位值写入文件之前自动按 255 缩放数据。如果 A 中的数据是 single,则在将其写入 GIF 或
TIFF 文件之前将 A 转换为 double。

这段话里面,对于imwrite的动态范围[0,1]的假设,其实就是说MATLAB认为数据范围在[0,1]之间,在此范围外的数据都会被截断到[0,1]之间。
下一步呢,就是把这个[0,1]之间的数据,缩放到[0,255],然后转换为uint8进行保存。
那么这种操作出现了两个问题,一个是在截断的时候出现了失真,第二个是在取整的时候精度变化。
所以如果还要接着对保存的图像进行操作,那么建议使用MAT格式,即save保存为MAT格式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值