Matlab中的图像数据类型转换
MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double因此 I2=im2double(I1) :把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为:Function '*' is not defined for values of class 'uint8'。
im2double():将图像数组转换成double精度类型
im2uint8():将图像数组转换成unit8类型
MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double因此 I2=im2double(I1) :把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为:Function '*' is not defined for values of class 'uint8'。
图像数据类型转换函数
默认情况下,matlab将图像中的数据存储为double型,即64位浮点数;matlab还支持无符号整型(uint8和uint16);uint型的优势在于节省空间,涉及运算时要转换成double型。im2double():将图像数组转换成double精度类型
im2uint8():将图像数组转换成unit8类型
im2uint16():将图像数组转换成unit16类型
但是:对double型图像用im2uint8(),会出现问题。double默认为0-1之间的数,uint8为0-255之间的数,如果数组uint8型x1={0,1,2},转化后为x2={0,0.5,1}; 如果数组double型y1={0,1,2},转化后为y2={0,255,255};
在用matlab工具箱做直方图处理时,图像必须为整型,即如果是double型,必须转化为整型
解决办法:


本文介绍了MATLAB中图像数据类型的转换,特别是从double到unit8的转换问题。当double型图像范围在0-1之间,转换为unit8时,需要考虑到数据范围的映射,以避免数据失真。在进行图像直方图处理时,确保图像数据为整型是非常重要的。解决办法是先将double型图像调整到合适的范围,再进行转换。
最低0.47元/天 解锁文章
7732

被折叠的 条评论
为什么被折叠?



