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

今天写了个算法,遇到个很奇葩的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的操作
这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/silence2015/article/details/79183361