安いバーコードリーダーをお探しですか?
もしかしたらこのAndroidアプリが役に立つかも・・・




バーコードリーダー入門


バーコードリーダーを作ってみよう

トップへ戻る

第3回 試行錯誤

 ターゲットとなる機種は「Advanced W-ZERO3[es]」に決まりました。OSは「Windows Mobile 6.0 Classic」です。開発は「Visual Studio 2005 」を使って行います。

まず、ファイル入出力や操作画面の実装については開発経験があるので問題ではありません。今回問題となるのは、

ということです。それぞれがかなり大きな課題です。カメラを使ったアプリケーションなど作ったことありませんし、バーコードのデコード処理なんてものは、なんとなくは理解していますが、画像から解析していくなんてことは考えたこともありません。

こんなときに頼りになるのは、インターネットですね。早速、Windows Mobile端末でのカメラのプレビューについて調べてみました。が、

ほんとに無いですねぇ。情報が (ーー;)

開発をやっているとたまに出会う、情報が極端に少ない分野ってあるんですが、まんまとはまってしまいました。情報があっても古いとか、Windows XPの情報であってWindows Mobileでは動かないとか・・・
そんな中でもありました。ひとつだけありがたい情報が。
CodeZine
うれしいことに対象機種も同じ。こちらの情報を解析しながら、DirectShowのヘルプを見ながらの試行錯誤。いやぁ、いまだに半分も理解できていないかも知れませんが、なんとかプレビューを画面に表示することに成功しました!

次は画像からのバーコード解析処理です。表示されているプレビュー画像から静止画を取得するのは意外とすんなりと実現できました。あとは、画像の暗いところと明るいところを識別し、黒(バー部分)と白(スペース部分)を判定していきます。

実はここが大変。フォーカスが合っていなかったり手振れなどにより、ぼやけたイメージになるので、うまく黒と白の2値に切り分けるのが非常に難しくなります。また、プレビュー画像の解像度の問題もありますので、判定するのはかなり難しくなります。

更に、暗い場所での読み取りや、光の反射などがあると、とたんに識別精度が落ちます。これはある程度仕方が無いことなのですが、閾値(判定基準)を調整することによって、読み取り精度を高めていきました。

さらっと書きましたが、この解析処理は微調整が大変でした。「Advanced W-ZERO3[es]」は処理速度が速いので、解析速度を最適化して、何度も解析させることにより、読み取りの快適性を向上させています。

2値の判定が確定してしまえば、後はバーコードのルールにそって、値を当てはめていくだけなので、それほど難しくはありません。最後にチェックデジットをチェックしておしまいです。

片手間で趣味レベルで作っているので読み取り精度はイマイチですが、書籍のバーコードに限って言えば、ストレスなく読み取れるレベルにはなりました。一般的なJANコードも読みますが、十分な幅(約3cm)がないと読み取りにくいです。まぁ目的は「書籍バーコードの読み取り」ですので良しとします。完成が楽しみになってきました。

ただ、今回はEAN13だけに限定してやったからいいものの、実際には様々なバーコードや二次元コードシンボルをデコードしているバーコードリーダーって大変だなぁということが実感でき、今回ほんとに良い経験になりました。きちんとしたものを作るには、きちんとした画像解析などの勉強が必要だと、強く感じました(まぁ、そんなの作りませんが)。

といっても、まだ完成ではないので、次回も、開発時のお話になる予定です。



トップへ戻る

記事一覧




[stmx] - ソーシャルマーケットプレイス

[stmx] - ソーシャルマーケットプレイス
inserted by FC2 system