
本文将对Learning Tone Curves for Local Image Enhancement这篇文章进行讲解。Tone Curves,也就是Tone mapping(TM),其作用是调整图像对比度和色彩,是照片编辑软件中常用的工具,也是image signal processors(ISPs)必不可少的环节之一。本质就是亮度映射曲线,叫法有很多,例如gamma,1D LUT等。在高动态范围(HDR)压缩至低动态范围(LDR)的应用中通常被称为Tone mapping。该论文参考资料如下:
一、研究背景
图像增强方法分为全局变换(global mapping)、局部变换(local mapping)、像素级处理(pixel-wise)或这些操作的混合。全局变换相对单一,在增强局部图像区域方面能力有限。而局部和像素级方法能够进一步提升增强效果,但带来了可解释性差的新挑战。这里我们关注tone mapping技术,因此可将全局处理和局部处理分别记为GTM和LTM,三个方向的大致区别如下。
| 技术方法 | 优势 | 劣势 |
|---|---|---|
| GTM | 计算简单,易于硬件实现。 | 缺乏空间灵活性,无法精细控制局部区域,容易导致整体效果不自然。 |
| LTM | 能有效增强局部对比度。 | 需要手动调参(网格大小、对比度限制),参数选择困难,且容易产生“光晕”伪影。 |
| pixel-wise(端到端) | 表达能力强,能学习复杂的局部增强模式。 | 模型是“黑盒”,输出不可解释,难以进行后续的精细调整;模型复杂,部署到硬件ISP中困难。 |
作者想解决的问题就是如何能够实现对图像进行有效的局部增强,同时保持方法的可解释性和易部署性。于是提出了一种局部色调映射网络(LTMNet),学习一个TM网格来对图像进行局部增强。先看效果,如下图。

CSRNet(GTM类方法)难以同时兼顾亮暗区,CURL(pixel-wise类方法)容易过增强。而LTMNet相对更加均衡。即能提亮暗区,又能提升亮区对比度。实现效率还高(无分辨率限制),比pixel-wise更易部署。且1维曲线网格非常直观,易于解释和编辑。
同时,作者推出了专用于LTM的新数据集,由有TM处理和无TM处理的图像对组成。此外,还提供了交互式LTM操作工具,可手动微调来自动预测周围曲线该如何修改,以适配调整后的目标曲线。可以说是面面俱到了。
二、方法
该方法其实非常直观,如下所示,其实就是学习一个LTM曲线的网格来实现局部增强(主要受到CLAHE的启发)。

流程说明:
- 输入为一张尺寸为 H x W x C的图像,先缩放至固定尺寸(如512x512)。
- 再经过一个CNN骨干网络来提取特征,并预测一个张量 T ∈ R M × N × C × L T \in \mathbb{R}^{M \times N \times C \times L} T∈RM×N×C×L。其中 M x N 是图像划分的网格大小,C 是通道数(通常为3,R/G/B),L 是色调曲线的采样点数(理解为色阶、灰阶都可以,8bit为256)。每个网格块对应一个 C x L 的色调曲线(即每个通道一个1D LUT)。
- 将张量 T T T resize回原图尺寸。
- 然后对原图的每个pixel,用其所属的网格(patch)曲线及其邻近曲线进行插值映射,得到最终处理结果。
⭐模型结构:
模型结构比较简单,就是由卷积+激活+最大池化构成。可以通过调整最后一个池化层的层数或池化大小,使得输出的形状与阶调曲线T的形状一致。

⭐局部曲线插值:
每条局部曲线最适合应用于对应patch的中心像元,而该patch的其他像元多少会受到邻域patch曲线的影响,可以根据到邻域patch中心的距离来确定影响程度大小。那如何弥补这种影响? 作者所提的方法如下图所示,说白了就是参考邻域曲线,用双线性插值方式做补偿。

