Color Transfer
1. 问题描述
给定一张原图像:
和一张参考图像:
我们希望通过设计一个颜色转换算法,使得源图像具有目标图像的颜色风格,如下图:
2. 算法描述
衡量一幅图像的颜色分布最基础的统计特征就是均值和标准差,文献[1]中便通过这两个特征对图像进行简单的变换并取得不错的效果。
首先,需要将图像的颜色空间从$RGB$空间变换到$l\alpha\beta$空间:
$RGB$空间$\rightarrow$ $XYZ$空间
$$
\begin{pmatrix}
X\\Y\\Z
\end{pmatrix}=
\begin{pmatrix}
0.5141&0.3239&0.1604\\
0.2651&0.6702&0.0641\\
0.0241&0.1228&0.8444
\end{pmatrix}
\begin{pmatrix}
R\\G\\B
\end{pmatrix}
$$$XYZ$空间$\rightarrow$ $LMS$空间
$$
\begin{pmatrix}
L\\M\\S
\end{pmatrix}=
\begin{pmatrix}
0.3897&0.6890&-0.0787\\
-0.2298&1.1834&0.0464\\
0.0000&0.0000&1.0000
\end{pmatrix}
\begin{pmatrix}
X\\Y\\Z
\end{pmatrix}
$$变换到对数空间
$$
\begin{aligned}
\pmb L&=\lg L\\
\pmb M&=\lg M\\
\pmb S&=\lg S
\end{aligned}
$$$\pmb{LMS}$空间$\rightarrow$ $l\alpha\beta$空间
$$
\begin{pmatrix}
l\\\alpha\\\beta
\end{pmatrix}=
\begin{pmatrix}
\frac{1}{\sqrt{3}}&0&0\\
0&\frac{1}{\sqrt{6}}&0\\
0&0&\frac{1}{\sqrt{2}}
\end{pmatrix}
\begin{pmatrix}
1&1&1\\
1&1&-2\\
1&-1&0
\end{pmatrix}
\begin{pmatrix}
\pmb L\\\pmb M\\\pmb S
\end{pmatrix}
$$
同理,将图像的颜色空间从 lαβ 空间变换到 RGB 空间只需将相应的变换矩阵依次求逆即可。
设变换到$l\alpha\beta$颜色空间的源图像的均值和标准差分别为$\mu_s$、$\sigma_s$,目标图像的均值和标准差分别为$\mu_t$、$\sigma_t$,只需通过如下简单处理,即可将源图像的颜色分布变换到接近与目标图像
$$
\begin{aligned}
l’&=\frac{\sigma_t^l}{\sigma_s^l}(l-\mu^l_s)+\mu^l_t\\
\alpha’&=\frac{\sigma_t^\alpha}{\sigma_s^\alpha}(\alpha-mu^\alpha_s)+\mu^\alpha_t\\
\beta’&=\frac{\sigma_t^\beta}{\sigma_s^\beta}(\beta-\mu^\beta_s)+\mu^\beta_t\
\end{aligned}
$$
并将图像$(l’,\alpha’,\beta’)$变换回$RGB$空间即可得到处理后的结果。
3. 实验结果
原图像 | 参考图像 | 结果图像 |
---|---|---|
参考文献
[1] E. Reinhard, M. Adhikhmin, B. Gooch, and P. Shirley. Color transfer between images. IEEE Computer graphics and applications, 21(5):34–41, 2001.10