1.问题描述

<span style="font-size:18px;">ImgUS = imread('050.bmp');
Igray = rgb2gray(ImgUS);
Igray = double(Igray);
figure,imshow(Igray ,[]);
figure;imhist(Igray);</span>

图像可以正常显示,但是灰度直方图却无法显示。

2.解答:

2.1 网友的说法:

     默认情况下,matlab将图像中的数据存储为double型,即64位浮点数;matlab还支持无符号整型(uint8和uint16);uint型的优势在于节省空间,涉及运算时要转换成double型。

2.2 真实的原因:

问题的真正的解释其实应该是这样的。

   首先是在数据类型转换时候uint8和im2uint8的区别,uint的操作仅仅是将一个double类型的小数点后面的部分去掉;但是im2uint8是将输入中所有小于0的数设置为0,而将输入中所有大于1的数值设置为255,再将所有其他值乘以255。
     图像数据在进行计算前要转化为double类型的这样可以保证图像数据运算的精度。很多矩阵的数据也都是double的,要想显示,必须先转换为图像的标准数据格式。如果转换前的数据符合图像数据标准(比如,如果是double则要位于0~1之间,这个是由Matlab中的规定),那么可以直接使用im2uint8。
    如果转换前不满足这个分布规律(也就是我们草草的用double强制将uint变成double型),则使用uint8,将其自动切割至0~255(超过255的按255)最好使用mat2gray(这个函数可以把一个double类的任意数组转换成取值范围在[0,1]之间的),将一个矩阵转化为灰度图像的数据格式(double)。另外,可以用isgray判断矩阵是否是一个图像数据矩阵。

3. 关于imhist:

imhist(I) 
显示图像I的直方图,图像的灰度数由图像类型指定,如果I为灰度图像,imhist使用一个默认的256值,如果I为二值图像,imhist则使用2值。

修订后的代码:
<span style="font-size:18px;">ImgUS = imread('050.bmp');
Igray = rgb2gray(ImgUS);
Igray = double(Igray);
figure,imshow(Idenoise,[]);
Igray = mat2gray(Igray);%标准化成图像double
figure;imhist(Igray);</span>

或者,一开始就进行uint8向图像标准类型double转换,利用im2double函数

<span style="font-size:18px;">ImgUS = imread('050.bmp');
Igray = rgb2gray(ImgUS);
Igray = im2double(Igray);%标准化成图像double
figure,imshow(Igray);
figure;imhist(Igray );</span>

uint8、double、mat2uint、imhist绘直方图w恩替藐视相关推荐

  1. matlab imhist灰度直方图

    imhist()函数显示图像直方图要求图像是二维的灰度图像. 1.h = imhist(I):直接显示灰度图像I的直方图 2.h = imhist(I,b):b是用来形成直方图的'容器'的数目,默认2 ...

  2. c语言绘直方图,用C语言绘制直方图,绘制输入单词长度的直方图

    这是那本著名的<C语言程序设计>里的数组那部分的一个练习题 基本思路是先统计出每个单词的长度(longth)和每个长度的单词出现的次数(number),然后用用两重循环分别扫描X和Y轴绘制 ...

  3. 图像的灰度级数越多越好_MATLAB-数字图像处理 图像直方图归一化

    图像直方图归一化 图像直方图概念: 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的.纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数 ...

  4. MATLAB实现图像灰度直方图

    (近期有用到灰度直方图的情况,就稍微做了一点点小总结,第一次总结,借鉴了很多博主的文章,下面会码出链接,膜拜大佬~) 1. 图像灰度直方图 灰度直方图是将数字图像中所有像素按灰度值的大小,统计每种像素 ...

  5. #大创学习笔记#part1宫颈癌细胞图像分割——直方图最亮谷底阈值确定法提取细胞前景

    尝试着做一个工程日记,也想把自己从项目中所学到的知识经验记录下来.而且网上的资源繁多复杂,方法也是各式各样,难免让人眼花缭乱,整理以下思路,供大家参考. 在研究很多篇文献后,我选用了一篇硕士论文中的研 ...

  6. 图像处理之直方图均衡化

    1. 图像直方图    1.1 灰度直方图     图像的灰度直方图是图像灰度级的函数,表示数字图像中每一灰度级与其出现频数(呈现该灰度的像素数目)之间的统计关系.通常,用横坐标表示灰度级(000~2 ...

  7. matlab数字图像处理编码实现直方图均衡化

    matlab中直方图均衡化有对应的内置函数histeq函数,其具体形式为: g=histeq(f,nlev) 参数f为输入图像,nlev是为输出图像设置的灰度级(默认为64),g为直方图均衡化后的输出 ...

  8. 基于直方图特征的图像搜索

    概述 图像搜索现实的一般过程: 提取图像特征值→对特征值进行处理→匹配特征值 图像的特征值有很多,基于颜色特征,纹理特征,形状特征等,下面是基于图像颜色直方图特征的图像搜索. (参考文章:http:/ ...

  9. matlab 增加图像对比度_计算机视觉学习笔记6 图像直方图与直方图均衡化

    图像的直方图 图像直方图表示图像中每一种像素的个数,反映了图像中每种像素值出现的频率,是图像的基本统计特征之一,具有平移,旋转,缩放不变性,广泛应用于图像处理的各个领域.比如灰度图像的阈值分割,基于颜 ...

最新文章

  1. telegram 机器人_学习使用Python在Telegram中构建您的第一个机器人
  2. python 改变词典顺序_按词典顺序排列的功率集
  3. html让图片自动旋转360,html5 canvas 360图片旋转制作抽奖转盘代码
  4. 《消费者报告》下调特斯拉Model 3安全评级
  5. python yield from_简述 yield 和 yield from
  6. 后台cs代码控制html控件,cshtml中正则表达式使用后台代码
  7. java中几种Map在什么情况下使用,并简单介绍原因及原理
  8. Spring(十六)之MVC框架
  9. python assertion failed_python - OpenCV错误:(-215:断言失败)!_src.empty()在函数'cvtColor'中 - 堆栈内存溢出...
  10. selenium(三)之webDriver与浏览器版本问题
  11. 别再无脑get、set了,快使用lombok,从此不用再get、set
  12. 计算机模拟量与数字量的转换,PLC开关量与模拟量编程数值转换原理
  13. 继续教育公需课——人工智能技术及其发展趋势答案
  14. Educational Codeforces Round 100 A—D题题解
  15. BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心【HDFS存储和MapReduce计算】)、深入理解、下载、案例应用之详细攻略
  16. testng和idea_TestNG,FEST和CDI
  17. 智能终端:开辟移动增值业务的新天地
  18. iOS仿微信聊天页面长按气泡弹窗
  19. 静态方法与非静态方法的相互调用
  20. IP101GR原理图下载

热门文章

  1. 如何在防火墙或路由器中禁止访问一些公司不相关网站
  2. poj 1515+poj 1438(边双连通)
  3. IT人士运动方式选择建议
  4. 第十八章 8string类insert成员函数的使用
  5. Perl学习笔记(2)
  6. asp.net C# 实现上传Excel文件导入数据到SQL Server 数据库
  7. 对于写bash脚本的朋友,read命令是不可或缺的,需要实践一下就可以了解read命令的大致用途: 编写一个脚本: #!/bin/bash # hao32 test read echo -e Pl
  8. [BZOJ1322]Destroying The Graph
  9. Linux学习笔记 -- 文本编辑器之 vi与vim
  10. ab ApacheBench web测试工具