精华内容
下载资源
问答
  • uint8 类型范围0-255,超过这个范围会得到0 或者 255 比如uint8的两个数1-2,得到的数为0

    uint8 类型范围0-255,超过这个范围会得到0 或者 255

    比如uint8的两个数1-2,得到的数为0

    展开全文
  • matlab中的uint8

    万次阅读 2017-09-06 11:24:13
    matlab中uint16的范围是0-65535,uint8的范围是0-255。 matlab提供强制转换为uint8的函数即uint8(number)。 但这个函数的做法是把大于255的数全部强制置为255,而小于255的部分则保持原样不变。 若希望将0-65535...
    matlab中uint16的范围是0-65535,uint8的范围是0-255。

    matlab提供强制转换为uint8的函数即uint8(number)。

    但这个函数的做法是把大于255的数全部强制置为255,而小于255的部分则保持原样不变。

    希望将0-65535的灰度级映射到0-255上,则可采用以下的办法:

    uint8(double(number)/65535*255)
    展开全文
  •  matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。...

    【转载】
    原文传送门:https://blog.csdn.net/fx677588/article/details/53301740

    1. matlab图像保存说明

    matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。
      详细来说imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。例如,彩色图像像素大小是400300( 高 * 宽 ),则保存的数据矩阵为400300*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格式的才能运算,区别如下:

    img = imread('./1.jpg'); % 读入是unit8型(0~255)数据
    I1  = im2double(img);    % 把图像转换成double精度类型(0~1)
    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区间。
      另外需要补充说明下面这种情况:

    img = imread('./1.jpg');
    I1  = double(img);
    I2  = im2double(I2); % I2数据依然是0~255,并不是0~1,即I1=I2
    

    因为I1已经是double类型,imdouble不会对double类型数据0到255映射到区间0到1,所以上面im2double操作没有任何作用,I1和I2相等。
      总结如下:函数im2double将输入转换成double类型。如果输入是uint8、unit16 或者是二值的logical类型,则函数im2double 将其值归一化到0~1之间,当然就是double类型的了。如果输入本身就是double类型,输出还是double类型,并不进行映射。
      如果已经是double类型的数据需要映射,则进行下面操作即可:

    I2 = I1/255;
    

    3. matlab图像显示imshow类型问题

    在matlab处理完数据好,我们希望显示或者imwrite写入图片时候,需要注意。如果直接对double之间的数据矩阵I运行imshow(I),我们会发现有时候显示的是一个白色的图像。
      这是因为imshow()显示图像时对double型是认为在0到1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0到255范围。所以对double类型的图像显示的时候,要么归一化到0到1之间,要么将double类型的0~255数据转为uint8类型。解决方法如下:

    imshow(I/255);    % 将图像矩阵转化到0-1之间
    imshow(I,[]);     % 自动调整数据的范围以便于显示
    inshow(uint8(I)); % 转成uint8
    

    4. uint和double数据转换的深入说明

    double和uint8、uint16之间数据转换有下面的函数:

    im2double(); % 将图像数组转换成double精度类型
    im2uint8();  % 将图像数组转换成unit8类型 
    im2uint16(); % 将图像数组转换成unit16类型
    

    当然,当图像数据是double类型的0~1之间,下面两者操作是等价的:

    I1=im2uint8(I); 
    I2=uint8(round(I*255)); 
    

    但是matlab默认double类型图片数据是位于0到1之间的,而uint8是位于0到255。所以如果矩阵数据图像是double类型(0到1之间)可直接im2uint8,这样不仅完成数据类型转换,而且将0到1之间映射为了0到255之间的数据。
      但是如果图像矩阵数据是double类型的0到255,直接im2uint8转换的话,matlab会将大于1的数据都转换为255,0到1之间的数据才会映射到0~255之间整型的数据。例如下面程序:

    img64 = [1,2,3,4];
    I8    = im2uint8(img64); % I8结果为[255 255 255 255]
    

    个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!

    展开全文
  • matlab将uint16转换成uint8的方法

    万次阅读 2019-01-04 10:00:15
    将一个16位(0~65535)的图像Image...(1)uint8(Image) : 将超过255的shuz数值直接设为255 (2)uint8(double(Image)/65535*255):将0-65535的灰度级映射到0-255的灰度级范围 (3)im2uint8(Image) : 同 (2)...

    将一个16位(0~65535)的图像Image转换成8位(0~255),有几种方法:

    (1)uint8(Image) : 将超过255的shuz数值直接设为255

    (2)uint8(double(Image)/65535*255):将0-65535的灰度级映射到0-255的灰度级范围

    (3)im2uint8(Image) :  同 (2)

    展开全文
  • matlab中uint16(uint8)函数的用法

    万次阅读 多人点赞 2018-10-31 15:32:56
    matlabuint16函数的用法; 1.函数用法:将输入参数映射到无符号16位范围之内,即将参数限定在0-65535之间; 2.实例:当输入为一个实数a时: if a<0 输出ans=0; if 0<=a<=65535 输出ans=a; if...
  • matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像,可以节省存储空间。 imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。 matlab读入图像...
  • MNIST数据库处理-matlab生成mnist_uint8.mat。 功能:将下载得到的二进制文件转换为10进制数据,提取像素数据和标签数据 适用:仅适用于MNIST数据集,修改后可适用于其他
  • uint8 uint16 matlab

    千次阅读 2018-12-04 16:24:48
    四舍五入 转化为 0~255之间的整数 四舍五入 转为0~65535之间的整数
  • matlab默认图像的储存和读取方式为uint8 但是为了计算和表达方便 matlab针对uint8和double都有相应操作 有时我们会疑惑 一会 iMG = double(img); imshow(uint8(IMG)*25) 一会 imshow(IMG) imwrite同样有...
  • matlab读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,比double型(64位,8个字节),节省了存储空间。 **imread()**是将灰度图像存入一个8位矩阵;若为RGB图像时,...
  • matlabuint8、double ,数据类型处理

    千次阅读 2019-02-04 11:01:03
    导入图像时,一般matlab的图像数据类型为uint8(8位无符号整数),该图像为8位图像,运算中matlab中数值一般采用double型(64位),存储可以为uint8 也可为double 。 所以 一般有如下操作: 先将图像转为double运算—...
  • matlab图像数据类型uint8,double关系

    千次阅读 多人点赞 2019-04-05 20:07:50
    数字图像处理深入思考(一)double型的图像矩阵转化为uint8(I)类型(二)图像的【0,1】和【0,255】显示 深入思考 ...matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)运...
  •  matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。...
  • matlab中处理激光点云等数据时,其原始数据通常是存储为uint8类型,需要将其连续的4个uint8数据组合后转换成float型。 假如有这样一组数据 使用如下代码可以实现数据类型的转换: typecast(fliplr(uint8([65...
  • CNN训练数据-手写体MATLAB mnist_uint8.mat.的二进制格式的mnist数据集转化成了.mat的格式 但是官网下载的.mat格式的均为 6000×784,60000×10,10000×784,10000×10
  • 将从http://yann.lecun.com/exdb/mnist/index.html下载的原始数据train-images-idx3-ubyte.gz等二进制图像数据转化为uint8数据。
  • Matlab图像处理中uint8和double的问题

    万次阅读 2017-06-07 14:51:21
    为了节省存储空间,matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像。 imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。 因此,matlab读入图像的...
  • matlab中,uint8的为无符号8位整数,范围 : [0 255],那么当越界时会发生什么呢?小于0:>> uint8(-1)ans = 0大于255:uint8(266)ans = 255这都比较自然,没什么。我今天遇到的使我犯错的是这样一个东西,如果两个...
  • MATLAB图像数据格式imshow uint8与double

    千次阅读 2019-05-11 16:26:54
    1. 图像数据格式 double(64位):matlab中数值一般采用...uint8(8位无符号整数):为了节省存储空间,matlab为图像提供的特殊数据类型。imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中,因此,mat...
  • matlab中怎样将uint8转化成double型 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对...
  • matlab中处理图像像素点数据: ...matlab中imshow图片,要先转换成uint8: subplot(1,2,1),imshow(uint8(img1)),title('original');subplot(1,2,2),imshow(uint8(img2)),title('after'); matlab图...
  • uint8与byte可以说是一样的,因为文档中有这样的定义: The Go Programming Language Specification Numeric types uint8 the set of all unsigned 8-bit integers (0 to 255) byte alias for uint8 1 2 3 4 也就是...
  • 将图像转换为uint8格式 & MATLAB实现

    千次阅读 2019-10-16 09:34:32
    在根据 VOC 数据的格式处理我自己的数据时,需要 label 图像统一为前景为 1,背景为 0 的 uint8 图,现在我的 label 是前景为 255,背景为 0 的 uint8 图像。 要转换其实很简单,先将标签值映射到 0~255,注意但此时...
  • 为了节省存储空间,matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像。 imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。 因此,matlab读入图像的数据...
  •  matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,030
精华内容 412
关键字:

matlabuint8

matlab 订阅