老照片风格
各种相机有很多滤镜,有一种是像老照片一样的泛黄风格。如下列图片所示。
算法设计
老照片风格的设计核心在于对图像的颜色空间进行精心处理。以GRB空间为例,我们通过对R、G、B这三个关键通道的颜色数值进行精细调整,赋予图像一种独特的泛黄老照片效果。具体的转换公式如下:
在此公式中,r、g、b分别表示输入原图某一像素点的原始RGB值,而R、G、B则代表经过转换后的新RGB值。值得注意的是,转换后的RGB值必须保持在0至255的范围内,以确保图像的正常显示。
效果演示
左边是原始图片,右边是经过处理的输出图片:
代码
import cv2
import numpy as np
# 定义一个函数,用于实现复古风格的图像处理
def retro_style(img):
# 将图像的三个通道分离出来
b = img[:, :, 0]
g = img[:, :, 1]
r = img[:, :, 2]
# 根据复古风格的公式,计算新的三个通道的值
B = np.clip((0.272 * r + 0.534 * g + 0.131 * b), 0, 255).astype(np.uint8)
G = np.clip((0.349 * r + 0.686 * g + 0.168 * b), 0, 255).astype(np.uint8)
R = np.clip((0.393 * r + 0.769 * g + 0.189 * b), 0, 255).astype(np.uint8)
# 将新的三个通道合并成图像
img2 = np.dstack((B, G, R))
# 显示处理后的图像
cv2.imshow("retroimg", img2)
# 主函数
def main():
# 读取图像
img = cv2.imread('img22.jpeg')
# 调用复古风格处理函数
retro_style(img)
# 显示原始图像
cv2.imshow("img", img)
# 等待按键输入
cv2.waitKey(0)
# 程序入口
if __name__ == '__main__':
main()