我正在尝试以编程方式更改白点/白平衡。这就是我想要完成的:
我已经完成了前两步,但第三步并不是真的有效。
起初,我认为,根据苹果的文档,CIWhitePointAdjust应该是实现这一目标的工具,但是,尽管它确实改变了图像,但它并没有做我想要/期望它做的事情。
然后,看起来CIColorMatrix应该可以帮助我转换颜色,但我当时(现在仍然是)不知道用这些烦人的向量输入什么。我已经尝试了几乎所有的方法(所有向量上的RGB值相同,相应的值(R表示R,等等)在每个向量上,1-对应值,1+对应值,1/对应值。RGB值和不同(1 - x,1+ x,1/ x)。
我也遇到了CITemperatureAndTint,根据苹果的文档应该也有帮助,但我还没有想出如何从RGB转换为温度和色调。我见过从RGB到Temperatur转换的算法和公式,但没有关于色调的。不过,我将继续尝试这一点。
任何帮助都非常感谢!
发布于 2013-04-12 21:11:41
经过大量的实验和数学运算,我终于让我的应用程序几乎按照我想要的方式工作了。
如果其他人会发现自己面临着类似的问题,那么我就是这么做的。
我最终使用了CITemperatureAndTint滤镜,提供了从所选像素的RGB值和用户提供的色调值计算出的开尔文颜色。
要到达Kelvins I:
中找到的McCamry公式从Yxy计算开尔文
这些步骤得到了大致的图像,但并不完全正确,所以我为用户添加了一个UISlider
,以提供从-100到100的色度值。
通过选择一个应该是白色的点,并从色调比例的正值中选择值(我手机上的所有图像都倾向于更黄),现在可以将图像转换为(更多)中性颜色。耶!
我提供了计算的温度和用户选择的色调作为inputNeutral
向量值。
6500 (D65日光)和0作为CITTemperatureAndTint过滤器的inputTargetNeutral
矢量值。
https://stackoverflow.com/questions/15925534
复制相似问题