直方图均衡(Histogram Equalization)是图像处理中一个十分基础的概念,具有调整图像灰度,增强对比度的作用。

   限制对比度自适应直方图均衡(Contrast Limited Adaptive Histogram Equalization,CLAHE),关于该算法的中文原理性描述可以参考网址:http://www.cnblogs.com/Imageshop/archive/2013/04/07/3006334.html

下面我按照自己的理解来介绍一下CLAHE算法:

自适应直方图均衡(AHE)算法,对于图像中存在明显比其他区域亮或者暗的地方时,普通的直方图均衡算法就不能将该处的细节信息描述出来。AHE算法通过在当前处理像素周边的一个矩形区域内进行直方图均衡,来达到扩大局部对比度,显示平滑区域细节的作用。

AHE算法的2个属性:1、AHE算法处理的局部领域,矩形领域小,局部对比度强,矩形领域大,局部对比度弱。2、如果矩形区域内的图像块信息比较平坦,灰度接近,其灰度直方图呈尖状,在直方图均衡的过程中就可能会出现过度放大噪声的情况。

CLAHE,对比度受限的自适应直方图均衡算法就能够有效的限制噪声放大的情形。下图表示的就是局部矩形领域内的灰度直方图,由于对比度放大的程度与像素点的概率分布直方图的曲线斜度成比例,所以为了限制对比度,将大于一定阈值的部分平均分配到直方图的其他地方,如右图所示,这样的话,通过限制CDF(累积分布函数)的斜率来一定程度限制对比度。

插值过程,得到了CDF函数,也就获得了对应的亮度变换函数,在计算变换函数的时候可以通过插值过程来降低计算量。其中红色块(图像角点处)的变换函数是完全按照定义获得的,绿色块(图像边缘)的变换函数是通过旁边两个图像块的变换函数线性插值得到的,蓝色部分图像块的变换函数则是通过双线性插值得到。

目前,Matlab和OpenCV中都已经集成了CLAHE函数,在Matlab中,就是函数J = adapthisteq(I);

在OpenCV中,按照如下代码段处理:

Ptr<CLAHE> clahe = createCLAHE();
clahe ->apply(src,dst);

   局部色调映射(Local Tone Mapping)

重建视觉外观是色调映射的终极目标。色调映射算法在降低高动态图像(HDR)范围的同时着力保护捕捉到的原始图像的外观。色调映射算子分两种策略,一种是全局的,另一种是局部的。

全局映射算子

每一个像素点将会根据它的全图特征和亮度信息进行映射,不管其空间位置几何。全局算子一个比较典型的例子就是色调曲线。全局色调映射在处理12位(12-bit)深度的图像的时候是完全OK的,当图像的动态范围特别高的时候,那就不行了。这是因为所有的像素点都采取同一种方式进行处理,根本就没有管它是在较亮区域还是较暗区域。这样的话,就是导致图像色调映射过后看起来很平坦,失去了其局部的细节信息。

局部映射算子
   像素点所在的空间位置会被考虑,在进行尺度变换的时候,所以,具有相同亮度值的两个像素点会被映射成不同的值,因为它们的空间位置周边的亮度信息可能不一样。局部色调映射需要考虑到每个像素点周围的亮度信息,这样这会使得计算量和内存的使用会更大,但是会有更好的结果。如果处理得当,局部色调映射会很好的保护高亮和阴影部分的局部对比度和细节信息。

目前的一些色调映射算法:

1、伽马压缩算法

2、基于直方图均衡的压缩算法

3、基于Retinex的算法

4、基于梯度的压缩算法,等等

下面给出2组基于CLAHE的LTP算法效果图:(测试图像在网上找的)

Matlab代码如下:

%% local tone mapping
clc,clear ,close all
% src = imread('m_ImageDemosaic.bmp');
src = imread('C:\Users\Administrator\Desktop\LTP5.png');
figure;imshow(src);
srcHDR = double(src) * 256;
hsv = rgb2hsv(srcHDR);
figure;imshow(uint16(srcHDR))
J = adapthisteq(uint16(hsv(:,:,3)));
hsv(:,:,3) = double(J);
dstHDR = hsv2rgb(hsv);
figure;imshow(uint16(dstHDR))
imwrite(uint16(dstHDR),'C:\Users\Administrator\Desktop\LTP5_1.png')

由于获取不到源HDR,所以自己先将8-bit图像映射到16-bit之后再进行试验

测试图像来源链接:http://www.vista123.com/vista/9226.html;http://www.nipic.com/show/7139458.html

