Reinhard于2001年在论文“color transfer between images”提出颜色迁移算法。其过程为:
1.将参考图片和目标图片转换到LAB空间下
2.得到参考图片和目标图片的均值和标准差
3.对目标图片的每一个像素值,减去目标图像均值然后乘上参考图片和目标图片标准差的比值,再加上参考图像均值。具体公式解析如下:
有一个重要的假设,图像灰度值的分布近似为高斯分布。
我们将标准正态分布记为X,原图灰度值的正态分布记为Z1,目标图像灰度值的正态分布记为Z2。
那么由概率统计正态分布公式:
Z1=σ1X+μ1
Z2=σ2X+μ2
因此可以得出目标图像的灰度变换公式:
Z2=σ2/σ1(Z1−μ1)+μ2
4.将目标图片转换到RGB空间
import cv2
import numpy as np
import os
from datetime import datetime
import time
#获取参考图片和目标图片的均值和标准差
def getavgstd(image):
avg = []
std = []
image_avg_l = np.mean(image[:, :, 0])
image_std_l = np.std(image[:, :, 0