【问题标题】:iOS White point/white balance adjustment examples/suggestionsiOS 白点/白平衡调整示例/建议
【发布时间】:2013-04-02 06:37:11
【问题描述】:

我正在尝试以编程方式更改白点/白平衡。这就是我想要完成的:
- 从图像中选择一个(随机)像素
- 获取该像素的颜色
- 转换图像,使该颜色的所有像素都转换为白色,所有其他颜色都转换为匹配

我已经完成了前两步,但第三步并没有真正奏效。

起初我认为,根据 Apple 的文档 CIWhitePointAdjust 应该可以完全做到这一点,但是,虽然它确实改变了图像,但它并没有做我想要/期望它做的事情。

然后看起来CIColorMatrix 应该可以帮助我改变颜色,但我(现在仍然)不知道用那些讨厌的向量输入什么。 我已经尝试了几乎所有的东西(所有向量上的 RGB 值相同,每个向量上的对应值(R 表示 R 等),1 - 对应值,1 + 对应值,1/对应值。RGB 值和不同的(1 - x , 1 + x, 1 / x)。

我也遇到过CITemperatureAndTint,根据 Apple 的文档也应该有所帮助,但我还没有弄清楚如何从 RGB 转换为温度和色调。我已经看到了关于从 RGB 转换为 Temperatur 的算法和公式,但没有看到关于色调的内容。不过我会继续尝试。

非常感谢任何帮助!

【问题讨论】:

  • 白点调整不是您可以在某些行中解释的。我在我的学士论文中写了一整章来讨论这个问题。当然,您可能不需要所有背景信息。我刚刚尝试了 CIWhitePointAdjust,我无法想象它会被用来做什么。您能说出您的应用程序中的确切用例吗?
  • 我正在尝试构建一个简单的照片编辑器。我想挑选一张在光线较暗的情况下使用设备拍摄的照片(例如餐厅里的白盘食物),颜色错误(白盘通常是黄色)并转换照片以使盘子将是白色,其他颜色将相应更改。
  • 我认为您需要研究色彩适应。需要一些数学运算,但所有公式都可用。 www.brucelindbloom.com 是您最好的朋友。作为一个公平的警告:这不是微不足道的!
  • 谢谢,我的研究已经让我走到了这一步。已经访问了 Bruce Lindblooms 网站并研究了数学。

标签: ios objective-c core-image


【解决方案1】:

经过大量的实验和数学运算,我终于让我的应用程序几乎可以按照我想要的方式运行。
如果其他人会发现自己面临类似的问题,那么这就是我所做的。
我最终使用 CITemperatureAndTint 过滤器提供开尔文颜色,该颜色是根据所选像素 RGB 值和用户提供的色调值计算得出的。
前往 Kelvins I:
- 首先使用 D65 光源(即日光)将 RGB 转换为 XYZ。
- 然后从 XYZ 转换为 Yxy。这两种转换都是使用从EasyRGB 找到的算法进行的。
- 然后我使用我在一篇论文 here 中找到的 McCamry 公式从 Yxy 计算开尔文。

这些步骤得到了大致上的图像,但并不完全在那里,所以我添加了一个 UISlider 供用户提供从 -100 到 100 的色调值。

通过选择一个应该是白色的点并从色调比例的正侧选择值(我手机上的所有图像都倾向于更黄),现在可以将图像转换为(更多)中性色。耶!

我提供了计算出的温度和用户选择的色调作为inputNeutral 矢量值。
6500(D65 日光)和 0 作为 inputTargetNeutral 向量值到 CITTemperatureAndTint 过滤器。

【讨论】:

  • 嘿,我想看看这是否对我有用,但是您与开尔文转换的链接已损坏。这是一个看起来不再可用的 Google 文档。正如您所描述的,我也无法从 Apple 文档中弄清楚如何控制色调。您能否发布您的部分(或全部)代码?
  • This DSP answer 给出了一个非常有用的简化计算。
猜你喜欢
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 2013-08-05
  • 1970-01-01
  • 2013-07-11
  • 2015-08-10
  • 2020-08-29
相关资源
最近更新 更多