论文详解——《Deep Color Consistent Network for Low-Light Image Enhancement》

news2024/12/26 22:44:01

文章目录

  • Abstract
  • 3. Proposed Method
    • 3.1 Network Structure
    • 3.2. Pyramid Color Embedding (PCE)
    • 3.3. Objective Function

Abstract

微光图像增强(LLIE)研究了如何细化光照,获得自然的正常光照图像。目前的LLIE方法主要侧重于提高光照,而没有合理地将颜色信息纳入LLIE过程中来考虑颜色的一致性。因此,增强后的图像与地面真值之间往往存在色差。
为了解决这个问题,我们提出了一种新的深颜色一致性网络,称为DCC-Net,以保持LLIE的颜色一致性。提出了一种新的“分而治之”的协同策略,该策略可以共同保存颜色信息,同时增强光照。
具体来说,我们的DCC-Net解耦策略将每个彩色图像解耦为两个主要成分,即灰度图像和颜色直方图。使用灰度图像生成合理的结构和纹理,颜色直方图有利于保持颜色的一致性。即利用两者协同完成LLIE任务。
为了匹配图像的颜色特征和内容特征,减小增强后图像与真实图片的颜色一致性差距,我们还设计了一种新的金字塔颜色嵌入(PCE)模块,可以更好地将颜色信息嵌入LLIE过程中。
在6个真实数据集上的大量实验表明,我们的DCC-Net增强后的图像更加自然和丰富多彩,与目前最先进的方法相比效果更好。

3. Proposed Method

在本节中,我们将介绍DCC-Net的框架(见图2)和细节,其目的是在获取正常光图像时保持颜色的一致性和自然性。DCC-Net有三个子网(即G-Net、C-Net、R-Net)和一个金字塔颜色嵌入(PCE)模块。
在这里插入图片描述
DCC-Net的总体框架。可以看出,有三个子网G-Net, C-Net和R-Net,其中G-Net的目标是恢复内容信息丰富的灰度图像,C-Net的重点是学习颜色分布,R-Net将灰度图像和颜色信息结合起来,恢复自然且颜色一致的正常光图像。

