错误描述
在使用Matlab进行图像处理时,发现数据一超过255就会溢出,最大就是255。
出错原因
Matlab中读取图片后保存的数据是uint8类型(取值范围0~255),但在图像矩阵运算的时候,使用的数据类型却是double类型。若使用uint8类型的数据进行矩阵运算,一旦数据超出255就会溢出。
解决方法
- 将读入的图像数据转化为double类型 ,转换结果取值I位于[0,255]。【推荐】
- 使用im2double() 进行转换,转换结果取值I位于[0,1]。
此时,图像处理完成后,要使用im2uint8()或uint8(round(I*255)) 将图像数据的灰度值范围变回[0,255]。 - 将读入的图像数据转化为uint16类型,转换结果取值I位于[0,255]。
使用double类型的好处有以下两点:
①部分函数只支持double类型。
②保证图像数据运算的精度,防止数据溢出。