直方图均衡(HE)与局部色调映射(LTM)相关推荐

  1. 局部色调映射(Local Tone Mapping)

    重建视觉外观是色调映射的终极目标.色调映射算法在降低高动态图像(HDR)范围的同时着力保护捕捉到的原始图像的外观.色调映射算子分两种策略,一种是全局的,另一种是局部的. 1. 全局映射算子 每一个像素 ...

  2. 一种基于视神经网络的高动态范围(HDR)图像自适应局部色调映射的实现【OpenCV】【CUDA】

    原理是基于这篇论文--<Adaptive Local Tone Mapping Based on Retinex for High Dynamic Range Images> 论文提出的背 ...

  3. 实时渲染:Tone Mapping 色调映射

    詹令 lealzhan@126.com 2017.12.28 文章目录 Tone Mapping 色调映射 全局色调映射 局部色调映射 基于分离压缩思想 Durand02 Reference 书籍 论 ...

  4. HDR图片以及色调映射(ToneMapping)

    高动态范围(High-Dynamic Range,简称HDR),相应的,LDR(Low-Dynamic Range),也就是我们常见的8bit存储方式的图片.之前都是在介绍视频方面.但是在高动态图片( ...

  5. HDR技术之带参数估计的经典Reinhard色调映射算法的改进(嵌入了亮度均衡/暗光增强算法)

    上一篇博客已经贴出了带参数估计的经典Reinhard色调映射算法的代码.不过需注意的是,论文中是根据反映HDR图像动态范围的Zone数自动选择是采用全局映射还是局部映射.局部色调映射可以显著提升图像对 ...

  6. Tone mapping curve(色调映射曲线)与gamma 曲线的区别与联系

    在tuning高通平台的时候,高通架构中有TMC,还有LTM/GTM等模块对TMC调整,最后还有gamma调整.刚开始不理解TMC与gamma的区别,浏览学习了很多博客内容和帖子,终于搞清楚了二者的区 ...

  7. Chapter4、色调映射的一般方法

    因为这本书对具体方案的原理并不细说,只提了有哪些方法和有哪些效果,类似于综述.因此,我以后也按照综述的方法来写,不细说原理了. 4.1.色调映射的一种一般方法 4.1.1.建模一种通用的色调映射算子 ...

  8. 色调映射(Tone Mapping)

    一.概述 虽然HDR 图像有较大的动态范围,能更细致地反映真实场景,但他的缺点也很明显.一是同尺寸的数据比低动态范围图像大,需要更大的存储空间与传输带宽.二是难以输出,目前大多数显示器.打印机等图形输 ...

  9. Tone Mapping(色调映射) 认识

    转自:https://www.cnblogs.com/cjhd/p/7530440.html Tone Mapping(色调映射) 认识 目录         [背景 - 高动态图像] [起源] [定 ...

  10. HDR 色调映射线性压缩(matlab)

    HDR 色调映射线性压缩(matlab) 目录 HDR 色调映射学习(matlab) 1.介绍 2.matlab在HDR上的应用 参考文章: 1.介绍 即使在引入数码相机之后,多年来,专业摄影师还是更 ...

最新文章

  1. python开课吧可以退款吗-做客李晨nic淘宝直播 胡海泉胡彦斌带货开课吧Python
  2. 【SQL】SQL(基础查询)、SQL(关联查询)
  3. 百度超级链XChain(6)XVM虚拟机
  4. VTK:PolyData之CurvaturesDemo
  5. python 多数据输出到txt_python-BeautifulSoup输出到.txt文件
  6. CISSP的成长之路(九):复习信息安全管理(3)
  7. 数据库:SQLServer中游标的用法笔记
  8. MongoDB 数据库创建、删除、表(集合) 创建删除、数据的增、删、改、查
  9. 王腾疑似喜提Redmi Note10系列新机:最高搭载1亿像素主摄
  10. JAVA Druid 查询语句Json构造
  11. 《时间序列分析及应用.R语言》第十一章阅读笔记
  12. Arcgis(AE)二次开发问题解决 创建组件”ToolbarControl”失败等
  13. c++中类的默认构造函数,析构函数,拷贝构造函数
  14. java 开源框架集
  15. 大数据助力运营商创新转型 中国信息通信大数据大会圆满召开
  16. Java超详细基础知识
  17. react native 添加自定义字体
  18. 解决h5 在微信放大字体中的问题
  19. 网络安全自学入门:(超详细)从入门到精通学习路线规划,学完即可就业
  20. C++中标准库 输出 puts()函数

热门文章

  1. 【Python数据科学】多表关联 merge、join、concat
  2. 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(4)
  3. 如何解决移动硬盘/U盘无法打开并在电脑上显示为“本地磁盘”的问题
  4. 如何使浏览器打开时,默认的文档模式就是标准模式
  5. SuperMap根据栅格数据制作专题图
  6. AIOT在数字化转型中的机遇和挑战
  7. Back Channel笔记
  8. 耳穴减肥自身感受细节描述0422
  9. CSDN/博客园复制代码空格报错问题解决
  10. 情境领导者-第四章、选择合适的领导风格