2018ToG | 可逆的灰度图像

article/2025/7/4 10:36:22

写在前面:这篇论文是比较早期的论文了,但由于本人是第一次见到该方向的相关研究,所以觉得比较新奇。本文用以梳理这篇论文的阅读思路,文末附上了一些个人思考。

0. Abstract

一旦彩色图像被转换为灰度图像,普遍认为即使采用最先进的图像上色方法,也无法完全恢复其原始色彩。本文提出了一种创新方法,用于合成可逆灰度图像,即一种能够完全还原其原始色彩的灰度图像。其核心思想是将原始的颜色信息编码嵌入至所合成的灰度图像中,同时确保人眼无法察觉其中的异常。本文提出利用卷积神经网络(CNN)来学习并实现这一颜色编码机制。该网络由两个部分组成:一个编码网络用于将彩色图像转换为灰度图像,另一个解码网络则用于将灰度图像恢复为彩色图像。为了确保网络具备必要的性能,本文设计了一种损失函数,使得训练后的网络同时满足以下三项关键属性:(a)颜色可逆性;(b)灰度一致性;(c)对量化误差的鲁棒性。本文在大量彩色图像上开展了密集的定量实验与用户研究,以验证所提出的方法。无论输入图像的类型与内容如何,该方法在各类场景下均取得了令人信服的效果。

1. Introduction

人们将彩色图像转换为灰度图像,出于多种目的和应用场景,包括黑白印刷、美学摄影以及对传统显示设备的向后兼容。然而,在彩色转灰度的过程中,颜色信息会丢失。尽管现有的图像上色方法可以为灰度图像添加颜色,但生成的颜色往往并非原始色彩。

【图1】在这里插入图片描述

本文提出了一种创新方法,可将彩色图像转换为可逆灰度图像,从而支持后续将其恢复为彩色版本。本文称之为 invertible grayscale。图 1 展示了该方法的效果:中间为从左侧彩色输入生成的可逆灰度图像,右侧则是由其还原得到的彩色图像。其核心思想是在生成的灰度图像中编码原始的颜色信息,从而在后续的彩色还原过程中能够恢复出该颜色信息。如图 1 底部放大的灰度子图所示,颜色信息被编码为肉眼难以察觉的模式。然而,由于输入内容具有无限多样性,手动设计这样一种颜色编码方案极其复杂。

为此,提出通过卷积神经网络(CNN)来学习并嵌入颜色编码方案。整个系统由两个神经网络模块组成:编码网络负责将彩色图像转换为灰度图像,解码网络则将灰度图像还原为彩色图像。在使用卷积神经网络实现该功能时,关键在于设计一个合理的损失函数。本文设计的损失函数由三部分构成:可逆性损失用于确保还原出的彩色图像与真实彩色图像尽可能相似,从而实现颜色的准确恢复;灰度一致性损失要求生成的灰度图像在结构、对比度和亮度等方面看起来像是原始彩色图像的正常灰度版本;量化损失用于模拟将可逆灰度图像以每像素 8 位格式存储时的量化过程。

一旦颜色编码与还原方案完成训练,本方法便可以应用于任意彩色图像,而不受图像内容的限制。为验证模型的有效性,本文在包含 3,000 张不同题材和内容的自然图像上进行了测试,并开展了定性评估、定量评估以及用户研究。各项实验均取得了令人信服的结果。例如,在还原图像与原始输入图像的对比中,本方法达到了平均 SSIM 为 0.9681、平均 PSNR 为 36.02 dB 的高性能表现。本文的主要贡献总结如下:

  1. 本文提出了一种创新方法,可将彩色图像转换为灰度图像,并在需要时将其恢复为彩色版本。

  2. 本文将颜色编码方案构建于神经网络框架中,以提供一种有效且高效的可逆灰度图生成方法。

尽管本方法主要针对可逆的彩色转灰度问题进行了定制,但所提出的通用神经网络框架同样适用于其他需要可逆性的应用场景。被编码的信息可以是颜色,也可以是其他任意类型的数据。该框架的核心在于将信息以视觉上不显著的方式嵌入图像中,并通过解码网络实现对嵌入信息的有效还原。

2. Related Works

2.1 去色方法

