Matlab中mat2gray函数的原理和使用及图像类和类型间的转换

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)

以此对数据进行归一化处理,这是该处理方法与一般方法的不同之处。

图像类和类型间的转换
转换函数如下所示:

函数名将输入图像转换为
im2uint8uint8
im2uint16uint16
mat2graydouble,范围[0,1]
im2doubledouble
im2bwlogical

转化原理
以im2uint8为例,若f = [-0.5,0.5;0.75,1.5],则执行im2uint8后得到[0,128;191,255]。即将小于0的值处理为0,大于1的值处理为255,再将其它值乘以255,结果四舍五入作为转化后的值。其它函数类似,比如im2uint16只需在乘的时候改为65535即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值