本文内容来自博客专栏《DIP数字图像处理》

1

前言

直方图均衡(Histogram equalization)是利用直方图分布,计算累加函数,按照累加函数做映射,能够提升图像对比度。
本文我会从每一个小的步骤编写,说明,并给出每一阶段的结果,让你完全搞懂其原理。
直方图均衡示例:

2

代码

2.1 自己写一个

还是那句话, 【要想搞明白真正原理,尤其你是做图像算法的,还是得自己动手写】代码如下:

%直方图均衡Histogram equalization 源代码Iin = imread('tire.tif');[numRows,numCols]=size(Iin);numBins=2^8;%直方图统计,概率分布函数pdf(Probability distribution function)pdf=zeros(1,numBins);for ii=1:numRows for jj=1:numCols pdf(Iin(ii,jj)+1)=pdf(Iin(ii,jj)+1)+1; endendfigure()plot(pdf,'.-');grid on;title('直方图统计');%累加直方图得到,累加函数cdf(Cumulative distribution function)cdf=cumsum(pdf);cdf=cdf./cdf(end); %归一化处理figure()plot(cdf,'.-');grid on;title('直方图累加函数计算');% 根据累加函数映射Iout=zeros(numRows,numCols);for ii=1:numRows for jj=1:numCols Iout(ii,jj)=255*cdf(Iin(ii,jj)+1); endendfigure()imshow([Iin,Iout]);title('左:原图 右:处理图')

2.2 使用Matlab 自带函数histeq

%直方图均衡 Histogram equalizationIin = imread('tire.tif');Iout=histeq(Iin);imshow([Iin,Iout]);title('左:原图 右:处理图')

3

总结

直方图均衡方法是一种很好的图像对比度提升方法,但是并不适应所有场景,所以需要在其基础上做改进,历来学者做了不少创新。
不过,这种处理思想以及上述代码,是经典,先搞懂经典,再去优化。

【END】

本文内容来自博客专栏《DIP数字图像处理》

gs算法的matlab代码_【图像算法amp;MATLAB】直方图均衡(干货代码)相关推荐

  1. pandas数据处理 代码_使用Pandas方法链接提高代码可读性

    pandas数据处理 代码 We have been talking about using the Pandas pipe function to improve code readability. ...

  2. 小波分解与小波包分解代码_分解的功能参数和代码可维护性

    小波分解与小波包分解代码 Code keeps changing, there's no doubt about that. We always do our best to set some roc ...

  3. matlab或_如何利用MATLAB计算圆周率

    圆周率是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数.π也等于圆形之面积与半径平方之比.是精确计算圆周长.圆面积.球体积等几何形状的关键值. MATLAB中的表 ...

  4. mysql在哪里写代码_[译] 如何写好 Go 代码

    原文:https://scene-si.org/2018/07/24/writing-great-go-code/ 我写了多年的 Go 微服务,并在写完两本关于 (API Foundations in ...

  5. 如何编写无法维护的代码_编写可维护的前端代码

    点击这里获得更好的阅读体验​github.com 以下是本人在团队内部分享的整理和补充,水平有限,如有错误,请不吝赐教. 大家好,我叫王力国,目前是 RPA 前端团队负责人,过去一年我们从零构建了 R ...

  6. latex附录中放python代码_在Latex中插入Python代码

    这里指的插入是指最终能在生成的pdf中显示高亮的Python代码. 在Latex中插入Python代码,需要一个第三发的宏包pythonhighlight: https://github.com/ol ...

  7. iapp启动图代码_关于计算设备运行时间SCL代码的测试与说明

    有小伙伴使用西门子PLC仿真软件对我前段时间写的文章<西门子SCL编程实例-计算设备运行时间(2)>进行了测试,发现OB10中的代码并没有执行,他问是不是代码有问题?尤其是这条语句: &q ...

  8. 天天向上续 python代码_第46p,8行代码,用Python批量重命名文件

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第46篇文章,第二阶段的课程:Python基础知识:小案例之用Python批量重命名文件. 学习本课程,建议先看一遍:[计算机基础知 ...

  9. 华为扩大内存代码_华为手机增大手机内存代码 | 手游网游页游攻略大全

    发布时间:2016-01-22 我的世界手机版游戏中一个好的种子,可以省去玩家们前期建设的不少功夫,下面是小编给大家整理的我的世界手机版最新种子大全 手机版种子代码,跟种子特点介绍. 我的世界手机版最 ...

  10. python30行代码_仅利用30行Python代码来展示X算法

    假如你对数独解法感兴趣,你可能听说过精确覆盖问题.给定全集 X 和 X 的子集的集合 Y ,存在一个 Y 的子集 Y*,使得 Y* 构成 X 的一种分割. 这儿有个Python写的例子. X = {1 ...

最新文章

  1. 详细说说Transformer (超详细图解,一图胜千言)
  2. $Django 中间件 csrf
  3. 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)
  4. 最简单的基于FFmpeg的AVfilter的例子-修正版
  5. maya导入abc动画_三维文件格式知多少 | abc、glTF、fbx、obj、dae、stl、3ds...
  6. CG CTF WEB GBK Injection
  7. go interface 的坑
  8. mysql 类似wm concat_oracle中有没有类似于mysql中的group_concat的函数?
  9. java代码块是什么_Java代码块
  10. python两组数的差异 pca_python – scikit KernelPCA不稳定的结果
  11. 人生苦短之我用Python篇(socket编程)
  12. 【Unity3D】动态路障导航
  13. java调用dll实例_如何用java调用dll,详细图解
  14. VirtualBox的vmdk文件压缩
  15. win10右键删除多余菜单
  16. len(lst[0])
  17. 【OpenVINO 3】POT量化流程
  18. pytorch训练时前一次迭代的loss正常后一次迭代却报nan
  19. 用python绘制玫瑰花
  20. android版本 51,51星变手机版

热门文章

  1. ASCII中关于大小写字母间隔为32的思考
  2. 什么时候找到HAVE_CONFIG_H的定义啊
  3. ZZULIOJ 1072:青蛙爬井
  4. ZZULIOJ 1063:最大公约与最小公倍
  5. linux mint php mysql_linux mint 下mysql中文支持问题
  6. 二级c语言需要知道的知识点,2020年全国计算机二级C语言复习知识点:C语言基本知识(...
  7. 小程序采用mvvm设计模式_滴滴重磅开源跨平台统一 MVVM 框架 Chameleon
  8. 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River
  9. 信息学奥赛一本通 1307:【例1.3】高精度乘法 | 1174:大整数乘法 | OpenJudge NOI 1.13 09:大整数乘法
  10. 组合数学 —— 康托展开