说在前面
好久不见,这次给小伙伴们更新几波我本科期间参与的科研项目。按照论文的发表顺序,这篇博客就简单介绍一下我的第一个项目,关于图像着色算法的优化。
摘要
着色(彩色化)是使用计算机算法给灰度图像添加颜色的过程。目前有几种主流的方法可以为图像着色,包括精确的图像分割算法、深度学习算法和基于手动着色的局部颜色扩展方法。然而,这些方法的一个常见问题是出现“渗色”,即图像中某个区域的颜色溢出到相邻区域。在本文中,我们提出了一种新的基于手动着色的局部颜色扩展算法,该算法综合考虑了窗口中心像素与相邻像素之间的强度差(亮度差)和距离差。结合侧窗滤波,我们的算法显著减少了彩色图像边缘渗色现象的发生。实验证明了该算法的有效性。
经典的图像着色方法
1、一种比较古早的方法是基于参考图像(reference image)的颜色转移。选择参考图像,然后与目标灰度图像进行比较,根据参考图像中的颜色信息调整目标图像的颜色。
2、大量的研究集中于基于手动着色的局部颜色扩展算法。这些方法通常使用偏微分方程将着色问题转化为优化问题,依靠用户以“涂鸦”的形式输入来指导着色过程。
3、基于深度学习的方法,以端到端技术学习着色,可以在一定程度上简化图像编辑过程,提高效率。然而,训练深度学习模型需要大量的标记训练数据和计算资源,并且由于依赖高质量的数据输入,模型的输出可能会出现不真实、不一致或渗色的情况。此外,在深度学习模型中纠正错误或提高着色质量比较难。
4、侧窗滤波。这种类型的过滤器通过在图像上应用一个窗口来分析周围的像素,然后使用特定的算法来修改中心像素的值。侧窗滤波的一个优点是可以保留边缘,这可以有效地减少基于手工着色的局部颜色扩展算法中图像渗色的发生,从而得到更清晰、更自然的彩色图像,解决了传统滤波算法会造成图像边缘模糊而丢失边缘信息的问题。
本文提出的算法核心原理是:亮度相似的像素也具有相似的色度。给定的图像根据这一原理扩展周围像素的颜色。与其他着色算法相比,该方法可以减少图像边缘的渗色。当与侧窗滤波相结合时,算法可以生成接近无渗色的图像。
方法
首先,我们的算法基于YUV色彩空间。Y表示亮度通道,而U和V是色度通道。该算法的原理为:在一定范围内具有相似亮度的像素应该具有相似的色度值。例如,在对U通道窗口的中心节点进行着色时,计算Y通道的中心节点与其相邻节点之间的像素值差异,并考虑中心节点与其相邻节点之间的距离差异。然后将这两种差异结合起来,为相邻节点分配相应的权值,最终将中心节点的色度值U表示为相邻节点色度值U的加权和:
U ( c ) = ∑ n ∈ N ( c ) W c n U ( n ) \begin{equation} U(c)=\sum_{n \in N(c)} W_{c n} U(n) \end{equation} U(c)=n∈N(c)∑WcnU(n)
W c n = 1 0 − ( Y ( c ) − Y ( n ) ) 2 σ c 2 ∗ (