精华内容
下载资源
问答
  • matlab针对uint8和double都有相应操作 有时我们会疑惑 一会 iMG = double(img); imshow(uint8(IMG)*25) 一会 imshow(IMG) imwrite同样有如此操作 为什么呢?????????? 我们在使用时可以分成两个...

    matlab读取图像的程序imread,读入后的数据为uint8
    matlab保存图像的程序imwrite,写入时的输入可以为uint8或double

    但是为了计算和表达方便
    matlab针对uint8和double都有相应操作
    有时我们会疑惑
    一会
    iMG = double(img);
    imshow(uint8(IMG)*25)
    一会
    imshow(IMG)
    imwrite同样有如此操作
    为什么呢??????????

    我们在使用时可以分成两个体系
    在用uint8时,matlab默认图像为[0,255],即你在imshow和imwrite时,数据是[0,255]范围是没有问题的。此时如果直接double转为uint8(数据类型转换,数据大小不会改变,不是你的double转为uint8,你的[0,1]直接就能转为[0,255]),数据将集中在[0,1],也就是全部数据都在0或1,你的图像就是全黑。

    在用double时,matlab默认图像为[0,1],即你在imshow和imwrite时,数据要是在[0,255],那么大于1的全为1,所以你的图像就是全白。

    因此我们在图像数据类型转换时,需要乘以255和除以255
    uint8→double//double(img)/255
    double→uint8/uint8(img*255)

    展开全文
  • 图像处理中uint8和double的问题

    千次阅读 2018-04-14 16:09:48
    matlab为图像提供了特殊的数据类型uint...因此,matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储运算。所以要先将图像转为double格式的才能运算,I2=im2double(I1) %把图像I1转换成doub...
    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
    如果不转换,计算会产生溢出。
    意思也就是显示的时候用uint8  运算的时候用double
    im2double():将图象数组转换成double精度类型
    im2uint8():将图象数组转换成unit8类型
    im2uint16():将图象数组转换成unit16类型
    展开全文
  • Matlab图像处理中uint8和double的问题

    万次阅读 2017-06-07 14:51:21
     为了节省存储空间,matlab为图像提供了特殊的数据类型uint...因此,matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储运算。所以要先将图像转为double格式的才能运算, I2=im2double(I
    
    为了节省存储空间,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
    如果不转换,计算会产生溢出。
    意思也就是显示的时候用uint8  运算的时候用double;
    即,主要是为了保持运算精度, 一般来说用double 来完成复杂的运算。而在存储的时候的一般存储为uint8类型,节省存储空间。
    im2double():将图象数组转换成double精度类型
    im2uint8():将图象数组转换成unit8类型
    im2uint16():将图象数组转换成unit16类型
    因为uint8的图像是灰度图像,也就是 像素值是从0~255变化的,而转换为double后像素值成了0~1变化,也就是说0是黑色,1是白色
    展开全文
  • 最近在做图像处理时,用到imshow,发现时而正常时而不正常,查阅诸多资料,做个总结: 1、imread() 返回的图像类型是uint8...2、matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储运算。

    最近在做图像处理时,用到imshow,发现时而正常时而不正常,查阅诸多资料,做个总结:

    1、imread() 返回的图像类型是uint8类型, 这时用imshow显示图像的时候, imshow会认为输入矩阵的范围在0-255, 如果imshow的参数为double类型的,那么imshow认为输入矩阵的值为0-1.(所以如果是double类型的矩阵数据,直接imshow的话,大于1的全都是白色)。

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

     

    《 uint8 和 double之间的转换 》

    A.unit8转换为double类型:

    1、I=im2double(f)      %把图像f转换成double精度类型 (假设图形矩阵f范围0~255),此时会将0-255的uint8类型的数据转化为0-1之间的double数据(im2double会先将0-255之间的uint8转换为0-255之间的double再除255)

    或者采用下述转换方式:

    2、I=double(f)/255;   %先将uint8强制转换成double,再除255;等价于im2double,注意 :这里的 f 得是0-255间的uint8数据
    如果不转换,计算会产生溢出 

    B.double转化为uint8类型

    1、l=im2uint8(f)   %这里f是0-1的double类型数据,转化之后的l是0-255之间的uint8类型数据

    或者采用下述转换方式:

    2、l=uint8(f*255)   %这里f是0-1的double类型数据,先将0-1之间的double数据乘255,再转换成uint8的l

    总结:

    一般imshow显示的时候用uint8 ,运算的时候用double;即,主要是为了保持运算精度, 一般来说用double 来完成复杂的运算。而在存储的时候的一般存储为uint8类型,节省存储空间。

    附:

    im2double():将图象数组转换成double精度类型
    im2uint8():将图象数组转换成unit8类型
    im2uint16():将图象数组转换成unit16类型

     

    参考博文:https://blog.csdn.net/SMF0504/article/details/72899725

    展开全文
  • 在检测应用中,一种比较好的选择是将输入图像转化为uint8后再使用im2bw函数,为什么呢?下面给出一个例子。 假如原图为double类型,tt1=im2bw(img,thr)后tt1中的结果元素大部分可能都为1,原因是im2bw的作用是将img...
  •  matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。...
  •  matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。...
  • matlab读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,比double型(64位,8个字节),节省了存储空间。 **imread()**是将灰度图像存入一个8位矩阵;若为RGB图像时,...
  •  matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。...
  • matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式...matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储运算。所以要先将图像转为double格式的才能运算,区别如下: I2
  • 今日在用MATLAB放大...上网找答案未果,之后偶然发现类型不同,原来的是`uint8`,后来变成`double`,仰天长叹。一开始郁闷的滑稽—— ![这里写图片描述](https://ooo.0o0.ooo/2017/07/01/59571e28b5e18.png)顺藤摸瓜
  • matlab图像数据类型uint8,double关系

    千次阅读 多人点赞 2019-04-05 20:07:50
    数字图像处理深入思考(一)double型的图像矩阵转化为uint8(I)类型(二)图像的【0,1】【0,255】显示 深入思考 (一)double型的图像矩阵转化为uint8(I)类型 为了节省存储空间,matlab为图像提供了特殊的数据...
  • double型0~1对应uint8型0~255,转换用im2double和im2uint8 如果直接用uint8(double型),则为0~1的uint8型数据,图像全黑。 处理数据过程推荐用double,显示图像用doubleuint8皆可 如: load woman; I=ind2...
  • 图像数据格式uint8double以及图像类型转换

    万次阅读 多人点赞 2019-04-18 19:22:36
    double(64位):matlab中数值一般采用double型存储运算。 uint8(8位无符号整数):为了节省存储空间,matlab为图像提供的特殊数据类型。imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中,因此,...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 293
精华内容 117
关键字:

uint8和double