【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)

这篇具有很好参考价值的文章主要介绍了【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 前言

LTMNet这篇文章借鉴了CLAHE算法,所有步骤与CLAHE一致,不同之处在于LTMNet中局部映射曲线是通过CNN预测得到,而CLAHE中是通过直方图均衡化而得。关于CLAHE,【数字图像处理】直方图均衡化这篇博客有简单介绍。
论文:Learning Tone Curves for Local Image Enhancement
代码:https://github.com/samsunglabs/ltmnet

1. 理解

所谓看文先看图,这里选择关键的几张图来理解文章的思想。

1.1 整体框架

LTMNet的整体pipline如下:
【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)
输入一张图像,resize到512×512,输入到网络中,输出M*N个RGB三通道的映射曲线,每个通道的映射曲线是一维的查找表;然后将得到的映射曲线应用到图像并进行插值,得到色调映射后的图像。以上就是完整的推理过程,训练时仅仅多了一个求loss的步骤。

为什么要插值:如果每个块使用对应的曲线进行映射,那么在块与块的交界处会产生不自然的过渡,因此需要通过插值使得交界处过渡平滑。

上图看下来,一般会有两个地方比较疑惑:① 网络是如何预测映射曲线的?② 插值是如何操作的?下面会进行解释。

1.2 网络结构

首先,网络是如何预测映射曲线的呢?网络的结构如下图所示,输入512×512×3的图像,经过卷积和池化后得到8×8×768的输出,其中8×8表示grid size,即将图像划分为8×8块;768表示RGB三通道的查找表,由于像素值的范围为0~255,因此查找表的长度为256。
【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)

1.3 细节

得到网络输出的映射曲线后,如何应用到输入图像上以实现对比度增强呢?文章中给出的图中解释的比较清楚。
【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)

以2×2的grid size为例,即将输入图像分为4块,每块对应着3×256的映射曲线,分别记为 t 1 t_1 t1 t 2 t_2 t2 t 3 t_3 t3 t 4 t_4 t4。论文中的后处理方式与CLAHE一致,将每一小块继续划分为2×2个小块,所以2×2的图像就变成了4×4的图像,如下:
【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)
将图像划分为角落区域(橙黄色)、边界区域(绿色)和中心区域(蓝色),每个区域使用不同的映射规则。

  • 对于角落区域(Corner region):直接使用所在大块的映射曲线。 p c p_c pc是位于左下角的一个像素,因此使用 t 3 t_3 t3进行映射即可,得到输出 p ^ c = t 3 ( p c ) \hat{p}_c=t_3(p_c) p^c=t3(pc)
    【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)
  • 对于边界区域(Border region):选择所在块和相邻块的映射曲线对像素进行映射,然后通过插值计算最终的结果,插值的权重根据像素到块边界的距离来衡量。 p b p_b pb是位于下边界区域的像素,因此使用 t 3 t_3 t3 t 4 t_4 t4两条映射曲线对其进行映射,然后通过插值得到映射后的像素值 p ^ b \hat{p}_b p^b
    【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)
  • 对于中心区域(Center region):使用中心四个块的映射曲线 t 1 t_1 t1 t 2 t_2 t2 t 3 t_3 t3 t 4 t_4 t4分别对像素 p m p_m pm进行映射,然后通过插值获取结果 p ^ m \hat{p}_m p^m
    【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)

2. 亮点

由于网络输出的是查找表,即映射曲线,因此可以交互式地对图像的局部区域进行调整,以达到想要的效果。例如下图中图像暗区过暗,通过调整曲线将亮度拉起来,使得暗区细节可见。
【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)文章来源地址https://www.toymoban.com/news/detail-422287.html

3. 总结

  • 传统算法与神经网络结合,神经网络拟合色调映射函数
  • 设计算法时要考虑到实际应用环境,如ISP pipline中,一个很重要的点就是算法需要具备可调性,因为用户需要针对自己的偏好以及使用环境的不同对算法的效果进行调整