具体也可以看此公式,就是任意点x,先通过不同邻域(最多四邻域)的局部曲线映射,得到多个中间结果,再经过双线性插值得到最终映射结果。
y ^ ( i , j ) ← ( i 2 − i ) ( j 2 − j ) t 1 ( [ x ( i , j ) ⋅ ( L − 1 ) ] ) + ( i − i 1 ) ( j 2 − j ) t 2 ( [ x ( i , j ) ⋅ ( L − 1 ) ] ) + ( i 2 − i ) ( j − j 1 ) t 3 ( [ x ( i , j ) ⋅ ( L − 1 ) ] ) + ( i − i 1 ) ( j − j 1 ) t 4 ( [ x ( i , j ) ⋅ ( L − 1 ) ] ) y ( i , j ) ← y ^ ( i , j ) ( i 2 − i 1 ) ( j 2 − j 1 ) \hat{y}(i,j) \leftarrow (i_2 - i)(j_2 - j)t_1([\mathbf{x}(i,j) \cdot (L - 1)]) \\ + (i - i_1)(j_2 - j)t_2([\mathbf{x}(i,j) \cdot (L - 1)]) \\ + (i_2 - i)(j - j_1)t_3([\mathbf{x}(i,j) \cdot (L - 1)]) \\ + (i - i_1)(j - j_1)t_4([\mathbf{x}(i,j) \cdot (L - 1)]) \\ y(i,j) \leftarrow \frac{\hat{y}(i,j)}{(i_2 - i_1)(j_2 - j_1)} y^(i,j)←(i2−i)(j2−j)t1([x(i,j)⋅(L−1)])+(i−i1)(j2−j)t2([x(i,j)⋅(L−1)])+(i2−i)(j−j1)t3([x(i,j)⋅(L−1)])+(i−i1)(j−j1)t4([x(i,j)⋅(L−1)])y(i,j)←(i2−i1)(j2−j1)y^(i,j)
当然,边缘和四角的块方式处理会有区别。四个角不做插值。边缘仅参考两块,且遵从从左到右的顺序,如下式所示。
y ^ ( i , j ) ← ( i 2 − i ) t 1 ( [ x ( i , j ) ⋅ ( L − 1 ) ] ) + ( i − i 1 ) t 2 ( [ x ( i , j ) ⋅ ( L − 1 ) ] ) y ^ ( i , j ) ← y ^ ( i , j ) ( i 2 − i 1 ) \begin{aligned} \hat{y}(i,j) &\leftarrow (i_2 - i)t_1([\mathbf{x}(i,j) \cdot (L - 1)]) \\ &\quad + (i - i_1)t_2([\mathbf{x}(i,j) \cdot (L - 1)]) \\ \hat{y}(i,j) &\leftarrow \frac{\hat{y}(i,j)}{(i_2 - i_1)} \end{aligned} y^(i,j)y^(i,j)←(i2−i)t1([x(i,j)⋅(L−1)])+(i−i1)t2([x(i,j)⋅(L−1)])←(i2−i1)y^(i,j)
通过该方式,每个像素的映射变化能平滑过渡,从而避免了边界伪影或块效应。这部分就是该方案的核心要素之一。
⭐色调曲线约束:
色调曲线不是随便生成,而是需要一定约束,以保证效果正常。
-
单调性:为了保证图像增强后像素的亮度顺序不变(避免出现“反转”或“不自然”的效果),对输出的LUT进行约束,使其每个通道的曲线值必须是非递减的。
-
高光保留:最高亮度值(如255)在变换后保持不变,以保留过曝区域的细节。
可以通过在最后一层输出后,对非负神经元进行积分(cumulative sum)和归一化来实现。
t l = 1 ∑ i = 0 L − 1 t ^ i ∑ i = 0 l t ^ i t_l = \frac{1}{\sum_{i=0}^{L-1} \hat{t}_i} \sum_{i=0}^{l} \hat{t}_i tl=∑i=0L−1t^i1i=0∑lt^i
⭐损失函数:
损失函数包括L1损失和感知损失。前者衡量预测图像与目标图像在像素值上的差异;后者提升感知效果(如对比度和色彩),使用预训练的VGG19网络的前两层(block1_conv1和block2_conv1)提取特征,计算预测图像和目标图像在特征空间上的L2距离。为啥用浅层?因为深层是高阶语义,没有必要。总损失公式如下。
L = λ l 1 ∥ y ^ − y ∥ 1 + λ p ∑ k = 1 , 2 ∥ ϕ k ( y ^ ) − ϕ k ( y ) ∥ 2 2 \mathcal{L} = \lambda_{l_1} \|\hat{\mathbf{y}} - \mathbf{y}\|_1 + \lambda_p \sum_{k=1,2} \|\phi_k\left(\hat{\mathbf{y}}\right) - \phi_k\left(\mathbf{y}\right)\|_2^2 L=λl1∥y^−y∥1+λpk=1,2∑∥ϕk(y^)−ϕk(y)∥22
⭐数据集调整:
图像增强领域有两个常用数据集:MIT-Adobe FiveK和HDR+
作者指出,FiveK的修饰操作主要是全局色调映射(GTM),混杂了其他照片润饰操作,并不专注于“局部色调映射(LTM)”。
而HDR+由多张图像合并生成高动态范围(HDR)图像。这个数据集包含了强烈的局部色调映射效果,更适合评估LTM方法。然而,它的处理流程同样包含了锐化、色相/饱和度调整等其他后期操作。
因此作者认为目前缺少一个“纯净”的、只包含“局部色调映射”这一种操作的数据集。如果用上述混合数据集来训练和评估一个专门做局部色调映射的模型(如LTMNet),将无法准确衡量其真正的LTM性能,因为模型效果会与其他操作的效果混淆。
于是乎,在论文中提出并构建了全新的 LTM数据集,其构建流程和关键细节如下:
-
源数据:使用 FiveK 数据集 的输入图像(即未经修饰的原始图像)。
-
生成局部色调映射效果的方法:采用业内较为标准的局部色调映射算法——对比度受限的自适应直方图均衡化(CLAHE)。CLAHE本身就是一种通过处理局部图像块来增强对比度的算法,与本文研究的“局部色调曲线”目标高度契合。
CLAHE有两个关键参数需要手动调节:网格大小(Grid Size) 和 对比度限制(Contrast Limit)。为每张图像手动寻找最优参数非常耗时且主观。怎么办?相信聪明的各位已经想到了,那就是采用“自动寻参”。

