[BlueLeaf1336]> PROBLEMS> なぁバーコードを読もうじゃないか>

なぁバーコードを読もうじゃないか > バーコードについて

historyTOP

2005/03/31:作成
2005/04/01:更新
2005/04/02:情報サイトへのリンク追加

2005/03/31TOP

タイトルのとおり、バーコードを読むプログラムを作りたいんです。バーコードを出力するプログラムは多々あるけれど、読むのは稀な気がします。少なくとも、見つかりませんでした。見つかってもやりますが(途中まででも)。

基本方針TOP

まず、2次元バーコードはなしで。1次元バーコード(の画像があるとして)について考えると、全ての縦線を横切るような直線を引いて、その線上のピクセルを調べていき、黒白の1次元配列にする。で、黒の連続状態と白の連続状態と黒白の出現状況を見極めれば読めるんじゃないか。と妄想します。

そこで、まず具体的なバーコードへの理解を深める前に、画像とそれを横切る直線から、その線上のピクセル値の取り出しを行なうような処理を作ることにします。ここでくじけるようなら、それもまたよし、というわけで。

テスト用プログラムイメージTOP

バーコードを読むにしろ何にしろ、グラフィカルに見えないとわかりにくいし飽きやすいので、少しだけ先に進んだような気になるものを作りました。

まず、バーコードの作成から入るとそれだけで嫌になりそうなので、作るほうは、MiBarcode(Windows95/98/Me/文書作成)にお願いすることにしました。

で、コレを前提にするように考えたので、クリップボードから画像をコピーできる機能と、それを表示する・それからその画像に重ねる形で横線を描くようなプログラムを作りました。

それが下の画像になります。背景真っ白・バーコードは真っ黒、プログラムで出力しているためスキャンによるゴミもなく、バーコードは直立しているという、これ以上望めないような甘やかされた環境です。

画面の下にある「W」「B」の羅列は、マウス直下の横線(幅400ピクセル)上を左端から右端までなめた時に、白(W)なのか黒(B)なのかを決定したのを、サイズ400の1次元配列に作り上げたものを、1行で出力すると画面からはみ出るので、50ずつ8行に分割して表示したものです(ややこし)。

20050401NaBaRead.zip(175,729bytes)(3,467bytes)

これは、CODE39(なんとなく一番簡単そうな感じがするというか、最初にやろうと思っているコードです)ですが、「W」「B」の並びを見てみると、倍率2倍(MiBarcodeの設定です)で、WBそれぞれ2回か4回かの繰り返しとなっています。いけそうな予感がします。

背景まっ白であることを前提にすれば、左端から見ていき、初めて「B」が出現してから最後に「B」が出現するまでの間、それぞれ、BWが何回ずつくり返されているか、その繰り返し数の比率はどうかを調べていけばよさそうです。

まだ、大丈夫です。飽きていません。

このテスト用のプログラムを使って、作成したサイズ400の配列がベースで、後はパターン解読となるわけで。

追加の情報サイトTOP

EOFTOP