图像类型、MATLAB数据类型,以及类型之间的转换(二)
来源:互联网 发布:参获取视频长度 python 编辑:程序博客网 时间:2024/06/09 05:05
上篇中我们根据需要将图像分为4种类型,其中每种图像的表示或多或少都牵扯到不同的数据类型,大致如下:
其实无论是上边哪种类型图像,之所以用到logical,uint8,uint16以及归一化double等类型,很大的原因就在于这些图像的表示往往和具有这些数据类型的语言和工具有关系,比如MATLAB等。
MATLAB中的数据类型
MATLAB中的数据类型
在MATLAB中查看MATLAB中常用的数据类型,可以输入如下帮助语句:
help datatypes
通过上述语句可以查看到MATLAB中常用的数据类型,在此我们根据需要仅仅列出和图像(特别是灰度图像)读取、显示和处理相关的一些常用数据类型,具体如下所示:
通过上表对MATLAB数据类型的概括,我们可以对MATLAB中的数据类型有一些整体感性认识,具体的说明如下:
如上所说,uint8类型可以达到节省存储空间的作用,对于灰度图像来说,MATLAB在读取该图像时,会存储为uint8类型;然后MATLAB的默认类型又是double类型(因为该类型精度高,范围大),所以数据类型之间存在转换的可能和必要。再讲这之前,我们还需要给double类型一些更多的注意力。
double类型的两种数值范围表示
特别需要说明的是,虽然double类型是MATLAB的默认类型,但是在不同的情况下,double类型存在两种数值范围。我们分别称为普通的double类型和归一化double类型,在一些情况下如果忽略该区别将会造成灰度图像显示失败等结果2。
double类型与uint8类型之间的转换
uint8类型转换为double类型
转换代码如下,其中A为uint8类型:
A = 0 100 200 255>> B=double(A)B = 0 100 200 255
由结果可知,转换效果为:数值不变,返回double类型。
double类型转换为uint8类型
转换代码如下,其中C为普通double类型,E为归一化double类型:
C = -100 0 100 255 360>> D=uint8(C)D = 0 0 100 255 255E = 0 0.3922 0.7843 1.0000>> F=uint8(E)F = 0 0 1 1
由结果可知,普通double类型转换为uint8类型,发生截断:小于0的转换为0,大于255的转换为255,其他四舍五入转换为整数;归一化double类型转换为uint8类型,四舍五入为整数,输出数值非0即1。
double类型和uint8类型的同类型转换
无论是double类型转换为double类型,还是uint8类型转换为uint8类型,其输出不发生任何变化。
总结
通过前边的学习,我们对MATLAB中的数据类型以及常用的double类型和uint8类型的转换有了一定的了解,掌握这些数据类型的区别和转换,将有助我们有效地避免进行图像(特别是灰度图像)的读取、显示和处理时可能发生的细节性错误。
本篇对MATLAB数据类型及简单转换的说明到此为止,关于MATLAB中常用的类型转换函数以及图像读取显示函数的内容,我将在下篇博客中详述,并给出必要的实例代码。
参考文献
- matlab读取写入图像数据格式uint8,double ↩
- 谈谈matlab中的uint8和double ↩
- 图像类型、MATLAB数据类型,以及类型之间的转换(二)
- 图像类型、MATLAB数据类型,以及类型之间的转换(一)
- 图像类型、MATLAB数据类型,以及类型之间的转换(三)
- 图像类型间的转换-matlab
- Date数据类型、基本数据类型与String类型之间的转换
- JS~数据类型以及类型转换
- JS数据类型以及类型转换
- MATLAB图像处理(包括图像类型转换)----转载
- MATLAB图像处理(包括图像类型转换)----转载
- MATLAB图像处理(包括图像类型转换)
- 图像类型的转换
- 图像类型的转换
- 类型之间的转换
- 类型之间的转换
- 类型之间的转换
- 字符串数据类型与其他类型之间的转换
- Java基本类型、基本数据类型之间的转换
- Java中String类型和其他数据类型之间的转换
- 关于睡眠你应该知道的十件事
- JS清除选择的内容
- Pthread创建线程后必须使用join或detach释放线程资源
- Jenkins不同job之间依赖关系的两种配置方式
- 析构函数
- 图像类型、MATLAB数据类型,以及类型之间的转换(二)
- 一些NGINX配置
- poj 2417 Discrete Logging 数论baby_step,giant_step算法
- 作业4.21
- 6、spss做logistic回归
- 菜鸟的安卓实习之路----android广播(3)自定义广播
- CocoaPods是什么
- 关于导入maven项目常见错误
- noj 1076 机器狗组装费用(优先队列)