去色方法(Decolorization methods)旨在将彩色图像转换为灰度图像。需要注意的是,灰度图的生成并不存在绝对的标准,因为可见光本质上是一种光谱量,在现实世界中始终呈现出丰富的色彩。不同应用场景在生成灰度图像时采用的标准和准则各不相同。早期的灰度图生成主要用于模拟最初的单色摄影技术,而当时的摄影设备尚无法捕捉和呈现颜色信息。最简单且最常用的彩色转灰度方法,是将彩色图像在 CIELab 色彩空间或 YUV/YIQ 色彩空间中的亮度通道(“亮度”或“照明”通道)作为目标灰度图像的灰度值。然而,这种朴素的方法不仅会导致颜色信息的丢失,在某些情况下,当相邻区域的灰度值相近时,还可能引发图像对比度或结构信息的损失。为了解决这一问题,已有多种去色方法被提出,旨在在彩色转灰度的过程中尽可能保留颜色对比度。这些方法大致可分为两类:局部去色方法(local decolorization)全局去色方法(global decolorization)

局部去色方法通过利用局部色度边缘来增强灰度图像的对比度。例如,Bala 等人在亮度通道中加入了高频色彩成分,以保留色度边缘信息。Neumann 等人提出了基于局部颜色和亮度对比的梯度场一致性方法。Lu 等人则通过优化双峰分布,根据视觉上下文寻找合适的颜色顺序。相比之下,全局去色方法则通过全局颜色映射来保留局部与非局部对比度。Gooch 等人提出了基于对比参考图的线性模型映射规则,Kuk 等人在此基础上进一步结合了局部和全局对比信息。Liu 等人提出通过计算彩色图像与其灰度目标图像之间的梯度相关性来实现去色。尽管本文的方法同样在可逆灰度图生成过程中注重对比度的保留,但其核心目标与上述方法本质不同:上述方法均未考虑生成可还原至彩色版本的灰度图像,而这是我们方法所独有的目标。

3. Overview

在这里插入图片描述

本方法的整体系统如图 2 所示,由编码神经网络 E E E 与解码神经网络 D D D 组成。编码网络 E E E 将任意 RGB 彩色图像转换为灰度图像,而解码网络 D D D 则实现从灰度图像到 RGB 彩色图像的反向转换。编码器 E E E 与解码器 D D D 的具体网络结构将在第 4 节中详细介绍。

在训练阶段,对于训练数据集中每一张彩色图像 I I I,首先通过编码器 E E E 将其转换为灰度图像 G G G,再通过解码器 D D D G G G 恢复出彩色图像 R R R。具体过程可表示为:
G = E ( I ) G = E(I) G=E(I)

R = D ( G ) = D ( E ( I ) ) R = D(G)=D(E(I)) R=D(G)=D(E(I))

通过同时对灰度图像 G G G 与其还原的彩色图像 R R R 施加约束,进而对编码器 E E E 和解码器 D D D 提出相应要求,本文对 E E E D D D 进行联合训练。具体而言,本文设计了三项损失函数:可逆性损失 L V ( E , D ) L_V(E,D) LV(E,D),用于保证原始图像 I I I 与重建图像 R R R 之间的相似性;灰度一致性损失 L C ( E ) L_C(E) LC(E),用于确保生成的灰度图像 G G G 既具有灰度图像的视觉特征,又与输入图像 I I I 保持一致;量化损失 L Q ( E ) L_Q(E) LQ(E),用于促使灰度图像 G G G 的像素值趋于整数,以增强其抗量化误差能力。最终的整体损失函数 L ( E , D ) L(E,D) L(E,D) 被表示为上述三项损失的加权和:
L ( E , D ) = L V ( E , D ) + w 1 L C ( E ) + w 2 L Q ( E ) \mathcal{L}(E,D) = \mathcal{L}_V(E,D)+w_1\mathcal{L}_C(E) + w_2\mathcal{L}_Q(E) L(E,D)=LV(E,D)+w1LC(E)+w2LQ(E)
各项损失函数的具体设计将在第 5 节中进行详细讨论,完整的训练方案将在第 6 节中予以说明。由于各训练阶段所使用的损失函数权重不同,相关的加权系数设置也将在第 6 节中一并讨论。

在测试阶段,给定任意彩色输入图像 I I I,首先通过编码器进行灰度转换,得到灰度图像 G = E ( I ) G = E(I) G=E(I)。需要注意的是, G G G 中的每个像素值实际为 32 位浮点数。因此,需要对 G G G 进行量化,生成 8 位灰度图像 G ‾ \overline{G} G,使得所有像素值均为介于 [ 0 , 255 ] [0, 255] [0,255] 之间的整数。随后,通过解码器恢复出彩色图像 R = D ( G ‾ ) R = D(\overline{G}) R=D(G)。相关实验结果及深入的验证分析将在第 7 节中给出。

4. Network Architecture

