iOS白点/白平衡调整示例/建议

时间:2013-04-10 12:15:32

标签: ios objective-c core-image

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

我已经完成了前两个步骤,但第三步并没有真正解决。

起初我认为,根据Apples文档CIWhitePointAdjust应该是完全可以完成的事情,但是,虽然它确实改变了图像,但它并没有按照我希望/期望的方式进行。

然后似乎CIColorMatrix应该是能够帮助我改变颜色的东西,但是我(现在仍然)却厌倦了用那些讨厌的向量输入的东西。 我已经尝试了几乎所有的东西(所有矢量上的相同RGB值,每个矢量上的相应值(R代表R等),1 - 对应值,1 +对应值,1 /对应值.RGB值和不同(1 - x) ,1 + x,1 / x)。

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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:5)

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

这些步骤将图像放在球场但不完全存在,所以我为用户添加了UISlider以提供从-100到100的色调值。

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

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