matlab图像uint8和double的关系,除以255乘以255

matlab读取图像的程序imread,读入后的数据为uint8
matlab保存图像的程序imwrite,写入时的输入可以为uint8或double

但是为了计算和表达方便
matlab针对uint8和double都有相应操作
有时我们会疑惑
一会
iMG = double(img);
imshow(uint8(IMG)*25)
一会
imshow(IMG)
imwrite同样有如此操作
为什么呢??????????

我们在使用时可以分成两个体系
在用uint8时,matlab默认图像为[0,255],即你在imshow和imwrite时,数据是[0,255]范围是没有问题的。此时如果直接double转为uint8(数据类型转换,数据大小不会改变,不是你的double转为uint8,你的[0,1]直接就能转为[0,255]),数据将集中在[0,1],也就是全部数据都在0或1,你的图像就是全黑。

在用double时,matlab默认图像为[0,1],即你在imshow和imwrite时,数据要是在[0,255],那么大于1的全为1,所以你的图像就是全白。

因此我们在图像数据类型转换时,需要乘以255和除以255
uint8→double//double(img)/255
double→uint8/uint8(img*255)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值