论文阅读之《Kindling the Darkness: A Practical Low-light Image Enhancer》
目录
摘要
介绍
已有方法回顾
普通方法
基于亮度的方法
基于深度学习的方法
基于图像去噪的方法
提出的方法
2.1 Layer Decomposition Net
2.2 Reflectance Restoration Net
2.3 Illumination Adjustment Net
实验结果
总结
Kindling the Darkness: A Practical Low-light Image Enhancer(KinD)
ACM MM 2019
Yonghua Zhang, Jiawan Zhang, Xiaojie Guo (天津大学)
论文地址:http://cic.tju.edu.cn/faculty/zhangjiawan/Jiawan_Zhang_files/paper/yonghuazhang2019-2.pdf
项目地址:
https://github.com/zhangyhuaee/KinD
摘要
在弱光条件下拍摄的图像通常能见度较差。除了不理想的照明,多种类型的退化,如噪音和颜色失真,由于相机的质量有限,这些退化隐藏在黑暗中。仅提高黑暗区域的亮度将不可避免地放大隐藏的退化。这项工作建立了一个简单而有效的点燃黑暗的网络(表示为kinD),它的灵感来自视retinex理论,将图像分解成两个部分。一个组件(照明)负责光的调节,而另一个组件(反射率)负责退化去除。网络是在不同曝光条件下拍摄的成对图像进行训练的。可以抵抗严重的视觉缺陷,并且用户可以任意调节光线的亮度。
介绍

图1 不同光照条件下的自然图像
第一种情况是极低的光。严重的噪音和颜色失真隐藏在黑暗中。通过简单地放大图像的强度,退化就会显示在右上角。第二张照片是在日落时拍摄的(微弱的环境光),大多数物体都背光。中午对着光源(太阳)成像也很难摆脱像第二种情况那样的问题,尽管周围的光线更强,场景更清晰可见。最后两张照片中那些相对明亮的区域直接放大会导致饱和。
基于深度学习的方法在去噪、超分辨率等数值底层视觉任务中表现优异,但其中大部分都需要训练数据包含地面实况。对于特定问题,比如低光图像增强,虽然可以确定光强的大小顺序,但是不存在ground-truth真实数据。从用户的角度来看,不同的人/需求所喜欢的光照等级可能是多种多样的。
文中总结了低光图像增强的挑战如下:
1.如何从单个图像中有效地估计出光照分量,并灵活地调整光照?
2.如何在照亮黑暗区域后去除之前隐藏在黑暗中的噪声和颜色失真等退化?
3.如何训练一个模型,在没有明确的Ground truth条件下,只看两个/几个不同的例子情况下增强低光图像?
一个理想的弱光图像增强算法应该能够有效的去除隐藏在黑暗中的退化并灵活的调整曝光条件。、
论文主要贡献:
1.受Retinex理论的启发,该网络将图像分解为反射率和照明两部分。
2.该网络使用在不同光/曝光条件下捕获的成对图像进行训练,而不是使用任何地面真实反射率和照明信息。
3.模型提供了一个映射功能,可以根据用户的不同需求灵活地调整光线的等级。可有效地去除通过亮暗区域放大的视觉缺陷。
已有方法回顾
普通方法
1.对于全局光线较弱的图像,可以通过直接放大亮度来增强其可视性。但是噪声和颜色失真会沿着细节显示出来。对于包含明亮区域的图像,很容易导致(部分)饱和/过度曝光。
2.以直方图均衡化及其后续为代表的技术提高图像的对比度。
3.伽马校正(GC):以非线性方式在每个像素上单独执行,可以提高亮度但没考虑相邻像素的关系。
(几乎不考虑真实的光照因素,使增强的结果在视觉上很不稳定与真实场景不一致)
基于亮度的方法
1.基于Retinex理论的SSR,MSR方法,受限于生成最终结果的,方式输出看起来不自然,在某些地方过度增强。
2.NPE:同时增强对比度,保持照度的自然。
3.SRIE加权变分模型:同时进行反射率和光照估计,控制光照形成目标图像。可抑制噪声但处理颜色失真和较大噪声方面不足。
基于深度学习的方法
1.LLNet(Pattern Recognition 2017):构建了一个深度网络,作为同时进行对比度增强和去噪的模块。
2.MSR-net(arXiv 2017):认为多尺度retinex相当于具有不同高斯卷积核的前馈卷积神经网络 构建了卷积神经网络来学习暗图像和亮图像之间的端到端映射。
3.RetinexNet(BMVC2018):它集成了图像分解和光照映射,反射去噪,照明增强。没有考虑噪声对不同光照区域的影响。
4.SID(CVPR2018):基于全卷积网络端到端训练的低光图像处理管道(SID),可以同时处理噪声和颜色失真。然而,这项工作是针对raw格式的数据的,限制了其适用的场景。若修改网络以接受JPEG格式的数据,性能会显著下降。
基于图像去噪的方法
1.基于自然图像的特定先验(局部相似性,分段平滑性,信号稀疏等)BM3D,WNNM。
2.基于DL的去噪:SSDA-堆叠稀疏自编码器,DnCNN-残差学习和批量归一化
(没有考虑到光照增强图像的不同区域承载不同级别的噪声)
提出的方法
KinD Network分为三部分:(1)图像分解网络:Layer Decomposition Net(2)反射分量纠正网络:Reflectance Restoration Net(3)光照分量纠正网络:Illumination Adjustment Net。整个网络架构如下图所示。

