zoukankan      html  css  js  c++  java
  • Matlab中imshow()函数的使用

         imread() 返回的图像类型是uint8类型, 这时用imshow显示图像的时候, imshow会认为输入矩阵的范围在0-255, 如果imshow的参数为double类型的,那么imshow认为输入矩阵的值为0-1.

         很多时候需要将图像转换为double类型的, 但是转换以后直接使用imshow显示的是一片白色, 是因为当imshow显示图像的时候, 会认为double类型的图像矩阵的范围在0-1, 超过1的像素值当作1处理, 这样就是几乎所有的像素都是白色。

         通过搜索,找到两个解决方法:
             imshow(I/256); -----------将图像矩阵转化到0-1之间
             imshow(I,[]);       -----------自动调整数据的范围以便于显示 (不明白原理!) 
             从实验结果看两种方法都解决了问题,但是从显示的图像看,第二种方法显示的图像明暗黑白对比的强烈些!不知什么原理!        
         此外还找到一些方法,还没有试过,记录如下: 
            uint8和im2uint8的区别 
           图像数据在计算前需要转换为double,以保证精度; 
           很多矩阵数据也都是double的,要想显示,必须先转换为图像的标准数据格式。
           如果转换前的数据符合图像数据标准(比如如果是double则要位于0~1之间),那么可以直接使用im2uint8;如果转换前的数据分布不合规律,则使用uint8,将其自动切割至0~255(超过255的按255)
            最好使用mat2gray,将一个矩阵转化为灰度图像的数据格式(double) 
            另外,可以用isgray判断矩阵是否是一个图像数据矩阵。
  • 相关阅读:
    Javascript内容整理——BOM
    前端实现excel报表,vue+luckysheet
    代码转图片 的一个好用网站
    推荐一个非常好用前端在线编辑器!!! 一点都不卡
    前端常用的一些网站
    vue中使用moment,如何按需打包?
    better-scroll
    时间线
    碎纸屑动画
    动画
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/5654067.html
Copyright © 2011-2022 走看看