SSブログ

ランダムドットステレオグラムアプリ - その5 [ランダムドットステレオグラムアプリ]

先日シングルイメージランダムドットステレオグラムの原理を簡単にまとめた。2次元実数値関数の表示として、パッと表示してパッと見るためにはちょうどいいということがわかる。

今日から数学の詳細を整理し直すことにする。

1.3  具体的なアルゴリズム

さっきまでは連続なエレベーションマップ考えていたけど、pqを整数としたエレベーションマップ(高さの値を並べた配列)
0709eq16.png
が与えられたとき、ランダムドットステレオグラムS(pq)を作るアルゴリズムを考える。変数pに対応する方向が横方向(目が並ぶ方向)であるとする。エレベーションマップの値は実数値をとる、とする。

テクスチャタイルを
0709eq17.png
とする。T(pq)自身は何を表しているかと言うと、場所ごとの明るさや色を割り振った2次元配列だと思えばいい。テクスチャタイルは連続な量のほうが議論は簡単になるけど、今回FFTを使って作るつもりなのでエレベーションマップと同じ解像度を持った画像であるとする。

テクスチャタイルは与えられたHeight mapと同じ高さqhが必要である。一方幅pTはこの値が背景の壁の位置での輻輳に対応する。

S(pq)の横幅をpSとすると
0709eq18.png
である。

もしh(pq)が恒等的に0だった場合
0709eq19.png
となる。ここでp   mod   pTpの値をpTで割ったあまりである。つまり、横方向にテクスチャタイルが繰り返し並ぶことになる(だから「タイル」なんだけど)。

簡単のため、左右にふたつのタイルを連続に(間を空けないで)並べて、左側を左目で、右側を右目で(そういう見方を、平行法というらしい)見ることを考える。

左側のタイルを基準に右側のタイルを変形してh(pq) の立体視ができるようにしたい。

まず、タイルをTn(ρ, q)と表す。ρはタイルごとに原点を持った整数の変数で
0709eq20.png
であるとする。ここでρL、ρRはそれぞれ左目用として、右目用としてみたときのρで、このように二通り必要になる。しかし面倒だし、文脈から読み分けられるのでこのあとは区別せずρとだけ書くことにする。

式-11から左目用の基準タイルをT0(ρ, q)として、右目用タイルT1(ρ, q)は
0709eq22.png
となる。ただし|| a ||はここでは簡単のため整数に丸めることを表すとする。あとからこれは修正する。

もし
0709eq23.png
の範囲に入れば、難しいことを考えなくてもいいけど、それ以外は参照すべき基準タイルの外に出てしまうので、工夫を要する。

まず、ρ+|| αh(pq) ||が負になる場合、これはのちのちの面倒を避けるため、そもそも発生しないことにする。つまりElevation mapを新しく
0709eq24.png
ただし
0709eq24a.png
とnormalizeして、この大文字のHのほうを使うことにする。こうすればH(pq)は0 ... pTの範囲に入って負になることはなくなる。場合分けをした細工は、別の制限からであるが、後で説明する、忘れなければ。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立07/09献立07/10 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。