SSブログ

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

この週末に横浜のうちに帰っていて、先週までの記述を見返していて不満を持った。ぐちゃぐちゃだわ。考えながら書いてるにしても、なんのためにわざわざ式を使って書いてるのか、これでは意味がない。式で書くのは、そのほうが簡潔なのに表現力が高いからであって、簡単にはなってないわ、わかりにくいわ、で悪い見本のようなものだと思い至った。
ということで、昨日までのところをチャラにしてアルゴリズム整理の最初に戻る。

1.4  アルゴリズムの整理

行き当たりばったりに書いてきた具体的なアルゴリズムを、ノーテーションの整理も含めて見通しが良いように全部やりなおす。

1.4.1  与えられた量と定義域のまとめ

シングルイメージランダムドットステレオグラム(Single Image Random Dot Stereogram、SIRDS)を自動生成するアルゴリズムをまとめる。与えられたエレベーションマップをh(pq)とする。ここで
0719eq42.png
というような整数の範囲で定義されているとする。

また、テクスチャタイルT0(pq)は画像のような、色や明るさの配列であって同様に
0719eq43.png
であるとする。

そして最終的なステレオグラムをS(pq)とすると定義域は
0719eq44.png
でなければならない。図-7参照。
0719fis07.png
当然S(pq)の要素はT(pq)の要素と同じ物理量を表す(実装上は8ビットグレーやARGBなどの同じ型である)。

1.4.2  配置

まず、S(pq)の中央にT0(pq)を配置する。

そしてそのすぐ右側にT1(pq)、さらにT2(pq) ...Tn(pq)を、S(pq)の幅いっぱいになるまで配置する。また左側にT−1(pq) ... Tn(pq)を配置する。このT0以外のTih(pq)からT0(pq)を使って決定することが目的である。

1.4.3  規格化

まずh(pq)を規格化した
0719eq45.png
を作る。これは最小値が0で最大値が1になるようにh(pq)を線形変換したものとする。

まえはαというパラメータを別にしていたが、これも
0719eq46.png
となるように規格化する。与えられたαの値がこれを超えるときは、この範囲に入るように制限する(実装上はユーザにアラートを表示するなりなんなりして、値を修正する)。

1.4.4  ノーテーションの簡略

これ以降、縦方向を指定する変数qを省略する。ステレオグラムを作るうえで上下の関係はなく、つねに同じqが現れるだけなので
0719eq47.png
という意味だと思って読んでほしい。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

献立07/19献立07/20 ブログトップ

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