3.1 Network Structure

  • G-Net
    给定一个输入的微光图像,G-Net的目标是预测包含丰富结构和纹理信息的正常光图像的灰度图像,而不包含颜色信息。此过程表述为
    G pre  = G N e t ( S low  ) G_{\text {pre }}=G N e t\left(S_{\text {low }}\right) Gpre =GNet(Slow )
    式中, G p r e G_{pre} Gpre为预测灰度图像, S l o w S_{low} Slow为输入微光图像,GNet为G-Net的变换。具体来说,G-Net采用了encoder-decoder pipeline ,这与经典的U-Net类似。
    对于G-Net,我们使用l1 loss来重建灰度图像:
    l g = 1 H × W ∥ G p r e − G high  ∥ 1 , l_g=\frac{1}{H \times W}\left\|G_{p r e}-G_{\text {high }}\right\|_1, lg=H×W1GpreGhigh 1,
    式中, l g l_g lg为灰度图像重建损失, G h i g h G_{high} Ghigh为常光图像的灰度图像,H和W为灰度图像 G h i g h G_{high} Ghigh的高度和宽度。因此,G-Net没有考虑色彩信息,而是致力于恢复纹理和结构。
  • C-Net
    颜色直方图是一种颜色特征,广泛应用于图像检索系统[9]中。颜色直方图主要描述不同颜色在整个图像中的比例,而不关心颜色的空间位置。在本文中,我们计算了RGB颜色空间中的颜色直方图。具体来说,图像的颜色直方图应为N × 256的矩阵,其中N = 3对应三个颜色通道(R、G、B), 256与像素值的范围一致。
    基于颜色直方图设计了C-Net,用于颜色特征学习。C-Net的目标是获得与正常光图像一致的颜色特征(见图2)。我们还利用了C-Net的编码器-解码器管道,它通过以下公式将输入的微光图像转换为预测的颜色直方图 :
    C pre  = C N e t ( S low  ) C_{\text {pre }}=C N e t\left(S_{\text {low }}\right) Cpre =CNet(Slow )
    其中 C p r e C_{pre} Cpre为得到的颜色直方图,CNet为C-Net的计算过程。为了更好地重建颜色直方图,我们还使用l1 loss来约束C-Net,可以描述如下:
    l c = 1 N × 256 ∥ C pre  − C high  ∥ 1 ,  l_c=\frac{1}{N \times 256}\left\|C_{\text {pre }}-C_{\text {high }}\right\|_1 \text {, } lc=N×2561Cpre Chigh 1
    其中 l c l_c lc为彩色直方图重建损失, C h i g h C_{high} Chigh为正常光照图像的真实彩色直方图。注意,颜色直方图不能描述图像中的内容和细节。也就是说,C-Net把所有的注意力都放在学习一致的颜色特征上,这有利于增强。
  • R-Net
    R-Net在G-Net和C-Net获得的灰度图像和颜色直方图的基础上,将它们结合起来,协同恢复正常光图像。将输入的微光图像、预测的灰度图像和颜色直方图通过R-Net变换为常光图像,如下所示:
    S pre  = R N e t ( S low  , G pre  , C pre  ) S_{\text {pre }}=R N e t\left(S_{\text {low }}, G_{\text {pre }}, C_{\text {pre }}\right) Spre =RNet(Slow ,Gpre ,Cpre )
    式中 S p r e S_{pre} Spre为增强图像。
    为了在像素级重建正常光图像,我们使用彩色图像重建损失 l r l_r lr,其定义如下:
    l r = 1 N × H × W ∥ S pre  − S high  ∥ 1 ,  l_r=\frac{1}{N \times H \times W}\left\|S_{\text {pre }}-S_{\text {high }}\right\|_1 \text {, } lr=N×H×W1Spre Shigh 1
    式中, N 、 H 、 W N、H、W NHW分别表示正常光图像 S h i g h S_{high} Shigh的通道数、高度、宽度。
    在结构层面上,我们采用SSIM损失作为约束:
    l ssim  = 1 − SSIM ⁡ ( S pre  , S high  ) l_{\text {ssim }}=1-\operatorname{SSIM}\left(S_{\text {pre }}, S_{\text {high }}\right) lssim =1SSIM(Spre ,Shigh )
    其中相似函数SSIM(·)描述为
    SSIM ⁡ ( x , y ) = 2 μ x μ y + c 1 μ x 2 + μ y 2 + c 1 ⋅ 2 σ x y + c 2 σ x 2 + σ y 2 + c 2 \operatorname{SSIM}(x, y)=\frac{2 \mu_x \mu_y+c_1}{\mu_x^2+\mu_y^2+c_1} \cdot \frac{2 \sigma_{x y}+c_2}{\sigma_x^2+\sigma_y^2+c_2} SSIM(x,y)=μx2+μy2+c12μxμy+c1σx2+σy2+c22σxy+c2

其中, x , y ∈ R H × W × 3 x, y∈R^{H×W×3} x,yRH×W×3表示待测的两幅图像, µ x , µ y ∈ R µ_x,µ_y∈R µxµyR表示两幅图像的均值, σ x , σ y ∈ R σ_x,σ_y∈R σxσyR为两幅图像对应的方差, c 1 c_1 c1 c 2 c_2 c2为防止分母为零的两个常数参数。
此外,还采用total variation loss l t v l_{tv} ltv作为正则化项,以保持增强图像的平滑性。

3.2. Pyramid Color Embedding (PCE)

