画像処理におけるマルチスレッドの利活用

最近研究で,ウェブカメラ(的なもの)から画像をとってきて画像処理(追跡とか重い処理)をすることがあります.

このとき,「画像をとってくる」処理は結構「待ち時間」があるので,リアルタイム処理をするときに困ります.

そこで,時間のかかる画像処理をやってる間に裏で画像をとってくる処理を並列して行う方法を書きます.「マルチスレッド」を使います.

とりあえず疑似コードで.

カメラからとってきたデータを「画像」へコピー
繰り返し始め
「temp画像」に撮影予約
「画像」を使って時間のかかる画像処理
撮影が終わるのを待つ(というかたぶん終わってる)
「temp画像」を「画像」へコピー
繰り返し終わり

ループ冒頭の“撮影予約”の部分では,スレッドを作成します.ここで作成したスレッドでは,“カメラからとってきたデータを「temp画像」へコピー”を実行します.

“撮影が終わるのを待つ”部分では,上で作成したスレッドの処理が終わるまで,メインの処理を停止させて待ちます.

これにより,時間のかかる画像処理中に撮影を並行しておこなっておくことができるようになります.

次のエントリではもうちょい具体的なソースコードを書く.かも.

コメントする