[论文阅读] 颜色迁移-梯度保护颜色迁移
文章: [Gradient-Preserving Color Transfer], [代码未公开]
本文目的: 如题所示为梯度保护的颜色迁移方法.
1-算法原理
人类的视觉系统对局部强度差异比强度本身更敏感, 因而, 保持颜色梯度是场景保真度的必要条件, 因而作者认为: 一个好的颜色迁移算法需要保持颜色梯度.
颜色梯度从字面意思理解就是要保持颜色和梯度, 颜色迁移就是要保持源图像中的细节(梯度)和目标图像中的颜色.
因而本文就是从2这个方面进行设计算法的, 最小化如下所示公式, 即可得到输出图像.

式中, H ( ∗ ) H(*) H(∗) 为直方图, ∇ \nabla ∇ 为梯度算子
- 第一部分是直方图, 用于获取目标/参考图像颜色, 输出图像的直方图和目标/参考图像的直方图尽可能的接近
- 第二部分是梯度, 用于保留源图像梯度, 输出图像的梯度和源图像的梯度尽可能的接近
- 参数λ是用于平衡目标图像颜色和源图像梯度的系数
但上述公式1很难优化, 主要原因函数 H ( ∗ ) H(*) H(∗) 是作用于图像整体的统计运算, 而梯度算子 ∇ \nabla ∇ 是应用于图像中的每个像素.
1.1-方法简化
针对公式难以优化问题, 作者对公式进行了简化:
- 公式1的第一部分作用是尽可能的使输出图像的直方图接近目标图像的直方图, 其功能就相当于直方图匹配
- 可以先将源图像和目标图像进行直方图匹配, 得到中间图像f
- 输出图像尽可能的接近中间图像f, 相当于输出图像直方图尽可能接近目标图像直方图
因而上述公式可以更改为:

进一步地, 使用矩阵方式表示, 并求导可以得到:

式中, o o o 输出的图像, D x D_x Dx , D y D_y Dy 为梯度算子, 文中使用sobel算子, 关于sobel算子, 可以戳这里: Sobel算子
2-算法核心
2.1-关于公式简化
比较难以理解的是公式2到公式3的变换, 这里做个简单说明, 可能不太正确.
要求公式2的最小值, 就要求其导数=0时的解, 为了方便理解, 这里去除下标, 对单个像素进行说明, 对公式2求导:
2 ( o − f ) + λ [ 2 ( D x ∗ o − D x ∗ s ) ∗ D x + 2 ( D y ∗ o − D y ∗ s ) ∗ D y ] = 0 o + λ ( D x 2 ∗ o + D y 2 ∗ o ) = f + λ ( D x 2 ∗ s + D y 2 ∗ s ) [ 1 + λ ( D x 2 + D y 2 ) ] o = f + λ ( D x 2 + D y 2 ) s 2(o-f)+\lambda [2(D_x*o-Dx*s)*Dx + 2(D_y*o-Dy*s)*Dy ] = 0 \\ o+ \lambda (D_x^2*o+D_y^2*o) = f + \lambda (D_x^2*s+D_y^2*s) \\ [1+ \lambda (D_x^2+D_y^2)]o = f + \lambda (D_x^2+D_y^2)s 2(o−f)+λ[2(Dx∗

本文介绍了一种颜色迁移算法——梯度保护颜色迁移。该算法旨在保持颜色梯度的同时完成颜色迁移,确保输出图像既拥有目标图像的颜色又保留源图像的细节。通过对直方图匹配和梯度保持两方面的优化,利用Sobel算子计算梯度,并通过线性方程求解输出图像。

1万+

被折叠的 条评论
为什么被折叠?