到了这里,关于【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【色彩一致性损失:场景亮度解纠缠网络:纹理-对比度增强网络:IVIF】

    (DIVFusion:无暗区红外与可见光图像融合) 红外与可见光图像融合是一种重要的图像增强技术,其目的是在极端环境下生成目标显著、纹理丰富的高质量融合图像。然而,现有的图像融合方法都是针对正常光照条件下的红外和可见光图像而设计的。在夜景场景中,由于可见光

    2024年02月08日
    浏览(31)
  • 基于python的对比度增强(线性变换、直方图正规化、直方图均衡化、CLAHE)

    线性变换 假设输入图像为I,宽为W,高为H,输出图像为O,图像的线性变换可以用以下公式定义: O ( r , c ) = a × I ( r , c ) + b , 0 ≤ r H , 0 ≤ c W O(r, c) = a × I(r, c) + b, 0 ≤ r H, 0 ≤ c W O ( r , c ) = a × I ( r , c ) + b , 0 ≤ r H , 0 ≤ c W 当a=1,b=0时,O为I的一个副本;如果a1,则输出图像

    2024年02月06日
    浏览(29)
  • OpenCV进阶 —— 调整图像亮度对比度

    图像变换就是找到一个函数,把原始图像矩阵经过函数处理后,转换为目标图像矩阵。 可以分为两种方式,即像素级别的变换和区域级别的变换 Point operators (pixel transforms) Neighborhood (area-based) operators 像素级别的变换就相当于即变换后的每个像素值都与变换前的同位置的像素值

    2024年02月14日
    浏览(34)
  • OpenCV改变图像的对比度和亮度

    在本教程中,您将学习如何: 访问像素值 用零初始化矩阵 了解 cv::saturate_cast 的作用以及它为什么有用 获取有关像素转换的一些很酷的信息 在实际示例中提高图像的亮度 注意 下面的解释属于Richard Szeliski的《计算机视觉:算法和应用》一书 图像处理 一般图像处理算子是

    2024年02月21日
    浏览(38)
  • OpenCV增加图像的亮度及对比度

    案例:输出一张原图,增加该图片的亮度及对比度 基本概念: 亮度:RGB的像素值范围是0~255,我们称从0——255随着像素值的增加图像会越来月亮,反之会越来越暗。所以我们可以通过对图像像素加减来改变图像的亮度。 对比度:其反应的是图像中各像素的差异(层次感、落

    2024年02月12日
    浏览(34)
  • 3d模型素材亮度和对比度如何调整呢?

    1、修改材质参数:打开3ds Max后,选择要调整亮度和对比度的3D模型素材。然后,进入材质编辑器,选择相应的材质球。在材质编辑器中,你可以调整材质的漫反射、反射和高光等参数,这些参数将影响模型的亮度和对比度。通过调整参数,你可以使模型素材更加明亮或昏暗,

    2024年01月19日
    浏览(45)
  • 【Arduino26】88点阵显示液晶对比度实验

    8*8点阵:1个 LCD1602显示屏:1 个 旋钮电位器:1个 220欧的电阻:1 个 面包板:1个 杜邦线:若干 按下图接好旋钮电位器 之后用杜邦线接好8*8点阵。 88点阵显示液晶对比度 【Arduino26】88点阵显示液晶对比度实验 在本次实验中,我回顾了液晶显示屏以及8*8点阵的使用。

    2024年02月09日
    浏览(25)
  • 数字图像处理:亮度对比度-几何变换-噪声处理

    亮度与对比度转换 图像变换可分为以下两种: 点算子:基于像素变换,在这一类图像变换中,仅仅根据输入像素值计算相应的输出像素值 邻域算子:基于图像区域进行变换 两种常用的点算子是用常数对点的像素值进行乘法或加法运算,可以表示为: g ( i , j ) = α ∗ f ( i ,

    2024年02月10日
    浏览(46)
  • 【OpenCV • c++】图像对比度调整 | 图像亮度调整

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月11日
    浏览(31)
  • OpenCvSharp学习笔记6--改变图像的对比度和亮度

    访问像素值mat.AtT(y,x) 用0初始化矩阵Mat.Zeros 饱和操作SaturateCast.ToByte g(x)=αf(x)+β 用α(0)和β一般称作增益(gain)和偏置(bias),分别控制对比度和亮度 把f(x)看成源图像像素,把g(x)看成输出图像像素 g(i,j)=α⋅f(i,j)+β 其中,i和j表示像素位于 第i行 和 第j列(左上角为第0行、第0列) M

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包