2

如果您打开 RAW 图像文件,我正在尝试实现类似于您在 Photoshop 中看到的白平衡工作流程。那是:

  1. 打开 RAW 文件
  2. 对话框打开,允许用户从图像中采样颜色(通常选择具有中灰度值的颜色
  3. 图像是白平衡的

我正在尝试在另一个应用程序中实现类似的工作流程(只是为了减少应用程序跳转)。目前,我正在执行以下操作(其中“源”是图像,“目标”是采样颜色:

  1. 将源图像和目标图像从线性 RGB 转换为 XYZ 空间
  2. 使用 Bradford 变换将源图像和目标图像从 XYZ 变换到 LMS 空间
  3. 计算比例系数:cr = Lt/Ls, cg = Mt/Ms, cb = St/Ss
  4. 将源中的每个纹素乘以对角矩阵 [ cr, 0, 0, 0, cg, 0, 0, 0, cb]
  5. 将源图像从 LMS 空间转换回 XYZ 空间
  6. 将源图像从 XYZ 空间转换为 RGB 空间

我的这个过程基于这篇论文: https ://www.hindawi.com/journals/mpe/2014/760123/

我正在使用预先计算的变换矩阵从这里(D65白点)从RGB转换为XYZ: http ://brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html

以及从此处从 XYZ 转换为 LMS 的预先计算的 Bradford 变换(再次,D65 白点):从上面第 2ii 部分的 Hindawi 论文中提取

我没有任何示例代码。我正在尝试使用像素处理器在 Substance Designer 中实现这一点。在这一点上,我只是好奇我的整体方法是否合理,然后再深入研究具体实现。

我从中得到的输出是色调偏向绿色且太暗。

Photoshop中的预白平衡:图像

在 Photoshop 中进行白平衡后:图像

我的结果:图像

我是否在错误的空间计算比例系数?我假设缩放源纹素应该发生在 LMS 空间中..?

谢谢!

4

0 回答 0