精华内容
下载资源
问答
  • matlab中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算。在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。如果直接运行imshow(I),我们会发现...

    在matlab中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算。在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。如果直接运行imshow(I),我们会发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0~1(灰度空间)范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0~255范围。而经过运算的范围在0-255之间的double型数据就被不正常得显示为白色图像了。   

    这里那,要是把运算后是double型的图像矩阵转化为uint8(I)类型,虽然可以保证显示范围,但是显示精度确实大大降低,好多细节的区域不会显示出来,这里既要把doule类型的矩阵显示出来又要保证显示精度,因此可以使用:

            imshow(I/max(max(I)));    ----------将图像矩阵转化到0-1之间                

                   imshow(I,[]);       -----------自动调整数据的范围以便于显示 

    第一种方法是将图像除以矩阵中的最大值,这样就可以转化到0到1之间,就可以正常显示了,这里如果要是除以255的话会出现一个问题,那就是如果图像矩阵的像素值都比较小的话那么显示的图像就会全部变为黑色。

    第二种方法的原理和第一种差不多,具体可以看看imshow()函数的显示原理:

        imshow(I,n)

      imshow(I,[low high])

      用指定的灰度范围 [low high]显示灰度图像 I。显示结果,图像中灰度值等于或低于low的都将用黑色显示,而灰度值大于等于high的都显示为白色,介于low和high之间的用其灰度级的默认值的中间色调显示。如果你用了一个空矩阵 ([]) 来代替 [low high], imshow 函数将使用 [min(I(:))max(I(:))]作为第二个参数。


    转自:https://blog.csdn.net/majinlei121/article/details/46633573

    展开全文
  • 计算输入数组中的最小值和最大值,转换为 256 个值,并应用颜色图以生成彩色图像 (RGB)。... 标题('双倍') % 显示对应的RGB图像子图(1、2、2); imshow(double2rgb(peaks(128), jet, [-8 8])); title('作为RGB');
  • 图像数据经过处理后由uint8变成double型,直接运行imshow,会显示全白 因为imshow()显示图像时对double型是认为在01范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0255范围。而经过运算的范围在0-255...

    若图像数据经过处理后由uint8变成double型,直接运行imshow,会显示全白

    因为imshow()显示图像时对double型是认为在01范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0255范围。而经过运算的范围在0-255之间的double型数据就被不正常得显示为白色图像了。

    解决方法一 imshow(uint8(Z))

    强转为uint8型数据,虽然可以保证显示范围,但是显示精度确实大大降低,好多细节的区域不会显示出来

    解决方法二 imshow(I/max(max(Z)));

    既要把doule类型的矩阵显示出来又要保证显示精度,或者直接 imshow(Z/256),将0-255的double转换为0-1的double

    解决方法三 imshow(Z,[]) imshow(Z,[0,255])

    用指定的灰度范围 [low high]显示灰度图像 I。显示结果,图像中灰度值等于或低于low的都将用黑色显示,而灰度值大于等于high的都显示为白色,介于low和high之间的用其灰度级的默认值的中间色调显示。如果你用了一个空矩阵 ([]) 来代替 [low high], imshow 函数将使用 [min(I(😃)max(I(😃)]作为第二个参数。

    展开全文
  • matlab中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算。在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。如果直接运行imshow(I),我们会发现...

    在matlab中,我们常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算。在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。如果直接运行imshow(I),我们会发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0~1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0~255范围。而经过运算的范围在0-255之间的double型数据就被不正常得显示为白色图像了。

    那么如何解决这个问题呢?笔者曾经用fix()函数把图像矩阵由实数形式转化成整数形式,但这样仍无法改变图像矩阵是double型的事实。
    通过搜索,找到两个解决方法:
    imshow(I/256); ———-将图像矩阵转化到0-1之间
    imshow(I,[]); ———–自动调整数据的范围以便于显示 (不明白原理!)
    PS:imshow(I,[]),将I的最小值看作0,最大值看作255,所以黑白明显

    从实验结果看两种方法都解决了问题,但是从显示的图像看,第二种方法显示的图像明暗黑白对比的强烈些!不知什么原理!

    此外还找到一些方法,还没有试过,记录如下:
    uint8和im2uint8的区别
    图像数据在计算前需要转换为double,以保证精度; 很多矩阵数据也都是double的,要想显示其,必须先转换为图像的标准数据格式. 如果转换前的数据符合图像数据标准(比如如果是double则要位于0~1之间),那么可以直接使用im2uint8
    如果转换前的数据分布不合规律,则使用uint8,将其自动切割至0~255(超过255的按255) 最好使用mat2gray,将一个矩阵转化为灰度图像的数据格式(double)
    另外,可以用isgray判断矩阵是否是一个图像数据矩阵
    总之,im2uint8、im2double要跟uint8、double

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tina_lulu_21/archive/2008/07/01/2603162.aspx

    展开全文
  • imwrite将double类型图像保存为全白图像的问题

    问题描述:使用了同态滤波之后,图像类型为double,采用imshow(I,[])可以成功显示,但是使用imwrite保存时,所保存的却是全白图像

    原因:imwrite函数保存图像时,如果图像是double型,取值范围是0~1;若为uint8型,取值范围是0~255. 如果图像满足这两条件中的任何一个,这个矩阵就可以被直接保存成图像,但是运行同态滤波后我的图像像素在8~14之间


    如上图所示,这样就使得imwrite函数将其默认为全1 ,即全白图像。

    解决方法:

    展开全文
  • Matlab图像处理新手——图像分割和画框显示篇 **前言:**许多人说Matlab对未来的工作没什么用,就目前了解的情况而言并非如此。如:现版本已有matlab转化成C语音的功能;matlab与DSP(API协议技术)、FPGA、西门子...
  • matlab imshow显示图像详解

    万次阅读 2019-03-11 21:31:47
    最近在用octave (类似于matlab的计算软件, 函数和matlab一致) 写程序的时候, 在显示图像和保存图像的时候遇到了一些小问题, 所以简单的总结了一下。 本文用的图像为灰度图像: imread() 返回的图像类型是uint...
  • 为了节省存储空间,matlab图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像。imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。因此,...
  • MATLAB图像直方图、累计直方图前言一、图像显示问题说明1.说明2.案例展示二、图像类型转换三、自定义显示函数1.函数代码2.函数调用总结 前言 在图像处理中,很多处理手段都需要求图像的直方图或者累计直方图,...
  • 近期学习使用matlab处理图像,对于显示double图像遇到些问题,查阅相关博客、论坛,总结如下: 1、在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。 2、如果直接运行imshow...
  • matlab图像显示

    千次阅读 2016-12-02 20:17:13
    matlab图像类型转换以及uint8、double、im2double、im2uint8和mat2gray等说明 原始的两张图像: 今天在做实验的时候,遇到一个图像显示的问题,就是图像转成double类型处理后忘了转回到uint8类型就
  • matlab默认图像的储存和读取方式为uint8 但是为了计算和表达方便 matlab针对uint8和double都有相应操作 有时我们会疑惑 一会 iMG = double(img); imshow(uint8(IMG)*25) 一会 imshow(IMG) imwrite同样有...
  • MATLAB图像的读取和显示

    千次阅读 2020-07-24 23:37:31
    MATLAB图像的读取和显示 直接看代码吧,注释写的很清楚了。 %图像读取,参数为 路径+文件名,扩展名 %A=imread('G:\chorm浏览器\图片\snow-capped-mountain-under-blue-sky-1775862.jpg','jpg'); A=imread('G:\chorm...
  • 图像类和类型间的转换 im2uint8  将输入中所有小于0的设置为0,而将输入中所有大于1的设置为255 其他的所有乘以255 im2uint16  将输入中所有小于0的设置为0,而将输入中所有大于1的设置为...
  • matlab中uint与double不同

    2021-04-27 19:49:21
    https://www.pianshen.com/article/1006326703/
  • MATLAB显示图像为什么一片白

    千次阅读 2020-08-17 19:33:38
    经常有朋友问,为什么我imshow出来的图一片白,我这明明是灰度图的。 这是因为没弄好图片的类型。
  •  matlab中读取图片后保存的数据是uint8类型(8位无符号整数,即1个字节),以此方式存储的图像称作8位图像,好处相比较默认matlab数据类型双精度浮点double(64位,8个字节),自然可以节省很大一部分存储空间。...
  • MATLAB实现彩色图像灰度化

    千次阅读 多人点赞 2019-12-12 19:05:26
    彩色图像灰度化 实现彩色图像的灰度化主要有三种方法:最大值法、平均值法、加权平均法。 最大值法 取RGB三色分量中的最大值,即R=G=B=max(R,G,B) 平均值法 取RGB三色分量中的平均值,即R=G=B=(R+G+B)/3 ...
  • 为了节省存储空间,matlab图像提供了特殊的数据类型...因此,matlab读入图像的数据是uint8,而matlab中数值一般采用double型(64位)存储和运算。所以要先将图像转为double格式的才能运算, I2=im2double(I1) %...
  • matlab显示图像频谱

    万次阅读 2017-05-17 15:42:11
    将以下代码保存为m文件: function display_spectrums(file) img=imread(file);...img=double(img); f=fft2(img); f=fftshift(f); magnitude=log(1+abs(f)); subplot(2,1,1),imshow(magnitude,[]),tit
  • matlabdouble和im2double的区别

    千次阅读 2017-12-27 19:16:44
    为了是图像处理不溢出(因为图像通道的数据是uint8类型的,计算过程中很容易溢出),通常需要转换为双精度浮点数, I=imread('some.jpg'); img=double(I); 实际上是扩大了存储的宽度,原来的值大小不变,而im2...
  • matlab开发-double2rgb

    2019-08-23 18:27:30
    matlab开发-double2rgb。使用指定的颜色映射将双精度(二维或三维)数组转换为RGB图像
  • 图像类和类型间的转换 im2uint8 将输入中所有小于0的设置为0,而将输入中所有大于1的设置为255 其他的所有乘以255 im2uint16 将输入中所有小于0的设置为0,而将输入中所有大于1的设置为65535 mat2gray 把一个double...
  • matlab categorical类型转double类型

    千次阅读 2020-05-17 14:11:39
    s = string(c) d = double(s)
  • Matlab显示图像三维信息

    千次阅读 2016-11-14 15:30:38
    Matlab显示图像三维信息 im1=imread('lena.bmp');mesh(double(im1));colormap gray

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,302
精华内容 6,920
关键字:

matlab显示double图像

matlab 订阅