運動解析プログラム VMAPについて

筆者が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がリニアに変化しているのがわかります。トレースがうまくいっている兆候ですね。もちろん対象の誤差は含んでいるので、完全な直線ではないですね。

次回は別の例を示します。

コメント

  1. […] 気泡の追跡 前記事の続きです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%… […]