文中使用了 自动化网格搜索 + 无参考图像质量评估 的方式来选择最佳参数,步骤如下。
-
步骤一:参数搜索,对每张输入图像,使用CLAHE的 15种不同的参数组合进行增强,生成15个候选版本。
-
步骤二:自动筛选,使用一个名为 NIMA(Neural Image Assessment) (可别读成拼音了)的深度学习模型来评估这15个版本的质量。NIMA可以预测人类对图像美学质量的评分。选择评分最高的那个版本作为最终的、高质量的局部色调映射结果。
作者也在附录A中通过用户研究表明,NIMA的选择与人类的主观偏好一致性最高,优于其他无参考质量指标(如BRISQUE, NIQE, PIQE)。

- 步骤三:人工干预,尽管NIMA能筛选出大部分无伪影的高质量图像,但作者发现仍有少量(约4%)被选出的图像质量不佳(例如,包含大片均匀区域如天空的图像,本身不适合进行局部处理)。
经过手动剔除91张低质量图像后,作者将数据集规模定为 2000对图像(输入图像 + 由CLAHE生成的最佳局部色调映射输出图像)。
⭐量化验证数据集的“局部性”:
为了实证其新建的LTM数据集确实包含了“局部”处理,作者进行了一个量化实验:对数据集中每一对图像,计算其输入和输出强度值之间最佳拟合的4次多项式转换函数的均方根误差(RMSE)。
- 理论依据:如果转换是全局的(即一个转换函数适用于全图),那么这个多项式会拟合得很好,RMSE值会很低。如果转换是局部的(即不同区域用了不同的函数),那么用一个全局多项式去拟合就会产生较大的误差,RMSE值会较高。如图

结果表明,HDR+和LTM Dataset的RMSE较高,说明了这俩是有局部处理的。
⭐交互式编辑:
除了自动局部色调映射外,该方法可以在交互式设置中使用,并与照片编辑软件集成。用户可以应用该方法生成一张自动增强的照片,然后通过修改该区域对应的局部色调曲线来手动增强图像的一个局部区域,如图所示。

