限制对比度自适应直方图均衡化

  • 直方图均衡化(HE)
    • 数学原理:
  • AHE(自适应直方图均衡)
    • 实现原理:
  • CLAHE( 限制对比度自适应直方图均衡化)
    • 原理:
  • 补充

)

  • 在讨论clahe(限制对比度自适应直方图均衡化),需要先了解关于直方图均衡化概念,观前提示很长。
    代码实现

直方图均衡化(HE)

直方图均衡化(Histogram Equalization)是一种增强图像对比度(Image Contrast)的方法,其主要思想是将一副图像的直方图分布变成近似均匀分布,从而增强图像的对比度。

数学原理:

考虑一个离散的灰度图像 { x },令n i为灰度i的出现次数。图像中出现第i级像素的概率为

L是图像中灰度的总数(通常为256),n是图像中像素的总数,并且 实际上是像素值i的图像直方图,已标准化为[0,1]。
定义累积分布函数对应p X为

这也是图像的累积归一化直方图。
我们想创建一个形式为y = T(x)的转换,以生成具有平坦直方图的新图像{ y }。这样的图像将在整个值范围内具有线性化的累积分布函数(CDF),即

对于某一常数ķ。CDF的属性允许我们执行这样的变换(请参阅逆分布函数);它被定义为

其中k在[0,L]范围内)。注意,由于我们使用归一化的直方图{x},因此T将级别映射到[0,1]范围内。为了将值映射回到其原始范围,需要对结果应用以下简单转换:

通俗地说就是遍历图像的像素统计出灰度值并把计算出累积分布函数(对比度限制重点),并映射到0255范围(也可其他范围,例如0128)灰度即均衡化。这里所操作的对应灰度图即单通道图,而彩色空间在维基有介绍到单独的直方化操作,或者我认为可以根据公式
Y= = 0.2126 R + 0.7152 G + 0.0722 B把RGB彩图灰度化再直方均衡化。当然,这也不符合我们要用彩图图片做增强的初衷。

对于单通道图,我们假设所示的8位灰度图像具有以下值:

下表中显示了该图像的直方图。为了简洁起见,将计数为零的像素值排除在外。

所述累积分布函数(CDF)如下所示。再次,为简洁起见,排除了不会增加cdf的像素值。

再通过此cdf显示子图像中的最小值为52,最大值为154。值154的cdf为64,与图像中的像素数一致。CDF必须标准化为[0,255]。直方图的一般均衡公式为:

其中cdf min是累积分布函数的最小非零值(在本例中为1),M×N给出图像的像素数(例如,在64以上的示例中,M为宽度,N为高度),L为使用的灰度级数(在大多数情况下为256)。请注意,要在原始数据中将大于0的值缩放到1到L-1(包括1和L-1)的范围,则上述公式将改为:

其中cdf(v)>0。从1缩放到255保留最小值的非零值。示例比例数据从0到255(包括0和255)的均衡公式为:

例如,78的cdf为46。(第7列的下一行使用78的值。)标准化后的值变为

而这就是普通的直方图均衡化的实现。从实际效果图中可以看出这是在全局进行直方图均衡化,而全局直方均衡有时会降低图片细节,而我们有时候是希望能在局部增强对比度,提升图片细节识别效果。于是有了AHE(自适应直方图均衡)提出。

AHE(自适应直方图均衡)

自适应直方图均衡(AHE)是一种计算机图像处理技术,用于改善图像的对比度。它与普通的直方图均衡化的不同之处在于,自适应方法会计算多个直方图,每个直方图对应于图像的不同部分,然后使用它们来重新分配图像的亮度值。因此,它适合于改善局部对比度并增强图像每个区域中边缘的清晰度。

实现原理:

将图片分割成多个块(例如8×8的块,无法整除可以补零),或者比喻成8*8个的小图像,然后遍历计算各个块的像素的累积分布函数,进行直方图均衡化。

可是该操作倾向于在图像的相对均匀的区域中容易过度放大噪声。
这与AHE两个属性有关:
1、 AHE算法处理的局部领域,矩形邻域小,局部领域大,局部对比度弱。
2、 如果矩形区域内的图像块信息比较平坦,灰度接近,其灰度直方图呈尖状,在直方图均衡的过程中就可能会出现过度放大噪声的情况。

