代码之家  ›  专栏  ›  技术社区  ›  Joseph Weissman

将RGB光谱绘制为二维颜色矩阵?

  •  2
  • Joseph Weissman  · 技术社区  · 14 年前

    对于如何将RGB颜色空间绘制为二维矩阵有何建议?我需要对正在发生的事情进行理论描述;代码示例或伪代码会有帮助,但不是必需的。谢谢!

    3 回复  |  直到 14 年前
        1
  •  4
  •   Mac Cowell    10 年前

    如果要在二维网格中表示RGB空间中的每种颜色,可能无法避免结果中的不连续性/锐边。但是一些映射技术看起来会比其他技术更好。

    来自Possiblywrong.wordpress.com post的示例 allRGB: Hilbert curves and random spanning trees :

    • hilbert RGB 3D->2D

    • 像素随机生成树的宽度优先遍历,按希尔伯特曲线顺序分配颜色 Breadth-first traversal of random spanning tree of pixels, assigning colors in Hilbert curve order.

    也可以退房 allrgb.com “allRGB的目标很简单:为每种RGB颜色(16777216)创建一个像素的图像;不缺少一种颜色,也不缺少一种颜色两次。”

        2
  •  2
  •   Lie Ryan Bryan    14 年前

    如果你不想失去任何信息,你将需要使用三维。如果你能丢失一些维度信息,那就很容易了。就这样做:

    // or HSV
    int [256*256][256] colorMatrix;
    for (int r = 0; r < 256; r++) {
        for (int r = 0; r < 256; r++) {
            for (int r = 0; r < 256; r++) {
                colorMatrix[256*r+g][b] = color(r, g, b);
            }
        }
    }
    
        3
  •  1
  •   Jerry Coffin    14 年前

    对于2D来说并没有一个很好的答案,因为你真的需要三维。当然,可以将三维空间投影到二维空间上,但要保留相当数量的信息,您几乎需要提供正常的三维操作,以便可以从各种不同的角度等查看投影。