ここまでの検討を基に、さらに時間的な概念を入れて、図4に示すレファレンスモデルをSimulinkで作成します。
モデルの左側にあるブロックでは、テスト用映像信号(Test Images)と、Webカメラ(From Video Device)で取得した信号が入力されていて、それが下に見えるロータリースイッチで切り替えられるようになっています。次にオブジェクトを検出するサブシステム(Object Detection)があり、その次はオブジェクトの重心点の座標を求めるサブシステムがあります。このサブシステム内では、MATLABプログラムではregionpropsコマンドで行っていた処理を図5に示すように、Blob AnalysisブロックでCentroid(重心)を計算するよう設定することで、等価な処理を行っています。求めた座標位置は、外乱に対する時系列の軌道補正をするためにカルマンフィルターに入力され、その座標位置をマーキングするDraw Shapesを経て、To Video Displayブロックにて結果表示を行います。入力から出力まで全て、映像信号の1フレームを1単位の行列信号として扱うフレームベースで処理を行っています。カルマンフィルターをはじめとするダイナミックな処理は、時間概念を持つSimulink環境の方が適しているため、MATLABのプログラムでは検討していませんが、Simulinkレファレンスモデルに追加しました。
Simulink Testで単体検証[※記事末のコラム1参照]を行いブラッシュアップした各サブシステムは最終的に統合モデルでシミュレーションを行います。処理結果画像を図6に示します。緑色のオブジェクトを検出、トラッキングし、赤丸でマーキングした結果が表示できました。
Copyright © ITmedia, Inc. All Rights Reserved.