如上所述,本方法的系统由一个将彩色图像转换为灰度图像的编码网络和一个将灰度图像还原为彩色图像的解码网络组成。乍看之下,该过程类似于彩色图像与灰度图像之间的循环转换,似乎可以通过 CycleGAN进行建模。然而,CycleGAN 仅能保证输出图像属于目标图像域(灰度或彩色),并不能确保所生成的灰度图像与其对应的输入彩色图像之间具有严格的一致性。由于 CycleGAN 属于无监督学习框架,其生成结果缺乏对输入图像内容的强约束,无法满足本方法对灰度图像与原始彩色图像之间对应关系的要求。本文提出的编码-解码框架在形式上也与哈希自编码器(hash autoencoder)较为相似。然而,尽管现有的自编码器方法在某些情况下可以实现可逆性,但它们普遍并未对潜在表示(latent representation)的视觉外观提出任何约束,这与本文方法对灰度图像外观的一致性要求存在显著差异。在本方法中,要求潜在的稀疏表示具备可视化能力,表现为一幅与输入彩色图像在视觉上保持一致的灰度图像。

【图3】

本文所提出的编码与解码网络的具体结构如图 2 所示,各模块下方标注了关键参数。编码网络由两个下采样卷积模块、两个上采样卷积模块、八个残差模块 [He et al. 2016] 以及两个平坦卷积层组成。下采样与上采样卷积结构用于扩大感受野,以增强特征提取能力。解码网络则由八个残差模块与一个平坦卷积层构成。下采样/上采样卷积结构仅用于编码网络,是因为将彩色图像编码为灰度图像时需要更丰富的邻域上下文信息,而从灰度图像解码回彩色图像则属于相对局部的任务。此外,为缓解下采样与上采样过程中可能引入的模糊伪影,编码网络中引入了跳跃连接策略(skip connection)。图 3 展示了是否使用下采样/上采样卷积结构的对比结果。从图 3(b) 可以看出,当不使用该结构时,墙面区域出现了明显的伪影。

5. Loss Function

5.1 可逆性损失

对输入图像 I I I和恢复图像 R R R施加MSE约束。因为图像恢复涉及到了编码器和解码器,因此该项损失函数同时约束了编码器和解码器。

5.2 灰度一致性损失

对于输入彩色图像 I I I 及其对应的灰度图像 G = E ( I ) G = E(I) G=E(I)灰度一致性损失 L C ( E ) L_C(E) LC(E) 用于确保生成的灰度图像 G G G 在视觉上与原始彩色图像 I I I 保持一致,并符合人们对灰度图像外观的普遍认知。在此需要再次强调,灰度图像的转换过程并不存在绝对统一的标准。传统的灰度表示通常采用 CIE Lab 颜色空间中的 L L L 通道,或 YIQ/YUV 空间中的 Y Y Y 通道作为灰度图像,但这类方法并未特别强调区域对比度的保留。一些去色方法则采用更复杂的计算方式以增强图像对比度。而在本方法中,核心目标是将颜色信息编码为不易察觉的图案形式。因此,灰度一致性损失不应过于严格地仅依赖均方误差(MSE)进行约束,而应采用一种相对宽松的设计形式。具体而言,本文提出的灰度一致性损失由三项子损失组成:亮度损失、对比度损失以及局部结构损失。

5.2.1 亮度损失

亮度损失用于确保生成的灰度图像 G G G 在视觉上与输入彩色图像 I I I 的亮度保持一致,即亮区域依然明亮,暗区域依然昏暗。然而,为了给颜色信息的编码保留一定的空间,本文在损失函数设计中引入了灰度差容许范围 θ \theta θ。具体而言,当灰度图像与原图在像素层面的亮度差异小于该阈值 θ \theta θ 时,亮度保持损失 ℓ l ( E ) \ell_l(E) l(E) 被视为零:
ℓ l ( E ) = E I ∈ I { ∥ max ⁡ ( ∣ G − L ( I ) ∣ − M θ , M 0 ) ∥ 1 } \ell_l(E) = \mathbb{E}_{I \in \mathcal{I}} \left\{ \left\| \max \left( \left| G - L(I) \right| - M_{\theta},\ M_0 \right) \right\|_1 \right\} l(E)=EII{max(GL(I)Mθ, M0)1}
其中, ∥ ⋅ ∥ 1 \|\cdot\|_1 1 表示 L 1 L_1 L1范数, ∣ ⋅ ∣ |\cdot| 为逐元素绝对值操作符; L ( I ) L(I) L(I) 表示输入图像 I I I 的亮度通道(例如 Lab 颜色空间中的 L L L 分量); max ⁡ { ⋅ , ⋅ } \max\{\cdot, \cdot\} max{,} 是两个相同尺寸矩阵间的逐元素最大值操作。矩阵 M θ M_\theta Mθ M 0 M_0 M0 的尺寸与灰度图 G G G 相同,其中 M θ M_\theta Mθ 的每个元素均为常数 θ \theta θ M 0 M_0 M0 的每个元素均为 0。由于图像 I I I G G G 的像素值均定义在区间 [ 0 , 255 ] [0, 255] [0,255] 内,本文在所有实验中将阈值 θ \theta θ 经验性地设置为 70。值得注意的是,该约束条件相当宽松,目的是为模型提供更大的搜索空间。

