曲がった迷路その13 - バイキュービック補間 [曲がった壁を持つ迷路の生成]
さて、離散的な格子点の上で定義されたポテンシャルの値を補間したい。一昨日Bezier曲線を2次元に拡張して使おうとしたけど、それはお先走りで今回のような補間には使えないことがわかった。もっとシンプルにサンプリング定理の教えの通りシンク補間を考えよう。
スプライン補間とバイキュービック補間
スペックルパターンをポテンシャル関数に使うと2次元のエレベーションを補間する必要がある。普通はスプライン補間を使うが、その場合一点の変更がすべての補間関数に影響を与える。
もっと局所的な補間が望ましい。
画像データの補間法としてバイキュービック補間と言うのがある。
これはもともと連続なデータが、サンプリングされて整数化されたものであると見なして、シンク関数の近似関数を使って周辺16点(1次元では4点)から補間値を得るものである。
具体的な関数は例えばデータのある格子点からの距離をδ(>0)とすると
などが使われる。近似関数は係数を整数にするようなのが選ばれることが多いらしい。結論しか書かれていないことが多いのでなぜそうなっているのかはわからない。どっちかと言えば浮動小数点演算のパフォーマンスが低かった時代には相性が良かったということだろうと思っている。あとで僕が勝手に考えた理由づけを示す。
図-22にシンク関数との比較を示す。 これは[0,1)区間ではシンク関数のかなりいい近似(最大偏差で約0.013)だけど、[1,2)区間ではかなり過小評価になっていることが図からわかる。これは区間[1,2)ではシンク関数の値は負になって、画像に適用した場合エッジ強調の効果が出てしまうため手心を加える効果もある。本当のところはよく知らない。また、これ以外の関数も使われるらしい。バイキュービック補間は局所的な補間になっているので、今回の場合にマッチする。でも、式-31をそのまま使うのはバカ正直すぎて面白くないので関数は自分なりに考えることにする。
2009-07-18 18:30
nice!(0)
コメント(0)
トラックバック(0)
コメント 0