如何将复数编码为RGB像素,反之亦然?
可能(对数)绝对值变为亮度,参数变为色调。
去饱和像素应在逆向变换中接收随机参数。
Something like: 0 -> (0,0,0) 1 -> (255,0,0) -1 -> (0,255,255) 0.5 -> (128,0,0) i -> (255,255,0) -i -> (255,0,255) (0,0,0) -> 0 (255,255,255) -> e^(i * random) (128,128,128) -> 0.5 * e^(i *random) (0,128,128) -> -0.5
是否有现成的公式?
编辑:看起来我只需要将RGB转换为HSB并返回。
编辑2:现有RGB - > HSV转换器片段:
if (hsv.sat == 0) { hsv.hue = 0; // ! return hsv; }
我不想要0.我想要随机。而且不仅仅是hsv.sat==0
,而是它应该更低(“应该是”意味着最大饱和度,饱和度是从复数转换后的。)
答案 0 :(得分:4)
你会遇到很多问题:
| RGB | = 2 ^ 24 和 | C | =?
假设您的复数设置是有限且离散的,我认为RGB系统的最佳方法是这样的:
笛卡尔轴:
极轴:
我认为这将是独一无二的,有点语义:类似计数器网格和地理地图着色以及医学图像分析。
您可以改用HSL系统和极轴:
你想用这种编码做什么?
答案 1 :(得分:0)
首先对你的问题发表几点意见:
也许您可以使用复数形式的极性形式并将它们映射到HSV等色轮,并修复了V?由于复数的大小可以是无限的,因此您可能无法将它们映射到任何颜色模型,所有这些(我所知道的都是)都是有界的。也许您可以使用非欧几里德几何将复数映射到单位圆。
但是,为了回答你的问题,我从来没有遇到任何现成的问题解决方案。
我们等着向SO学习。
答案 2 :(得分:0)
看起来OP有一个不同的问题......但无论如何,这里有一个地方。它是GPL代码,因此您可以根据需要使用它。
Sage的complex_to_rgb函数通过Numpy和Python实现了这一功能。 Mathematica有这么复杂的情节(事实上Sage的灵感来自于它们),所以可能它内部也有这样的东西,尽管可能不是代码。