Debug:Matlab处理图像数据时超过255溢出

错误描述

在使用Matlab进行图像处理时,发现数据一超过255就会溢出,最大就是255。
错误截图

出错原因

Matlab中读取图片后保存的数据是uint8类型(取值范围0~255),但在图像矩阵运算的时候,使用的数据类型却是double类型。若使用uint8类型的数据进行矩阵运算,一旦数据超出255就会溢出。

解决方法

  1. 将读入的图像数据转化为double类型 ,转换结果取值I位于[0,255]。【推荐】
  2. 使用im2double() 进行转换,转换结果取值I位于[0,1]。
    此时,图像处理完成后,要使用im2uint8()或uint8(round(I*255)) 将图像数据的灰度值范围变回[0,255]。
  3. 将读入的图像数据转化为uint16类型,转换结果取值I位于[0,255]。

使用double类型的好处有以下两点:
①部分函数只支持double类型。
②保证图像数据运算的精度,防止数据溢出。

发布了18 篇原创文章 · 获赞 40 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/seawaysyyy/article/details/103489347