关于 CLAHE 的理解及实现 |
您所在的位置:网站首页 › 双线性插值算法原理 › 关于 CLAHE 的理解及实现 |
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. 以下为几组测试结果: ![20180727214122483_HE_CLAHE](https://img-blog.csdnimg.cn/img_convert/f3ed4fcb18911e703ab9992081dde591.png 从左往右以此为: 原图, HE, CLAHE, 从图中可以看到, CLAHE不仅实现了图像细节的增强, 还抑制了背景噪声. 如下图所示: CLAHE 中使用的方法是不断地循环, 直到将所有截断后多余的像素都添加到直方图中. 这种方法实现过程比较复杂, 个人认为可以简化, 如: 截断后直接丢弃;截断后直接均匀添加到直方图所有的bin上;上述2种方法对对比度影响不大, 但对图像亮度有一点点影响, 如下图所示为上述方法1与原始CLAHE方法的对比结果, 第1行为原始CLAHE, 第2行为截断后直接丢弃方法, 第1列到第3列使用的截断参数依次为: 0.01, 0.03, 0.05. 需对图像进行填充, 为方便进行插值, 填充后图像的每个分块都必须为2的整数倍, 要不然不方便对每个块划分为4个子块. 关于直方图分布类型在查看 matlab 源码时, 里面使用了3种分布类型: uniform: CLAHE 使用的方法rayleigh: 代码中说是适用于水下(underwater)图像exponential: 没有相关说明这里测试对比了 uniform 和 rayleigh , 如下所示为水下图像测试结果(正常图像测试几乎没有差别, 这里不进行展示了): 不过这张图像来源: Computer vision algorithm removes the water from underwater images » Behind the Headlines - MATLAB & Simulink (mathworks.com), 作者提出了一种 Sea-thru 方法, 效果不错, 这里下mark一下, 后面有时间在研究研究, 效果如下所示: |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |