You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用colour库在校准RGB空间中调整图像至指定色温?

问题:如何使用colour Python库在校准后的ProPhoto RGB色彩空间中将图像调整至指定色温?

我有一张图像,先以未校准的16位线性RGB格式拍摄,随后利用图像中的色卡将其校准至ProPhoto RGB色彩空间。具体操作是将厂商提供的色卡目标值从Lab*映射至ProPhoto RGB,检测输入图像色卡中的对应源色彩,再应用colour.colour_correction函数。

通过以下代码,我已得出图像中白色参考点当前色温为6250K:

import colour

ref_gray = [0.85007768, 0.89948808, 1.11035624]

XYZ = colour.RGB_to_XYZ(ref_gray, "ProPhoto RGB")
xy = colour.XYZ_to_xy(XYZ)
CCT = colour.xy_to_CCT(xy, method="hernandez1999")

# CCT is 6250.9622746435989

我知道colour.CCT_to_xy函数可反向转换,但不知道如何利用生成的xy色度坐标调整图像,也不确定这种操作是否合理。

如何调整图像,使白色色卡的色温变为5500K?


解决方案

要在校准后的线性ProPhoto RGB空间中将图像色温调整至5500K,你可以通过白平衡线性校正实现,核心是基于当前白色点与目标白色点的色度差异生成校正因子,再批量应用到图像上。具体步骤如下:

1. 计算当前与目标白色点的XYZ值

首先明确当前白色参考点和目标色温对应的XYZ坐标:

import numpy as np
import colour

# 当前白色参考点的ProPhoto RGB值
ref_gray = np.array([0.85007768, 0.89948808, 1.11035624])

# 转换为XYZ色彩空间
xyz_current = colour.RGB_to_XYZ(ref_gray, "ProPhoto RGB")

# 计算5500K对应的xy色度坐标,再转换为XYZ(Y分量保持1,保证亮度一致)
xy_target = colour.CCT_to_xy(5500, method="hernandez1999")
xyz_target = colour.xy_to_XYZ(xy_target)

2. 生成XYZ空间校正因子

校正因子为目标白色XYZ与当前白色XYZ的比值,用于将当前白色点映射为目标白色点:

correction_scale = xyz_target / xyz_current

3. 批量应用校正到图像

由于图像是线性ProPhoto RGB格式,可通过numpy批量处理提升效率:

# 假设image_prophoto是校准后的16位线性ProPhoto RGB图像(转为float类型)
image_prophoto = ... 

# 将RGB像素转换为XYZ
image_xyz = colour.RGB_to_XYZ(image_prophoto, "ProPhoto RGB")

# 应用校正因子
image_xyz_corrected = image_xyz * correction_scale

# 转换回ProPhoto RGB
image_corrected = colour.XYZ_to_RGB(image_xyz_corrected, "ProPhoto RGB")

# 可选:转回16位整数格式(裁剪超出范围的像素值)
image_corrected_16bit = np.clip(image_corrected * 65535, 0, 65535).astype(np.uint16)

关键说明

  • 操作合理性:线性色彩空间下,白平衡校正是对XYZ通道的线性缩放,不会破坏已校准的色彩线性关系,适合专业图像调整。
  • 色域处理:校正后部分像素可能超出ProPhoto RGB色域,可通过np.clip裁剪,或根据需求使用colour库的色域映射工具。
  • 效率优化:尽量用numpy向量运算代替逐像素循环,colour库函数原生支持批量处理numpy数组。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:40:03