这种基于希尔伯特曲线的图像扫描方法。曲线看起来像(从 1 到 6 阶):
它可用于图像扫描。因此,例如,我的三阶曲线代码是:
Hilbert=[C(1,1) C(1,2) C(2,2) C(2,1) C(3,1) C(4,1) C(4,2) C(3,2) C(3,3) C(4,3) C(4,4) C(3,4)...
C(2,4) C(2,3) C(1,3) C(1,4) C(1,5) C(2,5) C(2,6) C(1,6) C(1,7) C(1,8) C(2,8) C(2,7)...
C(3,7) C(3,8) C(4,8) C(4,7) C(4,6) C(3,6) C(3,5) C(4,5) C(5,5) C(6,5) C(6,6) C(5,6)...
C(5,7) C(5,8) C(6,8) C(6,7) C(7,7) C(7,8) C(8,8) C(8,7) C(8,6) C(7,6) C(7,5) C(8,5)...
C(8,4) C(8,3) C(7,3) C(7,4) C(6,4) C(5,4) C(5,3) C(6,3) C(6,2) C(5,2) C(5,1) C(6,1)...
C(7,1) C(7,2) C(8,2) C(8,1)];
而且它工作得很快。我为 8 阶和 9 阶曲线制作了相同的函数,但它的工作速度非常非常慢。9阶,也许,永远不会结束。至少,我没有耐心等待结束 - 2小时后我刚刚关闭了程序。但 7 阶曲线运行 15 秒。怎么了?我可以做同样的事情,但更快吗?是的,程序需要读取 512 * 512 个数组元素,但让它更快也不是不可能。
所以,我到底需要什么 - 我有数组元素的坐标,它们按应该读取的顺序排列。我需要可接受的时间来读取它们并写入新数组。怎么做?
ps 英语对我来说仍然很难,如果有不清楚的地方 - 请问我。