matlab图像数据类型转换

matlab图像数据类型转换

ID:10568774

大小:26.50 KB

页数:3页

时间:2018-07-07

matlab图像数据类型转换_第1页
matlab图像数据类型转换_第2页
matlab图像数据类型转换_第3页
资源描述:

《matlab图像数据类型转换》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、uint8:无符号的8位(8bit)整型数据(unit都是存储型)int:整型数据1、在MATLAB中,数值一般都采用double型(64位)存储和运算.2、为了节省存储空间,MATLAB为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称为8位型像。3、函数image能够直接显示8位图像,但8位型数据和double型数据在image中意义不一样,4、对于索引图像,数据矩阵中的值指定该像素的颜色种类在色图矩阵中的行数。当数据矩阵中的值为0时,表示用色图矩阵中第一行表示的颜色绘制;当数据矩阵中的值为1时,表示用色图矩阵中的

2、第二行表示的颜色绘制该像素,数据与色图矩阵中的行数总是相差1。所以,索引图像double型和uint8型在显示方法上没有什么不同,只是8位数据矩阵的值和颜色种类之间有一个偏差1。调用格式均为image(x);colormap(map);5、对于灰度图像,uint8表示范围[0,255],double型表示范围[0,1]。可见,double型和uint8型灰度图像不一样,二者转换格式为:I8=uint8(round(I64*255));!!double转换成uint8I64=double(I8)/255;!!!uint转换成double反之,im

3、read根据文件中的图像种类作不同的处理。当文件中的图像为灰度图像时,imread把图像存入一个8位矩阵中,把色图矩阵转换为双精度矩阵,矩阵中每个元素值在[0,1]内;当为RGB图像时,imread把数据存入到一个8位RGB矩阵中。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double因此I2=im2double(I1):把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出图像数据类型转换函数默认情况下,matl

4、ab将图象中的数据存储为double型,即64位浮点数;matlab还支持无符号整型(uint8和uint16);uint型的优势在于节省空间,涉及运算时要转换成double型。im2double():将图象数组转换成double精度类型im2uint8():将图象数组转换成unit8类型im2uint16():将图象数组转换成unit16类型!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!默认情况下,matlab将图像中的数据存储为double型,即64位浮点数;matlab还支持无符号整型(uint8和uint

5、16);uint型的优势在于节省空间,涉及运算时要转换成double型。但是,问题的真正的解释其实应该是这样的。首先是在数据类型转换时候uint8和im2uint8的区别,uint的操作仅仅是将一个double类型的小数点后面的部分去掉;但是im2uint8是将输入中所有小于0的数设置为0,而将输入中所有大于1的数值设置为255,再将所有其他值乘以255。图像数据在进行计算前要转化为double类型的,这样可以保证图像数据运算的精度。很多矩阵的很多矩阵数据也都是double的,要想显示其,必须先转换为图像的标准数据格式。如果转换前的数据符合图像

6、数据标准(比如如果是double则要位于0~1之间,这个是由Matlab中的规定),那么可以直接使用im2uint8。如果转换前不满足这个分布规律,则使用uint8,将其自动切割至0~255(超过255的按255)最好使用mat2gray,这个函数可以把一个double类的任意数组转换成取值范围在[0,1]之间的,将一个矩阵转化为灰度图像的数据格式(double)另外,可以用isgray判断矩阵是否是一个图像数据矩阵。matlab中用imshow()显示图像与图像矩阵的数据类型的关系在matlab中,我们常使用imshow()函数来显示图像,而

7、此时的图像矩阵可能经过了某种运算。在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。如果直接运行imshow(I),我们会发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0~1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0~255范围。而经过运算的范围在0-255之间的double型数据就被不正常得显示为白色图像了。那么如何解决这个问题呢?笔者曾经用fix()函数把图像矩阵由实数形式转化成整数形式,但这样仍无法改变图像矩阵是doubl

8、e型的事实。通过搜索,找到两个解决方法:imshow(I/256);-----------将图像矩阵转化到0-1之间imshow(I,[]);----

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。