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

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

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

起初,我认为,根据苹果文档CIWhitePointAdjust应该是完成的东西,但是,虽然它确实改变了形象,但它并没有做我希望/期望它做的事情。

那么看起来CIColorMatrix应该是能够帮助我改变颜色的东西,但是我仍然(并且仍然)不知道用那些讨厌的vectorinput什么东西。 我已经尝试了几乎所有的东西(所有vector上的相同RGB值,每个vector上的对应值(R代表R等),1-相应值,1 +相应值,1 /相应值)RGB值和不同(1 – x ,1 + x,1 / x)。

我也遇到过CITemperatureAndTint ,根据苹果文档也应该有所帮助,但是我还没有想出如何从RGB转换成温度和色调。 我已经看到关于从RGB转换到温度的algorithm和公式,但没有关于色调。 不过我会继续尝试一下。

任何帮助非常感谢!

经过大量的实验和math工作后,我终于使我的应用程序几乎按照我想要的方式工作。
如果其他人会发现自己面临类似的问题,那么这就是我所做的。
我结束了使用CITemperatureAndTintfilter,提供从所选像素RGB值和用户可提供的色调值计算的Kelvins颜色。
去Kelvins I:
– 首先使用D65光源(即日光)将RGB转换为XYZ。
– 然后从XYZ转换到Yxy。 这两种转换都是使用EasyRGB中的algorithm进行的 。
– 然后我用这张在这里发表的文章中find的McCamry的公式计算了Yxy的Kelvins。

这些步骤得到了UISlider的图像,但不是那里,所以我添加了一个UISlider为用户提供从-100到100的色调值。

select一个应该是白色的点,并从色调刻度的正面select值(我手机上的所有图像倾向于更黄),现在可以将图像转换为(更多)中性色。 Yey!

我提供了计算的温度和用户select的色调作为inputNeutralvector值。
6500( inputTargetNeutral )和0作为inputTargetNeutral向量值到CITTemperatureAndTintfilter。