PCE模块的设计是为了更好地将颜色信息嵌入R-Net中,如图3所示。可见,PCE具有六个金字塔结构的颜色嵌入(CE)模块。CE实现了颜色特征的动态嵌入。CE的主要组成部分是解决信息不匹配问题的双亲和矩阵(dual affinity matrix , DMA)。
在这里插入图片描述
图3: 金字塔颜色嵌入(PCE)和颜色嵌入(CE)模块的详细结构,其中表示 ⊙ \odot 逐元素乘法,⊕表示逐元素加法,⊗表示上采样操作。

  • Dual affinity matrix
    从G-Net和C-Net可以得到对应的灰度图像和颜色直方图,分别提供丰富的结构和纹理细节,以及颜色信息。R-Net应用了这两种方法来达到更好的增强效果。由于颜色直方图不包含空间信息,简单地将它们连接在一起会导致增强图像中的光照不准确。此外,简单的拼接还会导致颜色信息与内容不匹配,可能会在增强后的图像中产生色差。
    为了解决信息不匹配问题,获得更好的颜色信息嵌入,提出了一种新的颜色嵌入模块,该模块可以根据颜色与内容特征之间的亲和度,将颜色特征动态地融合到R-Net中。提出的双亲和矩阵(dual affinity matrix, DAM)的目的是计算亲和矩阵来匹配颜色和内容特征,进一步防止增强后的图像产生不一致的颜色。具体来说,给定颜色特征 C C C和内容特征 F F F,大小为 N × H × W N × H ×W N×H×W, DAM首先计算每个位置的曼哈顿距离和C与F的内积,公式如下:
    M ( x , y ) = − ∥ F ( x , y ) − C ( x , y ) ∥ 1 , P ( x , y ) = F ( x , y ) ⋅ C ( x , y ) , \begin{gathered} M(x, y)=-\|F(x, y)-C(x, y)\|_1, \\ P(x, y)=F(x, y) \cdot C(x, y), \end{gathered} M(x,y)=F(x,y)C(x,y)1,P(x,y)=F(x,y)C(x,y),
    其中 F ( x , y ) , C ( x , y ) ∈ R N F (x, y), C (x, y)∈R^N F(x,y)C(x,y)RN表示F, C在(x, y)的向量, M , P ∈ R H × W M, P∈R^{H×W} M,PRH×W是曼哈顿距离矩阵和内积矩阵。那么,对偶亲和矩阵A (dual affinity matrix)可计算为:
    A = 2 × sigmoid ⁡ ( M ) ⊙ tanh ⁡ ( P ) , A=2 \times \operatorname{sigmoid}(M) \odot \tanh (P), A=2×sigmoid(M)tanh(P),
    其中 t a n h ( ⋅ ) tanh(·) tanh() s i g m o i d ( ⋅ ) sigmoid(·) sigmoid()分别为tanh函数和sigmoid函数。注意,对于每个位置 ( x , y ) (x, y) (x,y) M ( x , y ) ≤ 0 M(x, y)≤0 M(x,y)0,使得 s i g m o d ( M ) ∈ [ 0 , 0.5 ] sigmod (M)∈[0,0.5] sigmod(M)[0,0.5]。因此,我们使用 2 × s i g m o i d ( M ) 2 × sigmoid (M) 2×sigmoid(M)来保证 A ∈ [ 0 , 1 ] A∈[0,1] A[0,1]的范围。

  • Color embedding
    CE得到颜色信息的动态嵌入,其结构如图3所示。CE获得对偶亲和矩阵A后,对A与颜色特征C进行逐元素乘法,将加权的颜色特征与内容特征F求和,得到嵌入特征的颜色信息:
    E = A ⊙ C + F E=A\odot C+F E=AC+F
    式中E为R-Net解码器中使用的输出特性。还有一个颜色特征C的上采样操作,以改变其分辨率,然后作为原始颜色特征进一步输入到下一个CE中。

  • Pyramid structure
    给定颜色特征,我们可以利用它们来指导增强过程,以获得一致的颜色。为了充分探究颜色信息,我们给出了包含6个金字塔结构CEs的PCE(如图3所示)。给定第i个CEs的颜色特征 C i C_i Ci和内容特征 F i F_i Fi, PCE在每一层由浅到深的特征描述如下:
    E i , C i + 1 = C E ( F i , C i ) , i = 1 , 2 , ⋯   , 6 E_i, C_{i+1}=C E\left(F_i, C_i\right), i=1,2, \cdots, 6 Ei,Ci+1=CE(Fi,Ci),i=1,2,,6
    其中 E i E_i Ei表示输出特征, C E ( ⋅ ) CE(·) CE()表示CE的变换。 C i C_i Ci由第 ( i − 1 ) (i−1) (i1)个CE计算。相反,在R-Net的编码器中, F i F_i Fi是从对应层复制过来的。金字塔结构将颜色特征嵌入六层。换句话说,递进式设计可以充分利用色彩信息。因此,增强后的图像颜色将更加一致。