【博主解读】对于阈值 θ \theta θ,可以简单理解为:在 θ \theta θ 设置为70的前提下,输入图像和生成的灰度图中每个像素的亮度差异均需要小于或等于70。

5.2.2 对比度损失

本研究发现预训练的 VGG-19 网络中的高层特征对于表达图像的全局对比度表现非常出色。因此,有如下公式:
ℓ c ( E ) = E I ∈ I { ∥ VGG k ( G ) − VGG k ( I c ) ∥ 1 } \ell_c(E) = \mathbb{E}_{I \in \mathcal{I}} \left\{ \left\| \text{VGG}_k(G) - \text{VGG}_k(I_c) \right\|_1 \right\} c(E)=EII{VGGk(G)VGGk(Ic)1}
其中,VGG_k取VGG网络的conv4_4,c表示输入图像的通道序号,取 1 , 2 , 3 {1,2,3} 1,2,3

5.2.3 局部结构损失

最后一项子损失旨在保持彩色输入图像 I I I局部结构在灰度图像 G G G 中的一致性。具体而言,若输入图像中某一像素在局部区域内是平滑的,则在生成的灰度图像中,该像素也应保持平滑性。这样的约束有助于防止颜色编码模式在灰度图中显性化。为度量局部结构的相似性,本文采用了一种简单但有效的局部变化(local variation)作为衡量指标。因此,局部结构损失 ℓ s ( E ) \ell_s(E) s(E) 可被表述为:
ℓ s ( E ) = E I ∈ I { ∥ Var ( G ) − Var ( I ) ∥ 1 } \ell_s(E) = \mathbb{E}_{I \in \mathcal{I}} \left\{ \left\| \text{Var}(G) - \text{Var}(I) \right\|_1 \right\} s(E)=EII{Var(G)Var(I)1}
其中, Var ( ⋅ ) \text{Var}(\cdot) Var() 表示用于计算图像
局部变化均值
的函数,即对图像中各像素局部区域的变化程度进行平均,以衡量其整体局部结构特性。

5.2.4 组合损失函数

整体的灰度一致性损失由上述三项子损失的加权和构成:
L C ( E ) = ℓ l ( E ) + α ℓ c ( E ) + β ℓ s ( E ) L_C(E) = \ell_l(E) + \alpha \ell_c(E) + \beta \ell_s(E) LC(E)=l(E)+αc(E)+βs(E)
其中, α \alpha α β \beta β 分别为加权因子。为了平衡卷积特征空间与图像像素空间之间的量纲差异,本文经验性地将 α \alpha α 设定为 10 − 7 10^{-7} 107。局部结构损失与其他损失项之间的权重平衡则由 β = 0.5 \beta = 0.5 β=0.5 控制。实际上,实验发现训练结果对这两个超参数并不敏感,因此在所有实验中均采用固定值。

【图4】

图 4 展示了灰度一致性损失及其各子项的重要性。当不引入灰度一致性损失时,生成的灰度图(如图 (b))在视觉上无法体现输入彩色图像的灰度外观。若移除亮度项,图像的局部对比可能会被颠倒,如图 © 中花瓣所示;若去除全局对比项,则无法在灰度图中保留原图的整体对比度,导致图像呈现出“发灰”的视觉效果,如图 (d) 所示。若省略局部结构项,模型将无法有效抑制颜色编码所带来的纹理伪影,如图 (e) 所示(可与图 (f) 中对应的局部放大图进行对比)。只有在包含所有子项的情况下,才能如图 (f) 所示,生成既具视觉美感又无明显颜色编码痕迹的灰度图像。

5.3 量化损失

前述讨论中的图像(无论是灰度图还是彩色图)均以 32 位浮点精度进行表示。然而,在实际应用中,灰度图像的每个像素通常以 8 位无符号整数形式进行存储。该量化过程可能导致在灰度图恢复为彩色图时产生伪影,如图 5(a) 所示。为此,本文提出通过如下量化损失对所有非整数像素值进行惩罚:
L Q ( E ) = ⟨ ∥ min ⁡ d = 0 255 ∣ G − M d ∣ ∥ 1 ⟩ I L_Q(E) = \left\langle \left\| \min_{d = 0}^{255} \left| G - M_d \right| \right\|_1 \right\rangle_I LQ(E)= d=0min255GMd 1I

