我目前正在尝试在RGB(红色,绿色,蓝色)颜色空间和RYB(红色,黄色,蓝色)颜色空间之间转换颜色。 在以下论文的详细信息上,我可以使用三联插值从RYB转换为RGB - 参数权重(S,T,U)是RYB颜色,Cube的顶点是RGB空间中的3D点。

问题描述 投票:0回答:1
通过注意颜色对比度将绘画风格转移到摄影图像中-Xiaoyan Zhang; 警员,M。; ying他;

在我使用方程式扩展这个问题之前,是否有人看到或以Java/c/c/c/c ++/c#?

的语言解决了此问题。 我当前的方法是采用三联插值(RYB至RGB)的前方方程,扩展和重新排列,以提供3个同时的方程,以适用于3个未知数(参数权重:S,T和U),然后使用Newton-Raphson方法来弄清楚如何找到根。我要以正确的方式去做吗?

我最终设法解决了它。

插入三线性插值的方程式: wikipedia

编辑:wikipedia修订时

缩放到最后一个方程式,扩展并收集以下方程式: XD,YD,ZD,XDYD,XDZD,YDZD,ZDYDZD和CONSTAND。

然后在XD,YD和ZD的每个三个维度中的每个维度中找到方程的部分分化。使用这些新方程式填充(3x3)Jacobian矩阵,然后使用Newton的方法在软件中求解。 newton-raphson方法

I发现了基于立方花纹的RYB-> RGB转换的JavaScript实现。这是我的lua端口(所有值在0-1间隔):

local ryb2rgb = function( R, Y, B ) local R, Y, B = R*R*(3-R-R), Y*Y*(3-Y-Y), B*B*(3-B-B) return 1.0 + B * ( R * (0.337 + Y * -0.137) + (-0.837 + Y * -0.163) ), 1.0 + B * ( -0.627 + Y * 0.287) + R * (-1.0 + Y * (0.5 + B * -0.693) - B * (-0.627) ), 1.0 + B * (-0.4 + Y * 0.6) - Y + R * ( -1.0 + B * (0.9 + Y * -1.1) + Y ) end

math rgb interpolation newtons-method
1个回答
7
投票
这里是uicolor的类别,它可以做同样的事情,在RGB,RYB和CMYK之间返回元素。此外,您可以在相应的颜色空间中混合任意数量的颜色(当然,它们以不同的方式混合在一起)。

https://github.com/ddelruss/uicolor-mixing

在这里进入来源;我想您会找到想要的东西:

https://github.com/profjski/artcolors

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.