3.3. Objective Function

我们的DCC-Net的目标功能被描述为 :
l total  = λ g l g + λ c l c + λ r l r + λ s s i m l s s i m + λ t v l t v l_{\text {total }}=\lambda_g l_g+\lambda_c l_c+\lambda_r l_r+\lambda_{s s i m} l_{s s i m}+\lambda_{t v} l_{t v} ltotal =λglg+λclc+λrlr+λssimlssim+λtvltv
其中 λ g , λ c , λ r , λ s s i m , λ t v λ_g, λ_c, λ_r, λ_{ssim},λ_{tv} λg,λc,λr,λssim,λtv是几个权衡参数。其中, l g l_g lg l c l_c lc分别用于恢复灰度图像和颜色直方图。利用 L r L_r Lr l s s i m l_{ssim} lssim对标准光图像进行像素级和结构级的重建。为了防止过拟合和保持平滑性,可以将 L t v L_{tv} Ltv视为正则化项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/920944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手机锁屏密码忘了怎么解开?4个方法,帮你解锁!

“最近新买了一部手机,为了保护隐私我还特意设置了密码。明明之前一直都记得,但昨天手机没电后重新开机,就怎么也想不起手机的锁屏密码了,有什么方法可以解决这个问题吗?” 随着手机在日常生活中的普及,手机…

uCharts 运行微信小程序时,图表放在scroll-view中点击后不能正确获取点击的currentIndex一直为-1

图表在APP和H5中的点击位置是正常的,在微信小程序中会出现点击位置不对且有部分地方点击不到,最终我的解决方法如下。 1.查看包裹图表的元素中有没有元素开启了定位,可以去除定位属性试一试。 2.为微信平台的图表添加 isScrollView="true"属性。 解决方案: 添加 …

极狐GitLab 价值流管理之「总时间图」使用指南

本文来源:about.gitlab.com 作者:Haim Snir 译者:极狐(GitLab) 市场部内容团队 对于软件研发管理者来说,了解在整个研发过程中时间都耗费在了哪些地方,是进行交付价值优化的关键洞察。GitLab / 极狐GitLab 新的价值流分…

基于ssm校园快递代取系统源码和论文

基于ssm校园快递代取系统源码和论文056 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,…

视频云存储平台EasyCVR视频汇聚平台关于机电设别可视化管理平台可实施设计方案

随着工业化进程的不断发展,机电设备在各行各业中扮演着重要的角色。然而,由于机电设备种类繁多、数量庞大,包括生产机械、建筑器械、矿用器械、制药器械、食品机械等,传统的手动管理方式已经无法满足对设备进行精细化管理的需求。…

环球新材国际完成韩国CQV公司交割 国际化布局迈出里程碑式关键一步

8月23日,环球新材国际(6616.HK)发布公告,公司收购的全球著名珠光颜料企业韩国CQV公司已正式完成了交割程序及董事会改组。交割完成后,环球新材国际持有CQV已发行股份的42.45%,成为CQV的单一最大股东。CQV亦…

高手进阶之路---pyqt自定义信号

高手进阶之路—pyqt自定义信号 1.思考问题为什么要自定义信号,qt5本身已有信号槽函数 # pushButton 被clicked的时候connect 函数print self.pushButton.clicked.connect(self.print)def print(self):print("我被点击了")或者使用 # 需要引入 pyqtSlo…

Eplan 标准部件库(一)

