STISPlot2.0

これはなに?もうすこし詳しく特徴は?使い方は?インスペクタパネルその他の機能は?
動作環境について既知の問題点その他の注意不具合の報告先ダウンロードin English

その他のアプリ

STISPlot Icon

これはなに?

STISPlotはエレベーションマップ(Elevation Map、ハイトマップHeight Mapともいう。土地の高さの値を平面に並べたもの)をもとにシングルイメージランダムドットステレオグラム(Single Image Random Dot Stereogram、SIRDS)を生成するアプリです。

こんな絵を出力します。

example

まるでゴッホの糸杉の一部のようですが、これには文字が書いてあります。読めるでしょうか?

もうすこし詳しく

2変数を持つ実数値関数

z = f (x, y)

の表示には、たとえば

  1. 透視図のような立体表示
  2. 等高線表示
  3. 濃淡表示

などがあります。その表示方法のひとつとして、シングルイメージランダムドットステレオグラムを使うことを考えました。つまり、2変数を平面に、関数の値を高さとみなして立体的に表示しよう、というものです。

シングルイメージランダムドットステレオグラムについてはWikipediaの記述をご覧ください。

名前はどういう意味?

アプリの名前は当初「RDSPlot」でした(Random Dot Stereogram Plot)。ぐぐってみるといっぱいヒットしてほとんど同じ目的のものもありました。ただし、多くはMathematicaパッケージでMacのネイティブアプリはありませんでした。

また、STISPlotは実際にはランダムな「ドット」を生成するものではなく、連続なテクスチャを使います。一般には抽象的なテクスチャでも「ランダムドット」と呼ばれてはいますが、ちょっとイメージが違います。

そこで、単一のテクスチャ画像でステレオグラムという意味で「Single Texture Image Stereogram(STIS)」という名前にしました。わざわざ説明するようなものでもありませんでしたが。

特徴は?

テクスチャはFFT(Fast Fourier Transform)によって生成されています。これがこのアプリの最大の特徴です。詳細は作者のブログを参照してください。

使い方は?

とりあえず、まずSTISPlotを起動して、メニューから「開く...」を選んで、

opendialog

ExampleMapフォルダにあるファイルを開いてみてください。しばらく計算したあと、表示されます。

firstsample

これは

z = sin (x y)

という関数をステレオグラムで表したものです。

上の例をよく見ていただきたいのですが、一般の自動生成したシングルイメージランダムドットステレオグラムによく見られる、パターンが繰り返されたつなぎ目である、縦に直線的な不連続になる部分が、このステレオグラムにはないことに注目して下さい。STISPlotで生成されたステレオグラムの特徴です。これは連続な関数を表示したときに注意をそらすようなことがなく、見やすくなります。

ところで、ステレオグラムを表示しているウィンドウはリサイズ(大きさの変更)できなくなっています。これはリサイズによってサンプリングノイズが発生し、立体視をしづらくしてしまうことを避けるためです。従って入力ファイルの大きさを適度なものにする必要があります。

入力ファイルは?

メニューの「開く...」から選ぶことのできるファイルにはいくつかあります。

テキスト形式はエクセルなどで使われるような、数字が表になったものです。1行が横方向に対応します。1行の中はカンマやスペースで区切られた数字として解釈できる文字列である必要があります。数字として解釈できない文字が含まれていた場合、読み込みに失敗します。

1行の長さは一定でなくてもかまいません。前詰め(画像上で左詰め)で足りない部分には0が埋められます。エクセルでデータを作る場合にはこのテキスト形式が便利です。ただしバージョンによっては最大行数があまり大きくなく、見やすい大きさの画像を作ることができない場合もあります。

画像形式は明るさがそのまま高さを表しているとして読み込みます。グレーの画像が望ましいですが、カラーの画像ファイルが指定されたときはRGBの平均値が高さだと解釈されます。読み込み可能なフォーマットは

カラーの場合、αチャンネルが含まれているとそれを無視します。また、グレーであってもαチャンネルつきのものや(バージョン2.0から読めるようになりました)、その他のCMYKなどのフォーマットでは正しく読み込むことができません。ImageJやPhotoshopなどでフォーマット変換をしてから利用してください。

たとえば、いちばん上の文字のステレオグラムの入力ファイルは

examplesource

でした。

インスペクタパネル

「ウィンドウ」メニューの「インスペクタ」を選択すると、小さなHUD型のパネルが開きます。

inspector

パネルにはいま、一番上に出ているウィンドウのステレオグラムのパラメータが表示されていて、変更することができます。変更しても乱数の系列は変わらないのでいつも似たパターンになります。上から順に説明します。

ファイル名

エレベーションマップのファイルの名前を表示します。これは変更できません。

テクスチャカラー

テクスチャの色を指定します。指定できるのは