而自适应直方图均衡的一种变体称为对比受限自适应直方图均衡(CLAHE),它可通过限制放大来防止这种情况。

CLAHE( 限制对比度自适应直方图均衡化)

普通的AHE往往会放大图像近恒定区域中的对比度,因为此类区域中的直方图高度集中。结果,AHE可能导致噪声在近恒定区域中被放大。对比度受限AHE(CLAHE)是自适应直方图均衡的一种变体,其中对比度放大受到限制,从而减少了这种噪声放大问题。

在CLAHE中,给定像素值附近的对比度放大由变换函数的斜率给出。这与邻域累积分布函数(CDF)的斜率成比例,因此与该像素值处的直方图的值成比例。CLAHE通过在计算CDF之前将直方图裁剪为预定值来限制放大。这限制了CDF的斜率,从而限制了转换函数的斜率。直方图被裁剪的值,即所谓的裁剪极限,取决于直方图的规格化,并因此取决于邻域的大小。公用值将结果放大率限制在3到4之间。有利的是,不丢弃直方图超出裁剪限制的部分,而是在所有直方图块中平均分配它.

原理:

原理与AHE差不多,但他跟AHE不同是在分块之后统计累积分布函数后会进行裁剪,即在选定的直方图bins(例如(0~255内)CDF的值进行限制,改变CDF的梯度,再局部均衡化。

CLAHE具体实现主要包括6个步骤。

步骤1:分块。将输入图像划分为大小相等的不重叠子块,每个子块含有的像素数为M。参考示例为8×8块。

步骤2:计算子块直方图。

步骤3:计算剪切阈值clipLimit(可以展开讨论)

步骤4:像素点重分配。对每个子块,使用步骤三中多余的像素重新分配。

步骤5:直方图均衡。

步骤6:像素点灰度值重构。(源码中采用了双线性插值)

补充

而在阅读CLAHE原始论文的作者之一Karel ZuiderveldCLAHE的示例实现时,我发现一点就是作者通过增加双线性插值减少代码时间复杂度,而在找资料我也了解到不含双线性插值的部分,发现插值运算及高斯平滑可以降低噪声产生。
CLAHE的几个重要算法参数:

①窗口大小,即分割的块大小

②块数,即裁剪的数量

③CDF斜率限制强度传递函数中的对比度拉伸

④直方图bins个数(即0~255之间范围选取)

通过上述参数对累积分布函数修整,都可以改变CLAHE的效果。

::: tip 相关参考链接

https://zhuanlan.zhihu.com/p/44918476
https://www.cnblogs.com/RyanXing/p/9463041.html
https://en.wikipedia.org/wiki/Histogram_equalization
https://blog.csdn.net/u013066730/article/details/83000004
https://blog.csdn.net/abcd1992719g/article/details/25483395
https://blog.csdn.net/xiajun07061225/article/details/6910129
https://blog.csdn.net/u013066730/article/details/82970380
https://blog.csdn.net/kl1411/article/details/89100740
https://blog.csdn.net/jhy10202008/article/details/84583162
https://web.archive.org/web/20120425224736/http://fiji.sc/wiki/index.php/Enhance_Local_Contrast_(CLAHE)
http://www.cs.utah.edu/~ssingla/IP/P2/CLAHE.html
https://blog.csdn.net/qq_38784098/article/details/82010823
https://web.archive.org/web/20120201205217/http://radonc.ucsf.edu/research_group/jpouliot/Tutorial/HU/Lesson7.htm

:::

clahe(限制对比度自适应直方图均衡化)相关推荐

  1. c++ 绘制函数图像_【图像增强】CLAHE 限制对比度自适应直方图均衡化

    文章来自:微信公众号[机器学习炼丹术]. 文章目录: 1 基本概述 2 竞赛中的CLAHE实现 3 openCV绘制直方图 4 对比度Contrast 5 Contrast Stretching 6 ...

  2. OpenCv:直方图均衡化(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化(CLAHE)

    总结了使用Python OpenCv处理图像直方图均衡化(HE),自适应直方图均衡化(AHE),限制对比度自适应直方图均衡化(CLAHE)的方法. 目录 直方图均衡化(HE) 自适应直方图均衡化(AH ...

  3. 限制对比度自适应直方图均衡化算法原理、实现及效果

    一.自适应直方图均衡化(Adaptive histgram equalization/AHE) 1.简述 自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术.和普通的直方图均衡算 ...

  4. 限制对比度自适应直方图均衡化

    一.自适应直方图均衡化(Adaptive histgram equalization/AHE) 1.简述 自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术.和普通的直方图均衡算 ...

  5. 限制对比度自适应直方图均衡化算法(CLAHE)实现

    1. 概述 本篇文章是基于这篇博文写的,然后经过粗略查看之后,将其运用到课题中,这里将此记录下来作为记录,文章中若有错误的地方敬请谅解. 2. 实现代码 bool CLAHE_Algorithm::C ...

  6. OpenCV--Python 图像增强(线性变换,直方图正规化,伽马变换,全局直方图均衡化,限制对比度的自适应直方图均衡化)

    图像增强主要解决由于图像的灰度级范围较小造成的对比度较低的问题,目的就是将输出图像的灰度级放大到指定的程度,使得图像中的细节看起来增加清晰.对比度增强有几种常用的方法,如线性变换.分段线性变换.伽马变 ...

  7. Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization)

    Python+OpenCV:图像对比度受限自适应直方图均衡化(CLAHE, Contrast Limited Adaptive Histogram Equalization) ############ ...

  8. 对比度受限的自适应直方图均衡化(CLAHE)(转)

    直方图均衡化(HE)是一种很常用的直方图类方法,基本思想是通过图像的灰度分布直方图确定一条映射曲线,用来对图像进行灰度变换,以达到提高图像对比度的目的.该映射曲线其实就是图像的累计分布直方图(CDF) ...

  9. 图像增强—自适应直方图均衡化(AHE)-限制对比度自适应直方图均衡(CLAHE)

    一.自适应直方图均衡化(Adaptive histgram equalization/AHE) 1.简述 自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术.和普通的直方图均衡算 ...

最新文章

  1. 分区和分片的区别_数据库的分表、分库、分片和分区等区别
  2. 如何让云存储更好为“我”所用
  3. 监控利器Prometheus初探
  4. 太阳的光和灯光有什么区别_墙体彩绘机UV(油性)和水性墨水怎么选择?有什么区别?...
  5. xshell下载mysql到本地文件_在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹)-Go语言中文社区...
  6. Linux 中的文件传输
  7. java7优化,七、索引优化分析
  8. BZOJ1835: [ZJOI2010]base 基站选址(线段树优化Dp)
  9. 计算机一级实训报告册,计算机一级实验报告8.doc
  10. 使用jsp,tag提取字符串中的单词
  11. 自定义用户控件显示属性分类、描述、默认值
  12. 【转】WCF与Web API 区别(应用场景)
  13. 熟悉MyEclipse
  14. 【干货】常见的40个知识模型:学习力、思考力、创造力、共情力......
  15. 光伏并网pscad_100kW级组串式光伏逆变器的英飞凌模块方案介绍
  16. 记一次Y7000P内存升级(骇客神条套条),让电脑飞起来~
  17. ThreadPool线程池原理
  18. 角雷达进入“高速增长期”,国产供应商迎来“突围”时间窗口
  19. ubuntu 下超简单的安装微信,QQ等软件
  20. Android系统proc下查看cpuinfo的参数信息

热门文章

  1. 淘宝购物车效果(加,减,删除,全选)
  2. 从2020全球前十的数字货币交易所甄别风险
  3. 基于DSP TMS320F2812的1553B总线开发板
  4. 前端开发基础——常用处理函数
  5. 运维安全-网络与基础架构图
  6. 解决AndroidManifest.xml文件反编译失败
  7. 使用SMTP协议,通过QQ邮箱发送邮件
  8. 多元统计分析及R语言建模(第五版)部分课后习题代码演示
  9. 在Linux系统如何识别和打开摄像头
  10. 哲学家进餐问题解决方案