当前位置: 首页 > news >正文

Matlab图像直方图相关函数

图像的灰度直方图(H是图像a.bmp的数据矩阵)

imhist(H);%显示a的直方图

histeq(H); %将图像a进行直方图均衡化

adapthisteq(H); %将图像a进行直方图均衡化

imhist函数只能处理二维数据,因此处理RGB图像,需先转化成灰度图像,显示灰度直方图。

例1:显示图像灰度直方图并进行直方图均衡化

H=rgb2gray(imread('peppers.png'));
subplot(3,2,1);
imshow(H);
title('原图');
subplot(3,2,2);
imhist(H);
title('原图直方图');
subplot(3,2,3);
H1=adapthisteq(H);
imshow(H1);
title('adapthisteq均衡后图');
subplot(3,2,4);
imhist(H1);
title('adapthisteq均衡后直方图');
subplot(3,2,5);
H2=histeq(H);
imshow(H2);
title('histeq均衡后图');
subplot(3,2,6);
imhist(H1);
title('histeq均衡后直方图');


例2: 自己设计程序显示直方图,并实现直方图均衡化。

直方图均衡化是直方图修正技术的一种。一幅均匀量化的自然图像的灰度直方图通常在低灰度区域的频率较大,这样的图像较暗,区域中的细节常常看不清楚。

直方图均衡化可使得图像的灰度间距拉大或者使灰度分布均匀,从而增加了反差,使图像细节清晰,达到图像增强的目的。

x=rgb2gray(imread('peppers.png'));
[m,n]=size(x);
p=zeros(1,256);
for i=0:255
   p(i+1)=length(find(x==i))/(m*n);
end
subplot(2,2,1);
bar(0:255,p,'b');
title('原图直方图');
subplot(2,2,2);
imshow(x);
title('原图');
 
s=zeros(1,256);
for i=1:256
     for j=1:i
         s(i)=p(j)+s(i);                
     end
end
 
a=round(s*255);
for i=0:255
    GPeq(i+1)=sum(p(find(a==i)));          
end
subplot(2,2,3);
bar(0:255,GPeq,'b')                 
title('均衡化后的直方图');
b=x;
for i=0:255
     b(find(x==i))=a(i+1);              
end
subplot(2,2,4);
imshow(b)                          
title('均衡化后图像');

相关文章:

  • Matlab中find函数的使用说明
  • Matlab中arrayfun函数
  • Matlab数形结合求解不等式
  • Matlab中的fzero和fsolve函数
  • Matlab 如何用legend标记部分曲线
  • Matlab中绘制带箭头的坐标轴
  • Matlab删除cell数组中全为NaN的行和列
  • Ubuntu环境变量PATH设置
  • 【MLF Week 7 上】Overfitting和Regularization
  • Windows 7 下查询设备详细信息
  • Windows 7 英文版操作系统中文软件乱码解决方法
  • 如何彻底删除QQ程序
  • Windows 7时间设置问题
  • Ubuntu下载精美壁纸
  • 如何关闭Microsoft Office上载中心
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • angular学习第一篇-----环境搭建
  • CSS魔法堂:Absolute Positioning就这个样
  • DOM的那些事
  • js数组之filter
  • MD5加密原理解析及OC版原理实现
  • Next.js之基础概念(二)
  • node.js
  • PAT A1017 优先队列
  • vue:响应原理
  • webpack入门学习手记(二)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 成为一名优秀的Developer的书单
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 马上搞懂 GeoJSON
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 爬虫模拟登陆 SegmentFault
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 入口文件开始,分析Vue源码实现
  • 译有关态射的一切
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​TypeScript都不会用,也敢说会前端?
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # C++之functional库用法整理
  • #Linux(Source Insight安装及工程建立)
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #pragma multi_compile #pragma shader_feature
  • #Ubuntu(修改root信息)
  • #传输# #传输数据判断#
  • (4)STL算法之比较
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (poj1.2.1)1970(筛选法模拟)
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (三)elasticsearch 源码之启动流程分析
  • (四)Android布局类型(线性布局LinearLayout)
  • .Net Core与存储过程(一)
  • .net wcf memory gates checking failed