精华内容
下载资源
问答
  • 1、uint8double double函数只是将读入图像的uint8数据转换为double类型,一般不使用;常用的是im2double函数,将 ...MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double。因此 I2=im2dou...

    1、uint8与double
    double函数只是将读入图像的uint8数据转换为double类型,一般不使用;常用的是im2double函数,将
    uint8图像转为double类型,范围为0-1,如果是255的图像,那么255转为1,0还是0,中间的做相应改变。
    MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double。因此
    I2=im2double(I1) :把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生
    溢出。默认情况下,matlab将图象中的数据存储为double型,即64位浮点数;matlab还支持无符号整型
    (uint8和uint16);uint型的优势在于节省空间,涉及运算时要转换成double型。
    im2double():将图象数组转换成double精度类型
    im2uint8():将图象数组转换成unit8类型
    im2uint16():将图象数组转换成unit16类型
    2、uint8和im2uint8
    在数据类型转换时候uint8和im2uint8的区别,uint8的操作仅仅是将一个double类型的小数点后面的部
    分去掉;但是im2uint8是将输入中所有小于0的数设置为0,而将输入中所有大于1的数值设置为255,再将所
    有其他值乘以255。
    图像数据在计算前需要转换为double,以保证精度;很多矩阵数据也都是double的。要想显示其,必须先
    转换为图像的标准数据格式。如果转换前的数据符合图像数据标准(比如如果是double则要位于0~1之间)
    ,那么可以直接使用im2uint8。如果转换前的数据分布不合规律,则使用uint8,将其自动切割至0~255(
    超过255的按255)。最好使用mat2gray,将一个矩阵转化为灰度图像的数据格式(double)
    3、double类型图像的显示
    图像数据在进行计算前要转化为double类型的,这样可以保证图像数据运算的精度。很多矩阵的很多矩
    阵数据也都是double的,要想显示其,必须先转换为图像的标准数据格式。如果直接运行imshow(I),我们会
    发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0~1范围内,即大于1时都
    是显示为白色,而imshow显示uint8型时是0~255范围。而经过运算的范围在0-255之间的double型数据就被
    不正常得显示为白色图像了。具体方法有:
    imshow(I/256); ———-将图像矩阵转化到0-1之间
    imshow(I,[]); ———-自动调整数据的范围以便于显示 (注意这里,必须是灰度图,否
    则不行)
    imshow(uint8(I));
    imshow(mat2gray(I));
    上面的mat2gray是将最终获得的矩阵转化为灰度图像。常用的为:
    A = im2uint8(mat2gray(result))
    这样就将result矩阵转化为uint8类型的图像。

    展开全文
  • 最近写matlab又遇到一个坑,感觉是匪夷所思的bug,简直刷新我的人生观、世界观和价值观【手动笑哭】 ...后来在Workspace中看了几眼,看到图片存储是以unit8数值类型存储的,成功引起了我的注意,以前真是没...

    最近写matlab又遇到一个坑,感觉是匪夷所思的bug,简直刷新我的人生观、世界观和价值观【手动笑哭】
    想解决的问题很简单,我就是想求一张图片中所有像素点的R、G、B三个颜色分量的平均值,然后我发现,每个颜色分量的和永远是255,这怎么可能啊,和肯定会很大啊,各种调试,调到我质疑人生。
    后来在Workspace中看了几眼,看到图片存储是以unit8数值类型存储的,成功引起了我的注意,以前真是没注意过图片是以哪种数值类型存储的。
    在此介绍下matlab数值类型,分为整数和浮点数。整数分为有符号和无符号的:int8(带符号8位整型),int16,int32,int64,uint8(无符号8位整型),uint16,uint32,uint64。浮点数分为单精度(single,32位)和双精度(double,64位)。
    因为图片以unit8存储,所以所能存储的数值的最大范围是255,所以加到255以后就不会再增加了,加个强制类型转换,a=double(b)就可以解决这个问题。
    发现因为基础问题的坑简直坑的不行,算是为以后学别的东西铺个路吧,基础一定要打好。

    展开全文
  • im2double 、mat2gray与double double 就是简单地把一个变量类型转换成double类型,数值大小不变 mat2gray是把一个double...如果输入是 uint8 unit16或者是二值的logical类型,则函数im2double 将其值归一化到0~1之间

    im2double 、mat2gray与double

    1. double 就是简单地把一个变量类型转换成double类型,数值大小不变
    2. mat2gray是把一个double类的数组转换成取值范围为[0,1]的归一化double类数组。
    3. 函数im2double将输入转换成double类型。如果输入是 uint8 unit16或者是二值的logical类型,则函数im2double 将其值归一化到0~1之间
      注:
      如果输入为double类型,输出还是double类型,并不进行归一化;即先用double转换,再用im2double 转换,不会对double处理之后的图像进行归一化操作;mat2gray则会将像素值归一化处理。

    im2uint8和uint8

    1. im2uint8用于将归一化到0~1之间(im2double 处理后的图像)转换为uint8类型
    2. uint8就是简单地把一个变量类型转换成uint8类型,数值大小不变
      注:
      如果对double处理之后的图像使用uint8()操作,返回值与原本的图像相同,不会出错。即im2uint8转换对应im2double 转换,数据有归一化过程;uint8对应double转换,转换过程中数值不发生变化。如果不能一一对应,则会出错。

      代码

      img=double(img);%img为图像变量
      img=uint8(img);
      img=im2double(img);
      img=im2uint8(img);
      img=mat2gray(img);

      img_re=reshape(img,size(img,1)*size(img,2),3);%将图像转换为3列的矩阵,便于查看结果。

    运行结果
    double转换结果
    double转换

    double转换后使用im2double
    double转换后使用im2double

    double转换之后使用mat2gray
    double转换之后使用mat2gray

    展开全文
  • matlab 关于double和im2double

    千次阅读 2014-11-05 09:18:09
    比如 a=6 是个unit8类型的话,double(a)的结果还是6,不过现在这个6是double类型的。 函数im2double将输入转换成double类型。如果输入是 uint8 unit16 或者是二值的logical类型,则函数im2double 将其值归一化到0...
    double 就是简单地把一个变量类型转换成double类型,数值大小不变。
    比如 a=6   是个unit8类型的话,double(a)的结果还是6,不过现在这个6是double类型的。

    函数im2double将输入转换成double类型。如果输入是 uint8 unit16 或者是二值的logical类型,则函数im2double 将其值归一化到0~1之间,当然就是double类型的了。如果输入本身就是double类型,输出还是double类型,并不进行归一化。
    展开全文
  • PAGE / NUMPAGES uint 8:无符号的88bit整型数据unit 都是存储型 int 整型数据 1在MATLAB中数值一般都采用double型64位存储和运算. 2为了节省存储空间MATLAB为图像提供了特殊的数据类型uint88位无符号整数以此方式...
  • matlab中图像格式转换

    千次阅读 2019-11-27 10:05:41
    uint 8:无符号的8位(8bit)整型数据(unit 都是存储型) int :整型数据 1、在MATLAB中,数值一般都采用double型(64位)存储和运算. 2、为了节省存储空间,MATLAB为图像提供了特殊的数据类型uint88位无符号整数...
  • uint 8:无符号的8位(8bit)整型数据(unit 都是存储型)int :整型数据1、在MATLAB中,数值一般都采用double型(64位)存储和运算.2、为了节省存储空间,MATLAB为图像提供了特殊的数据类型uint88位无符号整数),...
  • matlab 将数字矩阵转换成图像

    千次阅读 2017-10-09 23:47:00
    matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。如果直接运行imshow(I),我们会发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0~1范围内,即大于...
  • matlab中各种数据类型及转换

    万次阅读 2019-07-02 16:03:57
    数据类型: int和unit都是整型,只是前一个有符号,后一个没有符号,比如在16位系统中,int范围是-32768-32767,unit...single变量存储大小位32位(4个字节),double变量存储大小为62位(8个字节); cell arra...
  • matlab图象处理的数据类型

    千次阅读 2018-05-12 17:31:16
    在做图象处理作业的时候遇到了数据类型的问题,之前没有仔细考虑过,先甩上相关知识的链接Matlab图像数据类型unit8,double关系提炼一下重点:matlab中图像主要有两种格式:uint8(0-255)、double(0-1)为了保证运算...
  • Matlab图像处理预处理

    千次阅读 2016-01-06 13:31:41
    图像格式转换在图像处理中,读入的图片通常是uint8格式,一是由于unit8的精读问题,二是由于有的函数不支持uint8类型,所以通常要转换成为double格式。 转换通常要用im2double()函数,而不用double()或mat2gray()...
  • matlab 命令集结(1)

    2015-01-27 18:11:28
    double转uint8 A是double型,先对A做一个截尾取整运算,然后再转换数据类型吧 A=fix(A); AA=uint8(A);...im2uint8():将图像数组转换成unit8类型 im2uint16():将图像数组转换成unit16类型 celluint8  %
  • MATLAB中imshow()显示问题

    万次阅读 2017-03-15 21:09:52
    MATLAB中imread(img),读取保存的数据是unit8类型的,如果需要运算,最好转换成double型,直接im2double(img)就可以,然后这样处理的数据全是[0,1]之间的。当然imshow(img),img不管是double型还是unit8 型都可以显示...
  • MATLAB显示图像变白问题

    千次阅读 2017-09-30 22:01:31
    使用matlab显示图像有时候会出现显示白色的情况,这里说下存在... 简单来说,就是图像的数据类型是double类型,而double类型认为是0~1之间的,imshow 显示的unit8是0~255范围,经过转换后,就变成白色了。 解决问题,
  • matlab 任意轮廓外接矩形代码及其实现; clc;clear;close all; I=imread('00121.bmp'); I=rgb2gray(I);...% M=im2double(I);%将unit8转double型 subplot(3,3,2),imhist(I); M1=im2bw(I,25/255);%二值图
  • 如何显示和转换unit8、unit16、double三种不同数据类型所体现的变址、灰度和真彩图象,如何读写各种标准图象格式文件;如何通过图形窗的交互操作对图形进行修饰、调整;如何打印和输出图形文件。
  • 1、读取图片函数imread()im=imread('00001.jpg')输出结果w*h*channel,且为unit8型,像素值为0-255区间2、读取图片函数im2double()im1=im2double('im')输出结果为double型,像素值为0-1区间,这里可参考类型转换 ...
  • 数字图像处理常用Matlab函数

    千次阅读 2018-10-27 11:00:01
    将图像数组转换为double型:im2double(); 将图像数组转换为uint8型:im2uint8(); 将图像数组转换为uin16型:im2unit16();   灰度图像->索引图像: [X,MAP] = gray2ind( I, [n]); 其中I表示存储灰度...
  • 如何显示和转换unit8、unit16、double三种不同数据类型所体现的变址、灰度和真彩图象,如何读写各种标准图象格式文件;如何通过图形窗的交互操作对图形进行修饰、调整;如何打印和输出图形文件。 本章的图形指令只...
  • 记录一下问题 unit8格式最多只能255要操作图片矩阵一般先转换成double格式 .m文件 function[a,b,B] = en(I) global a; global b; global B; [M N] = size(I); I = double(I); high = 0; low = 0; sum1 = 0; avgI = ...
  • %读入图像的值为无符号型unit8(),进行矩阵操作前必须先转换为矩阵运算所支持的double()双精度型。 figure(1); subplot(2,2,1) imshow(x1); title('原图'); %添加高斯噪声 x2=imnoise(x1,'gaussian',0.01); x1=...
  • MATLAB--图像的像素运算--代数运算

    千次阅读 2020-04-10 17:03:51
    MATLAB中图像数据类型是unit8,当进行代数运算时有可能产生属性溢出,所以应当在进行图像代数运算之前首先将数据类型转换成double,从而保证结果的准确性。 1、图像的加法运算–imadd()函数 图像加法运算的一个...
  • 默认情况下,matlab将图象中的数据存储为double型,即64位浮点数;matlab还支持无符号整型(uint8和uint16);...im2uint8():将图象数组转换成unit8类型 im2uint16():将图象数组转换成unit16类型 MATLAB中读入
  • 默认情况下,matlab将图象中的数据存储为double型,即64位...im2double():将图象数组转换成double精度类型im2uint8():将图象数组转换成unit8类型im2uint16():将图象数组转换成unit16类型图像类型转换函数:dither()
  • x=unit8(129) 输出结果是x=129 2.浮点型 (单精度和双精度) matlab中数值数据默认为双精度型 可以用single函数及那个其他类型的数据转换为单精度型 可以用double函数将其他类型的数据转换为双...
  • 6补充:matlab的imread函数用法

    千次阅读 2020-05-01 11:15:26
    注意哦,这里图像的尺寸是200*250(宽,高)的呢,Imread返回值是250*200*3,(行,列,RGB通道),unit8格式 第一幅彩色图像是三通道,RGB,第二幅图像只有1个通道,是灰白的 a=imread('E:\papers\Back_Proje...
  • 图像数据类型及转换函数

    千次阅读 2007-09-27 15:09:00
    图像数据类型及转换函数默认情况下,matlab将图象中的数据存储为double型,即...im2double():将图象数组转换成double精度类型im2uint8():将图象数组转换成unit8类型im2uint16():将图象数组转换成unit16类型图像类型转换
  • 图像数据类型及转换函数

    千次阅读 2007-04-06 16:59:00
    图像数据类型及转换函数默认情况下,matlab将图象中的数据存储为double型,即...im2double():将图象数组转换成double精度类型im2uint8():将图象数组转换成unit8类型im2uint16():将图象数组转换成unit16类型图像类型转换

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

matlabunit8转double

matlab 订阅