其中, min ⁡ { ⋅ } \min\{\cdot\} min{} 表示在一组尺寸相同的矩阵中进行的逐元素最小值操作。矩阵 M d M_d Md 的尺寸与灰度图 G G G 相同,其所有元素均为常数 d d d。通过引入量化损失,可以有效抑制因量化所带来的伪影,从而在重建图像时获得显著更优的效果(如图 5(b) 所示)。
在这里插入图片描述

6. Training

6.1 训练数据

采用VOC2012数据集,13758张图像作为训练集,3367张图像作为测试集。

【表1】

6.2 两阶段的训练过程

本模型采用端到端方式进行训练,损失函数如公式(3)所定义。模型可以直接从头开始训练(即单阶段方案),其训练损失随实际运行时间的变化如图 6 中绿色曲线所示。然而,量化损失是一个分段定义的函数,不仅训练困难,而且占用较大的显存。因此,本文提出了一种两阶段训练策略,以加速模型收敛并降低内存消耗。

在第一阶段,仅考虑可逆性损失灰度一致性损失;第二阶段则将三项损失全部纳入训练目标。为实现这一策略,本文在前 90 个训练周期(第一阶段)中将公式(3)中的 ω 2 \omega_2 ω2 设为 0,即忽略量化损失;在随后的 30 个训练周期(第二阶段)中将其设为一个相对较大的值,从而强化量化损失对训练的主导作用。同时,权重参数 α \alpha α β \beta β 在两个阶段中保持不变。具体的参数设置详见表 1。

【图6】

图 6 中的红色曲线绘制了两阶段训练方案下的训练损失随实际时间的变化,每个点代表一个训练周期。可以观察到,两阶段训练在实际运行时间上比单阶段训练收敛得更快。尽管训练轮数相同,两阶段方案整体耗时更少。此外,使用两阶段策略训练得到的彩色图像在重建效果上也略优于单阶段方案,详见图 9(b)、(c) 及表 2。

【表2】

在训练过程中,学习率初始设为 0.0002,并在整个 120 个训练周期中线性衰减至 0.000002。模型的优化采用 ADAM 优化器。

7. 结果和讨论

7.1 定性评估

我们在多种题材与内容的图像上对本文方法进行了评估,所有场景下均获得了令人满意的结果。如图 14 所示,展示了多个类别的可逆灰度图像与其还原出的彩色图像,涵盖从人像特写到远景风光,以及从乡村场景到都市街景等多种内容。对于每一个样例,依次展示了原始彩色输入图像(第一列)、经过 8 位量化处理的可逆灰度图(第二列)、由该灰度图还原得到的彩色图像(第三列),以及对应的伪彩色差异图(第四列)。在还原的彩色图像中,我们标注了与原始图像之间的 PSNR 和 SSIM 值;在差异图中,则标注了平均绝对误差(MAE)。建议读者放大图像,以便观察细节。生成的灰度图既符合输入彩色图像的视觉特征,也符合人们对典型灰度图像的感知预期。除非对图像进行大幅缩放,否则难以察觉其中隐含的颜色编码模式;尤其在纹理复杂区域中,该编码更难以识别。还原得到的彩色图像与原始彩色输入几乎完全一致。更多样例可参考附录材料。

7.1.1 色彩还原与上色

【图7】

本文首先在图 7 中展示了与当前主流 CNN 上色方法的结果对比。然而,需要指出的是,该比较在严格意义上并不完全公平:对方方法使用的输入灰度图为原始彩色图像的 L 通道,而本方法的输入则为可逆灰度图。由于该上色方法在很大程度上依赖于颜色与自然纹理之间的相关性,当图像中缺乏足够纹理时(如图 7(b) 所示),其效果通常不佳。相比之下,本方法通过解码可逆灰度图中嵌入的颜色信息,能够准确还原出原始彩色图像(如图 7© 所示)。此外,本文还进一步与基于用户颜色提示的交互式上色方法进行了比较,该方法依赖人工指定的局部颜色提示进行灰度图像上色。对于每张图像,按照原方法设定,随机采样 500 个颜色提示点生成其上色结果。图 8 展示了该方法与本方法的结果对比。即便在颜色提示点分布较密集的情况下,该方法生成的图像仍可能与真实彩色图存在较为明显的差异。

【图8】

7.1.2 色彩编码模式

在可逆灰度图中嵌入颜色信息的副作用是引入了不明显的图案结构(如图 1 与图 9 所示)。这种图案仅在图像被大幅放大时才可观察到。通常,该图案结构难以理解,在亮度较高的区域中较为微弱,而在暗部区域相对更明显;此外,相较于纹理复杂区域,在平滑区域中该图案也更加可见,这可能与人类视觉系统对复杂视觉内容的变化敏感度较低有关。实验还发现,所生成图案的尺度与输入图像的分辨率无关。如图 9 所示,输入图像(图 9(a))被分别缩放至 400×300(图 9(b))和 1600×1200(图 9©)两种分辨率,其中高分辨率版本更能隐藏颜色编码图案,因为识别该图案需进行更大倍数的放大。
在这里插入图片描述

