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

时间:2010-10-17 03:50:14

标签: colors matrix rgb color-space

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

3 个答案:

答案 0 :(得分:4)

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

来自Possiblywrong.wordpress.com的帖子allRGB: Hilbert curves and random spanning trees

  • 通过2维(12阶)希尔伯特曲线遍历图像的像素,同时通过3维(8阶)希尔伯特曲线遍历RGB彩色立方体,分配每个像素依次为相应的颜色 hilbert RGB 3D->2D

  • “广度优先遍历随机生成的像素树,以希尔伯特曲线顺序指定颜色。” Breadth-first traversal of random spanning tree of pixels, assigning colors in Hilbert curve order.

同时查看allrgb.com,“allRGB的目标很简单:为每种RGB颜色创建一个像素的图像(16777216);没有一种颜色缺失,而不是一种颜色两次。”

答案 1 :(得分:2)

如果您不想丢失任何信息,则需要使用三维。如果你丢失了一些尺寸信息,那就很容易了。就这样做:

// 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);
        }
    }
}

答案 2 :(得分:1)

对于2D来说,确实没有一个好的答案,因为你真的需要3个维度。当然,您可以将3D空间投影到2D上,但要保留您提供正常3D操作所需的大量信息,这样您就可以看到从不同角度观看的投影等。