MATLAB im2double、double、mat2gray、im2uint8和uint8的区别及使用

uint8与byte可以说是一样的,因为文档中有这样的定义:

The Go Programming Language Specification
Numeric types
uint8 the set of all unsigned 8-bit integers (0 to 255)
byte alias for uint8

也就是说,我们在需要将这两种类型转换为string的时候都是可以直接使用string()来进行的。

而int8的取值范围为-128~127,所以int8不能直接与uint8、byte进行直接转换。

im2double 、mat2gray与double

double 就是简单地把一个变量类型转换成double类型,数值大小不变
mat2gray是把一个double类的数组转换成取值范围为[0,1]的归一化 double类数组。
函数im2double将输入转换成double类型。如果输入是 uint8 unit16或者是二值的logical类型,则函数im2double 将其值归一化到0~1之间
注:
如果输入为double类型,输出还是double类型,并不进行归一化;即先用double转换,再用im2double 转换,不会对double处理之后的图像进行归一化操作;mat2gray则会将像素值归一化处理。

im2uint8和uint8

im2uint8用于将归一化到0~1之间(im2double 处理后的图像)转换为uint8类型
uint8就是简单地把一个变量类型转换成uint8类型,数值大小不变
注:
如果对double处理之后的图像使用uint8()操作,返回值与原本的图像相同,不会出错。即im2uint8转换对应im2double 转换,数据有归一化过程;uint8对应double转换,转换过程中数值不发生变化。如果不能一一对应,则会出错。

发布了66 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/djfjkj52/article/details/104574714