ヒルベルト曲線を検討することをお勧めします。これは、高次元 (2、3、またはそれ以上) の空間への 1 次元曲線の埋め込みです。
1d 曲線を 2 次元色空間にマッピングした場合は、次のようになります。白い曲線には 2^16 = 65,536 ポイントがあり、2^8 x 2^8 = 256 x 256 次元の色空間に埋め込まれています。曲線上の任意の 2 つの隣接点は非常に似ています。
コードを手元に持っていませんが、これを一般化して曲線を 3 次元に埋め込むことは可能です。必要に応じて、このプロットを生成する Matlab コードを利用できるようにすることができますが、それが非常に役立つとは確信していません...
これは、画像全体でヒルベルト曲線をたどることで得られるカラー スケールです。それほど直感的ではありませんが、65,536 色すべてをカバーしています。
編集- これがコードです
function [x,y] = d2xy(n,d)
# D2XY Embeds a point d into an n*n square (assuming n is a power of 2). For
# example, if n = 8 then we can embed the points d = 0:63 into it.
x = uint32(0);
y = uint32(0);
t = uint32(d);
n = uint32(n);
s = uint32(1);
while s < n
rx = bitand(1, idivide(t, 2));
ry = bitand(1, bitxor(t,rx));
[x,y] = rot(s,x,y,rx,ry);
x = x + s * rx;
y = y + s * ry;
t = idivide(t, 4);
s = s * 2;
end
end
function [x,y] = rot(n,x,y,rx,ry)
if ry == 0
if rx == 1
x = n-1-x;
y = n-1-y;
end
# Swap x and y
t = x; x = y; y = t;
end
end
b = zeros(65536, 2);
for d = 0:65535
[x,y] = d2xy(256, d);
b(d+1,1) = x;
b(d+1,2) = y;
end
plot(b(:,1), b(:,2)), xlim([-1,256]), ylim([-1,256]), axis square