2010年2月8日月曜日

カイゼンカイゼンまたはオオキクカイゼン

バーコードは読めるようになったので、アプリ全体の機能をすべてつけて、いざ、大量の本で実地試験と相成りました。

とりあえず、作業デスクのそばにある何冊香の本で試してみたところ、うまく読み取れないコードがいくつかでてきた。
バーコード自身を目視してみると白黒が1モジュールづつ連続しているところだったり、4モジュール連続で白とかの部分がうまく読み取れない場合があった。
(モジュールとはバーコードの最小単位。あのバーの一番細いのが1モジュールにあたる)

自分のソースコードなのでいくらでも手を入れられるし、あーでもない、こーでもない。といった実験もできる。ちょっと反応は鈍くなったけど、手近の本のバーコードが読めるようになった。
まぁ反応の鈍さは複数回のループ処理など、まだコードの最適化をやっていない部分が大きいので、コード確定次第、最適化を施せばいいやと。

ので、自宅にある1,800冊オーバーの蔵書を誇るマンガ棚にいって、かたっぱしからバーコードを読んでみた。(なぜそんなにあるかはここらへん参考にしてね)

、、、、、勝率8割程度、、、、orz

これじゃだめだ。20%も読めない読み間違えが発生する。
せめて95%、希望は99%。願わくば100%認識率にしたい。

ちなみにライセンス買おうかどうか迷ったRedLaserのバーコードは認識率100%。しかもすごい速さで認識される。

負けてる、、、いや、負けてもいいのだけど、負けすぎている。
相手はiPhoneもバーコードも先達で社名からもわかるようにバーコードのプロだろう。
こちとら2日間やそこらでつくったバーコードスキャナだもの、負けているのは仕方がない。しかし、負けすぎだろー。実用にならないよ、、、、80%程度じゃ。

そして、決定的に敗北を味わったのが、いくつかある洋書(主にアメリカ)のバーコードスキャンをおこなったとき。

ぜんぜん認識されない。勝率1割程度。。。
当初からワールドワイドに展開♪とかうそぶいていたのに、なにこのありさま?
アメリカ向けにはバーコードスキャン機能禁止ってしないとならない?
ちなみにRedLaserはこちらも100%認識してました。


 それでも、ちまちまとカイゼンカイゼンを勧めた結果、多少まともに洋書は読めるようになったけど、こんどは日本の本の認識率が下がりだした。

 あっちを立てればこっちがたたず。

もう手詰まり状態で悶々とした日を数日過ごしたので、いっそのこととおもい、バーコード認識部、正確にいえば画像を取り込んでから2値化補正するまでの部分を、まったく新しい方法で実装し直すことにした。
それまでは画面を10分割くらいして、ちまちまドットを数えていたのだが、この新しい方式は分割は3つ。ドットもちまちまカウントするのではなく、X軸の各位置(dot)をY軸方向に全部加算して得られた値からバーコードを内部的に再構成してから、それのドットを数えるようにした。

で、これが大正解!!
日本のバーコードもアメリカのバーコードもほぼ問題なく読めるようになった。稀に間違いがあるよう(経験則からいって1〜2%程度かな)だけど、それも再度バーコードスキャンしてみればちゃんと読める。希望の99%はほぼクリアされただろう。
で、なにが良くなったかって、全体の計算量が減ったので、すごく反応がよくなったこと。レスポンスがいいので使っていてストレスがない。
バーコードをちょっとかざすだけでサクっと読んでくれる。(もちろんオートフォーカスがちゃんと焦点をあわせていることが前提だが)

RedLaserのバーコードスキャナと比べれば、もちろんまだまだ負けてるけど、負けすぎていない。十分実用になる範囲だ。


と、いうことで、この新しい方法を正式に採用し古いバーコードスキャンルーチンは捨ててしまい、これをいれたものをビルドしてAppleにアプリ申請した。
これが2月6日。


さてさて、申請のreviewがいつから始まってどうなることか、まだ先のことはわからんけど、とりあえずiPhoneアプリ第一弾は提出できた。

思いのほかバーコードの認識率がいいので、これを使った第2、第3のアプリの構想もはじめたので乞うご期待!


というわけで、これが現在の本業なのです。

0 件のコメント:

コメントを投稿