以暗光/正常光照图像对作为训练样本,Layer Decomposition Net对其依次进行分解,得到光照分量和反射分量。再通过Reflectance Restoration Net和Illumination Adjustment Net得到�~���和和�~���。



2.1 Layer Decomposition Net
Layer Decomposition Net有两个分支,一个分支用于预测反射分量,另一个分支用于预测光照分量,反射分量分支以五层Unet网络为主要网络结构,后接一个卷积层和Sigmoid层。光照分量分支由三个卷积层构成,其中还利用了反射分量分支中的特征图,具体细节可参考论文。
Layer Decomposition Net:

2.2 Reflectance Restoration Net
低光照图像的反射分量有更多的退化分量,所以这里使用高光照图反射分量作为真值约束训练;同时反射分量的分布和光照分量也有关系,所以这里将光照分量的信息也嵌入到该网络里。网络预测得到的纠正后反射分量为;Reflectance Restoration Net的Loss为:

2.3 Illumination Adjustment Net
网络比较轻量化,由三个卷积层组成。光照分量的纠正与反射分量纠正类似,这里同样使用高光照图光照分量作为真值约束训练,网络预测得到的纠正后反射分量;Illumination Adjustment Net的Loss为:

实验结果





总结
基于深度学习的图像暗光增强就是以Retinex理论为基础,用卷积神经网络去分解图像S,得到光照分量I和反射分量R,这也是相当于在深度学习中融入了图像增强的先验知识。最近一些更新的,效果更好的论文大多也都是围绕如何更好的分解图像,生成质量更好的光照分量和反射分量来进行。也有一些人通过GAN直接以图像生成的方式来进行图像增强。
相关文章:
论文阅读之《Kindling the Darkness: A Practical Low-light Image Enhancer》
目录 摘要 介绍 已有方法回顾 普通方法 基于亮度的方法 基于深度学习的方法 基于图像去噪的方法 提出的方法 2.1 Layer Decomposition Net 2.2 Reflectance Restoration Net 2.3 Illumination Adjustment Net 实验结果 总结 Kindling the Darkness: A Practical L…...
性能测试基础知识及性能指标
前言:最近公司接了个项目,领导开会突然来了句,让我出一份性能测试方案,后面性能测试工作交给我!我心里想之前面试没要求会这个啊(最少得加钱才能做吧~,没办法既然下达了指令,那就只能…...
ArcGIS笔记10_如何创建渔网?
本文目录 前言Step 1 确定渔网的精度单位Step 2 有底图时创建渔网的操作 前言 ArcGIS中的渔网是一个很好用的工具,它可以创建出规规整整的小格子,每个小格子都对应一个标注点,可以将原本散乱的数据规整化,如下图: Ste…...
Jmeter安装(快速入门)
大家好我是苏麟今天简单聊一下Jmeter . Jmeter Jmeter官网 : Apache JMeter - Download Apache JMeter 安装Jmeter Jmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 下载 : 官网下载 : 网盘自取 : 链接:…...
一个react前端项目中的配置文件作用解析
前端框架中用到的配置文件 .editorconfig, .gitignore, .npmrc, .prettierignore, .prettierrc, .umirc.local.ts, .umirc.ts, package-lock.json, package.json, README.md, tsconfig.json, typings.d.ts, webpack.config.js.editorconfig:用于定义代码编辑器的配…...
MAC 配置 Maven
Maven 是一个流行的 Java 项目管理和构建工具,它可以帮助我们管理项目依赖、构建和发布等过程。本文将指导您在 MAC 上配置 Maven 的详细步骤。 1、下载 Maven 首先,从 Maven 官方网站下载最新版本的 Maven 安装包。下载完成后,将其解压到您…...
vue3.0 + element plus upload图片 上传
直接上图吧: 记录一下,方便后续遇到啥问题...
Leetcode 18:四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复)。 解题思路:…...
word误删除的文件怎么恢复?恢复办法分享
在日常工作和学习中,我们常常会使用到Word来撰写文章、毕业论文、方案等。然而,我们可能会遇到Word误删文件的情况,令我们陷入恐慌,特别是这个文件很重要时。幸运的是,有办法找回。下面一起来看下word误删除的文件怎么…...
提高Qt开发软件运算性能提升
编译器minGW32,release版本,大部分操作在线程循环里面更容易体现出来 1、网上有说opencv像素处理使用直接获取Mat对象的像素块的数据指针,例如 for (int row 0; row < h; row) { uchar* uc_pixel image.data row * image.step; for (int col …...
WordPress SMTP邮件发送插件 Easy WP SMTP
Easy WP SMTP是一款 WordPress 邮件发送插件,WordPress 中经常用到邮件发送,包括新注册用户的邮件通知、找回密码通知、评论回复通知等。因为云服务器默认不启用 SMTP功能,所以需要安装 SMTP插件来解决这个问题。 SMTP 主机:smtp.…...
大咖云集,智慧碰撞|第 18 届 CLK 大会完整议程揭晓(内附报名通道)
自 2006 年以来,在国内 Linux 技术爱好者和行业公司的鼎力支持下,中国 Linux 内核开发者大会已走过 17个年头,是中国 Linux 内核领域最具影响力的峰会之一。今年的中国内核开发者大会依然秉承历届理念,以“自由、协作、创新”为理…...
springweb+vue前后端分离开发,集成部署
背景: 在自己做测试的时候,由于需要项目和项目的前端页面使用同样接口访问,所以需要将前端代码部署到后端项目下。前端采用vue,后端采用springboot。 首先时建立一个vue项目,这个可以参照网上的案例,创建方…...
美芯片禁令再次扩大,波及英伟达、AMD以及intel等科技公司 | 百能云芯
拜登政府17日宣布,计划停止英伟达(Nvidia)、超微半导体以及英特尔等科技公司设计的先进AI芯片输出中国大陆,英伟达(Nvidia)昨日股价重挫4.68%至每股439.38美元;天风国际证券分析师郭明錤表示&am…...
Docker入门到精通教程
Docker是什么 Docker是一个开源的应用容器引擎,它基于Go语言并遵从Apache2.0协议开源。容器技术是和我们的宿主机共享硬件资源及操作系统,实现资源的动态分配,在资源受到隔离的进程中运行应用程序及其依赖关系。 Docker可帮助更快地打包、测…...
Java 对象是什么样子的?
Java 对象是什么样子的? class Student{ int age; String name; }Student s new Student(18, “zhangsan”); 这里的 s 变量,就是我们常说的引用,这里是强引用。指向对象中的 Java对象。 很多人可能认为,堆中存储了 age 18, na…...
自动驾驶的法律和伦理问题
随着自动驾驶技术的不断发展,出现了一系列与法律和伦理有关的问题。这些问题涵盖了自动驾驶的法律框架、道路规则以及伦理挑战。本文将探讨这些问题,并分析自动驾驶所带来的法律和伦理挑战。 自动驾驶的法律框架 自动驾驶的法律框架是制定和管理自动驾…...
Uniapp 增加百度统计代码
参考:https://blog.csdn.net/qq_37860634/article/details/131383304...
pyflink 环境测试以及测试案例
1. py 的 环境以来采用Anaconda环境包 安装版本:https://www.anaconda.com/distribution/#download-section Python3.8.8版本:Anaconda3-2021.05-Linux-x86_64.sh 下载地址 https://repo.anaconda.com/archive/ 2. 安装 bash Anaconda3-2021.05-Linux-x…...
EtherNet/IP转Modbus TCP协议网关的接口
远创智控的YC-EIPM-TCP网关产品,它有什么作用呢?一起来了解一下吧! 远创智控YC-EIPM-TCP网关产品可以通过各种数据接口和工业领域的仪表、PLC、计量设备等产品连接,实时采集这些设备中的运行数据、状态数据等信息,并把…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
