微小移動の検出

センサ

はじめに

TouchDesignerは映像を作るプログラムですが、Monogokoroでは、非線形現象の理解、錯覚、物理モデルの作製、センサー、哲学の応用、プログラムを介した身体化、ナラティブ、そうした分野に応用しようとしています。今回は、TouchDesignerを使ったセンサーの検討です。

昔書いたプログラムがどこにしまったのか分からなくなることはしばしばあります。探している過程で、これかな、これかな、という感じで開いていくわけですが、見ると「あー、こんなこともしてたなー」と、思い出したりします。今回はそうしておもいもかけず再発見したプログラムを改良した例です。当時と今ではそのプログラムに対する解釈が全く違っていました。当時は単に映像の変化が面白く感じておりましたが、具体的な応用は思いつかず、そのままになっていました。今回は、微小信号検出に使えると直観しました。

微小移動の検出

まず検出前の映像を見ていただきます。音は付けていません。映像は通常の1/100のスピードで再生しているので、大変ゆっくり動いています。注意して見ていただけると、僅かに移動していることが分かると思います。このようなほんの僅かな映像変化を如何に検出するのかが課題です。

検出するプログラムの説明を最初に致します。

入力は上で示したニューロンの映像です。実際はカメラ映像、あるいはそれを加工した映像を想定しています。映像をedge検出、threshold検出してtrace SOPでTOPからSOPへ変換します。これは前処理です。次の処理が今回のポイントです。SOPに変換した映像をchop to SOPによって位置のデータに変換します。位置データはtx,ty, tzの形で得ます。このデータをgeo COMPに入れて立方体をインスタンシングして映像化します。geo COMPにはtx, ty, tyでインスタンシングします。そして下のgeo COMPには一旦filter CHOPを入れた後のtx, ty, tyでインスタンシングします。tzは全てゼロですので使いません。tx, ty, tyとすることで、3D映像に見せています。重要なのは。filter CHOPの有り無しです。filterはローパスフィルターなので、直観的には映像の微小な位置変化をなまらせて、分かりにくくすると思いがちです。しかし完全に入力が静止していない限り、必ず出力が変化し続けます。これを式で説明すると、一次遅れ系ですから、恐らく次のようになるでしょう。u(t)を入力の位置、v(t)を出力の位置とすると、

TouchDesignerのframe速度は正しくは状況によって変わりますが、基本は1/60 sです。ですのでαの項は常に差があり、v(t)は常に動きます。これに対してfilter CHOPのパラメータFilter Widthはどれぐらい前から積算するかですので、1s, 2sといったスケールが使えます。つまりframeの更新レートより十分に長いのです。これが積算されて出力されるので、出力の位置v(t)は積算つまり増幅されて現われます。Filter Widthを大きくすると、変化が大きく見えます(応答は遅くなります)。勿論静止している場合は、filterが有っても無くても同じインスタンシングの結果になります。つまりfilter CHOPは揺らぎ検出器及び増幅器として機能します。この部分がプログラムを使ったセンサです。これはframeレートで動くディジタル信号処理だから起こる現象だと推測します。連続時間を扱うハードウエアのアナログフィルタではこうはならないでしょう。それではfilter CHOPを入れた場合と入れていない場合の映像を比較してみましょう。Filter Widthは2sの場合です。

左側がfiter無しで、右側がfilter有りの場合です。有りの場合は大きく動いていることが分かります。元映像の僅かな動きが、目で見てよくわかる映像に増幅されています。

プログラムの説明に戻りますが、filterの有り無しの映像の差を数値化しています。この映像の差分を取って数値化する手法は一般的なモノです。composite TOPで画像の差をとり、analyze TOPで平均を得ます。さらにtrail CHOP, analyze CHOPの組み合わせで平均時間を長くしています。チョットした注意点ですが、映像では大きな違いですが、ピクセス数では黒いところが多いことから分るように、全面が動いているわけではありません。ですので検出する値は小さいです。そこで、analyze TOPのPixel Formatは32 bit float(RGBA)を使って高分解能にして使いました。

それではもう一つの例を示します。入力がトーマスのストレンジアトラクターの場合です。アトラクタは見かけ上形状は変わっていないように見えます。粒子は常に動いていますが、軌道はほんの僅かしかかわらないため、見た目ではわかりにくいのです。そこでこの違いを観測することができるのではないかと思いました。次がその映像です。

左側がfilter CHOPが無い場合、右側が入った場合です。左上にトーマスのストレンジアトラクターの映像があります。右側は常に動いていることがわかります。

このように、目でみていると動きがわからないような映像でも、それが動いているのかどうかを検出することができました。

まとめ

ほとんど動いていないように見える映像が、動いているかどうかを判断する方法を示しました。画像センサに相当します。映像を位置情報に変換し、位置情報をfilter CHOPに入れてからインスタンシングすることが特徴です。frame毎に計算するディジタル信号処理とfilter CHOPのFilter Widthとの差を利用して、位置を積算することで移動を増幅して見せています。ディジタル信号処理ならではの方法です。長時間の観察を必要とせず判断できるので、多くの応用があると思います。

コメント