の4種類です。これは、それぞれ変えてみてどのようになるか見るのが一番手っ取り早いです。

輻輳距離

テクスチャ繰り返しの横幅をピクセル単位で指定します。これで指定した距離だけ離れた点同士を両目で見ることで立体視ができます。これを大きくしすぎると目の調整範囲からはみ出してしまうので、見やすい値にしてください。なお、見やすさはディスプレイのサイズなどにも影響されます。

最大高さ

この値を大きくすると高いところが、より高く飛び出して見えるようになります。しかし現在のバージョンでは最大値は「輻輳距離」の値を超えられません。もし、たくさん飛び出させたいなら、「輻輳距離」の値も大きくしてください。

視差調整マーカ

目の調整の目安となるマーカの表示法を変更します。マーカなし、上辺、下辺の3通りが指定可能です。大きさや色は現在のバージョンでは変更できません。カラーのステレオグラムでは緑色の丸、モノクロでは黒い丸が表示されます。

平均粒径

テクスチャの典型的な大きさをピクセル単位で設定します。小さくするとテクスチャはより細かくなります。1以下の値を指定することはできません。

エレベーションマップが複雑で細かな構造がある場合にはこの値を小さくしてください。ただし、あまり小さくしすぎると目の焦点が合わせづらくなります。逆に大きくしすぎると高さの情報が得られる点が少なくなって形がわかりにくくなります。

「平均粒径」のパラメータは縦方向と横方向が独立に設定できます。縦を大きく横を小さくするとテクスチャは縦に細長いパターンになります。

細かな構造を見たいときには、一般的に横方向の値を小さめに、縦方向の値を大きめにした方が見やすくなります。

乱数の再発生

乱数の種(seed)を変更します。種はボタンをクリックした瞬間の時刻から作られます。値を指定することはできません。他のパラメータを変更してもこのボタンをクリックしない限りは種は変更されず、いつも同じ乱数系列が使われます。

その他の機能は?

一旦作ったステレオグラムは専用のstisという拡張子を持ったファイルとして保存できます。一旦保存したものを読み込み直すと、テクスチャまで含めて再現します。また読み込み直したものでも、パラメータを変更することができます。stisファイルにはエレベーションマップの値も保持されますので、もとのエレベーションマップがなくても再現させることができます。逆にエレベーションマップを含んでいるのでかなり大きなサイズのファイルになってしまいますのでご注意ください。

stisファイルを読み込んだのではない場合(csvやTIFFのエレベーションマップを「開く...」で読んだ場合)には、「保存」メニューは使えません。その場合は「別名で保存」を選ぶことでstisファイルとして保存できます。

画像をTIFF形式でファイルに保存することができます。「ファイル」メニューの「エクスポート...」を選んでください。また現在のバージョンではプリント機能は実装されていません。エクスポートしてからプレビューなどで開いてプリントしてください。

また、サンプルをたくさん用意しました。Examplesフォルダの中を見て下さい。

特に、Zernike Map Generatorというサンプルデータ作成用のアプリが含まれています。2変数実数値関数の典型であり、単位円内で直交する連続関数系であるZernike多項式の係数を指定すると、値を計算してSTISPlotで読み込めるファイルを出力します。

Zernike多項式は光学屋以外にはあまり馴染みはないと思いますが、係数を適当に指定してSTISPlotで見てみると、円の中にいろいろな凹凸が現れます。多項式の次数が大きいほど凸凹は細かくなります。また、光学屋さんには、収差の具体的なイメージトレーニングに使って欲しいと思います。直感を養うのに役に立ちます。直感を養ってどうするんだ、という議論は残りますが...

動作環境

STISPlotはMac OS X10.5以降で動作します。PowerPC32ビット、Intel32、64ビットの3アーキテクチャユニバーサルバイナリです。10.7Lionでも動作可能なはずですが、確認していません。また、10.4以前、あるいはWindowsその他のOSでは動作しません。

既知の問題点と変更点

これを書いている時点でのバージョンとビルドナンバは2.0 (20110802a)です。

バージョンとビルドナンバ1.0a (20110724b)からの変更点。

その他の注意

STISPlotは、今後発生するであろうバージョンも含めてGPLに準拠します。なぜ、これまでライセンスに無頓着だったのに、急にGPLなんて言い出すか、と言えば、まあそれは想像にお任せします。

不具合の報告先

バグレポートは
decafish@gmail.com
までお願いします。アプリの感想も歓迎します。

プログラミングに関する技術的な詳細は、作者のサイトにあります。バグレポートをコメント欄に入れていただいてもかまいません。

ダウンロード

STISPlot2.0はここから。ExampleMapフォルダが大きいのでサイズが30MBほどになっています。ご注意ください。

STISPlot2.0、Zernike Map generator1.0のXcodeプロジェクト形式のソースはここから