一、灰度直方图均衡算法(HE)

1.1、算法简介

直方图均衡化通常用来增加许多图像的 全局对比度 ,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。

这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来X光图像中更好的骨骼结构显示以及曝光过度或者曝光不足照片中更好的细节。这种方法的一个 缺点是它对处理的数据不加选择,它可能会增加背景噪声的对比度并且降低有用信号的对比度

直方图均衡技术将原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布, 由于其算法简单, 无需借助外来因素的参数设置,可以自成系统的运行, 有效地增强图像对比度, 是一种常用的图像增强方法. 一直以来, 直方图均衡技术受到各个领域的重视, 比如在消费类电子产品邻域, 在均衡图像的同时希望保持图像的亮度信息.

在这里先提出两个基础问题:

  • 何为灰度值?
  • 何为均衡化?为什么需要均衡化?

第一个问题:由于采集到的图像各点的颜色及亮度不同,摄成的黑白照片上或电视接收机重现的黑白图像上各点呈现不同程度的灰色。把白色与黑色之间按对数关系分成若干级,称为“灰度等级”。范围一般从0到255,白色为255,黑色为0,这就是我们常说的灰度值。

第二个问题:一般我们采集到的每一帧图像,在灰度等级0~255范围内都会有不同的分布,你们想象一下两个场景,一个是摄像头处于过亮的环境,这代表着,摄像头采集到的图像会过爆,通俗一点的理解,就是过白,那么这帧图像的灰度分布,大部分都会集中在靠近“255”的地方,另一种场景,就是摄像头处于过暗的环境,这代表着,摄像头采集到的图像会“过黑”,那么这帧图像的灰度分布,就会集中在比较靠近"0"的地方。对于这两种情况来说,都会造成图像不够清晰。而均衡化的意思,就是将图像的灰度分布,根据某些对应关系,将其分布得更加合理,进而提升图像的质量。看一下下面不同情况下的效果图,可能就更能理解上面的描述了。

1.2、HE算法实现

HE算法的实现可以分成下面几个步骤:

  • 遍历每一帧图像中的所有像素,记录每个灰度值出现的像素个数
  • 统计每个灰度值占总像素的百分比,也就是每个灰度值出现的概率
  • 建立一个映射表,对原图像的灰度值一一进行映射,修改成新的灰度值,映射关系为:
    新灰度值 = (最大灰度值(255) - 最小灰度值(0))* 累积概率

为了大家更好理解,我来举个例子,比如我们现在有一个4*4像素的图像数据,它们的灰度值分别如下:

50 128 255 50
128 200 50 255
255 128 128 200
50 128 200 255
灰度值 出现次数 所占概率 累计概率 映射后灰度值
50 4 0.25 0.25 64
128 5 0.3125 0.5625 143
200 3 0.1875 0.75 191
255 4 0.25 1 255

那么,最终映射后的像素灰度值就变成了下面表格中所示:

64 143 255 64
143 191 64 255
255 143 143 191
64 143 191 255

1.3、HE算法的缺点

从上面介绍的原理大家知道,HE算法是对图像进行了全局的均衡,也就是,比如你所导入的图像场景,有非常亮的区域,也有较暗的区域,那就会导致较暗的区域在均衡处理过后,亮度被拉得太高,出现了噪点,甚至是直接变成白色,这就是HE算法的一个劣势,在某种场景下,使用该算法像强化,有可能会出现适得其反的作用。

二、自适应直方图均衡算法(AHE)

2.1、算法简介

AHE算法是HE算法的优化版本。

我们上面有说到,常规的直方图均衡算法虽然算法简单,但是其作用并非的全面的,因为它是对图像进行全局处理,对某种特定的图像数据来说,使用直方图均衡算法会出现许多明显的噪点,甚至于弱化了图像细节,使图像呈现出来的效果反而更差。

自适应直方图均衡算法在常规直方图均衡算法的基础上,将图像划分为几块分别处理,没一小块图像统计一个各自专属的分布函数,这样有利于更好地处理图像数据的局部细节,但是由于图像被等分为几块分别处理,这会导致算法的时间复杂度提高不少,降低了图像处理效率,并且还有另一个缺点,由于AHE算法是对每个像素块独立进行处理映射,也就是块与块之间并没有做一个过渡处理,这样会导致一个问题现象,那就是图像呈现出来的效果就像是被切割成了几个块。

三、限制对比度自适应直方图均衡算法(CLAHE)

3.1、算法简介

CLAHE算法是在AHE和HE算法基础上的,优化升级版本的算法

我们上面介绍了AHE算法的缺点,没有对块与块的边缘做过渡处理,并且会存在过度放大图像的问题,而限制对比度自适应直方图均衡算法,顾名思义,就是在自适应直方图均衡算法的基础上,加上阈值,用来限制对比度,达到削弱噪点放大问题的效果,并且使用线性插值/双线性插值的方法来优化块与块之间过渡问题,使图像看起来更加和谐。线性插值和双线性插值的原理,就是当前块中的像素灰度值,是由其相邻块来共同决定的。而限制对比度的做法,就是在使用常规做法得到常规的直方图后,会将直方图中统计的灰度值与我们设定的阈值进行对比,对于超过阈值的部分,我们会将这部分均匀地分布在每一个不同的灰度值下面。

