筆者がC++ Builder 6で最初に作ったアプリケーションです
Unit1.cppの冒頭を眺めるに、
correlation panel
2002-9-18 pre-release 0.9 changed sourceframebuf,destframebuf and rframe
to dynamic dllocation array for variable size buffer
ex. generic AVI file Test OK
Poof sizeof(sourceframebuf) [y][x] -> [y*iw+x] was easy
DispFrame implementation
2002-9-19 0.91 Poof setdestroi diffx and diffy slipped
should take account into frame speed in AVI case
2002-9-20 0.95 Split forms into 3 parts. Now can display larger images.
Source and target.
to do list : each image plane dump
spatial calibration
geometric calibration ( if any )
handling ROIs = multiple object tracking
cursor coloring
とか書いてありますから、2002年9月18日から作り始めたらしいです。すでに22年以上前です。C++ Builder 6はWikipediaによれば、
C++Builder 6
[編集]
2001年。GUIライブラリにVCLに加えクロスプラットフォームのComponent Library for Cross Platform (CLX) を追加した。CLXはWindowsとGNU/Linuxの二つのプラットフォームをサポートするが、CLXを用いたGNU/Linuxの開発ができたのは別製品のKylixのみ。C++BuilderにCLXが搭載されたのはこのバージョンのみで、以降のバージョンに採用されることはなかった。
ということなので、出たばかりのプラットフォームを使って手探りで作り始めた微かな記憶があります。
さて、VMAPはVersatile Motion Analysis Program for High Speed Videographyということで、筆者の造語ですが、高速度ビデオ等で得られた動画を解析して、ターゲットの運動軌跡を求めることが目的です。そのパネルは、

こんな感じです。”Open”から解析対象のファイルを開いていますが、サポートするファイルは拡張子がAVIかDATです。DATは島津製作所の高速度ビデオカメラで撮影されたファイルで、当時はプロトタイプのカメラで実験していました。今でも製品はあるようです。
実際は、スタートフレーム(駒)とエンドフレーム(駒)を指定して、

ROI (Region of Interest)を指定して、


右側の方にある”Sequential”をクリックすれば、フレーム毎に位置を判定します。動画は、
結果をAVIファイルに書き出すこともできます。
PCに使われる冷却ファンに数字レタリングを貼り付け比較的高速で回転させています。上に表示された軌跡は表示の関係で画素単位ですが、データとしてはサブピクセル単位で得ています。VMAP自体にはグラフを描く機能はありませんので、外部プログラムに”委託”して表示します。使えるのはこのブログでもおなじみのエクセルとIgor Proです、使えるものから選択してグラフ化できます。

エクセルはOle経由で駆動しており、Igor Proの方はDDE経由で駆動しています。エクセルでのグラフは、

シートの方には解析データが入ります。

撮影速度は自動的にDATから読み込んでおり、1駒で0.00005secですから、毎秒2000駒だったということになります。
Igor Proでは、

このようなグラフになります。
回転角度のAngleもパラメーターで加えたグラフは、

時間に対してAngleがリニアに変化しているのがわかります。トレースがうまくいっている兆候ですね。もちろん対象の誤差は含んでいるので、完全な直線ではないですね。
次回は別の例を示します。
コメント
[…] 気泡の追跡 前記事の続きですhttps://ghost.mydns.jp/wordpress/%e9%81%8b%e5%8b%95%e8%a7%a3%e6%9e%90%e3%83%97%e3%83%ad%e3%82%b0%e3%… […]