カレンダー

04月 │2017年05月│ 06月
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

 プロフィール

はしもと

Author:はしもと
ユーザインタフェース系のお仕事をしてます.関心領域は画像処理,拡張現実感,ヒューマンコンピュータインタラクション,エンタテインメントコンピューティングあたり.モノ書きもやってます.

 工学ナビ

工学ナビは工学系の技術のチュートリアルを扱うサイトです.

 作ったもの

 Twitter

 

 天気予報


 ブログ内検索

 カテゴリー

最新コメント

 RSSフィード

 リンク

このブログをリンクに追加する




工学ナビの中の人 はしもとのブログです. いろんなコトを研究的,工学的な視点で見つめます.
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

OpenCVを簡単に扱えるライブラリのこと
勉強会で発表した,例の原点に赤い点を打つライブラリですが,
発表がいろいろと消化不良だったので公開するまえにここに要点をメモしておきます.

<09/06/25追記>
ドキュメントの作成に思ったより時間がかかりそうなので
コードだけ先に放流します(→物置) 仮公開ということで.

【製作背景】

・OpenCVは速くて素敵だけど,画素アクセスのインタフェースが
 洗練されてないところに不満がある.あとReleaseがめんどい.

・ターゲットにしているのはC言語の教科書を軽く流した程度の人.
 「構造体の2次元配列はわかるけど,ポインタはワカンネ」な人が
 画像処理の本を見ながらピクセルレベルのアルゴリズムの実装が
 できるようにしたい.かつ,OpenCVの関数も一緒に使えるようにしたい.

・OpenCVの人気がじわじわ出はじめた時期にイチから画像ライブラリを
 作って研究でバリバリ使ってたけど,最近OpenCVがスタンダードに
 なっちゃったから,昔作ってたのと似たようなUIを持つものをOpenCVの
 ラッパーとして構成しなおした.

【構成】

・ExImage  IplImageのラッパー (クラステンプレートによる実装)
・ExWindow  OpenCVのウィンドウシステムのラッパー(Windows限定)
・ExCapture DirectShowによるキャプチャのガチ実装(Windows限定)

下の2つについては懇親会でちょっとだけデモさせてもらいました.

いずれもC++での実装です.
大学時代に研究室の後輩に対してユーザーテストを行いましたが,
C++を全く知らなくても,「クラスは構造体の親戚」「< >はおまじない」
といった補足説明だけで,ほぼC言語ノリで不自由なく使えてました.

【代表的な特徴】

●ExImage

以下のような感じで,画素アクセスを直感的に記述できます.
もちろん,HSVやYUVなどOpenCVで扱うすべての表色系に対応してます.

ExImage <EX_BGR8U> imgIn(320,240);
int y = 0; x = 0;

imgIn[y][x].R = 255;
imgIn[y][x].G = 0;
imgIn[y][x].B = 0;

なお,C++で組むなら「イテレータを使えよ」というツッコミはもっともなのですが,
個人的には2重for文でラスタスキャンを書くほうが好きなのでその方向性はなしで.
(あと,画像処理プログラミング本も大体そんな感じなのでその意図に沿わせています)

ちなみに,Ipl()というメソッドでIplImageへのポインタを返すのでこれを使って
OpenCVの関数に画像を渡せます.

cvCvtColor( imgIn.Ipl(), imgOut.Ipl(), CV_BGR2GRAY );


●ExWindow

プログラムからフルスクリーン化,通常サイズ化を制御できます.
(OpenCVではフチなしフルスクリーン化は対応していません)

●ExCapture

複数のカメラを簡単に扱えます.
カメラの明るさやオートフォーカスなどをプログラムから制御できます.
解像度を途中で変更することができます.
ロジクールの Qcam Orbit というパンチルトカメラを制御することができます.
(首を動かしながら特定の物体を追跡するようなカメラが作れます)

ロジクール キューカム オービット AF QCAM-200Rロジクール キューカム オービット AF QCAM-200R

ロジクール 2007-09-28
売り上げランキング : 3091
おすすめ平均

Amazonで詳しく見る
by G-Tools



てな感じの話を勉強会でするつもりだったんですが,
運営が忙しくて発表準備までまったく手がまわりませんでしたorz
発表を聞いてくださった方,本当にごめんなさい.

# 後輩がOpenCVの行列 CvMat を使いやすくするラッパーを書いてたりするので,
# 彼との利害関係が一致すれば,一緒に進めたい気持ちです.


この記事に対するコメント

勉強会には参加しておりませんが、IplImageの画素アクセスが面倒なのには同感です。
【2009/06/22 09:20】 URL | alt-native #- [ 編集]


勉強会とてもおもしろかったです、お疲れ様でした。
ライブラリの完成楽しみです。
そうそう、実世界指向マリオはどうやってマリオ自身を障害物として判定していないのか気になっていたのですが、うっかり聞きそびれてしまいましたorz
【2009/06/23 11:00】 URL | alumican #4uAjNfEA [ 編集]


>alt-nativeさん
>勉強会には参加しておりませんが、IplImageの画素アクセスが面倒なのには同感です。

ですよね.画素アクセスをしないことのほうが少ないくらいなので,こういうところは
なるべく記述しやすくしておきたいです.

>alumicanさん
>そうそう、実世界指向マリオはどうやってマリオ自身を障害物として判定していないのか
>気になっていたのですが、うっかり聞きそびれてしまいましたorz

実はかなりテキトーにやってまして,投影されている画像は十分に輝度が高いという
仮定のもとで閾値処理によって除外しています.これだとまれに自身が障害物と
判定されて空を飛んでいったりしますw

一番よさげな方法は,プロジェクタに赤外線除去フィルタをつけて,赤外線カメラで
撮影することです.そうすれば,投影画像の影響をうけることなく実物体のみを
計測することができるはずです.
【2009/06/24 17:22】 URL | はしもと #F54KmX5Y [ 編集]




この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://kougaku.blog28.fc2.com/tb.php/341-e186842a
この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。