1

将复数编码为 RGB 像素,反之亦然?

可能(的对数)绝对值是亮度,一个参数是色调。

去饱和像素应该在反向转换中接收随机参数。

就像是:
0 -> (0,0,0)
1 -> (255,0,0)
-1 -> (0,255,255)
0.5 -> (128,0,0)
我 -> (255,255,0)
-i -> (255,0,255)

(0,0,0) -> 0
(255,255,255) -> e^(i * 随机)
(128,128,128) -> 0.5 * e^(i *随机)
(0,128,128) -> -0.5

有现成的公式吗?

编辑:看起来我只需要将 RGB 转换为 HSB 并返回。

编辑 2:现有 RGB -> HSV 转换器片段:

如果(hsv.sat == 0){
    hsv.hue = 0; // !
    返回hsv;
}

我不想要 0。我想要随机。不只是 if hsv.sat==0,而是它应该更低(“应该”是指最大饱和度,即从复数转换后的饱和度)。

4

3 回答 3

4

你会遇到很多问题:

|RGB|=2^24|C|=?

假设您的复数集是有限且离散的,我认为 RGB 系统的最佳方法是这样的:
笛卡尔轴:

替代文字

极轴:

替代文字

我认为它将是独一无二的,并且有点语义:比如计数器网格和地理地图的着色和医学图像分析。

您可以改用 HSL 系统和极轴:

替代文字

你想用这个编码做什么?

于 2010-04-02T15:23:17.180 回答
0

首先对您的问题发表几点评论:

  • 1+i -> (510,255,0) ?
  • “亮度”和“色调”通常是 HSV 颜色模型的组成部分,而不是 RGB

也许您可以使用复数的极坐标形式并将它们映射到色轮,例如 V 固定的 HSV?由于复数的大小可能是无限的,因此您可能无法将它们映射到任何颜色模型,所有这些模型(好吧,我所知道的所有模型都是有界的)。也许您可以使用非欧几里得几何将复数映射到单位圆。

但是,为了回答你的问题,我从来没有遇到过任何现成的解决方案来解决你的问题。

我们等待向 SO 学习。

于 2010-04-02T13:44:27.963 回答
0

OP 似乎有一个不同的问题......但无论如何,这是一个被合并的地方。它是 GPL 代码,因此您可以根据需要使用它。

Sage 的complex_to_rgb函数可以使用 Numpy 和 Python 完成此操作。Mathematica 有如此复杂的情节(事实上,Sage 的灵感来自于它们),所以大概它内部也有类似的东西,尽管可能不是代码。

于 2011-06-08T22:26:04.640 回答