LowLight Image

低亮度图片增强方法:直方图均衡化

2019-04-28  本文已影响0人  GreatSun

直方图均衡化(HE)

直方图均衡化是最简单、最方便的低亮度图片增强的算法。

HE通过拉伸图片直方图的分布,使得图片的直方图均匀的分布在[0,255] (8bit图像),从而增强图片的全局对比度。

适用范围

对图像前景和背景都非常暗(或非常亮)的图片很有用。

缺点

保持亮度的动态直方图均衡化(Brightness Preserving Dynamic Histogram Equalization:BPDHE)

在增强图片对比度的时候,需要保持增强后的图片与增强前的图片在亮度上是相同的

适用高斯滤波器平滑直方图

由于数字图像的直方图并不是平滑的,会出现比较大的波动,以及会在某些数字上有所缺失,所以在直方图进行下一步处理前,需要先对直方图进行一个预处理。

G(x)=\exp \left(-x^{2} / 2 \sigma^{2}\right)
其中x是相对于kernel中心位置的坐标,\sigma是标准差。
文章中使用的kernal大小为1\times9\sigma的大小为1.0762。

检测平滑后直方图局部最小值的位置
change +-+ to +++
change -+- to ---
the local maximums are detected as the points where four successive negative signs are followed by eight successive positive sign
将每局部最小值之间的每一部分映射到一个新的动态范围内

假设m_0, m_1, .......,m_n对应于上述n+1个局部最大值的灰度值。
则这n+1个局部最大值可以将图像的直方图分割为:
[I_{min},m_0],[m_0+1,m_1],......,[m_n,I_{max}]
现在我们将这些子直方图的范围映射到新的动态范围,映射的方法如下:
span_{i}=high_{i}-low_{I}

factor_{i}=span_{i} \times \log _{10} M

range_{i}=(L-1) \times factor / \sum_{k=1}^{n+1} factor _{k}

其中 high_i是每个子直方图i中最高的像素值,low_i是每个子直方图中最低的像素值,M是该子直方图中所有像素的数目。

对于映射后的子直方图的范围,可由下式计算得到:
start_{i}=\sum_{k=1}^{i-1} range_{k}+1

end_{i}=\sum_{k=1}^{i} range_{k}

均衡化每个子直方图

对于每一个子直方图[start_i,end_i],我们使用以下公式得到每个像素值对应的输出
y(x) = start_i+(end_i-start_i)\sum^x_{k=start_{I}}\frac{n_k}{M}
其中n_k对应于像素值
k的像素数量,M为该子直方图所包含的像素总量。

归一化图像的亮度
实现代码
效果比较
低亮度图 增强低亮度图_he 增强低亮度图_bpdhe

从以上的效果图可以看出,he非常容易使得图片过饱和,对于彩色图片来说,色彩也非常容易发生改变。

bpdhe由于保持了与原图整体的亮度,虽然对比度相对原图有所增强,但并不适合用于低亮度图片的增强。

参考文献

https://zh.wikipedia.org/wiki/直方图均衡化
https://ieeexplore.ieee.org/document/4429280

上一篇下一篇

猜你喜欢

热点阅读