本発明の実施例を、以下に詳細に説明する。
先ず最初に、本発明の第1の実施例について以下に説明する。本発明の第1の実施例は、画像認識装置の実施例である。
図1は、文書101上に、複数種類のバーコードが印刷された例を示す図である。図1には、三種類のコード102、コード103及びコード104が印刷されており、例えば、コード102は独自コードであり、コード103はQRコードであり、そして、コード104はCODE39である。それぞれ、コード102の独自コードにはパスワードが、コード103のQRコードには文書処理手順が、そして、コード104のCODE39には文書IDが、それぞれ格納されている。
各々の情報が、例えば、1つのコード内にまとめられて格納された場合と比較して、図1に示された例のように、3つのコードに別々に格納された場合には、次の利点を有する。
先ず第1に、各々のコードが小さくなり、文書のレイアウトの自由度が向上する。
第2に、規格化されたコードも使用することにより、他のシステムでの読み取り性が高くなり、文書の汎用性が増加する。
そして、第3に、機密性が必要とされる部分だけに独自コードを使用して、セキュリティを向上させることができる。
図2は、本発明に従った、画像認識装置200の一実施例のブロック図を示す。図2に示された、画像認識装置200は主に、領域分割器201、情報読み取り器202、メモリ203及び情報出力器204より構成される。画像認識装置200の入力である入力210には、画像スキャナやデジタルカメラ等を使用して二値デジタル画像に変換された文書が入力される。この入力210に入力された二値デジタル画像は、領域分割器201に供給される。
領域分割器201では、入力された画像210に対して、白画素で囲まれた黒画素を含む所定の条件に合致した小領域を抽出する。
次に、領域分割器201で抽出された各小領域について、それぞれ情報読み取り器202でコードの読み取りを実行する。コードの読み取りが成功した場合には、読み取られたコードの種類、紙文書内におけるコードの位置、そのコードに格納されていた情報を、メモリ203に書き込む。
図3は、メモリ203内に格納されたデータのデータ構成を示す。図3に示すように、メモリ203内のデータ構成は、デコードできたコードの総数を格納する部分301(2バイトの整数型)と、書き込まれたメモリの最終アドレス302(4バイトの整数型)、及び、各コードに関する情報310、320等を有する。例えば、コード1に関する情報310は、コードの種類311(2バイトの整数型)、コード位置312、313、314及び315(各頂点の水平及び垂直位置を各々単位mmの4バイト浮動小数点型で表す)、情報のバイト数K1(4バイトの整数型)316、情報内容317(K1バイト)を有する。コード2に関する情報320も、同様に部分321から327を有する。
情報出力器204は、メモリ203から、図3に示すような格納された情報を読み出して出力する。
次に、図2の画像認識装置200の各部の動作について、以下に詳細に説明する。
先ず最初に、領域分割器201の動作について説明する。図4は、領域分割器201の一実施例のブロック図を示す。図4の領域分割器201は主に、ラベリング器401、外接矩形検出器402、外接矩形結合器403及び矩形寸法判定器404より構成される。
また、図5は、領域分割動作のアルゴリズムの一実施例を示す。図6は図5のステップ502の動作を示し、図7は図5のステップ503の動作を示しそして、図8は、図5のステップ504の動作を示す。
図5の領域分割動作のアルゴリズムは、ステップ501で開始する。
次にステップ502では、ラベリング器401で、連結した黒画素をラベル付けする。図6は、ラベル付けの動作を示す図である。ラベリング器401は、入力画像を、左上の原点から走査する。
そして、現在注目している画素の左上と上及び左側の画素が白画素であり、且つ、現在注目している画素が黒画素である場合には、その現在注目している黒画素に新たなラベルをつける。例えば、図6の最上行の最も左にある画素は「1」とラベル付けされる。また、図6の最上行の右から2番目にある画素は「2」とラベル付けされる。
それ以外の場合、即ち、現在注目している画素の左上又は、上又は、左側のいずれかの画素が、白画素でない場合には、左上又は、上又は、左側のいずれかにある黒画素のラベルを、その現在注目している画素につける。例えば、図6の最上行の左から2番目にある画素は「1」とラベル付けされる。
現在注目している画素の左上及び上及び左側の三つの画素の中に、異なるラベルがついた黒画素が複数個存在する場合は、上、次に左上、次に左側の順序で、ラベルに優先順位をつけて、優先順位の高いラベルを、現在注目している画素のラベルとして採用する。例えば、図6の上から3行目の右から2番目にある画素は、その左側の画素のラベルが「1」であるが、しかし、その上の画素のラベルが「2」であるため、同様に「2」とラベル付けされる。
次にステップ503では、外接矩形検出器402は、同一のラベルを有する黒画素群を囲む外接矩形座標を検出する。図7は、外接矩形座標を検出する動作を示す図である。外接矩形検出器402は、図7の外接矩形701及び外接矩形702を検出する。
次にステップ504では、外接矩形統合器403は、ステップ503で検出された各々の外接矩形同士が、重なる又は、接触する又は、所定の距離内にある外接矩形同士を統合し、新たな外接矩形を形成する。図8は、図7に示されたように、検出された外接矩形701及び外接矩形702を、1つの外接矩形801に統合する場合の例を示す。
そして最後に、ステップ505では、矩形寸法判定器505で、バーコードや2次元コードの大きさとしてはありえない大きさの外接矩形を排除するために、所定の範囲の大きさを有する外接矩形を抽出する。以上により、白画素で囲まれた黒画素を含む小領域を検出することができる。
次に、図2の情報読み取り器202の動作について以下に説明する。
図9は、情報読み取り器202のブロック図を示す。図9に示された情報読み取り器202は、設定器901、バーコードデコーダ(1)902、バーコードデコーダ(2)903、バーコードデコーダ(N)904、2次元コードデコーダ(1)905、2次元コードデコーダ(2)906、2次元コードデコーダ(M)907より構成される。情報読み取り器202は、領域分割器201より、白画素で囲まれた黒画素を含む小領域の座標とその画像211が入力される。
領域分割器201により、図8に示されたような小領域が検出されたので、それらの小領域に対して、情報読み取り器202は、コードの読み取りを行う。
検出された小領域はバーコードデコーダ(1)902からバーコードデコーダ(N)904、2次元コードデコーダ(1)905から2次元コードデコーダ(M)907に入力される。バーコードデコーダ902から904は、それぞれ一次元のバーコードデコーダであり、CODE39やCODE128等をそれぞれ専用にデコードするデコーダである。
また、2次元コードデコーダ905から2次元コードデコーダ907は、QRコードやデータマトリックス等の規格化された2次元コードを専用にデコードするデコーダに加え、独自の2次元コードをデコードするデコーダも含む。各々のデコードアルゴリズムに関しては、AIM(自動認識協会)が発行している各種バーコードの仕様書に、サンプルアルゴリズムが記述されていたり、又は、AIMからプログラムが配布されていたりするので容易に実現できる。独自の2次元コードの詳細については後述する。
各デコーダ902から907は、設定器901からの設定信号910に従って、動作を実行するように構成される。即ち、設定器901を使用して、情報読み取り器202の外部より信号911を与えることにより、情報読み取り器202に認識を行わせるバーコード又は2次元コードの種類を設定することができる。これは、読み取りを行うパターンを指定することである。そして、その設定信号910が各デコーダ902から907へ入力される。各デコーダ902から907は、その設定信号910を解釈して、動作するか又は動作をしないかを決定する。
各デコーダは、領域分割器201より供給される小領域に分割された画像を受け取っているので、その領域にある黒画素群がバーコードまたは2次元コードであって且つそのコードが、正しくデコードできた場合には、コードの種類、コードの書類上の位置(これは、コードの画像座標と画像の読み取り解像度で算出可能である)、及びコードに格納されている情報を取得できる。
デコードが正しくできた後に、情報読み取り器202は、メモリ203に排他制御をかけて、各デコーダからのデータを書き込む。メモリ203は、図3を参照して前述したように、正しくデコードできたコードの総数を格納する部分301と、書き込まれたメモリの最終アドレス302、コードの種類311、コード位置312から315、情報のバイト数316、情報内容317の配列を格納する部分とを有する。
各デコーダ902から907は、図3に示されたメモリの最終アドレス302の示す次のアドレスから、デコードしたコードの種類、コード位置、情報のバイト数、情報内容を書き込む。そして、コードの総数301を1だけインクリメントし、書き込まれたメモリ203の最終アドレス302を更新して、排他制御を終了する。
そして、最後に、図2の情報出力器204は、情報読み取り器202により、図1の文書101上に印刷された、複数種類のコードの全てのデコードが終了したときに、メモリ203に書き込まれている内容を読み出して、その情報を必要とする装置に出力する。
次に、本発明で使用される独自の2次元コード(以下、独自コード)の作成方法と、そのような独自の2次元コードを読み取るための、図2に示された情報読み取り器202を構成する要素のひとつである、2次元コードデコーダ(M)の実施例を示す。
図10は、独自の2次元コード1000の実施例を示す。図10に示された実施例の独自コードは、黒枠1001に囲まれた12x6個のセル1002等を有し、そして、中央部分の4x2個のセルは、ファインダパターン1003と呼ばれ、独自コード1000の方向を一意に決定するパターンを有する。ファインダパターン1003と黒枠1001に囲まれた白セル1002等は、独自コード1000に記憶させるデータにより、さまざまなパターンを有する。なお、本実施例においては12x6のセルサイズの独自コードしか説明していないが、もちろんセルサイズの変更は可能であり、セルサイズを大きくしてコードに埋め込めるデータ量を増やすことは可能である。そのように取り決めることで、文書のレイアウトに最小限の影響しか及ぼさないような独自コードを作ることができる。たとえば、上下方向は6セルサイズ固定とし、横方向にサイズを大きくする等、文書のレイアウトへの影響を極力小さくするサイズに増やすことは可能である。図11は、独自コードの作成方法を示すフロー図である。
独自コードは、例えば、10桁の数字のパスワードを格納することができる。次に、パスワードを格納する独自コードの作成方法について説明する。
図11の独自コードの作成方法はステップ1101で開始する。
次に、ステップ1102では、パスワードは数字であるのでまず、数字文字列を入力する。
次に、ステップ1103では、入力された数字文字列を、フォーマット変換してコンピュータで扱える4バイトの整数型のデータに変換する。
次に、ステップ1104では、ファインダパターン1003用のデータを入力する。図10に示す場合には、ファインダパターン1003は、“11001111”である。
次に、ステップ1105では、ファインダパターン1003用のデータとパスワードの4バイトのデータとから、4バイトの誤り訂正符号を生成する。この結果、合計で9バイトのデータが生成される。誤り訂正符号は、例えば、バイト単位の誤り訂正が可能なReed−Solomon符号を使用する。
そして、最後に、ステップ1106では、独自コード画像を生成する。図12は、独自コード画像のセル番号示す。先ず最初に、前述の9バイトのデータを、72ビットのビットデータに分解する。そして、この分解された72ビットのビットデータを、図12に示されたセル番号の順番に従って、順に、そのデータビットが1なら「黒」、そして、データビットが0なら「白」を、セルに埋めることにより、独自コードを表す画像を生成する。そして、この画像を文書上に印刷する。
なお、パスワードは、フォーマット変換して数値化された後に、暗号化してもよい。
次に、独自コードを読み取りそしてデコードする装置ついて説明する。図13は、独自コードを読み取りそしてデコードするための、図9に示された二次元コードデコーダ(M)907のブロック図を示す。図13に示された二次元コードデコーダ(M)907は、主に、頂点候補検出器1301、コード枠検出器1302、射影変換器1303、ファインダ検出器1304、データサンプリング器1305、誤り訂正器1306、フォーマット変換器1307及び、デコーダ情報出力器1308を有する。
まず最初に、頂点候補検出器1301の動作について説明する。領域分割器201から出力された2次元コードを含む二値画像が、2次元コードの頂点候補を検出する頂点候補検出器1301に入力される。
図14は、頂点候補検出器1301による、頂点の検出動作を示す。頂点候補検出器1301は、図14に示すように、入力画像1401の四隅から順に、斜めに走査を行って、画像1402の各頂点の黒画素を検出する。各矢印は、頂点候補を検出するために行う走査の方向を示す。このように斜めに走査を行って検出された画素は、黒画素A、B、C、Dをである。
図15は、検出した黒画素が頂点候補であるか否かを判定する方法を示す。例えば、画像1402の黒画素Aが頂点候補であるか否かを判定するために、黒画素Aの点から右斜め下方向(矢印の方向)へ所定の大きさの画素数だけ黒画素の追跡を行う。ここで、所定の大きさとは、各黒画素間の距離と独自コードのセル数から推定される、一セルの一辺の画素数に3/4を乗じた値をいう。
このようにして追跡した画素全てが黒画素であるならば、黒画素Aを頂点候補とする。頂点候補の黒画素B、C、Dも同様の方法で、頂点候補であるか否かを判定する。このようにして頂点候補の黒画素A、B、C、Dが検出された場合には、次に、コード枠検出器1302により、処理を行う。一方、頂点候補の黒画素が検出されない場合には、その領域については独自コードの検出動作を中止し、次の未処理の領域内で、独自コードを検出する動作を最初から行う。
次にコード枠検出器1302の動作について説明する。
図16は、コード枠検出器1302によるコード枠検出方法を示す。図16では、図15において黒色の部分により示された部分を、説明を明確にするために、斜線部分により示す。即ち、図16の斜線部分は、図15の黒色部分に対応する。
頂点候補の黒画素A、B、C、Dから追跡した端点1601、1602、1603及び1604(各々の矢印の先端)を、それぞれ結ぶ直線を黒枠判定ライン1605とする。黒枠判定ライン1605上の画素のうち、所定の割合以上、例えば90%以上の画素が黒画素である場合には、頂点候補の黒画素A、B、C、Dはコードの頂点であり、そして、黒枠判定ライン1605は独自コードを囲むコード枠の一部であると判定する。
コード枠検出器1302によるコード枠が検出された場合には、次に、射影変換器1303で射影変換係数を算出して、独自コードを作成した時の、電子的に作成された独自コードの各セルの座標(図17参照)を射影変換して、走査して読み取られた独自コード内部のセル座標を算出する。図17は、電子的に作成された独自コードの各セルの座標を示す図である。例えば、左上のセル内に示された(0,0)は、水平座標及び垂直座標ともにゼロであることを示す。
コード枠が検出されない場合には、その領域については独自コードの検出動作を中止し、次の未処理の領域内で独自コードを検出する動作を最初から行う。
スキャナで読み取る画像は、印刷時及び走査時におけるスキュー、又は、紙送りの速度むら等の機械的な変動により、走査されたコードの画像が、必ずしも電子的に作成したコードの形と相似ではない場合がある。このために、作成した独自コードの形とスキャナで読み取ったコードの画像の位置対応がとれない場合がある。従って、独自コード内の各セルの位置を正確に把握し、正しいデータを読み取るために、射影変換を行う必要がある。
次に、射影変換器1303の動作について説明する。
図18から図20は、射影変換を示す。図18は、読み取られたコード画像を示し、図19は、電子的に生成されたコードを示しそして、図20は、電子的に生成されたコードの座標から読み取られたコード画像の座標への変換式を示す。図18から図20により示されている射影変換では、印刷するために作成された元の独自コードが矩形であり、そして、読み取られたコード画像が台形である場合の例を示している。
図19では、Ar、Br、Cr及びDrは、コードが生成された時の、各頂点を示す。そして、(xr1,yr1)、(xr2,yr2)、(xr3,yr3)、及び(xr4,yr4)は、各頂点の座標を示す。また、Prkは、コード生成時に決定された点であり、(xprk,yprk)はその座標を示す。
図18では、As、Bs、Cs及びDsは、前述の頂点候補検出器1301により検出される頂点である。そして、(xs1,ys1)、(xs2,ys2)、(xs3,ys3)、及び(xs4,ys4)は、各頂点の座標を示す。
図19に示された、コードが生成された時の、各頂点の座標(xr1,yr1)、(xr2,yr2)、(xr3,yr3)、及び(xr4,yr4)と、頂点候補検出器1301により検出された各頂点の座標(xs1,ys1)、(xs2,ys2)、(xs3,ys3)、及び(xs4,ys4)を、図20に示された式に代入する。そして、八元一次連立方程式を解くことにより、図20に示された式の、射影変換係数b1、b2、b3、b4、b5、b6、b7、及びb8を求めることができる。
射影変換係数が求められたので、独自コードを作成した時の各セルの座標を射影変換して、コード画像の対応するセルの座標を取得することができる。例えば、図19のPrkの座標(xprk,yprk)から、図18のPskの座標(xpsk,ypsk)を計算できる。これにより、読み取られたコード画像のセルのデータを取得することができるようになる。
次に、ファインダ検出器1304の動作について説明する。射影変換器1303により射影変換されたデータ画像は、ファインダ検出器1304に送られる。ファインダ検出器1304は、ファインダ検出を行う。
ファインダ検出は図10に示されたファインダパターン1003を検出し、独自コードが上下左右どちらの方向に向いているかを検出する。
このために、ファインダパターン1003の各セルのデータを検出する。先ず最初に、射影変換により得られた座標を中心とした3x3画素の画素値の和を計算する。そして、その和が5以上の場合には、そのセルは“1”でありと、それ以外であれば“0”であると判断する。
次に、検出した値から決定されるファインダーパターンを、理想のファインダパターンと比較する。そして、パターンの一致する数が所定の閾値以上(例えば7)であり、且つ、その中で一致数が最も多い向きを検出する。
もしファインダパターンが検出できなかった場合は、検出したコードは本システムで使用している独自コードではないと判断する。
ファインダパターンが検出された場合には、次に、コード画像は、データサンプリング器1305へ供給される。
次に、データサンプリング器1305、誤り訂正器1306、フォーマット変換器1307及び1308の動作について説明する。
前述のように、ファインダパターンが検出された場合には、次に、データサンプリング器1305は、各セルのデータを、図12に示されているデータ配置順序に従って、取り出して並べる。データの取り出し方はファインダパターン検出におけるデータの取り出し方法と同様である。
次に、誤り訂正器1306は、その取り出されたデータに対して、誤り訂正を行って、エンコードされていた整数値をデコードする。
次に、フォーマット変換器1307は、誤り訂正器1306によりデコードされた整数値の、フォーマット変換を行い、数値文字列に変換する。フォーマット変換前に、必要な場合には、暗号化された整数値が復号される。
そして、最後にデコーダ情報出力器1308は、数値文字列を、コード情報及びコード位置等の情報とともに、メモリ203に出力し、独自コードの読み取りを終了する。
次に、本発明の第2の実施例について説明する。本第2の実施例は、本発明をソフトウェアで実行するための構成を有し、独自の2次元コード(独自コード)を読み取る手段も含む。
図21は、本発明のソフトウェアの実施例の基本フローチャートを示す。
先ず最初にステップ2101で、開始し、スキャナやデジタルカメラ等を使用して文書を二値デジタル画像に変換された文書が入力される。
次に、ステップ2102では、領域分割ステップを実行し、入力された画像に対して、白画素で囲まれた黒画素を含む所定の条件に合致した小領域を抽出する。
次に、ステップ2103では、情報読み取りステップを実行し、ステップ2102で抽出された各小領域について、それぞれでコード読み取りを実行する。コードの読み取りが成功した場合には、読み取られたコードの種類、紙文書におけるコードの位置、そのコードに格納されていた情報を、例えば、図2のメモリ203に書き出す。
メモリ203内に格納されたデータのデータ構成は、図3を参照して前述した構成と同一である。
次に、ステップ2104では、情報出力ステップを実行し、メモリ203から、図3に示すようなデータ構成を使用して格納された情報を読み出して出力する。
そして、最後に、ステップ2105で、ソフトウェアによる処理は終了する。
次に、図21の各ステップの動作について以下に詳しく説明する。
先ず最初に、図21のステップ2102の、領域分割ステップの説明を行う。図21のステップ2102の、領域分割ステップを、図5を参照して説明する。
図5は、領域分割動作のアルゴリズムの一実施例を示す。図6は図5のステップ502の動作を示し、図7は図5のステップ503の動作を示しそして、図8は、は図5のステップ504の動作を示す。
図5の領域分割動作のアルゴリズムは、ステップ501で開始する。
次にステップ502では、ラベリングステップを実行し、連結した黒画素をラベル付けする。図6は、ラベル付けの動作を示す図である。ラベリングステップは、入力画像を、左上の原点から走査する。
そして、現在注目している画素の左上と上及び左側の画素が白画素であり、且つ、現在注目している画素が黒画素である場合には、その現在注目している黒画素に新たなラベルをつける。例えば、図6の最上行の最も左にある画素は「1」とラベル付けされる。また、図6の最上行の右から2番目にある画素は「2」とラベル付けされる。
それ以外の場合、即ち、現在注目している画素の左上又は、上又は、左側のいずれかの画素が、白画素でない場合には、左上又は、上又は、左側のいずれかにある黒画素のラベルを、その現在注目している画素につける。例えば、図6の最上行の左から2番目にある画素は「1」とラベル付けされる。
現在注目している画素の左上及び上及び左側の三つの画素の中に、異なるラベルがついた黒画素が複数個存在する場合は、上、次に、左上、次に左側の順序で、ラベルに優先順位をつけて、優先順位の高いラベルを、現在注目している画素のラベルとして採用する。例えば、図6の上から3行目の右から2番目にある画素は、その左側の画素のラベルが「1」であるが、しかし、その上の画素のラベルが「2」であるため、同様に「2」とラベル付けされる。
次にステップ503では、外接矩形検出ステップを実行し、同一のラベルを有する黒画素群を囲む外接矩形座標を検出する。図7は、外接矩形座標を検出する動作を示す図である。外接矩形検出ステップは、図7の外接矩形701及び外接矩形702を検出する。
次にステップ504では、外接矩形統合ステップを実行し、ステップ503で検出された各々の外接矩形同士が、重なる又は、接触する又は、所定の距離内にある外接矩形同士を統合し、新たな外接矩形を形成する。図8は、図7に示されたように、検出された外接矩形701及び外接矩形702を、1つの外接矩形801に統合する場合の例を示す。
そして最後に、ステップ505では、矩形寸法判定ステップを実行し、バーコードや2次元コードの大きさとしてはありえない大きさの外接矩形を排除するために、所定の範囲の大きさを有する外接矩形を抽出する。以上により、白画素で囲まれた黒画素を含む小領域を検出することができる。
次に、図21のステップ2103の、情報読み取りステップの説明を行う。小領域が検出されたので、それらに対して情報読み取りステップは、コードの読み取りを行う。
図22は、情報読み取りステップの詳細を示す。
先ず最初にステップ2201で開始する。
次に、ステップ2202では、デコード設定ステップを実行し、動作させるデコード方法を規定する。
次に、ステップ2203では、小領域についての領域番号jを1に設定する。
次に、ステップ2204では、図21のステップ2102の領域分割ステップで検出された、小領域jが、領域番号jを指定することにより、順次入力される。
次に、ステップ2205では、デコード方法iを1に設定する。
次に、ステップ2206では、現在設定されているデコード方法iを使用して、小領域jが、デコード可能であるかどうかが判断される。デコード方法iが動作可能であれば、処理はステップ2207に進む。
次に、ステップ2207では、デコード方法iが動作し、入力された小領域jの画像からコードを検出しデコードを行う。デコードができた場合には、コード種類、コードの位置(コードの座標と画像の読み取り解像度で算出可能)、コードに格納されている情報を取得できる。そして、メモリ203にそれらのデータを書き込む。
ステップ2207で実行される各デコード方法iは、図9のバーコードデコーダ(1)902からバーコードデコーダ(N)904、2次元コードデコーダ(1)905から2次元コードデコーダ(M)907に対応する。前述したように、バーコード及び2次元コードとして、Code39やCode128、QRコード、DataMatrix、独自2次元コードなどが使用される。独自2次元コードの作成方法については、前述した方法と同一である。
メモリ203は、図3を参照して前述したように、正しくデコードできたコードの総数を格納する部分301と、書き込まれたメモリの最終アドレス302、コードの種類311、コード位置312から315、情報のバイト数316、情報内容317の配列を格納する部分とを有する。
各デコーダは、図3のメモリの最終アドレス302の示す次のアドレスから、デコードしたコードの種類、コード位置、情報のバイト数、情報内容を書き込む。そして、コードの総数301を1だけインクリメントし、書き込まれたメモリ203の最終アドレス302を更新して終了する。
最後に、全ての小領域に対してデコードが終了したら、図21のステップ2104では、情報出力ステップが、メモリ203に書き込まれている内容を読み出して出力する。
前述の、ステップ2206では、デコード方法iがデコードが可能でない場合には、処理はステップ2208に進む。
次に、ステップ2208では、デコード方法iを1だけ増加させ、次のデコード方法を選択する。
次に、ステップ2209では、このデコード方法の番号iが、図9で説明したバーコードデコーダの総数Nと2次元デコーダの総数Mの和(M+N)よりも大きいか否かが判断される。ステップ2209で、iが(M+N)よりも大きくない場合には、処理は、ステップ2206へ戻り、前述の処理を繰返す。一方、iが(M+N)よりも大きい場合には、処理は、ステップ2210へ進む。
次に、ステップ2210では、領域番号jを1だけ増加させ、そして、ステップ2211へ進む。
次に、ステップ2211では、領域番号jが、図21のステップ2101の領域分割ステップにより検出された領域の数Lよりも大きいかどうかが判断される。領域番号jが領域の数Lよりも大きくない場合には、処理はステップ2204へ戻り、前述の処理を繰返す。一方、領域番号jが領域の数Lよりも大きい場合には、処理はステップ2212へ進む。
そして、最後に処理は、ステップ2212で終了する。
次に、独自の2次元コード(以下、独自コード)についてその作成方法と読み取り方法の詳細を示す。独自の2次元コードの作成方法についてはすでに説明したので、ここでは読み取り方法について説明する。
図23は、独自コードをデコードする方法のフローチャートを示す。
独自コードをデコードする方法の処理は、ステップ2301で開始する。
次に、ステップ2302では、図21のステップ2102の領域分割ステップから出力された2次元コードを含む二値画像を2次元コードの頂点候補を検出する頂点候補検出ステップに入力する。
次に、ステップ2303では、頂点候補検出ステップを実行する。図14で説明したように、入力画像1401の四隅から順に、斜め走査を行って、画像1402の各頂点の黒画素を検出する。各矢印は、頂点候補を検出するために行う走査の方向を示す。このように斜めに走査を行って検出された画素は、黒画素A、B、C、Dである。
図15は、検出した黒画素が頂点候補であるか否かを判定する方法を示す。例えば、画像1402の黒画素Aが頂点候補であるか否かを判定するために、黒画素Aの点から右斜め下方向(矢印の方向)へ所定の大きさの画素数だけ黒画素の追跡を行う。ここで、所定の大きさとは、各黒画素間の距離と独自コードのセル数から推定される、一セルの一辺の画素数に3/4を乗じた値をいう。
このようにして追跡した画素全てが黒画素であるならば、黒画素Aを頂点候補とする。頂点候補の黒画素B、C、Dも同様の方法で、頂点候補であるか否かを判定する。このようにして頂点候補の黒画素A、B、C、Dが検出された場合には、次に、処理は、ステップ2304へ進む。
ステップ2304では、コード枠検出ステップを実行する。図16は、ステップ2304のコード枠検出ステップによるコード枠検出方法を示し、前述したコード枠検出方法と同一である。
次に、ステップ2305では、頂点候補が検出されたかどうかが判断される。
頂点候補が検出されない場合には、処理はステップ2313へ進み、その領域については独自コード検出動作を中止し、次の未処理の領域内で、独自コードを検出する動作を最初から行う。
ステップ2305で、頂点候補が検出された場合には、処理はステップ2306へ進む。
ステップ2306では、射影変換が実行される。ステップ2306では、図18から図20を参照して前述したのと同一の射影変換が実行される。
ステップ2306で射影変換を行うことにより、射影変換係数が求められたので、独自コードを作成した時の各セルの座標を射影変換してコード画像の対応するセルの座標を取得することができる。これにより、読み取られたコード画像のセルのデータを取得することができるようになる。
次に、ステップ2307では、ファインダ検出を行う、ファインダ検出ステップを実行する。
ファインダ検出は図10に示されたファインダパターン1003を検出し、独自コードが上下左右どちらの方向に向いているかを検出する。
このために、ファインダパターン1003の各セルのデータを検出する。先ず最初に、射影変換により得られた座標を中心とした3x3画素の画素値の和を計算する。そして、その和が5以上の場合には、そのセルは“1”でありと、それ以外であれば“0”であると判断する。
次に、検出した値から決定されるファインダーパターンを、理想のファインダパターンと比較する。そして、パターンの一致する数が所定の閾値以上(例えば7)であり、且つ、その中で一致度が最も高い向きを検出する。
次に、ステップ2308では、ファインダパターンが検出できたかどうかが、判断される。もしファインダパターンが検出できなかった場合は、検出したコードは本システムで使用している独自コードではないと判断し、そして、処理は、ステップ2313へ進み、終了する。一方、ファインダパターンが検出された場合には、次に、処理は、ステップ2309へ進む。
ステップ2309では、データサンプリングステップを実行する。ステップ2309では、各セルのデータが、図12に示されているデータ配置順序に従って、取り出して並べられる。データの取り出し方はファインダパターン検出におけるデータの取り出し方法と同様である。
次に、ステップ2310では、誤り訂正ステップが実行される。ステップ2310では、その取り出されたデータに対して、誤り訂正を行って、エンコードされていた整数値をデコードする。
次に、ステップ2311では、フォーマット変換ステップが実行される。ステップ2311では、ステップ2310でデコードされた整数値の、フォーマット変換を行い、数値文字列に変換する。フォーマット変換前に、必要な場合には、暗号化された整数値が復号される。
そして、ステップ2312では、デコーダ情報出力ステップが実行される。ステップ2312では、数値文字列を、コード情報及びコード位置等の情報とともに、メモリ203に出力し、独自コードの読み取りを終了する。
そして最後に、ステップ2313で、処理は終了する。
次に、本発明を応用した実施例について説明する。
先ず最初に、本発明を応用した、例えば、コンビニエンスストアの端末使用する、公共料金等の支払いを行う実施例である、本発明の第3の実施例について説明する。
通常は、コンビニエンスストアで支払い可能な公共料金等の払い込み用紙は、切り離し可能な複数の伝票が一枚となっており、それぞれに一つあるいは二つ以上のバーコードが印刷されている。その用紙を利用して支払いを行う場合には、レジ係は、バーコード読み取り可能なハンディターミナルで、一つずつバーコードを読み取り、確認を行っている。そして、それらのバーコードをすべて読み取った場合に、レジのPOS端末の表示画面に、支払い金額等の情報が表示される。そして、その後に、金銭の授受が行われ、支払いが完了する。
図24は、現在普及しつつあるコンビニエンスストアのネット端末に本発明のコード読み取り装置を内蔵し、伝票や文書を読み取るスキャナを設けた装置の例を示す。図24に示されたネット端末2401は、表示画面(タッチパネル)2402、硬貨投入口2403、紙幣投入口2404、プリペイドカード挿入口2405、クレジットカード挿入口2406、硬貨釣銭口2407、文書用紙挿入口2408及び領収書発行口2409等により構成される。使用する支払い用紙は、図1に示されたようなフォーマットを有し、バーコード104には本用紙のIDを、QRコード103には債権者名、金額、債務者名、利用明細情報へのアクセス先のURLが記録されている。また、独自コード102には、利用明細を照会するためのパスワードが記録されている。人が読める文章は、債権者名、金額、債務者名、支払い期限等の一般的な情報のみ記載されている。詳しい利用明細情報を知りたい場合は独自コード102に記録されたパスワードを入力して認証を行い、ネットワークを介して利用明細情報を取得する。
図25は料金の支払いのフローを示す図である。本フローは、先ず最初にステップ2501で開始する。
次に、ステップ2502では、料金の支払いをするために来店した顧客は、ネット端末2401の表示画面2402から、料金払い込みのメニューを選択する。
払い込みのメニューを選択した後に、次に、ステップ2503で、払い込み用紙を文書用紙挿入口2408に挿入する。
次に、ステップ2504へ進む。文書用紙挿入口2408は、シートスキャナに直結されており、スキャナ部で払い込み用紙を画像入力する。画像の中の複数のバーコードをコード読み取り装置で読み取り、バーコードやQRコードにエンコードされている文書ID、債権者名、金額、URL等の情報を読み出す。また、独自コードをデコードし、パスワードを取得する。
次に、ステップ2505で、債権者名、金額、債務者名の情報を、ネット端末2401の表示画面2402に表示する。同時に「利用明細を表示する」ボタンと、「明細を見ずに確認」のボタンを表示する。
次に、ステップ2506に進み、顧客が利用明細を表示するボタンを押した時はパスワード入力画面が表示され、顧客はパスワードを入力する。
次に、ステップ2507に進み、パスワードが独自コードにあるパスワードと一致したならば、ネット端末2401は、URLにアクセスし、利用明細を取得し、表示画面2402に表示する。同時に「支払いを確認」ボタンを表示する。
次に、ステップ2508に進み、顧客は、「支払いを確認」ボタンを押して支払いの確認をした後、紙幣挿入口2404及び硬貨投入口2403より現金を投入し、あるいはプリペイドカード挿入口2405にプリペイドカードを、又は、クレジットカード挿入口2406へクレジットカードを挿入する。
そして、ステップ2509で、ネット端末は精算を行い、領収書を発行する。
一方、ステップ2506で、顧客が「明細を見ずに確認」ボタンを押した場合は、ステップ2510へ進み、紙幣挿入口2404及び硬貨投入口2403より現金を投入し、あるいはプリペイドカード挿入口2405にプリペイドカードを、又は、クレジットカード挿入口2406へクレジットカードを挿入する。そして、ネット端末2401は精算を行う。
次に、ステップ2511で、ネット端末2401は、領収書発行口2409から領収書を発行する。
最後に、ステップ2512へ進み、フローが終了する。
このように、ハンディターミナルでは、慣れた店員が煩雑な作業を行わなければならない場合でも、本発明の装置を組み込んだネット端末2401を使用すれば、顧客が無人の端末で払い込み用紙を挿入するだけの簡単な処理で支払いを済ますことができ、レジの混雑の緩和、個人のプライバシー保護等の面から非常に有利である。
次に、本発明を応用した、例えば、セキュリティ機能付き複写機(MFP)と文書管理装置(例えば、コード付き文書でパスワードが一致した場合のみ、複写、オリジナル文書の印刷、電子文書編集が可能な例)の実施例である、本発明の第4の実施例について説明する。
図26は、本発明の第4の実施例の、セキュリティ機能つきの複写機(MFP)2602と文書管理装置2601のネットワークを介しての接続を示す図である。文書管理装置2601にはデータベース2604が接続され、そこでは電子文書と文書IDとが関連付けられて管理されている。文書編集装置2605は、電子文書を作成、閲覧、編集、及び保存することができる装置であり、文書管理装置2601のデータベース2604と接続して、データベース2604に登録されている文書の操作や文書編集装置2605で編集した文書をデータベース2604に登録することができる。まず、文書編集装置2605が、電子文書を印刷する時にパスワードを付与する。パスワードは、独自の2次元コード(2次元コード102)内に埋め込まれる(図1参照)。文書IDも一次元のバーコード(バーコード104)に埋め込まれ、その他文書に関連する情報もQRコード(QRコード103)に埋め込まれて同時に印刷される。
次に、図27を用いてその紙文書をセキュリティ機能つきの複写機(MFP)2602でコピーを行う場合の処理フローを説明する。
図27のフローは、ステップ2701で開始し、ステップ2702で文書がスキャナに設置されたのを検知する。
次にステップ2703で、複写機のスタートボタンが押されたのを検知する。
次にステップ2704で、スキャナが動作して、紙文書を画像として入力する。そして、走査された文書画像は、複写機内のメモリやハードディスクに一時保管される。
次にステップ2705で、複写機内ではコード読み取り装置が作動し、画像の中のコードを読み取る。
ステップ2706で、画像内に独自コードが存在するならば、それをデコードした後に、操作パネルにパスワードの入力を促すダイアログを表示する。
次にステップ2707で、ユーザはパスワードを入力する。
ステップ2708で、パスワードが一致すれば、ステップ2709に進み、一時保存された画像を印刷開始する。一致しなければ、ステップ2710に進み、保存した画像は消去され文書は複写されない。
そして、フローは、ステップ2711で終了する。
次に図28を使用して、文書管理装置2601に接続されている場合に、オリジナルの電子文書取り出す操作のフローについて説明する。
図28のフローは、ステップ2801で開始し、ステップ2802で文書がスキャナに設置されたのを検知する。
次に、ステップ2803で、ユーザは、複写機の操作パネルの「電子文書取り出し」ボタンが押下されたのを検知する。
次に、ステップ2804で、スキャナが動作して紙文書を画像として入力する。そして、スキャンされた文書画像は複写機内のメモリやハードディスクに一時保管される。
次に、ステップ2805で、複写機内ではコード読み取り装置が作動し、画像の中のコードを読み取る。バーコードに埋め込まれた文書IDのデコード、画像内に独自コードが存在するならば、それのデコードを行う。独自コードをデコードした後、操作パネルにパスワードの入力を促すダイアログを表示する。
次に、ステップ2807で、ユーザはパスワードを入力する。
次に、ステップ2808で、パスワードが一致すれば、ステップ2809に進み、文書IDを有する電子文書を印刷するよう文書管理装置2601に要求を出す。
次に、ステップ2810で、文書管理装置2601は、その管理しているデータベース内に文書IDを有する電子文書が存在すれば、文書管理装置2601は、要求元の複写機宛に電子文書を印刷する命令を発行する。
次に、ステップ2811で、文書を印刷し、ステップ2812で保存されている画像を削除する。
そして、フローは、ステップ2813で終了する。
次に、図29は、さらに紙文書の元となる電子文書を取り出して、文書編集装置2605上に表示させ、編集可能とする場合のフローを示す図である。
図29のフローは、ステップ2901で開始し、ステップ2902で文書がスキャナに設置されたのを検知する。
次に、ステップ2903で、複写機の操作パネルの「文書編集」というボタンが押下されたのを検知する。
次に、ステップ2904で、紙文書が読み込まれ、保存される。
次に、ステップ2905で、複写機は読み取った文書画像からコードをデコードし、文書IDや独自コードからパスワードを取り出す。
次に、ステップ2906で、独自コードが存在するならば、次に、ステップ2907へ進み、ユーザにパスワードの入力を促すダイアログを操作パネルに表示する。
次に、ステップ2908で、パスワードが一致すれば、次に、ステップ2909で、複写機は文書を編集したい端末名を選択させるダイアログを表示し、ユーザに文書表示・編集させたい端末を選ばせる。
次に、ステップ2910で、複写機は文書IDと表示先端末名を文書管理装置2601に送信する。
次に、ステップ2911で、文書管理装置2601は、受信した文書IDと関連付けられた電子文書を文書編集装置2605に送信する。
次に、ステップ2912で、文書編集装置2605は、受信した文書を開いて表示し、編集可能状態とする。もし、パスワードが一致しなければ文書の編集はすることはできないが、電子文書の閲覧は端末で可能となる。
ステップ2906で、独自コードが存在しないならば、ステップ2913へ進む。ステップ2913からステップ2916の動作は、ステップ2909からステップ2912の動作と、文書の編集の可不可を除き、同一である。
次に、本発明を応用した、例えば、コンビニエンスストアのネット端末を利用した通信販売の会員サービスの実施例である、本発明の第5の実施例について説明する。
コンビニエンスストアのネット端末を利用した通信販売の会員サービスは、自宅でパソコンやネットワークが利用できない会員向けの通信販売サービスであり、特に頻繁に利用している会員、高金額の購入をしている会員向けのキャンペーンや特別サービスを通販業者が提供し、それを会員が利用する。前記サービスの提供は通販業者から会員へのダイレクトメールという形で通知される。
図30は、ネット端末3001、インターネット3002及び通販業者3003の間の接続を示す図である。ネット端末3001が、ネットワークを介してインターネット3002と接続されており、通販業者3003のサーバーは、ネット端末3001とインターネット3002を介して接続可能である。たとえば、ここで使用する紙文書は通販会員向けのカタログ用紙である。カタログ用紙上のバーコードには、文書ID、QRコードにはURL、独自コードには会員番号、パスワードが格納されている。このカタログの文書IDやURLは、頻繁に利用している会員、大量に購入している会員向けの特別なサービスを提供するプログラムと連動しており、会員はこのカタログ用紙を利用することにより通販業者が提供する特別なサービスを受けることができる。このカタログ用紙はダイレクトメールで送られ、しかも会員番号やパスワードが、カタログ用紙にエンコードされているために、特定の会員のみ利用することができる。しかも、利用する会員の商品購入履歴や登録されている趣向から会員に最適と思われる情報をカスタマイズして提供することが可能になる。会員は会員カードなどを必要とせず、このカタログ用紙のみをコンビニエンスストアに持参してサービスを利用すればよい。
次に、図31を使用して、ネット端末を利用した通信販売の会員サービスのフローについて説明する。
図31のフローは、ステップ3101で開始する。
次に、ステップ3102で、会員はネット端末3001の画面から通販業者3003の会員サービスの選択をする。
次に、ステップ3103で、カタログ用紙をネット端末3001のスキャナに挿入する。
次に、ステップ3104で、スキャナは文書を画像入力し、各コードをデコードする。
次に、ステップ3105で、独自コードをデコードした際、画面に会員名とパスワードの入力を促すダイアログを表示する。会員は端末から会員名とパスワードを入力する。
次に、ステップ3106で、入力された情報が一致すれば、次に、ステップ3107で、ネット端末3001は、コードを読み取ることによって取得したURL(サービス提供者)にアクセスし、会員情報を送信する。
次に、ステップ3108で、文書発行元(通販業者3003)では、カタログ情報の詳細や会員情報、購入履歴に基づいた最適な情報を選択して、会員にとって最適と思われる商品の購入案内や情報をネット端末へ送信する。
次に、ステップ3109で、会員へ情報、サービスを提供する。
そして、フローはステップ3110で終了する。