mat2gray
函数mat2gray可以把任意任意类型图像矩阵转换为取值范围为[0,1]的归一化double类数组。
调用格式
B = mat2gray(A)
将图像矩阵A归一化为图像矩阵B,A的值无限制,调用函数后,B的值限制在[0,1]。
B = mat2gray(A,[amin amax])
将矩阵A中介于amin和amax之间的值进行归一化处理,A中值小于amin的变为0,大于amax的变为1。
使用举例
A = [1,2,3;4,5,6];
B = mat2gray(A)
B =
0 0.2 0.4
0.6 0.8 1.0
C = [-0.5,0.5;0.75,1.5];
D = mat2gray(C)
D =
0 0.5
0.625 1.0
归一化原理分析
一般的归一化方法,即把数变为0到1之间的小数,例如,把{2.5 3.5 0.5 1.5}归一化后变成了{0.3125 0.4375 0.0625 0.1875},即每个数分别除以所有数之和即可。但是函数mat2gray的归一化处理使用的方法并非如此。
[1,2,3,4,5,6]归一化之后为[0,0.2,0.4,0.6,0.8,1.0],并非是用每个数分别除以所有数之和。该函数在处理时,直接将需要归一化的数组中的最小值变为0,最大值变为1,然后对其它数进行处理。记其它需要处理的数为Ai,则处理过程有:
Ai = (Ai - Amin) / (Amax - Amin)
以此对数据进行归一化处理,这是该处理方法与一般方法的不同之处。
图像类和类型间的转换
转换函数如下所示:
函数名 | 将输入图像转换为 |
---|---|
im2uint8 | uint8 |
im2uint16 | uint16 |
mat2gray | double,范围[0,1] |
im2double | double |
im2bw | logical |
转化原理
以im2uint8为例,若f = [-0.5,0.5;0.75,1.5],则执行im2uint8后得到[0,128;191,255]。即将小于0的值处理为0,大于1的值处理为255,再将其它值乘以255,结果四舍五入作为转化后的值。其它函数类似,比如im2uint16只需在乘的时候改为65535即可。