任何关于如何将RGB颜色空间绘制为2D矩阵的建议?我需要一个理论上的描述;代码示例或伪代码会很有帮助,但不是必需的。谢谢!
通过二维(12阶)Hilbert曲线遍历图像的像素,同时通过三维(8阶)Hilbert曲线遍历RGB颜色立方体,依次为每个像素分配相应的颜色
“广度优先遍历像素的随机生成树,按照Hilbert曲线顺序分配颜色。”
也请查看allrgb.com,"allRGB的目标很简单:创建具有每个RGB颜色(16777216)一个像素的图像;没有遗漏的颜色,也没有重复的颜色。"
如果你不想失去任何信息,那么你需要使用三个维度进行存储。但如果可以丢失一些维度的信息,那就很容易了。只需按照以下方式操作:
// 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);
}
}
}
arr[r*(256*256)+g*256+b]
或者arr[(r*256+g)*256+b]
。 - Lie Ryan对于二维来说,其实并没有一个很好的答案,因为你真正需要的是三个维度。当然,你可以将三维空间投影到二维上,但为了保留足够的信息量,你几乎需要提供正常的三维操作,这样你才能从不同的角度看到投影。