zoukankan      html  css  js  c++  java
  • matlab中图片数据类型转换uint8与double

    matlab中处理图像像素点数据:

    img1=double(imread('lenna.bmp'));

    matlab中imshow图片,要先转换成uint8:

    subplot(1,2,1),imshow(uint8(img1)),title('original');
    subplot(1,2,2),imshow(uint8(img2)),title('after');


    matlab图像处理关于unit8的问题_百度知道 https://zhidao.baidu.com/question/545122188.html

    为了节省存储空间,matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像。
    imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。

    因此,matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算。所以要先将图像转为double格式的才能运算,
    I2=im2double(I1); %把图像I1转换成double精度类型 (假设图形矩阵范围0~255)
    或者
    I64=double(I8)/255; %uint转换成double
    如果不转换,计算会产生溢出。


    matlab图像类型转换以及uint8、double、im2double、im2uint8和mat2gray等说明 - Thomas会写字 - CSDN博客 https://blog.csdn.net/kakiebu/article/details/78959249

    1. matlab图像保存说明

      matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。 
      详细来说imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。例如,彩色图像像素大小是400*300( 高 * 宽 ),则保存的数据矩阵为400*300*3,其中每个颜色通道值是处于0~255之间。 
      但是虽然matlab中读入图像的数据类型是uint8,而在图像矩阵运算的时候,使用的数据类型却是double类型。一是为了保证精度,二是因为如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为: 

    Function ‘*’ is not defined for values of class ‘uint8’

      1个字节无符号整型最大只能存储数据为255,对图片的操作所以很容易溢出。

    2. matlab图像类型转换

      matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算。所以要先将图像转为double格式的才能运算,区别如下:

    1.  
      img = imread('./1.jpg'); % 读入是unit8型(0~255)数据
    2.  
      I1 = im2double(img); % 把图像转换成double精度类型(0~1)
    3.  
      I2 = double(img)/255; % uint8转换成double,作用同im2double

      这里补充说明一下,im2double( )和double( )的区别。double( img)就是简单的数据类型转换,将无符号整型转换为双精度浮点型double,但是数据大小没有变化,原本数据是0~255之间,转化后还是0~255。例如原来是255,那么转换后为255.0,小数位0个数是由double数据长度决定,实际数据大小还是255,只不过这个255已经是double类型空间存储了,再增加不会发生溢出情况。而im2double(img)则不仅仅是将uint8转换到double类型,而且把数据大小从0~255映射到0~1区间。 

  • 相关阅读:
    spring_150807_hibernate_transaction_annotation
    快速排序算法
    组合数递推算法
    HDU 4832 Chess(DP+组合数)
    HDU 2602 Bone Collector (01背包)
    HDU 1597 find the nth digit (二分查找)
    HDU1163 Eddy's digital Roots(九余数定理)
    HDU1031 Design T-Shirt (二级排序)
    HDU1719 Friend (数学推导)
    HDU1720 A+B Coming (16进制加法)
  • 原文地址:https://www.cnblogs.com/wxl845235800/p/9931934.html
Copyright © 2011-2022 走看看