做图像时候关于数据类型的采坑记录

今天写了个算法,遇到个很奇葩的BUG。就是由于数值矩阵的类型造成的!!!

opencv,scipy.misc读取的图像矩阵默认是uint8类型(plt默认是float32,0-1之间),该类型是无符号整数类型,一般方便计算,我会转成float类型,问题来了,在转换成float类型后经过算法层层计算,最后输出的图像矩阵有负数,这和讲uint8类型的图像输入算法得出的结果有一定差距,我先将算法得出的两个不同数据类型的图像矩阵计算最大最小值,然后用uint8类型的图像矩阵减float类型,可视化两者之间差异性。可以看出,越白的地方差异越大!

今天这个BUG警示着我,类型不能随便乱改,类型改变意味着数据的存储方式也随之改变!

这里写图片描述

关于图像类型的讲解参考:http://blog.csdn.net/fx677588/article/details/53301740


2018.3.27更坑:
读取的图像默认是uint8类型,如果两个uint8类型矩阵相减,那么我一开始以为负数自动变0但是只有matlab才会这样啊,坑!numpy会自动将负数+256,得到最终结果!

matlab的操作
这里写图片描述

numpy的操作
这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值