若系统输入为灰度图像,则可逆灰度图中不会引入颜色编码图案,因为原始图像中不包含可编码的颜色信息。如图 10 底部所示,输入为彩色图像的情况下会产生图案(图 10©),而输入为灰度图像时(图 10(f))则无可见图案;此时生成的可逆灰度图几乎与输入灰度图完全一致。此外,相较于常规的 L 通道图像(图 10(e)),本方法生成的可逆灰度图像(图 10(b))能够更好地保留原图的整体对比度,这归功于所引入的对比度损失项。然而,在色彩对比度的保持能力上,本方法仍不如现有的保持对比度的去色方法。需要强调的是,尽管本方法在一定程度上能够保留全局对比度,其核心目标仍在于可逆性的实现。

【图10】

7.2 定量验证

本文进一步在由3367张图像组成的测试集上进行了定量评估。为了衡量恢复图像和原始图像的相似性,本研究采用三项指标对重建彩色图像进行评估:平均绝对误差(MAE)峰值信噪比(PSNR) 以及 结构相似性指数(SSIM),其中各项指标均在 RGB 三个通道上分别计算后取平均值。类似地,与另一方法进行了对比,该方法在每张图像中随机采样 500 个颜色提示点。评估统计结果列于表 2。对于 MAE 指标,其取值范围为 [ 0 , 255 ] [0, 255] [0,255],值越小表示与真实图像越接近,0 表示完全一致。对于 PSNR 和 SSIM 指标,值越大表示相似性越高,其中 PSNR 的上限为 ∞ \infty ,SSIM 的最大值为 1。实验结果显示,相较于对比方法,本文方法在 MAE 指标上取得了显著更低的数值,同时在 PSNR 与 SSIM 两项指标上均取得了更高的得分,说明所重建的彩色图像在整体质量与真实图像的相似性方面具有明显优势。

目前尚无统一标准可用于衡量生成灰度图像与原始彩色图像之间的一致性。本文采用 SSIM 中定义的结构项来度量生成灰度图像与彩色图像 L 通道 之间的结构相似性。之所以将 L 通道作为参考基准,是因为其能够较好地保留彩色图像中的结构信息。在取值范围为 [ − 1 , 1 ] [-1, 1] [1,1] 的情况下,结构相似性的平均值为 0.9799,标准差为 0.008830。这表明所生成的可逆灰度图能够较好地保留输入图像的结构信息。

7.3 用户调研

7.4 时间消耗

【表3】

本模型基于 Python 使用 TensorFlow 实现。所有实验均在一台配备 Intel Xeon E5-1630 v4 3.70GHz CPU 和 GeForce GTX 980 Ti GPU 的个人计算机上完成。分别在启用与未启用 GPU 的情况下,对不同分辨率图像的编码与解码网络的运行时间进行评估。每种分辨率下均运行 100 次实验,并取平均值。运行时间统计结果列于表 3。总体来看,编码过程所耗时间普遍高于解码过程,这是由于编码网络包含更多卷积层,计算复杂度也更高。在使用 GPU 的条件下,本方法在分辨率为 512 × 512 的图像上可实现实时性能。

7.5 局限性

【图12】

由于本方法所生成的可逆灰度图通过嵌入不显眼的图案来编码原始颜色信息,因此其颜色还原效果在很大程度上依赖于这些图案的准确性。因此,该可逆灰度图对常见的图像操作(如旋转、缩放及 JPEG 压缩)并不具备鲁棒性,因为这些图像处理操作可能破坏其中的颜色编码图案。图 12 展示了在不同存储条件下恢复出的彩色图像结果,包括无损存储(图 12(a))、高质量 JPEG 压缩(图 12(b))以及中等质量 JPEG 压缩(图 12©)。随着压缩质量的降低,灰度图中嵌入的颜色编码图案受到的破坏程度也随之加剧,进而导致还原彩色图像的质量下降。为提升对图像操作的鲁棒性,一种可能的解决方案是在模型训练阶段引入这些图像操作过程,这也是未来研究的潜在方向之一。

尽管存在一定的局限性,本文所提出的系统在实际应用中仍具备一定程度的抗干扰能力,相关结果展示于补充视频中。在该视频中,首先利用编码网络生成可逆灰度图像,并将其打印在普通 A4 纸上;随后使用手持式 PDA 相机对这些纸质灰度图进行拍摄,获得的图像可能包含噪声、模糊、光照变化甚至透视畸变。最后,通过解码网络从这些受干扰的灰度图像中恢复出彩色图像。如图 13 及补充视频所示,即便输入图像受到多种噪声污染,依然能够得到令人信服的恢复效果,尽管恢复出的颜色在某些情况下可能与原始图像存在轻微偏差。

