ランダムドットステレオグラムアプリ - その5 [ランダムドットステレオグラムアプリ]
先日シングルイメージランダムドットステレオグラムの原理を簡単にまとめた。2次元実数値関数の表示として、パッと表示してパッと見るためにはちょうどいいということがわかる。
今日から数学の詳細を整理し直すことにする。
テクスチャタイルを とする。T(p, q)自身は何を表しているかと言うと、場所ごとの明るさや色を割り振った2次元配列だと思えばいい。テクスチャタイルは連続な量のほうが議論は簡単になるけど、今回FFTを使って作るつもりなのでエレベーションマップと同じ解像度を持った画像であるとする。
テクスチャタイルは与えられたHeight mapと同じ高さqhが必要である。一方幅pTはこの値が背景の壁の位置での輻輳に対応する。
S(p, q)の横幅をpSとすると である。
もしh(p, q)が恒等的に0だった場合 となる。ここでp mod pTはpの値をpTで割ったあまりである。つまり、横方向にテクスチャタイルが繰り返し並ぶことになる(だから「タイル」なんだけど)。
簡単のため、左右にふたつのタイルを連続に(間を空けないで)並べて、左側を左目で、右側を右目で(そういう見方を、平行法というらしい)見ることを考える。
左側のタイルを基準に右側のタイルを変形してh(p, q) の立体視ができるようにしたい。
まず、タイルをTn(ρ, q)と表す。ρはタイルごとに原点を持った整数の変数で であるとする。ここでρL、ρRはそれぞれ左目用として、右目用としてみたときのρで、このように二通り必要になる。しかし面倒だし、文脈から読み分けられるのでこのあとは区別せずρとだけ書くことにする。
式-11から左目用の基準タイルをT0(ρ, q)として、右目用タイルT1(ρ, q)は となる。ただし|| a ||はここでは簡単のため整数に丸めることを表すとする。あとからこれは修正する。
もし の範囲に入れば、難しいことを考えなくてもいいけど、それ以外は参照すべき基準タイルの外に出てしまうので、工夫を要する。
まず、ρ+|| αh(p, q) ||が負になる場合、これはのちのちの面倒を避けるため、そもそも発生しないことにする。つまりElevation mapを新しく ただし とnormalizeして、この大文字のHのほうを使うことにする。こうすればH(p, q)は0 ... pTの範囲に入って負になることはなくなる。場合分けをした細工は、別の制限からであるが、後で説明する、忘れなければ。
今日から数学の詳細を整理し直すことにする。
1.3 具体的なアルゴリズム
さっきまでは連続なエレベーションマップ考えていたけど、pとqを整数としたエレベーションマップ(高さの値を並べた配列) が与えられたとき、ランダムドットステレオグラムS(p, q)を作るアルゴリズムを考える。変数pに対応する方向が横方向(目が並ぶ方向)であるとする。エレベーションマップの値は実数値をとる、とする。テクスチャタイルを とする。T(p, q)自身は何を表しているかと言うと、場所ごとの明るさや色を割り振った2次元配列だと思えばいい。テクスチャタイルは連続な量のほうが議論は簡単になるけど、今回FFTを使って作るつもりなのでエレベーションマップと同じ解像度を持った画像であるとする。
テクスチャタイルは与えられたHeight mapと同じ高さqhが必要である。一方幅pTはこの値が背景の壁の位置での輻輳に対応する。
S(p, q)の横幅をpSとすると である。
もしh(p, q)が恒等的に0だった場合 となる。ここでp mod pTはpの値をpTで割ったあまりである。つまり、横方向にテクスチャタイルが繰り返し並ぶことになる(だから「タイル」なんだけど)。
簡単のため、左右にふたつのタイルを連続に(間を空けないで)並べて、左側を左目で、右側を右目で(そういう見方を、平行法というらしい)見ることを考える。
左側のタイルを基準に右側のタイルを変形してh(p, q) の立体視ができるようにしたい。
まず、タイルをTn(ρ, q)と表す。ρはタイルごとに原点を持った整数の変数で であるとする。ここでρL、ρRはそれぞれ左目用として、右目用としてみたときのρで、このように二通り必要になる。しかし面倒だし、文脈から読み分けられるのでこのあとは区別せずρとだけ書くことにする。
式-11から左目用の基準タイルをT0(ρ, q)として、右目用タイルT1(ρ, q)は となる。ただし|| a ||はここでは簡単のため整数に丸めることを表すとする。あとからこれは修正する。
もし の範囲に入れば、難しいことを考えなくてもいいけど、それ以外は参照すべき基準タイルの外に出てしまうので、工夫を要する。
まず、ρ+|| αh(p, q) ||が負になる場合、これはのちのちの面倒を避けるため、そもそも発生しないことにする。つまりElevation mapを新しく ただし とnormalizeして、この大文字のHのほうを使うことにする。こうすればH(p, q)は0 ... pTの範囲に入って負になることはなくなる。場合分けをした細工は、別の制限からであるが、後で説明する、忘れなければ。
2011-07-09 21:18
nice!(0)
コメント(0)
トラックバック(0)
コメント 0