图像优化算法(HE、AHE、CLAHE)简单介绍相关推荐

  1. 蚁群优化算法(ACO)详细介绍

    今年有幸上岸,导师是做群体智能控制方向的,会涉及到一些算法,所以提前学习 今天早上看到了一个中科院的群体智能视频https://www.bilibili.com/video/BV1KZ4y137sX/ ...

  2. 基于颜色布局描述符(CLD)图像特征提取算法使用Python实现简单的人脸检测功能并使用PyQt5构建简单的功能界面(数字图像处理课程实验)

    文章目录 一.环境准备 二.数据集准备 三.项目结构 四.完整参考代码 imgCode/testUI3.py imgCode/test2.py 五.运行结果 测试一: 测试二 六.参考链接 一.环境准 ...

  3. boost一些常用库(数据结构,迭代器,算法及字符串) 简单介绍

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/51923337 C++强大的重要原因之一就是它的库.而boost就是这样一个包罗万象的C++ ...

  4. 教学优化算法的简单介绍

    目录 摘要 背景 算法 学生初始化 教学阶段 学习阶段 流程总结 优缺点 优点 缺点 一些改进 总结 参考文献 摘要 教学优化算法(Teaching-learning-based optimizati ...

  5. 粒子群优化算法(2)离散粒子群算法

    在上一篇博客 粒子群优化算法(1)中介绍了基本的粒子群算法,基本粒子群算法是基于连续空间(区间)进行搜索,然而在一些实际的工程应用中,我们的待求解的变量可能并不是历需的,而实一种离散型的变量.这就需要 ...

  6. 灰狼优化算法(Grey Wolf Optimizer, GWO)

    灰狼优化算法(Grey Wolf Optimizer, GWO) 由澳大利亚格里菲斯大学(Griffith University)研究学者 Seyedali Mirjalili 于 2014 年提出, ...

  7. 人工智能算法- 优化算法

    文/腾讯soso 林世飞 优化算法通常用来处理问题最优解的求解--这个问题有多个变量共同决定的,举一个例子比如有这样一张 人员关系表,需要绘制一张SOSO华尔兹(一种socialnetwork,htt ...

  8. 图像处理(十三)保刚性图像变形算法-Siggraph 2004

    图像变形可以说是很多图像.动画领域的一个非常常见的功能,就说ps.天天P图.美图秀秀.可牛等这些每个软件,有好多个功能都要用到图像变形,比如图像方向校正.图像全景.视频防抖等,在我的另外一篇博文全景矩 ...

  9. 【机器学习基础】优化算法详解

    本文来源于吴恩达老师的深度学习课程[1]和深度学习课程[2]笔记部分. 作者:黄海广[3] 备注:笔记和作业(含数据.原始作业文件).视频都在 github[4]中下载. 导语 在学习机器学习的过程中 ...

最新文章

  1. DNNBrain:北师大团队出品,国内首款用于映射深层神经网络到大脑的统一工具箱...
  2. linux 网络下载命令 wget 使用技巧
  3. Up or out!!!
  4. wrf 嵌套网格作用_在网格系统中使用响应列,嵌套列和偏移列 引导程序
  5. CDP客户数据管理平台体系化搭建
  6. Shiro Shiro Web Support and EnvironmentLoaderListener
  7. Android系统(133)---Google Play Store无法搜索应用或提示应用不兼容,此类问题该如何定位及分析
  8. 免费直播:1 小时带你体验 Python 车牌识别实战
  9. qt .pro文件配置
  10. 问题PermissionError [Errno 13] Permission denied解决方法
  11. Battery (Coin Change)
  12. Shiro的安装和基本使用
  13. Redis复制:部分同步PSYNC详解
  14. KingbaseES共享集群存储方案的选择
  15. Android模拟电话,向Android模拟器打电话和发短消息
  16. 01.git团队协作
  17. 【普法三分钟】程序员至少应该具备哪些法律知识?
  18. Linux 启动 停止 重启 jar Shell脚本
  19. google输入法地址
  20. 算法分析:傻瓜式理解汉诺塔递归问题

热门文章

  1. java fxml教程_JavaFX 初学入门(一):FXML嵌套与原始控件继承
  2. jdi屏幕斜纹_荣耀V10屏幕有斜纹问题,有人甚至因此退货,真的这么严重?
  3. android+usb摄像头预览分辨率,UVCCamera(usb camera)适配Android9
  4. Java 并发编程之同步工具类闭锁 CountDownLatch
  5. mysql in 查询优化_mysql in 集合查询优化问题。
  6. selenium控制浏览器切换页面
  7. Mac Vmware Fusion在虚拟机中共享文件夹
  8. python转str类型的列表为list格式
  9. 解决xgboost报错XGBoostError: XGBoost Library (libxgboost.dylib) could not be loaded
  10. sklearn网格搜索GridSearchCV得到各个评价指标的均值与方差