【图13】

8. 结论

本文提出了一种创新性的彩色图像灰度化方法,该方法生成的灰度图像可在后续被还原为原始彩色图像。其核心思想在于将颜色信息编码嵌入到合成的灰度图中。具体地,本文通过卷积神经网络学习并实现该颜色编码机制。对于任意输入彩色图像,所训练的网络能够生成在视觉上自然、符合预期的灰度图像,并可还原出几乎无法与原始彩色图区分的彩色结果。所有的定量实验结果及用户评估统计均验证了该方法的有效性。

本方法主要针对静态图像设计。尽管可通过逐帧处理的方式将其应用于视频,但当前模型尚无法保证帧间的时序一致性,因此对该问题的进一步研究仍具有必要性。另一个值得探索的方向是提升模型的抗噪能力。目前,该方法对于有损图像压缩(如 JPEG)所引入的误差仍较为敏感。一种潜在的解决方案是将压缩误差建模纳入神经网络训练过程中,使模型能够学习出对噪声更具鲁棒性的颜色编码方式。

请添加图片描述

【思考1】作者在Intro中提到,这个架构是一个通用性架构,其理论意义不应局限于编码颜色信息,还可以扩展至任意类型的数据。看到这里就感觉这个思路可能就是CycleISP的前身,即sRGB-RAW-sRGB。

【思考2】a. 量化误差损失函数部分公式示例,举d=1和d=2进行示范:

请添加图片描述

b. 同时,正如6.2小节所述,量化损失函数是一个分段定义的函数,如图:
请添加图片描述

【思考3】作者在结论给出了未来研究方向,不知道该领域目前做到了什么地步?


http://www.hkcw.cn/article/pmFXWZJWFV.shtml

相关文章

Python打卡训练营Day43

DAY 43 复习日 作业: kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 数据集地址:Lung Nodule Malignancy 肺结核良恶性判断 进阶:并拆分成多个文件 import os import pandas as pd import numpy as np from…

mem0ai/mem0 v0.1.102版本全面升级,解锁多项前沿功能与文档优化!

大家好!今天我们为大家带来mem0ai/mem0项目的重大版本更新——v0.1.102!本次更新不仅带来了全新的功能扩展,更对项目的文档体系进行了深度优化,提升了整体用户体验和集成便捷性。无论你是mem0ai/mem0的忠实用户,还是刚…

导入典籍数据

1.从网上获取中医相关典籍数据&#xff0c;数目共600txt&#xff0c;总篇数14万 2.数据处理 获取到的数据结构大致如下 一个txt表示一本书&#xff0c;开头存有书籍相关的名字&#xff0c;作者&#xff0c;朝代&#xff0c;年份&#xff0c;之后每一个<目录>下都跟有一…

状态机实现文件单词统计

系统如何查找可执行文件 默认&#xff1a;在PATH路径下寻找文件文件下 执行当前目录下文件&#xff1a; ./&#xff1a;指定文件目录是当前目录 ./count:执行当前目录文件 编译.c文件为运行文件 gcc -o count 0voice.c #将0voice.c编译为名字count 为什么主函数要那么写&a…

[面试精选] 0021. 合并两个有序链表

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的…

【C++】内存管理

C/C内存分布 1.栈又叫堆栈–非静态局部变量/函数参数/返回值等等&#xff0c;栈是向下增长的。 2.内存映射段是高效的I/O映射方式&#xff0c;用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存&#xff0c;做进程间通信。 3.堆用于程序运行时动态内存分配&am…

基于javaweb的SpringBoot爱游旅行平台设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

ubuntu系统扩容

使用gparted工具扩容 安装方法&#xff1a; sudo apt-get update sudo apt-get install gparted 运行gparted&#xff0c;进行分区扩容 sudo gparted 打开软件后&#xff0c;先点击弹出窗口中的ok&#xff0c;若无弹出窗口&#xff0c;则无需点击。 点击右侧的下拉按钮 点…

计算机组成原理-计算机硬件的主要技术指标

机器字长 CPU一次能处理数据的位数&#xff0c;与CPU中的寄存器位数有关 运算速度 主频 核数&#xff0c;每个核支持的线程数 吉普森法&#xff1a;Tm ,根据指令集中每条指令的执行频率对指令集中所有指令的执行时间做加权平均。其中fi根据是否在程序运行时测量&#xff…

