5

ヒルベルト曲線に基づく画像スキャンのこの方法。曲線は次のようになります (1 ~ 6 次): ここに画像の説明を入力

イメージスキャンに使用できます。たとえば、3 次曲線のコードは次のとおりです。

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英語は私にはまだ難しいです。何か不明な点があれば、私に聞いてください。

4

1 に答える 1