algorithm - 基于用户输入物质像素处理器的白平衡算法
问题描述
如果您打开 RAW 图像文件,我正在尝试实现类似于您在 Photoshop 中看到的白平衡工作流程。那是:
- 打开 RAW 文件
- 对话框打开,允许用户从图像中采样颜色(通常选择具有中灰度值的颜色
- 图像是白平衡的
我正在尝试在另一个应用程序中实现类似的工作流程(只是为了减少应用程序跳转)。目前,我正在执行以下操作(其中“源”是图像,“目标”是采样颜色:
- 将源图像和目标图像从线性 RGB 转换为 XYZ 空间
- 使用 Bradford 变换将源图像和目标图像从 XYZ 变换到 LMS 空间
- 计算比例系数:cr = Lt/Ls, cg = Mt/Ms, cb = St/Ss
- 将源中的每个纹素乘以对角矩阵 [ cr, 0, 0, 0, cg, 0, 0, 0, cb]
- 将源图像从 LMS 空间转换回 XYZ 空间
- 将源图像从 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 空间中..?
谢谢!
解决方案
推荐阅读
- swift - 通过从另一个结构排序来快速排序结构
- swiftui - SwiftUI - 防止列表在项目选择时将滚动位置重置为顶部
- c++ - 如果我在库和应用程序中编译了相同的 cpp 文件会怎样?
- python - Flask webapp生成永久报告作为链接
- apache - 在 Tomcat 的 web.xml 中处理 302 重定向
- html - 带有文本的翻转动画仅适用于 Firefox,有什么方法可以使它跨浏览器?
- azure-devops - Azure Devops:通过本地运行开发管道 YAML 文件
- ubuntu-14.04 - augustus 3.3.2 的安装问题
- python - 如何将其转换为 python 中的字符串列表
- node.js - Pm2 问题 - procces 从生态系统.config.js 启动时未找到 fs.readfilesync 文件