• 几种图像直方图均衡化方法介绍


    最近由于项目需求,想了解一下直方图均衡相关的算法,顺便写个笔记

    • 首先是最初最简单的histogram equalization(HE)算法,太常见这里就不详细展开了,总之是希望直方图更加趋于平均化分布,求得了亮度值到亮度值的映射,从而调整直方图。HE算法对低动态范围的图片效果比较好,能够拉伸动态范围,但在其他情况下容易使得相邻直方被合并,直方数减少,对比度降低。同时,HE算法的处理结果亮度变化较大且不固定,容易产生过高亮度的饱和值和过低亮度的值。后续有许多改进的直方图均衡算法,在下面一一介绍。

    • brightness preserving bi-histogram equalization (BBHE):思路很简单,统计亮度均值,将直方图划分为两个子直方图分别进行直方图均衡化。
      在这里插入图片描述

    • dualistic sub-image histogram equalization(DSIHE) :把BBHE的划分值改为亮度中值即是DSIHE算法

    • Minimum mean brightness error bi-histogram equalization (MMBEBHE):把BBHE的划分值从0到L-1逐个尝试,计算每种划分方案的直方图均衡结果的亮度均值,选择均衡结果亮度均值与原图亮度均值相差最小的划分值

    • recursive mean-separate histogram equalization(RMSHE):以上都是二分直方图,从RMSHE开始思路拓宽,直方图可以分为多个子图。RMSHE先用直方图的亮度均值去划分出左右两个子图,然后计算左右两个子图各自的亮度均值,依次类推可以迭代地划分出2的r次方个子图,对每个子图分别进行HE算法

    • recursive sub-image histogram equalization (RSIHE):把RMSHE的划分值改为中值即为RSIHE

    • Multipeak histogram equalization with brightness preserving (MPHEBP):以直方图的局部最大值作为划分值,有k个局部最大值就有k+1个子图,对k+1个子图分别进行HE

    • dynamic histogram equalization (DHE):到这里又是一个突破,在直方图划分后子图HE的基础上,根据每个直方图的子图的像素个数,对每个子图的分布范围进行重分配。而划分值使用的是局部最小值

    • Brightness preserving dynamic histogram equalization (BPDHE):把DHE的划分值改回局部最大值,并在均衡化后进行归一化,全图乘以一个比例系数,把亮度均值调整为原图的亮度均值。

    • 对了,前面说的算法都可以加一个trick,即平滑化,对均衡前的直方图用一维高斯滤波器进行平滑,然后再均衡化;

    • 除了平滑化的trick,还有一个最大值限制的trick,可以把限制每个直方的最大值,并把多出来的部分均匀分配到每个直方上。

    • 各直方图均衡化方法的效果图如下图所示:
      在这里插入图片描述

    参考资料

    H. Ibrahim and N. S. P. Kong, “Brightness preserving dynamic histogram equalization for image contrast enhancement,” TCE, vol. 53, no. 4, pp. 1752–1758, 2007.

  • 相关阅读:
    C++中执行shell命令,popen与system的区别
    流式DMA映射实践1:先写一个misc驱动框架
    中创人民云|党管数据是如何保证国家数据安全的
    GAN学习:运行ESTRNN
    大数据Doris(四):直接编译(CentOS/Ubuntu)准备
    做题日记 之 pairs(HDU-5178)
    《SpringBoot篇》19.SpringBoot整合Quart
    面试题什么是分布式垃圾回收(DGC)?它是如何工作的?
    前端编程应该了解的数据结构——链表
    RabbitMQ 心跳
  • 原文地址:https://blog.csdn.net/weixin_44326452/article/details/127636176