#author("2023-04-28T16:58:22+09:00","","") * Color Tracker for MATLAB/Simulink [#bb077b3d] **はじめに [#fde21c80] 2013年11月17日に新潟大学で開催された第56回自動制御連合講演会の教員協議会の講演で紹介したColor Tracker(画像上の特定の色を追跡してその座標を返すプログラム)を公開します。 // 2014-07-08版 &ref(color_tracker_b03.zip); フリーで公開すると言っておきながら,時間がかなり経過してしまったので,大幅にバージョンアップしました。変更点は下記の通り。 -Processing version 2.2.x 対応とし,Processingに付属しているビデオライブラリを使用するようにした。 -旧バージョンでは,ProcessingとSimulinkは仮想シリアルポート(com0com)を使って接続していたが,com0com はWindows環境のみで,かつ,テストモードでしか動作しないため,Socket通信に書き換えた。これによって,Processing を動かすPCとMATLAB/Simulinkを動かすPCが別であってもネットワークでつながっていれば動作するという御利益もあるはず(まだ試していません)。なお,MATLABでTCP/IPを使うには,Instrument Control Toolboxが必要だが,それが無くても良いようにJavaで実装してみた(私もこのツールボックスは持っていないので)。 ** テスト環境 [#q98e2175] -Windows 7 64bit -MATLAB/Simulink R2012a 64bit -Processing 2.2.1 64bit ** 実行手順 [#ff4f706a] +color_tracker_b03.pdeをProcessingで開いて実行します。 +Webカメラの画像が表示されない場合は setup() 冒頭の「カメラ設定」部分を各自の環境に合わせて修正してください。 +Webカメラの画像で,認識させたい対象物をマウスでクリックします。クリックした場所と同一の色を持つ部分の重心が計算されて,赤い●で示されます。 +「同一の色を持つ部分」を確認したい場合は,キーボードの"d"を押します。"d"を押すごとに,Webカメラの画像と「同一の色を持つ部分」の画像が切り替わります。 +「同一の色を持つ部分」を決めるための閾値がキーボードの"j"と"k"で変更できます。閾値の値は,画面左上の■の右隣に表示されています。"j"で閾値が小さくなり,「同一の色を持つ部分」の領域が狭くなります。"k"はその逆です。 +MATLAB/Simulink R2012a を起動し soctest.m を実行します。コンソールに下記のような数値が100行ほど表示されたら,ProcessingとMATLAB/Simulinkの通信は正常です。なお,soctest.mはいつも実行する必要はありません。動作確認に使用してください。 10b0,1650,1 10b0,1660,1 10b0,1660,1 10b0,1650,1 10b0,1650,1 10b0,1650,1 10b0,1650,1 +最後に vision_test.mdl を開いて実行します。赤い●のXY座標と,対象物認識の有無,XY平面の軌跡が30秒間表示されます。 **実行の様子 [#m2a1b6c9] &ref(color_tracker_small.png); **注意事項 [#r2c2f44a] +vision_test.mdl はサンプリング周期で同期を取る機能はありません。ArduinoIOに含まれている"msfun_realtime_pacer(block)"などを使えば,サンプリング周期に同期させて動作させることが可能かもしれません。~ 参考)~ http://www.mathworks.com/matlabcentral/fileexchange/32374-matlab-support-package-for-arduino--aka-arduinoio-package- +エラー処理などはあまり考えていません。必要に応じて付け加えてください。 +Macでの動作は確認していませんが,Windows固有の処理はしていないので,簡単な修正で動作すると思います。 +このソフトウエアを使用・改変することは自由ですが,完全な無保証ですので,自己責任で使用してください。なお,著作権は放棄していません。 **謝辞 [#t2063fff] 本プログラムの画像処理部分は,下記のページを参考にしています。有益な情報を公開してくださっている作者の方に感謝致します。 建築発明工作ゼミ2008~ http://kousaku-kousaku.blogspot.jp/2008/11/processingweb.html