CNN Matlab例子RGB_MATLAB中图像的数据类型

dd7808b1b5367b213035aef002dc7a4c.png 934db16ee7bc1065d9fb7954adaa7a28.png 934db16ee7bc1065d9fb7954adaa7a28.png如果你爱我们,就点击上方“蓝字”关注我们吧!!

、几种图像的数据类型

表中罗列了常见的数据类型及其含义:

9009371556ce4aa55cb6d814585c22d1.png

输入图像,指定为数值标量、向量、矩阵或多维数组。

如果 I 是灰度或真彩色 (RGB) 图像,它可以是 uint8、uint16、double、logical、single或 int16。

    ②

如果 I为索引图像,它可以是 uint8、uint16、double 或 logical。

    ③

如果 I为二值图像,它必须是 logical。

、matlab图像的存储数据类型

imread函数把灰度图像存入了一个八位矩阵,如果是RGB图像,就存入8位RGB矩阵中。这个八位矩阵的每一个元素都是一个图片中的像素,由于这种矩阵一般占用的页面较大,这里我们用size函数来查询一幅图像的大小,例如:

>> [M,N]=size(BW)


M =
    258
N =
    350

因为我们前面的图片是灰度图,所以返回了一个M×N矩阵。

函数whos可以显示出一个矩阵的附加信息:

>> f=imread('abc.jpg');
>> whos f
 Name        Size              Bytes  Class    Attributes
 f         107x97x3            31137  uint8  

由此可见,matlab读入图像的数据是uint8的变量存储为 1 个字节(8 位)的无符号整数,而matlab中数值一般采用double型(64位)进行存储和运算,所以要先把图像转换为double格式的才能运算。

注意:二值图像在matlab中具有非常重要的意义,一幅二值图像是一个取值只有0和1的逻辑数组。所以一个取值只包含0和1的uint8类数组,在matlab中不认为是二值图像,为了解决这个问题,我们使用logical函数可以把数值数组转换为二值数组,因此,若A是一个由0和1构成的数值数组,则可以用如下的语句创建一个逻辑数组B:

>> B=logical(f);
>> whos f
 Name        Size               Bytes  Class     Attributes
 f         107x97x3            249096  double 

可以看到这时候的数据类型为double精度类型。若A中含有除了0和1以外的其他元素,则使用logical函数可以将所有非0的量变换为逻辑1。

、几种数据类型的转换

1.把图像数组转换成double精度类型

这里用到了im2double 函数,例子如下:

>> f=im2double(f);
>> whos f
 Name        Size               Bytes  Class     Attributes
 f         107x97x3            249096  double  

可见我们已经成功的完成了数据类型的转换。

2.将图x数组转换成int8类型

这里用im2int8函数:

I =reshape(uint16(linspace(0,65535,25)),[5 5])   %创建 uint16 类的数组
I =
 5×5 uint16 矩阵
      0   13653   27306   40959   54613
   2731   16384   30037   43690   57343
   5461   19114   32768   46421   60074
   8192   21845   35498   49151   62804
  10923   24576   38229   51882   65535
I2 = im2uint8(I)          %将数组转换为 uint8 类。
I2 =
 5×5 uint8 矩阵
    0    53   106   159   213
   11    64   117   170   223
   21    74   128   181   234
   32    85   138   191   244
   43    96   149   202   255

输入whos查看

>> whos I2
 Name      Size            Bytes  Class    Attributes
 I2        5x5                25  uint8  

3.将图像数组转换成unit16类型

用im2uint16函数:

I = reshape(linspace(0,1,20),[5 4])      %创建 double类的数组
I =
        0    0.2632    0.5263    0.7895
   0.0526    0.3158    0.5789    0.8421
   0.1053    0.3684    0.6316    0.8947
   0.1579    0.4211    0.6842    0.9474
   0.2105    0.4737    0.7368    1.0000
I2 = im2uint16(I)     %将数组转换为 uint16 类。
I2 = 5x4 uint16 matrix
      0   17246   34492   51738
   3449   20695   37941   55187
   6898   24144   41391   58637
  10348   27594   44840   62086
  13797   31043   48289   65535

输入whos查看

>> whos
 Name      Size            Bytes  Class     Attributes
 I         5x4               160  double              
 I2        5x4                40  uint16 

往期 · 推荐

MATLAB绘图中对各种属性的控制方法(一)

MATLAB绘图中对各种属性的控制方法(二)

MATLAB中图像的初步处理

更多MATLAB学习资源请加入QQ群:953314432

3f75d6dcb7ac1d6e458a73d10da52440.png

扫码关注我们

更多精彩等着你

出品:Asoul水云天课堂工作室

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值