MATLAB中的数据类与图像类型

MATLAB中的数据类与图像类型

今天主要讲的是在MATLAB下,怎么实现数据类、图像类型之间的转换。首先我们需要先了解一下数据类和图像类型。

数据类:

在MATLAB中,关于数据类型一共包括了10项,分别包含了8项数值数据类、1项字符类、1项逻辑数据类,如下表所示。其中,所有的数值计算都可用double类来进行。

在这里插入图片描述

图像类型:

在MATLAB工具箱中,它支持亮度、二值、索引、RGB图像四种图像类型。大多数单色图像的处理运算是通过二值图像和亮度图像来进行的,彩色图像当做索引图像或RGB图像来处理,由于彩色图像处理较为复杂,所以本次将不讨论RGB图像和索引图像,后期再做说明。

1.亮度图像:

一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65535]。若图像数据是double类的,则像素取值就是浮点数。规定双精度型归一化亮度图像的取值范围是[0,1]。

2.二值图像:

二值图像是一种只有逻辑数字0和1的逻辑数组。在MATLAB中,因为并不把只含有0和1的数值数组认为是二值数组,所以需要使用logical函数把数值数组转化为二值数组。

比方说:若A是一个由0和1构成的数值数组,则使用

>> B = logical(A) %创建一个逻辑数组B

还有一种情况就是A中除了0和1之外还有其他元素,则使用logical函数可以将所有非零的量变换为逻辑1,而将所有的数值0变换成逻辑0。

使用函数islogical,测试一个数组是否是逻辑数组:

>> islogical ( c ) %若c是逻辑数组,函数返回1,否则返回0.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QxacPjem-1573127006030)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\98fdc0be1ba2465b8bd6819353ea5ca0\clipboard.png)]

数据类与图像类型间的转化

数据类间的转化

>> B = data_class_name(A) %data_class_name可以为表1‘数据类’中的任何一项。

比方:A是一个uint8类的数组,则命令:

>>B = double(A)

将产生一个双精度数组B。

其中需要注意的是:如果将一个精度范围大的类转换为精度范围小的类,比如将double类转换为uint8类,若double类的数组在区间[0,255]之外存在其他的值,则会自动将大于255的值转换为255,小于0的值转换为0。所以一般精度范围大的数组转换为精度范围小的数组,需要将原来的数组进行一定的缩放,使其取值尽量在精度小的范围内。

图像类和类型间的转换

im2uint8函数:可以检测出输入的数据类,并进行所有必要的缩放,以便使工具箱能将这些数据识别为有效的图像数据。

比如,一个double类2*2的图像f,它可以是中间计算的结果:

执行转换:

>> g = im2uint8(f)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0dF7g1T5-1573127006031)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\905c7f105401401989d2ab80aed64e0c\clipboard.png)]

im2uint8函数:可以将所有小于0的值设置为0,将输入中所有大于1的值设置为255,再将所有其他值乘以255,并将得到的结果四舍五入得到最接近的整数,从而完成转换。
在这里插入图片描述
注:彩色图像的转化这里不做讨论,后期再做说明。

mat2gray函数:将double类的任意数组转换成取值范围为[0,1]的归一化double类数组

>> g = mat2gray(f) %将f转换为[0,1]之间的double类的数组,生成g

>> gb = im2bw(g,TV) %将g数组使用阈值TV将其转换为二值图像,生成gb

**islogical函数:**将一个逻辑数组的事实存储为一个变量。

>> gbv = islogical(gb)

**im2double函数:**将一个逻辑数组转换为一个值为0和1的double类数值数组。

>> gbd = im2double(gb)

注:若gb是一个uint8类的数值数组,对其使用im2double结果与其是一个逻辑数组得到的结果是不一致的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TfVfaULs-1573127006031)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\2aa27298d5454721951fc594aa6c6dc7\clipboard.png)]

注:MATLAB支持嵌套语句,上述的所有操作可写成:

>> gbd = im2double(im2bw(mat2gray(F),0.5))

下期将实现数组的索引功能,以及介绍怎么实现一些标准数组。

:MATLAB支持嵌套语句,上述的所有操作可写成:

>> gbd = im2double(im2bw(mat2gray(F),0.5))

下期将介绍怎么实现数组的索引功能,以及怎么实现一些标准数组。

后期将持续更新,你的关注就是我更新的动力哦
在这里插入图片描述在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值