一. 为什么要建立标准的部件库呢? 1. 提高质量。希望我们的数据更标准,更规范。 2. 数据完整。建立数据的完整度,让我们的数据可以支撑设计,生产,运维等各个方面的流程。 PLAN Data Portal是EPLAN软件的一个在线部件…

报错 The number of live datanodes 1 has reached the minimum number 0

报错 2023-08-24 09:24:59,227 ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Exception in doCheckpoint org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Log not rolled. Name node is in safe mo…

Server2016安装SQL server数据库遇到异常解决

首先看几个会出现的异常,下边看解决办法: 第一步: 先修改安装包x86\setup目录下的setupsql.exe,以Xp,SP3兼容模式运行, 这个右键,属性,兼容性,修改就行,类似这样 第二步: 修改c:…

k8s 安装 istio(二)

3.3 部署服务网格调用链检测工具 Jaeger 部署 Jaeger 服务 kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.16/samples/addons/jaeger.yaml 创建 jaeger-vs.yaml 文件 apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata…

GEEMAP 基本操作(一)如何拉伸图像

图像拉伸是最基础的图像增强显示处理方法,主要用来改善图像显示的对比度,地物提取流程中往往首先要对图像进行拉伸处理。图像拉伸主要有三种方式:线性拉伸、直方图均衡化拉伸和直方图归一化拉伸。 GEE 中使用 .sldStyle() 的方法来进行图像的…

matlab中判断数据的奇偶性(mod函数、rem函数)

用Matlab判断一个数是偶数还是奇数 1、mod函数 X 25;%要判断的数 if mod(X,2)1disp(奇数);%奇数 elsedisp(偶数);%偶数 end结果 2、rem函数 n25; if rem(n,2)0display(偶数); elsedisplay(奇数); end结果

threejs贴图系列(一)canvas贴图

threejs不仅支持各种texture的导入生成贴图,还可以利用canvas绘制图片作为贴图。这就用到了CanvasTexture,它接受一个canas对象。只要我们绘制好canvas,就可以作为贴图了。这里我们利用一张图片来实现这个效果。 基础代码: impo…

CDN、DNS、ADN、SCDN、DCDN、ECDN、PCDN、融合CDN傻傻分不清楚,一文全部搞懂

一、CDN是什么? CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之…

【seaweedfs】2、Finding a needle in Haystack: Facebook’s photo storage 分布式对象存储论文

文章目录 一、介绍二、背景、设计理念2.1 背景2.2 NFS-based Design2.3 Discussion 三、设计和实现3.1 概览3.2 Haystack Directory3.3 Haystack Cache3.4 Haystack Store3.4.1 Photo Read3.4.2 Photo Write3.4.3 Photo Delete3.4.4 The Index File3.4.5 Filesystem 3.5 Recove…

利用SSL证书的SNI特性建立自己的爬虫ip服务器

今天我要和大家分享一个关于自建多域名HTTPS爬虫ip服务器的知识,让你的爬虫ip服务器更加强大!无论是用于数据抓取、反爬虫还是网络调试,自建一个支持多个域名的HTTPS爬虫ip服务器都是非常有价值的。本文将详细介绍如何利用SSL证书的SNI&#…

[JavaWeb]【十二】web后端开发-事务管理AOP

目录 一、事务管理 1.1 事务回顾 1.2 Spring事务管理 1.2.1 案例 1.2.1.1 EmpMapper新增deleteByDeptId方法 1.2.1.2 DeptServiceImpl 1.2.1.3 启动服务-测试 1.2.2 模拟异常 1.2.3 分析问题 1.2.4 Spring事务管理(一般用在类似多次delete) 1.2.4…

软考A计划-系统集成项目管理工程师-项目风险管理-中

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

算法通过村第6关【青铜】| 如何通过中序和后序遍历恢复二叉树

中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12 后序:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1 通过这两个遍历顺序恢复二叉树 首先我们知道中序遍历顺序左中右,后序遍历顺序左右中 第一步: 由后序遍历确定根结点为1 > 由中序遍历…