LED显示屏颜色转换设计与校正
输入输出形式
输入:BT.2020 色域下的 RGB 值(Rₛ, Gₛ, Bₛ)
形式:
RGB
或XYZ
原因:
视频源数据通常以 RGB(如 BT.2020 RGB)或线性化的
XYZ
储存。BT.2020 RGB 可直接映射到 XYZ,再进行色域映射。
XYZ 是设备无关的中介色彩空间,便于变换与匹配。
输出:目标显示器下的 RGB 值(Rₜ, Gₜ, Bₜ)
形式:RGB
原因:
显示器只能驱动其原生 RGB 像素(如 sRGB)。
最终输出应为 RGB,供硬件直接使用。
基础转换
xy_to_XYZ
问题一思路
在从 BT2020 色彩空间映射到普通 RGB 显示器色域的过程中,为最大限度地减少色彩失真,我们引入以下三类损失函数进行联合优化:
感知色差损失函数:CIEDE2000(ΔE₀₀)
CIEDE2000(ΔE₀₀)是目前最先进的色彩差异度量标准,已广泛应用于印刷、图像处理、视频编码等领域。它改进了 CIE76 的均匀性问题,更加贴近人眼实际对色差的感知能力。
损失函数定义:
设有 N 个采样点,定义 ΔE₀₀ 总损失为:
L*,a*,b*
准备:
明度差 ΔL′
平均明度
a1=a1*
平均色度
修正后的 a1′,a2‘
修正后的色度
修正后的平均色度,色度差
色相角
角度差异
色相差
平均色相角
权重因子
旋转项 RT
权重调节参数
xy 色度平面差异损失
为什么要对每个色度差(Δd)的值进行平方?
1. 保持损失函数连续且可导(平滑)
平方函数是连续的、处处可导的,且导数为线性函数:
这使得在数值优化时(如用梯度下降最小化损失)更稳定、更高效。
2. 强调较大误差的影响(惩罚大误差)
平方操作会放大偏差大的点的影响:
如果某一点误差特别大(颜色偏得很远),平方后就会显得更“严重”;
比如:
0.10 的贡献远大于其他项。这符合视觉体验:大色差更容易被人眼察觉,应优先纠正。
3. 避免负误差相互抵消
如果不平方而直接相加:
由于正负误差可能互相抵消,得到的总误差值不准确。平方后所有值为正,能真实反映总体误差。
色域裁剪惩罚损失
联合损失函数
λ1,λ2:可调权重参数,根据对精度 vs 可显示性的权衡调整
通常 λ1≈1∼5,λ2≈0.1∼1
线性映射
License:
CC BY 4.0