ヘッドマウントディスプレイを使ったソフトウェアの開発

ヘッドマウントディスプレイを使って、見ている画面から英単語を抽出して、
その単語の意味を表示するためのソフトウェアを開発した。

例えば、英語の文章をヘッドマウントディスプレイを通して読んで、
意味がわからない単語があったら、それを選択して
ヘッドマウントディスプレイ上に表示するというもの。
これを使うことで、英語の文章が読みやすくなる、かも。

まぁ、現実的な話をすると、5万程度の個人用途のヘッドマウントディスプレイの
レベルだとそんな理想的な話は難しいです。
どうも、視点調整がうまくいかなかったり、画面がぼやける感じがする。
(ただ、これは調整が悪いのかもしれないが。。。)

ちなみに、アイディア自体は昨晩思いついて、今日の16時ごろから22時半ごろまでで作った。
話を聞いているだけだと、どうやって作ったのかと思うかもしれないけど、実際はそんなに難しい話ではない。

言語は、C#を使って書いた。
処理としては、以下のような処理を行えば簡単に開発できる。

1,カメラから画像を取ってくる
2,画像を解析して、英単語を抽出する
3,英単語を英和辞典で変換する
4,画面の表示する

これを、それぞれ次のように考える。

1,DirectShow.NETを使ってカメラから画像を取得する
2,OCR用のライブラリ(今回は、GoogleのTesseractをC#から使えるようにしたライブラリを使用)を使って、英単語を抽出する
3,フリーの英和辞典の辞書ファイルがあるので、それを使って英語から日本語に変換する
4,画面に表示する

これだけで完成。

このうちの、2と3は面倒そうに思えて、意外と簡単。
2は、4行あれば解析までできる。
3は、HashTableに放り込んで適当に値を取ってこればすぐに終わる。

意外と面倒なのが、1。あくまでも、DirectShowのためのライブラリであって、
カメラからの画像をキャプチャすることが主体のライブラリではない。
なので、DirectShowのフィルタをごちゃごちゃといじったりしないといけない。。。

サンプルコードを流用しようかと思ったけど、IVideoWindowが接続されていて、
自分が使いたいものとは違ったので、結局全部書き直し。
途中でいろいろとつまづいたので、ここだけで4時間はかかった。

ちなみに、全体のコード行数は400行ほどなのですごく小さい。
全体的にライブラリを結合したようなものなので、当たり前といえば当たり前。
OCRの部分は、最初は、英単語だったら画像認識でもいいかもなぁ、と思ったけど、
ふと、GoogleのOCRのライブラリを公開していたことを思い出してこうすることにした。

ただ、現状では色々と問題があって、例えば、以下のような問題がある。

・2,3千円のウェブカメラでは、ピントの自動調整がなかったり、そもそも画素数が少ないので文字がはっきりと出ない
(今は、130万画素程度のデジタルビデオカメラを使用してやっているが、
これだと、ヘッドマウントディスプレイにカメラが取り付けられない)
・UIがあまり良くない
(こういうものだと、最終的に中身のシステムがどうこうという話より、使いやすさの勝負になってくるので
UIが良くないとあまり意味をなさなくなってくる)
・英和変換のときに-edとか-ingを変換できていない
(すぐに終わる。明日にでも実装する)
・OCRの読み取り速度が遅い
(Pentium4の2.8GHzのマシンで試したから、単にマシンスペックをあげれば解決するかもしれない。
ただ、UIを工夫することで読み取り速度が無視できるかもしれない)

詳しくは、明日くらいに画像付きで紹介したいと思います。

Posted at : 2009-03-05 01:29:35 / Category : none

Comments

まだコメントはありません / No comment.

Send comment


Name


Mail-address (empty is OK. If you want to notify update, please fill mail-address.)


Bot check code (241222 と入力してください / Please input 241222.)