【TMS570LC4357】之相关驱动开发学习记录1

系列文章目录 【TMS570LC4357】之工程创建 【TMS570LC4357】之工程配置修改 【TMS570LC4357】之HALCOGEN使用 【TMS570LC4357】之相关问题及解决 ——————————————————— 前言 记录笔者在第一次使用TMS570过程中对外设驱动的一些学习碎片。 1. RTI 1.1 添…

多智能体在具身智能上的研究

在关于大模型的认知升级-CSDN博客中&#xff0c;我们提到大模型的终局是具身智能。那么&#xff0c;本文我们就来看看多智能体在具身智能上有了哪些应用。 Manus发布一天后迅速出现OpenManus、OWL等复刻项目。为什么可以这么快的复刻项目&#xff1f;其实&#xff0c;多智能体…

【HW系列】—安全设备介绍(开源蜜罐的安装以及使用指南)

文章目录 蜜罐1. 什么是蜜罐&#xff1f;2. 开源蜜罐搭建与使用3. HFish 开源蜜罐详解安装步骤使用指南关闭方法 总结 蜜罐 1. 什么是蜜罐&#xff1f; 蜜罐&#xff08;Honeypot&#xff09;是一种主动防御技术&#xff0c;通过模拟存在漏洞的系统或服务&#xff08;如数据库…

打卡day43

DAY 43 复习日 作业&#xff1a; kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;并拆分成多个文件 数据集来源水母图像数据集 --- Jellyfish Image Dataset&#xff0c;对水母图片进行分类&#xff0c;共6个类别。 模型训…

20250602在荣品的PRO-RK3566开发板的Android13下打开HDMI显示

20250602在荣品的PRO-RK3566开发板的Android13下打开HDMI显示 2025/6/2 16:20 缘起&#xff1a;貌似荣品的PRO-RK3566开发板的Android13默认关闭了HDMI显示。 据说&#xff1a;荣品确认RK3566的GPU比较弱&#xff0c;同时开【MIPI接口的】LCD屏显示和HDMI显示容易出现异常。 更…

C++ 类模板三参数深度解析:从链表迭代器看类型推导与实例化(为什么迭代器类模版使用三参数?实例化又会是怎样?)

本篇主要续上一篇的list模拟实现遇到的问题详细讲解&#xff1a;<传送门> 一、引言&#xff1a;模板参数的 "三角锁钥" 在 C 双向链表实现中&#xff0c;__list_iterator类模板的三个参数&#xff08;T、Ref、Ptr&#xff09;如同精密仪器的调节旋钮&#x…

TDengine 高级功能——读缓存

简介 在物联网&#xff08;IoT&#xff09;和工业互联网&#xff08;IIoT&#xff09;大数据应用场景中&#xff0c;实时数据的价值往往远超历史数据。企业不仅需要数据处理系统具备高效的实时写入能力&#xff0c;更需要能快速获取设备的最新状态&#xff0c;或者对最新数据进…

云HIS系统源码,基于SaaS模式开发,采用Java技术栈(SpringBoot+MyBatisPlus)和MySQL数据库

SaaS模式Java版云HIS系统源码&#xff0c;融合B/S版电子病历系统&#xff0c;支持电子病历四级&#xff0c;HIS与电子病历系统均拥有自主知识产权。 云HIS系统是一款满足基层医院各类业务需要的健康云产品。帮助基层医院完成日常各类业务&#xff0c;提供病患预约挂号支持、病…

【AUTOSAR SystemServices】深入解析StbM模块:功能定义、工作原理与代码实现

文章目录 一、STBM模块概述1.1 功能定义1.2 在AUTOSAR中的定位与应用场景 二、核心工作原理2.1 时间基准类型2.2 时间同步流程2.3 关键数据结构 三、代码实现分析3.1 初始化函数&#xff1a;StbM_Init功能关键代码片段 3.2 时间获取函数&#xff1a;StbM_GetCurrentTime功能关键…

力扣HOT100之多维动态规划:64. 最小路径和

这道题和上一道题62.不同路径套路很像&#xff0c;思路也比较简单&#xff0c;用二维dp数组做就可以了。直接上动规五部曲&#xff1a; 1.确定dp[i][j]的含义&#xff1a;从起点到位置为[i][j]处的最小路径和 2.确定递推公式 dp[i][j] min(dp[i - 1][j], dp[i][j - 1]) grid[…

Tree 树形组件封装

整体思路 数据结构设计 使用递归的数据结构&#xff08;TreeNode&#xff09;表示树形数据每个节点包含id、name、可选的children数组和selected状态 状态管理 使用useState在组件内部维护树状态的副本通过deepCopyTreeData函数进行深拷贝&#xff0c;避免直接修改原始数据 核…