CLAHE
CLAHE 是一种非常有效的直方图均衡算法, 目前网上已经有很多文章进行了说明, 这里说一下自己的理解.
CLAHE是怎么来的
直方图均衡是一种简单快速的图像增强方法, 其原理和实现过程以及改进可以查看这里: 一文搞懂直方图均衡_yfor1008-CSDN博客
目前存在一些问题:
- 直方图均衡是全局的, 对图像局部区域存在过亮或者过暗时, 效果不是很好;
- 直方图均衡会增强背景噪声, 如下图所示为 CLAHE 中的示例:
为了解决上述2个问题, 就有2方面的解决方法: 一是解决全局性问题, 二是解决背景噪声增强问题.
- 针对全局性问题: 有人提出了对图像分块的方法, 每块区域单独进行直方图均衡, 这样就可以利用局部信息来增强图像, 这样就可以解决全局性问题;
- 针对背景噪声增强问题: 主要背景增强太过了, 因而有人提出了对对比度进行限制的方法, 这样就可以解决背景噪声增强问题;
将上述二者相结合就是 CLAHE 方法, 其全称为: Contrast Limited Adaptive Histogram Equalization.
CLAHE 算法流程
CLAHE 算法流程主要有以下几个步骤:
- 预处理, 如图像分块填充等;
- 对每个分块处理, 计算映射关系, 计算映射关系时使用了对比度限制;
- 使用插值方法得到最后的增强图像;
其处理流程可以用如下示意图表示:
实现及效果
这里使用matlab实现了该算法, 实现过程参考了: Contrast Limited Adaptive Histogram Equalization (CLAHE) - File Exchange - MATLAB Central (mathworks.com) 及matlab源码 adapthisteq
.
以下为几组测试结果:
图像
- exponential: 没有相关说明
这里测试对比了 uniform
和 rayleigh
, 如下所示为水下图像测试结果(正常图像测试几乎没有差别, 这里不进行展示了):
从左到右依次为: 原图, uniform
和 rayleigh
, 目前没有看出二者的本质区别.
不过这张图像来源: Computer vision algorithm removes the water from underwater images » Behind the Headlines - MATLAB & Simulink (mathworks.com), 作者提出了一种 Sea-thru
方法, 效果不错, 这里下mark一下, 后面有时间在研究研究, 效果如下所示:
参考
- Contrast Limited Adaptive Histogram Equalization (CLAHE) - File Exchange - MATLAB Central (mathworks.com)
- Image Enhancement - CLAHE - 知乎 (zhihu.com)
- CLAHE (Contrast Limited Adaptive Histogram Equalization) (amroamroamro.github.io)
- wangyanckxx/Single-Underwater-Image-Enhancement-and-Color-Restoration: Single Underwater Image Enhancement and Color Restoration, which is Python implementation for a comprehensive review paper “An Experimental-based Review of Image Enhancement and Image Restoration Methods for Underwater Imaging” (github.com)