相关疑难解决方法(0)

有没有一种颜色混合的算法,就像混合真实颜色一样?

RGB颜色的常见混合与绘画的混合颜色非常不同,它是混合光而不是混合颜料.

例如:

Blue (0,0,255) + Yellow (255,255,0) = Grey (128,128,128)
Run Code Online (Sandbox Code Playgroud)

(它应该是蓝色+黄色=绿色)

是否有任何已知的混色算法,就像混合真实颜色一样?


我的方法

我已经尝试过以下内容:

将两种颜色转换为HSV并混合色调(乘以从饱和度计算的系数),以及饱和度和值通道的简单平均值.然后我从两种颜色计算平均亮度,并调整结果颜色以匹配此亮度.这很有效,但色调混合有时是错误的,例如:

Red (Hue 0°) + Blue (Hue 240°) = Green (Hue 120°)
Run Code Online (Sandbox Code Playgroud)

我发现有时我需要将色调值移动360°(当色调之间的差异大于180°时).

Red (Hue 360°) + Blue (Hue 240°) = Magenta/fuchsia (Hue 300°)
Run Code Online (Sandbox Code Playgroud)

但这种转变也不是很好,例如:

Cyan (Hue 179°) + Red (Hue 0°) = Hue 89.5°
Cyan (Hue 181°) + Red (Hue 0°) --> shifting is performed (the difference is greater than 180°)
Cyan (Hue 181°) + Red (Hue 360°) = Hue 270.5°
Run Code Online (Sandbox Code Playgroud)

(色调179 +红色)和(色调181 +红色)产生两种完全不同的颜色. …

language-agnostic algorithm blending colors color-space

59
推荐指数
3
解决办法
2万
查看次数

色轮背后的数学是什么?

我想创建一个包含12个切片的饼图,每个切片都有不同的颜色.

几乎每个色轮似乎都遵循相同的格式; 例如:http://www.tigercolor.com/color-lab/color-theory/color-theory-intro.htm.

但是有什么算法可以产生颜色?RGB(theta)背后的数学是什么?当然必须有一些既定的科学,但谷歌并没有给我任何线索.

math color-picker colors color-wheel

13
推荐指数
3
解决办法
2万
查看次数

将RGB颜色转换为CMYK?

我正在寻找一种算法将RGB颜色转换为CMYK.Photoshop正在执行以下转换:

R = 220 G = 233 B = 174

C = 15 M = 0 Y = 40 K = 0

c# photoshop rgb cmyk

8
推荐指数
3
解决办法
3万
查看次数

在HSV空间中添加/混合颜色

我一直试图让可视化进行几天.我正在生成衍射图像,并希望根据光的波长对其进行着色.
获得正确颜色的最简单方法是使用HSV空间,其中H随波长变化而S,V设置为1.0
Alas,我找不到在HSV空间中混合不同颜色的公式/算法/方式.

是否存在混合HSV或其他可理解方式的公式?

c++ colors hsv

7
推荐指数
2
解决办法
3202
查看次数

像油漆一样添加颜色(颜色)(蓝色+黄色=绿色等)

我正在使用cocos2d库制作iOS游戏.

假设您有两个具有两种不同颜色的对象 - 以RGB格式定义

Blue:    0,0,255
Yellow:  255,255,0
Run Code Online (Sandbox Code Playgroud)

我想添加蓝色和黄色来制作绿色.

为了使事情复杂化,让我们说Blue对象比Yellow对象更大(为了说明,我们说比例为2:1),我加入的蓝色是黄色的两倍 - 我如何计算这个新的(浅绿色)颜色正确.

我理解LAB*Color Space对于这种"自然色"的东西很有用,但我不知道如何使用它 - 特别是在cocos2d对象的上下文中,(AFAIK)仅限于在其中使用RGB配色方案.

我真的很感激如何实现这一点的实际帮助.谢谢堆!

21/4更新:所以在LAB*中蓝色+黄色≠绿色(当你看到它们位于同一个通道的两端时才有意义).它实际上是一个相当棘手的问题,一个 一点的讨论SO.似乎最终的答案是使用Kubelka-Munk方法,即一种名为Krita的开源软件.我找不到任何地方(公式或代码本身).

这个问题一个链接,它使用HSL以类似的方法绘制.我将尝试查看它是否有效,我将在此处反馈结果.

与此同时,如果有人知道如何实现Kubelka-Munk或者我可以找到代码来执行此操作,或者其他解决方案,我会非常非常激动!

c++ math colors objective-c cocos2d-iphone

6
推荐指数
2
解决办法
6404
查看次数

平均角度

我在这里看了一些解决方案,但没有提供我需要的东西,所以:

我需要平均一个角度数组(0到359.9,没有负数)(A1 + A2 + A3 + An)/ n

问题是当你得到一个数组{1,359,2,358}时,如果使用上面的公式,平均值是180,但实际上它应该是0.

有什么想法吗?

.net

4
推荐指数
1
解决办法
870
查看次数

计算混合颜色的RGB代码,假设红色,蓝色和黄色作为原色

浅色和油漆之间存在不匹配:虽然物理学家会说三原色是红色,绿色和蓝色,但画家会将红色,蓝色和黄色作为原色.事实上,当用水彩画画时,你不能混合红色,绿色和蓝色的黄色,而不是混合橙色,你只会变成棕色.

这是我正在尝试做的事情:从两种给定的RGB颜色我想计算组合颜色的RGB代码,我希望颜色像水彩一样混合在纸上.据我所知,计算通常如下所示:

  • #FF0000 +#0000FF =#880088((FF + 00)/ 2 = 88,(00 + 00)/ 2 = 00,(00 + FF)/ 2 = 88),所以红色和蓝色给出紫色(因为它应该)
  • #FF0000 +#FFFF00 =#FF8800((FF + FF)/ 2 = FF,(00 + FF)/ 2 = 88,(00 + 00)/ 2 = 00),所以红色和黄色给出橙色(因为它应该)

但是,当混合蓝色和黄色时,结果是灰色的:

  • #0000FF +#FFFF00 =#888888((00 + FF)/ 2 = 88,(00 + FF)/ 2 = 88,(FF + 00)/ 2 = 88)=灰色

在纸上你会期望变绿(#008800)并且在混合颜色时永远不会变灰.

所以我的问题是,我怎么能用绿色交换绿色作为原色,然后我怎样才能计算出符合油漆定律而不是浅色定律的混合色?

colors

2
推荐指数
1
解决办法
7118
查看次数