也有视频展示(https://www.youtube.com/watch?v=5h1Xjzfcs5M)
其实就分三步:
-
用户在局部色调映射图像中选择一个局部区域;
-
用户选择一个预设的色调曲线来增强该区域;
-
将选择的色调曲线应用于局部区域,同时将其效果平滑地传播到周围区域。
具体地,可将新的目标曲线视为原插值后曲线的缩放版本,每个点都有一个缩放系数。然后将该缩放系数作用于附近四个patch的局部曲线,使其插值结果与目标曲线完全匹配。最终实现自定义式的精准局部微调效果。
简单讲,把缩放系数都作用在四邻域的各曲线上,然后用新曲线重新映射一遍。感觉适合于精修、提拉人像亮度或其他小目标这类的应用。
至此,可能有人会跟博主一样产生一个疑惑,该算法跟CLAHE有什么区别或者优势?
个人理解本质上没有太大差异,LTMNet生成的曲线灵活度应该会更高,而CLAHE仍以直方图均衡为基础。另外,LTMNet的自适应性更强,无需手动调参。将手动调参工作转成了模型推理。至于曲线控制或调整什么的,其实都差不多的。
三、实验结果
实验方法:
- 数据集:就是自建LTM数据集+ “HDR+” + “FiveK”。
- 对比方法:CURL, Zero-DCE, HDRNet, CSRNet, Pix2Pix等。
- 评价指标:PSNR,SSIM,LPIPS。
效果分析:
- 在LTM数据集上:LTMNet在所有三个指标(PSNR, SSIM, LPIPS)上均显著优于所有对比方法。
- 在HDR+数据集上:LTMNet的性能(尤其是PSNR)略低于一些SOTA方法(如HDRNet, CURL)。

因为LTM数据集完全聚焦于局部色调映射,而LTMNet正是为此任务量身定做,其输出的色调曲线与数据集的生成方式(CLAHE)高度匹配。而HDR+数据集包含锐化、色相调整等额外操作,LTMNet仅能通过色调曲线进行增强,表达能力受限。这些额外能力的需要pixel-wise的模型才能带来。
针对HDR+上的不足,作者设计了一个改进方案,通过在LTMNet后附加一个小型残差网络(LTMNet+Res),扩展成了pixel-wise方案。可以看到性能显著提升,尤其是在SSIM和LPIPS上接近甚至超过SOTA,也证明了框架的可扩展性。
主观感知上,LTMNet能有效增强局部对比度(如灌木丛、阴影区域),同时避免了CURL等方法可能出现的色彩偏移或CSRNet等方法的局部增强不足问题


- 在MIT-Adobe FiveK数据集上: - LTMNet(8x8网格)的表现不如其全局版本(1x1网格)。
因为该数据集的增强效果主要基于全局变换,局部网格反而引入了不必要的复杂度,导致PSNR下降。但在SSIM和LPIPS上,表现差异不大,说明局部网格仍能较好地模拟全局效果。
消融实验:
- 网格大小:实验表明 8x8 网格在LTM数据集上表现最佳。
- 控制点数量:减少色调曲线的控制点(如从256降到16)会降低性能,但能减少参数量。


虽然模型处理与分辨率无关,由于图像内容不同,固定分块策略应该不是不佳的。可以考虑根据内容或视场大小进行动态分块。另外跟输入的缩放尺寸也相关。
局限性:
-
边界处可能出现“光晕”(Halo)伪影**
- 当图像中存在一个前景物体(如一朵花),其需要的色调变换与背景(如天空或墙壁)的变换差异极其巨大时,LTMNet在处理物体边缘附近的像素时会产生问题。
因为LTMNet的插值机制(双线性/线性插值)是基于空间位置的。在物体边界附近,一个像素会同时受到前景区域和背景区域的色调曲线的影响。当这两种曲线差异很大时,插值结果就会产生一个不自然的过渡带,即“光晕”。 下图展示了一个失败案例,背景中靠近黄色花朵的灰色区域被“染”上了一层暗色,形成了明显的暗色光晕。

作者指出,这个问题并非LTMNet独有,也是CLAHE算法的固有缺陷。因为CLAHE同样采用类似的插值方法来平滑网格边界。这说明该问题源于“基于空间位置插值”的核心机制,而非模型本身。
- 缺乏“风格化”或“个性化”的能力
- LTMNet是一个完全自动化的模型。它根据训练数据学习“最优”的增强方式,但这个“最优”是统计意义上的平均,并无法根据用户的个人审美偏好或特定的场景风格进行定制。
例如,用户可能希望模型在处理人像时倾向于“柔和肤色”,在处理风景时倾向于“鲜艳色彩”,或者希望对所有图像都应用一种“冷色调”风格。当前的LTMNet无法实现这种个性化的调整。虽然LTMNet的输出(色调曲线)可以被用户手动编辑,但这属于“后处理”,而非“模型本身”的调整。用户无法通过调整模型的少量内部参数来“引导”模型产生不同的风格。
针对上述两个缺陷,作者也提出了解决思路,
-
问题一用语义分割来改善,避免前景和背景的色调曲线相互污染,也就是边界处不插值或者用其他更好的过渡方式。
-
问题二用条件模型,输入用户条件来调整模型输出结果,生成特定风格或偏好的增强结果。
至于是否有用,感兴趣的读者可以尝试一下。
四、总结
该论文提出了一种新颖且实用的局部图像增强方法——LTMNet。
该方法通过学习一个网格化的局部色调曲线来实现图像增强,兼具了局部处理的灵活性和色调曲线的可解释性与易部署性,且有可扩展性。并专门构建了LTM数据集,更适合局部处理的训练任务。 此外,该方法支持用户交互式编辑,为用户提供了强大的“自动+手动”双重工具。
作者认为,LTMNet是连接深度学习与传统图像处理、并可无缝集成到相机ISP和编辑软件中的一个有力方案。
感谢阅读,欢迎留言或私信,一起探讨和交流。
如果对你有帮助的话,也希望可以给博主点一个关注,感谢。
1561

被折叠的 条评论
为什么被折叠?



