(57)【要約】【課題】少ないメモリ容量で切り出しシンボルを検索できる二次元コード読取装置を提供する。【解決手段】二次元コード読取装置では、二次元コードが記録された用紙をスキャンして得られた二次元コード包含データが所定の行数のデータずつ、二つのラインメモリ群に交互に展開される。ラインメモリ群に展開されたデータから、行方向で第１のパターン４９を有する行を検索し、第１のパターン４９が見つけられた場合、第１のパターン４９と第２のパターン５３を結合した第２の結合パターン５５が切り出しシンボルの一部であると推定できるか判断する。上記推定された場合、第３のパターン６１、第１のパターン４９及び第２のパターン５３を結合した第１の結合パターン６３について、列方向及び斜め方向で第１のパターン４９を示すか判断し、第１のパターン４９を示すと判断した場合、第１の結合パターン６３を切り出しシンボルと確定する。【選択図】図１５
2009043124.tif 000002
【特許請求の範囲】
【請求項１】
二次元コード包含データから切り出しシンボルを検索する二次元コード読取装置であって、
前記二次元コード包含データが所定の行数のデータずつ展開されるラインメモリ群と、
前記ラインメモリ群に展開されたデータから、行方向で第１のパターンを有する行を検索する検索部と、
前記検索部によって前記第１のパターンを有する行が見つけられた場合、前記第１のパターンとつながっていると共に前記第１のパターンを有する行より前の行に存在する第２のパターン、前記第１のパターンとつながっていると共に前記第１のパターンを有する行より後の行に存在する第３のパターン、及び前記第１のパターンを結合した第１の結合パターンについて、列方向及び斜め方向で前記第１のパターンを示すか判断し、前記第１のパターンを示すと判断した場合、前記第１の結合パターンを前記切り出しシンボルと確定する確定部と、を備える
ことを特徴とする二次元コード読取装置。
【請求項２】
前記検索部によって前記第１のパターンを有する行が見つけられた場合、前記第１のパターン及び前記第２のパターンを結合した第２の結合パターンについて、列方向及び斜め方向で前記第１のパターンの一部を示すか判断し、列方向及び斜め方向で前記第１のパターンの一部を示すと判断した場合、前記第２の結合パターンを前記切り出しシンボルの一部と推定する推定部を備え、
前記推定部で前記第２の結合パターンが前記切り出しシンボルの一部と推定された場合、前記確定部での処理を実行する
ことを特徴とする請求項１に記載の二次元コード読取装置。
【請求項３】
前記ラインメモリ群は二つ設けられており、
前記二次元コード包含データは、所定の行数のデータずつ、一方の前記ラインメモリ群と他方の前記ラインメモリ群に交互に展開され、
一方の前記ラインメモリ群に展開されたデータから前記第１のパターンを有する行が見つからない場合、他方の前記ラインメモリ群に展開されたデータにおいて前記第１のパターンを有する行の検索が終了するまで、一方の前記ラインメモリ群に展開されたデータは保持され続ける
ことを特徴とする請求項１又は２に記載の二次元コード読取装置。
【請求項４】
前記ラインメモリ群は三つ設けられており、
前記二次元コード包含データは、所定の行数のデータずつ、三つの前記ラインメモリ群を輪番して展開され、
一の前記ラインメモリ群に展開されたデータから前記第１のパターンを有する行が見つからない場合、他の前記ラインメモリ群に展開されたデータにおいて前記第１のパターンを有する行の検索が終了するまで一の前記ラインメモリ群に展開されたデータは保持され続け、かつ残りの前記ラインメモリ群に次のデータが展開される
ことを特徴とする請求項１又は２に記載の二次元コード読取装置。
【請求項５】
二次元コード包含データから切り出しシンボルを検索する方法であって、
ラインメモリ群に前記二次元コード包含データを所定の行数のデータずつ展開する展開ステップと、
前記展開ステップによって前記ラインメモリ群に展開されたデータから、行方向で第１のパターンを有する行を検索する検索ステップと、
前記検索ステップによって前記第１のパターンを有する行が見つけられた場合、前記第１のパターンとつながっていると共に前記第１のパターンを有する行より前の行に存在する第２のパターン、前記第１のパターンとつながっていると共に前記第１のパターンを有する行より後の行に存在する第３のパターン、及び前記第１のパターンを結合した第１の結合パターンについて、列方向及び斜め方向で前記第１のパターンを示すか判断し、前記第１のパターンを示すと判断した場合、前記第１の結合パターンを前記切り出しシンボルと確定する確定ステップと、を備える
ことを特徴とする切り出しシンボルの検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、切り出しシンボルを有する二次元コードの読み取りに利用される二次元コード読取装置及び切り出しシンボルの検索方法に関する。
【背景技術】
【０００２】
二次元コードは、情報を行方向と列方向（すなわち二次元）で記録している。したがって、バーコードに比べて記録できる情報量が多く、また、数字、英字の他に、かなや漢字の情報も記録できるため、幅広く利用されている。
【０００３】
二次元コードの読取装置として、複数の画像メモリを備え、ＣＣＤで二次元コードを撮像して得られた画像データについて、それぞれの画像メモリに異なるフレームの画像データを展開し、一の画像メモリに展開された画像データを利用して読み取り処理をし、読み取りに失敗した場合、他の画像メモリに展開された画像データを利用して読み取り処理をすることにより、二次元コードの高速読み取りを実現する装置が提案されている（例えば特許文献１参照）。
【特許文献１】特開平１０−１９８７５３号公報（段落００５０〜００５３、図１）
【０００４】
二次元コードには様々なタイプがあり、切り出しシンボルと称される位置検出用パターンを有する二次元コード（ＱＲコード）では、二次元コードの位置の認識に切り出しシンボルを利用している。したがって、切り出しシンボルを有する二次元コードでは、読み取り処理に切り出しシンボルの検索が含まれる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、少ないメモリ容量で切り出しシンボルを検索できる二次元コード読取装置及び切り出しシンボルの検索方法を提供することである。
【課題を解決するための手段】
【０００６】
本発明に係る二次元コード読取装置は、二次元コード包含データから切り出しシンボルを検索する二次元コード読取装置であって、前記二次元コード包含データが所定の行数のデータずつ展開されるラインメモリ群と、前記ラインメモリ群に展開されたデータから、行方向で第１のパターンを有する行を検索する検索部と、前記検索部によって前記第１のパターンを有する行が見つけられた場合、前記第１のパターンとつながっていると共に前記第１のパターンを有する行より前の行に存在する第２のパターン、前記第１のパターンとつながっていると共に前記第１のパターンを有する行より後の行に存在する第３のパターン、及び前記第１のパターンを結合した第１の結合パターンについて、列方向及び斜め方向で前記第１のパターンを示すか判断し、前記第１のパターンを示すと判断した場合、前記第１の結合パターンを前記切り出しシンボルと確定する確定部と、を備えることを特徴とする。
【０００７】
本発明に係る二次元コード読取装置は、前記検索部によって前記第１のパターンを有する行が見つけられた場合、前記第１のパターン及び前記第２のパターンを結合した第２の結合パターンについて、列方向及び斜め方向で前記第１のパターンの一部を示すか判断し、列方向及び斜め方向で前記第１のパターンの一部を示すと判断した場合、前記第２の結合パターンを前記切り出しシンボルの一部と推定する推定部を備え、前記推定部で前記第２の結合パターンが前記切り出しシンボルの一部と推定された場合、前記確定部での処理を実行する、ようにすることができる。
【０００８】
これによれば、列方向及び斜め方向の両方で第２の結合パターンが第１のパターンの一部を示せば、第２の結合パターンを切り出しシンボルの一部と推定している。よって、切り出しシンボルの一部と推定された第２の結合パターンは、切り出しシンボルの一部である可能性が高く、切り出しシンボルでないパターンの多くを推定部での処理の段階で除外できるので、切り出しシンボルを効率的に検索できる。
【０００９】
本発明に係る二次元コード読取装置において、前記ラインメモリ群は二つ設けられており、前記二次元コード包含データは、所定の行数のデータずつ、一方の前記ラインメモリ群と他方の前記ラインメモリ群に交互に展開され、一方の前記ラインメモリ群に展開されたデータから前記第１のパターンを有する行が見つからない場合、他方の前記ラインメモリ群に展開されたデータにおいて前記第１のパターンを有する行の検索が終了するまで、一方の前記ラインメモリ群に展開されたデータは保持され続ける、ようにすることができる。
【００１０】
これによれば、第２の結合パターンが一方及び他方のラインメモリ群に展開されたデータに渡って存在する場合に、他方のラインメモリ群に展開されたデータから第１のパターンを有する行が見つけられたとき、一方のラインメモリ群に展開されたデータは保持されている。したがって、一方のラインメモリ群に展開されたデータを再度、展開する必要がないので、切り出しシンボルの検索の高速化を図れる。
【００１１】
本発明に係る二次元コード読取装置において、前記ラインメモリ群は三つ設けられており、前記二次元コード包含データは、所定の行数のデータずつ、三つの前記ラインメモリ群を輪番して展開され、一の前記ラインメモリ群に展開されたデータから前記第１のパターンを有する行が見つからない場合、他の前記ラインメモリ群に展開されたデータにおいて前記第１のパターンを有する行の検索が終了するまで一の前記ラインメモリ群に展開されたデータは保持され続け、かつ残りの前記ラインメモリ群に次のデータが展開される、ようにすることができる。
【００１２】
これによれば、一のラインメモリ群に展開されたデータの保持及び他のラインメモリ群に展開されたデータにおいて第１のパターンを有する行の検索がされているとき、残りのラインメモリ群に次のデータが展開されるので、切り出しシンボルの検索をさらに高速化できる。
【００１３】
本発明に係る切り出しシンボルの検索方法は、二次元コード包含データから切り出しシンボルを検索する方法であって、ラインメモリ群に前記二次元コード包含データを所定の行数のデータずつ展開する展開ステップと、前記展開ステップによって前記ラインメモリ群に展開されたデータから、行方向で第１のパターンを有する行を検索する検索ステップと、前記検索ステップによって前記第１のパターンを有する行が見つけられた場合、前記第１のパターンとつながっていると共に前記第１のパターンを有する行より前の行に存在する第２のパターン、前記第１のパターンとつながっていると共に前記第１のパターンを有する行より後の行に存在する第３のパターン、及び前記第１のパターンを結合した第１の結合パターンについて、列方向及び斜め方向で前記第１のパターンを示すか判断し、前記第１のパターンを示すと判断した場合、前記第１の結合パターンを前記切り出しシンボルと確定する確定ステップと、を備えることを特徴とする。
【発明の効果】
【００１４】
本発明に係る二次元コード読取装置及び切り出しシンボルの検索方法によれば、二次元コード包含データを所定の行数のデータずつラインメモリ群に展開し、展開されたデータを基にして切り出しシンボルを検索しているので、少ないメモリ容量で切り出しシンボルを検索することが可能となる。
【発明を実施するための最良の形態】
【００１５】
本発明の実施形態について図面を用いて説明する。図１は、本実施形態に係る二次元コード読取装置の機能を有する複合機１のハードウェア構成を示すブロック図である。複合機１は、コピー、ファクシミリ、スキャナ及びプリンタの機能を有する。
【００１６】
複合機１は、制御部３、画像読取部５、画像記録部７、表示部９、操作部１１、モデム１３、ＮＣＵ１５、ＲＯＭ１７、ＲＡＭ１９、画像メモリ２１、コーデック２３、ＬＡＮインターフェース２５、二つのラインメモリ群２７等が相互にバス２９で接続された構成を有する。制御部３は、例えばＣＰＵにより実現されており、複合機１を構成する上記ハードウェアを制御すると共に複合機１の動作に必要なソフトウェアを実行する。
【００１７】
画像読取部５は、ＣＣＤ等によって画像（文字、図、写真等）を読み取って画像データとして出力する。画像記録部７は、電子写真方式等のプリンタであり、画像読取部５から出力された画像データやファクシミリ通信により受信した別のファクシミリ機からの画像データを画像に戻し、この画像が記録された用紙を出力する。
【００１８】
表示部９は、複合機１の動作状態、各種設定内容等を表示する。表示部９は、ＬＣＤ、ＣＲＴ等で実現される。操作部１１は、複合機１の操作に必要なキー（テンキー、スタートキー、リセットキー、各種のファンクションキー等）を備える。
【００１９】
モデム１３は、通常のファクシミリ通信用のファクシミリモデムの機能を有する。また、モデム１３は、ＮＣＵ１５と直接に接続されている。ＮＣＵ１５は、公衆電話回線Ｌを閉結及び開放する機能の他に、通信する相手方の電話番号に応じたダイヤルパルスを送出する機能及び着信を検出する機能を有する。また、ＮＣＵ１５は、モデム１３を必要に応じて公衆電話回線Ｌに接続する。
【００２０】
ＲＯＭ１７は、フラッシュメモリ等により実現されており、複合機１の動作に必要なソフトウェアを記憶している。ＲＡＭ１９は、ＳＲＡＭ、ＤＲＡＭ等により実現されており、ソフトウェアの実行時に発生するデータを一時的に記憶したり、アプリケーションソフト等を記憶したりする。
【００２１】
画像メモリ２１は、ＤＲＡＭ等で実現されており、送信すべき画像データ、受信した画像データ、画像読取部５から出力された画像データ等を一時的に記憶する。コーデック２３は、画像データを符号化圧縮すると共に符号化圧縮されている画像データを復号する。ＬＡＮインターフェース２５は、複合機１がＬＡＮと通信可能に接続するインターフェースである。
【００２２】
ラインメモリ群２７は、一行分のデータが展開されるラインメモリの集まりである。複合機１には、二つのラインメモリ群２７Ａ，２７Ｂが取り付けられている。図２は、二つのラインメモリ群２７Ａ，２７Ｂの拡大図である。ラインメモリ群２７Ａは、所定の本数（本実施形態では１６本）のラインメモリ３１から構成される。ラインメモリ３１は多数（本実施形態では例えば８ｋ（８１９２）ドット）のメモリセル３３を行方向に配列された構成を有する。ラインメモリ３１としては、例えば、ＳＲＡＭが用いられる。ラインメモリ群２７Ｂは、ラインメモリ群２７Ａと同じ構成である。
【００２３】
本明細書では、切り出しシンボルを有する二次元コードがデータに含まれているファイルや、二次元コードが記録されている用紙をスキャンして得られた画像データを、二次元コード包含データと称する。本実施形態に係る二次元コード読取装置は、二次元コード包含データから切り出しシンボルを検索する機能を有する。
【００２４】
図３は、二次元コード４１が記録されている用紙４３の一例の平面図である。この例の二次元コード４１では、四つの角部のうちの三つに切り出しシンボル４５が配置されている。二次元コード４１を読み取る場合、切り出しシンボル４５を検索し、切り出しシンボル４５を利用して二次元コード４１の位置を認識する。
【００２５】
図４は、切り出しシンボル４５及びセル４７の拡大図である。セル４７には白セルと黒セルがある。セル４７の形状は正方形である。切り出しシンボル４５は、行方向、列方向、斜め方向に白セルと黒セルを所定の順番で、具体的には、黒セル１個：白セル１個：黒セル３個：白セル１個：黒セル１個の順番で並べたものである。切り出しシンボル４５を行方向、列方向、斜め方向にスキャンして得られた信号を二値化すると、図５に示すように、行方向、列方向、斜め方向のそれぞれについて、１：１：３：１：１を示すデータが得られる。したがって、あるパターンを行方向、列方向、斜め方向にスキャンして、１：１：３：１：１を示すデータが得られれば、そのパターンを切り出しシンボル４５と確定することができる。
【００２６】
二次元コード４１は、切り出しシンボル４５以外にも、白セルと黒セルを並べて表現される構成要素（アライメントパターン、タイミングパターン、データセル等）を備えているが、本実施形態では図示を省略している。
【００２７】
次に、本実施形態に係る二次元コードの読み取りについて、図１に示す画像読取部５で図３に示す用紙４３をスキャンして得られた画像データ（二次元コード包含データの一例）を例にして、図６のフローチャートを用いて説明する。
【００２８】
画像読取部５の原稿台に用紙４３をセットして、複合機１を二次元コード読取モードに設定し、操作部１１のスタートキーを押すと用紙４３のスキャンが開始される。用紙４３において、主走査方向Ｘを行方向とし、副走査方向Ｙを列方向とする。二次元コード包含データは、所定の行数（本実施形態では１６行）のデータずつ、ラインメモリ群２７Ａ，２７Ｂに交互に展開される。所定の行数のデータとは、用紙４３の領域Ｒをスキャンして得られたデータ（画像データ）のことである。
【００２９】
まず、第１のパターンを有する行が検索される（ステップＳ１）。第１のパターンとは、白セルと黒セルが所定の順番で並べられているパターンであり、本実施形態では、黒セル１個：白セル１個：黒セル３個：白セル１個：黒セル１個の順番でセル４７が並べられていることを示すパターンのことである。第１のパターンを有する行の検索について詳細に説明する。
【００３０】
領域Ｒ１がスキャンされると、図７に示すように、領域Ｒ１のデータがラインメモリ群２７Ａに展開される。ラインメモリ群２７Ｂにはデータが未だ展開されていない。領域Ｒ１に続いて領域Ｒ２がスキャンされると、図８に示すように、領域Ｒ２のデータがラインメモリ群２７Ｂに展開される。一方、ラインメモリ群２７Ａでは、展開されている領域Ｒ１のデータから第１のパターンを有する行が検索される。
【００３１】
領域Ｒ１のデータからは第１のパターンを有する行が見つからなかったので（ステップＳ３でＮｏ）、次の領域Ｒのデータが展開されているか判断される（ステップＳ５）。領域Ｒ２のデータがラインメモリ群２７Ｂに展開されているので（ステップＳ５でＹｅｓ）、ステップＳ１に戻り、図９に示すように、ラインメモリ群２７Ｂに展開された領域Ｒ２のデータから第１のパターンを有する行を検索する。この検索が終了するまで、ラインメモリ群２７Ａに展開された領域Ｒ１のデータは保持され続ける。Ｒ２のデータから第１のパターンを有する行の検索が終了するまで、領域Ｒ３のデータを展開できるラインメモリ群２７がないので、スキャンは一旦停止される。
【００３２】
Ｒ２のデータから第１のパターンを有する行を検索した結果、第１のパターンを有する行が見つからなかったので（ステップＳ３でＮｏ）、スキャンを再開する。次の領域Ｒのデータが展開されているか判断される（ステップＳ５）。図１０に示すように、ラインメモリ群２７Ａには領域Ｒ３のデータが展開されるので（ステップＳ５でＹｅｓ）、ステップＳ１に戻る。ラインメモリ群２７Ｂに展開された領域Ｒ２のデータは保持され続けている。
【００３３】
図１１に示すように、ラインメモリ群２７Ａに展開された領域Ｒ３のデータから第１のパターンを有する行が検索される（ステップＳ１）。ラインメモリ群２７Ｂに展開された領域Ｒ２のデータは保持されたままである。領域Ｒ４のデータを展開できるラインメモリ群２７がないので、スキャンは一旦停止される。
【００３４】
ラインメモリ群２７Ａの２番目のラインメモリ３１（すなわち、二次元コード包含データの第３４行）に、黒セル１個：白セル１個：黒セル３個：白セル１個：黒セル１個が並べられていることを示すパターン、すなわち第１のパターン４９が展開されている。したがって、ステップＳ３でＹｅｓと判断される。図３に示す切り出しシンボル４５Ｂよりも切り出しシンボル４５Ａが先にスキャンされるので、第１のパターン４９は切り出しシンボル４５Ａのものである。
【００３５】
なお、領域Ｒ３のデータから第１のパターンを有する行が見つからなかった場合（ステップＳ３でＮｏ）、領域Ｒ３以降の領域についてデータの展開・検索・保持を実行する（ステップＳ５でＹｅｓ、ステップＳ１）。領域Ｒ３以降の領域から第１のパターンを有する行が見つからなかった場合は、ステップＳ３でＮｏ及びステップＳ５でＮｏとなり、二次元コード４１の読み取り処理は終了する。
【００３６】
領域Ｒ３のデータから第１のパターンを有する行が見つかったので（ステップＳ３でＹｅｓ）、第１のパターン４９を基にして、第１のパターンを有する行より前の行であって切り出しシンボル４５が現れる最初の行を決定する（ステップＳ７）。これを詳細に説明する。図１３は、第１のパターン４９が展開されたラインメモリ３１を示している。行方向や列方向での“１”の幅は、図４に示すセル４７（白セル、黒セル）の一辺の長さと対応する。“１”の幅を構成するメモリセル３３の個数が本実施形態では４個なので、４個分のメモリセル３３がセル４７の一辺の長さと対応する。
【００３７】
図１１に示すように、切り出しシンボル４５は第１のパターン４９が現れるまでに、列方向で２個分のセル４７が展開されている。言いかえれば、二次元コード包含データの第３４行から８行前の第２６行が、切り出しシンボル４５の現れる最初の行となる。誤差等を考慮して、例えば２行分（０．５個分のセル４７）だけ余裕を持たせて、第２６行より２行前の第２４行を、切り出しシンボル４５の現れる最初の行とする。
【００３８】
第２４行はラインメモリ群２７Ｂに展開されている。よって、ラインメモリ群２７Ｂに展開された領域Ｒ２のデータ及びラインメモリ群２７Ａに展開された領域Ｒ３のデータを取り出して、図１４に示すパターン記憶部５１に格納する（ステップＳ９）。図１に示す画像メモリ２１の一部がパターン記憶部５１に割り当てられている。
【００３９】
第２のパターン５３は、図１１に示すラインメモリ群２７Ａ，２７Ｂにおいて、第１のパターン４９とつながっていると共に第１のパターンを有する行（第３４行）より前の行に存在するパターンのことである。第１のパターン４９及び第２のパターン５３を結合したパターンを第２の結合パターン５５と称する。第２の結合パターン５５と行方向に間を設けてパターン５７が存在する。これは、図３に示す切り出しシンボル４５Ｂの一部である。ここでの検索対象になっているのは、切り出しシンボル４５Ａである。
【００４０】
次に、第２の結合パターン５５が切り出しシンボル４５の一部と推定できるか判断される（ステップＳ１１）。図１４に示す第２の結合パターン５５について、列方向での白セルと黒セルの並びを調べる。第２の結合パターン５５は、列方向で黒セル１個：白セル１個の関係、すなわち第１のパターン４９の一部、を示している。次に、第２の結合パターン５５について、斜め方向での白セルと黒セルの並びを調べるために、第２の結合パターン５５を切り出して、図１７に示すように、切り出しパターン記憶部５９に格納する。図１に示す画像メモリ２１の一部に、切り出しパターン記憶部５９が割り当てられている。
【００４１】
切り出しパターン記憶部５９で第２の結合パターン５５を４５°回転させて、行方向又は列方向での第２の結合パターン５５の白セルと黒セルの並びを調べる（つまり斜め方向での第２の結合パターン５５の白セルと黒セルの並びを調べる）。第２の結合パターン５５は、黒セル１個：白セル１個の関係（すなわち第１のパターン４９の一部）を示している。
【００４２】
以上より、第２の結合パターン５５は、列方向及び斜め方向で第１のパターン４９の一部を示すので、切り出しシンボル４５の一部と推定することができる（ステップＳ１１でＹｅｓ）。
【００４３】
本実施形態では、第２の結合パターン５５が列方向及び斜め方向の両方で第１のパターン４９の一部を示す場合、第２の結合パターン５５を切り出しシンボル４５の一部と推定する判断をしている。よって、切り出しシンボル４５の一部と推定された第２の結合パターン５５は、切り出しシンボル４５の一部である可能性が高く、切り出しシンボル４５でないパターンの多くをステップＳ１１の段階で除外できるので、切り出しシンボル４５を効率的に検索することができる。本実施形態ではステップＳ１１を実行しているが、ステップＳ１１を省略してステップＳ９からステップＳ１３へ進んでもよい。
【００４４】
なお、第２の結合パターン５５について、列方向及び斜め方向のうちいずれか一方向についてだけ、第１のパターン４９の一部を示すか判断し、第１のパターン４９の一部を示す場合、第２の結合パターン５５を切り出しシンボル４５の一部と推定する判断をしてもよい。
【００４５】
第２の結合パターン５５が切り出しシンボル４５の一部と推定できない場合（ステップＳ１１でＮｏ）、ステップＳ１に戻り、第１のパターンを有する行（第３４行）の次から第１のパターンを有する行の検索が再開される。
【００４６】
第２の結合パターン５５が切り出しシンボル４５の一部と推定された場合（ステップＳ１１でＹｅｓ）、切り出しシンボル４５が最後に現れる行を決定する（ステップＳ１３）。詳細に説明すると、第１のパターンを有する第３４行から切り出しシンボル４５が現れる最後の行までは、列方向で５個分（正確には４＋３/４個分）のセル４７が展開される。したがって、第１のパターンを有する第３４行から１９行後の第５３行が、切り出しシンボル４５が現れる最後の行となる。本実施形態では２行分（０．５個分のセル４７）だけ余裕を持たせて第５５行を最後の行とする。
【００４７】
図１１に示すラインメモリ群２７Ａに展開された領域Ｒ３のデータは、二次元コード包含データの第３３行から第４８行までのデータである。第４９行から第５５行までのデータは、領域Ｒ４のデータに含まれる。よって、一旦停止していた用紙４３のスキャンを再開して、図１２に示すように、ラインメモリ群２７Ｂに領域Ｒ４のデータを展開する。ラインメモリ群２７Ａに展開された領域Ｒ３のデータは保持されている。
【００４８】
ラインメモリ群２７Ｂに展開された領域Ｒ４のデータを取り出して、図１５に示すパターン記憶部５１に追記する（ステップＳ１５）。領域Ｒ４のデータは、領域Ｒ３のデータの後に追記されている。
【００４９】
第３のパターン６１は、図１２に示すラインメモリ群２７Ａ，２７Ｂにおいて、第１のパターン４９とつながっていると共に第１のパターンを有する行（第３４行）より後の行に存在するパターンのことである。第３のパターン６１、第１のパターン４９及び第２のパターン５３を結合したものが第１の結合パターン６３である。
【００５０】
第１の結合パターン６３が切り出しシンボル４５と確定できるか判断する（ステップＳ１７）。第１の結合パターン６３の列方向での白セルと黒セルの並びを調べる。第１の結合パターン６３は列方向で、黒セル１個：白セル１個：黒セル３個：白セル１個：黒セル１個の関係を有する。
【００５１】
次に、第１の結合パターン６３について、斜め方向での白セルと黒セルの並びを調べるために、第１の結合パターン６３を切り出して、図１８に示すように切り出しパターン記憶部５９に格納する。第１の結合パターン６３を４５°回転させて、行方向又は列方向での第１の結合パターン６３の白セルと黒セルの並びを調べる（つまり斜め方向での第１の結合パターン６３の白セルと黒セルの並びを調べる）。第１の結合パターン６３は、黒セル１個：白セル１個：黒セル３個：白セル１個：黒セル１個の関係を有する。
【００５２】
以上より、第１の結合パターン６３が列方向及び斜め方向で第１のパターン４９を示すので、第１の結合パターン６３を切り出しシンボル４５と確定することができる。なお、上記確定できない場合（ステップＳ１７でＮｏ）、ステップＳ１に戻り、第１のパターンを有する行（第３４行）の次から第１のパターンを有する行の検索が再開される。第１のパターンを有する行が含まれる領域Ｒのデータがいずれのラインメモリ群２７Ａ，２７Ｂにも存在しない場合、その領域Ｒをスキャンできる位置までキャリッジを戻しから、その領域Ｒを再びスキャンする。
【００５３】
第１の結合パターン６３を切り出しシンボル４５と確定できた場合（ステップＳ１７でＹｅｓ）、図３に示す二次元コード４１が現れる最後の行を決定する（ステップＳ１９）。二次元コード４１は、記憶する情報量が多い場合、二次元コード４１の一辺を構成するセル４７の数を多くすることによって対応している。二次元コード４１の一辺を構成するセル４７の上限値を１７７個とする。４個分のメモリセル３３がセル４７の一辺の長さと対応するので、１７７×４＝７０８、つまり、二次元コード包含データのうち、二次元コード４１が含まれる範囲は行数にすると７０８行となる。
【００５４】
したがって、図１１に示す第２６行から７０８行後の第７３４行が、二次元コード４１が現れる最後の行となる。例えば１個のセル４７だけ余裕を持たせて、第７３８行を最後の行とする。用紙４３のスキャンを再開して、第７３８行が現れるデータまで、ラインメモリ群２７Ａ，２７Ｂに領域Ｒのデータを展開すること、及び展開されたデータを取り出してパターン記憶部５１へ追記することを繰り返す（ステップＳ２１）。図１６は、第７３８行が現れるデータまでパターン記憶部５１に追記された状態を示している。
【００５５】
後の処理は、二次元コード４１の通常の読み取りと同じである。図１６に示すパターン記憶部５１に格納されたデータから残りの切り出しシンボル４５Ｂ，４５Ｃを検索し、切り出しシンボル４５Ａ，４５Ｂ，４５Ｃを利用して二次元コード４１の位置を認識する。そして、二次元コード４１のデータセルを解析し、その結果（すなわち、二次元コード４１に記録されている情報）を表示する（ステップＳ２３）。
【００５６】
以上説明したように、本実施形態によれば、二次元コード包含データを所定の行数のデータずつラインメモリ群２７Ａ，２７Ｂに交互に展開し、展開されたデータから第１のパターンを有する行が見つけられた場合、第１のパターン４９と第２のパターン５３を結合した第２の結合パターン５５が切り出しシンボル４５の一部であると推定できるか判断する。推定できた場合、第３のパターン６１、第１のパターン４９及び第２のパターン５３を結合した第１の結合パターン６３が切り出しシンボル４５か否かを確定する判断をする。
【００５７】
よって、本実施形態によれば、二次元コード包含データをページメモリに展開して切り出しシンボル４５を検索するのではなく、二次元コード包含データを所定の行数のデータずつラインメモリ群２７Ａ，２７Ｂに交互に展開し、展開されたデータを基にして切り出しシンボル４５を検索しているので、少ないメモリ容量で切り出しシンボル４５を検索することが可能となる。
【００５８】
ところで、第２の結合パターン５５（図１４）は、図１１に示すように二つのラインメモリ群２７Ａ，２７Ｂに渡って存在する場合がある。本実施形態では、ラインメモリ群２７Ｂに展開された領域Ｒ２のデータから第１のパターンを有する行が見つからない場合、ラインメモリ群２７Ａに展開された領域Ｒ３のデータにおいて第１のパターンを有する行の検索が終了するまで、ラインメモリ群２７Ｂに展開された領域Ｒ２のデータを保持し続けている。
【００５９】
したがって、ラインメモリ群２７Ａに展開された領域Ｒ３のデータから第１のパターンを有する行が見つけられたとき、領域Ｒ２のデータはラインメモリ群２７Ｂで保持されているので、領域Ｒ２のデータを再度、ラインメモリ群２７Ｂに展開する必要がなく、切り出しシンボル４５の検索の高速化を図ることができる。
【００６０】
なお、「ラインメモリ群２７Ａに展開された領域Ｒ３のデータにおいて第１のパターンを有する行の検索が終了するまで」とは、ラインメモリ群２７Ａに展開された領域Ｒ３のデータを検索した結果、そのデータから第１のパターンを有する行が見つからなかった場合及び図６のステップＳ１１で第２の結合パターン５５が切り出しシンボル４５の一部と推定された場合のいずれかである。いずれの場合もスキャンを再開して次のデータをラインメモリ群２７Ｂに展開する必要があるからである。  
【００６１】
以上の通り、本実施形態では、一方のラインメモリ群２７（ラインメモリ群２７Ｂ）に展開されたデータから第１のパターンを有する行が見つからない場合、他方のラインメモリ群２７（ラインメモリ群２７Ａ）に展開されたデータにおいて第１のパターンを有する行の検索が終了するまで、一方のラインメモリ群２７（ラインメモリ群２７Ｂ）に展開されたデータを保持し続けている。その結果、他方のラインメモリ群２７（ラインメモリ群２７Ａ）での第１のパターンを有する行の検索が終了するまで、次のデータ（領域Ｒ４のデータ）を一方のラインメモリ群２７（ラインメモリ群２７Ｂ）に展開することができない。
【００６２】
これに対応するために、他方のラインメモリ群２７（ラインメモリ群２７Ａ）において第１のパターンを有する行の検索が終了するまで、用紙４３のスキャンを一旦停止（すなわちキャリッジを一旦停止）している。なお、原稿自動送り装置を利用して用紙４３をスキャンしている場合は、用紙４３の自動送りが一旦停止される。
【００６３】
本実施形態では、第２の結合パターン５５が二つのラインメモリ群２７Ａ，２７Ｂに渡って存在する場合で説明した。切り出しシンボル４５の用紙４３上の位置に応じて、第２の結合パターン５５が二つのラインメモリ群２７Ａ，２７Ｂに渡って存在する場合と、一つのラインメモリ群２７に存在する場合が生じる。一つのラインメモリ群２７を構成するラインメモリ３１の数が１２本程度（列方向で３個分程度のセル４７）あれば、第２の結合パターン５５を一つのラインメモリ群２７に展開することができる。
【００６４】
図１９は、本実施形態に係る二次元コード読取装置７１の機能ブロック図である。二次元コード読取装置７１は、二つのラインメモリ群２７Ａ，２７Ｂ、パターン記憶部５１、切り出しパターン記憶部５９、データ処理部７３、スキャン処理部７５及び情報表示部７７を備える。ラインメモリ群２７Ａ，２７Ｂ、パターン記憶部５１及び切り出しパターン記憶部５９については既に説明しているので、それら以外を説明する。
【００６５】
データ処理部７３では、図６に示す各ステップが実行される。したがって、データ処理部７３は、第１のパターンを有する行を検索する検索部７９、第２の結合パターン５５が切り出しシンボル４５の一部であると推定できるか判断する推定部８１、及び推定部８１で第２の結合パターン５５が切り出しシンボル４５の一部と推定された場合に所定の処理（第１の結合パターン６３について、列方向及び斜め方向で第１のパターン４９を示すか判断し、第１のパターン４９を示すと判断した場合、第１の結合パターン６３を切り出しシンボル４５と確定する）を実行する確定部８３を含む。データ処理部７３は、図１の制御部３、ＲＯＭ１７及びＲＡＭ１９等で構成される。
【００６６】
スキャン処理部７５は、二次元コード４１が記録された用紙４３について、スキャン及びその一時停止の処理を実行する。また、スキャン処理部７５は、用紙４３をスキャンして得られた二次元コード包含データを所定の行数のデータずつラインメモリ群２７Ａ，２７Ｂに交互に展開する処理を実行する。スキャン処理部７３は、図１の制御部３、画像読取部５、ＲＯＭ１７及びＲＡＭ１９等で構成される。情報表示部７７は、図１の表示部９により構成されており、ステップＳ２３で説明したように二次元コード４１に記録されている情報を表示する。
【００６７】
本実施形態は、二次元コード包含データとして、二次元コード４１が記録された用紙４３をスキャンして得られた画像データの場合で説明した。しかしながら、二次元コード包含データとしては、二次元コードがデータに含まれているファイルでもよい（例えば二次元コードのデータが含まれているＰＤＦファイル）。この場合は、ファイルをビットマップデータに変換して、ビットマップデータを所定の行数のデータずつラインメモリ群２７Ａ，２７Ｂに交互に展開する。
【００６８】
本実施形態では、二次元コード包含データについて、第１行から第１６行のデータ、第１７行から第３２行のデータ、第３３行から第４８行のデータ、・・・をラインメモリ群２７Ａ，２７Ｂに交互に展開している。しかしながら、一方のラインメモリ群２７に展開されるデータの最後と他方のラインメモリ群２７に展開されるデータの最初をオーバーラップさせて展開してもよい。例えば、第１行から第１６行のデータ、第１６行から第３１行のデータ、第３１行から第４６行のデータ、・・・をラインメモリ群２７Ａ，２７Ｂに交互に展開するのである。このようにすれば、切り出しシンボル４５や二次元コード４１が途切れて二次元コード４１の読み取りが失敗することを防止することができる。
【００６９】
本実施形態では、ラインメモリ群２７が二つの場合で説明したが、ラインメモリ群２７が一つの態様（第１の態様）でもよいし、三つの態様（第２の態様）でもよい。
【００７０】
第１の態様では、ラインメモリ群２７が一つである。したがって、図１１で説明したように第２の結合パターン５５（図１４）が一つのラインメモリ群２７に展開されない場合、図１に示す画像読取部５のキャリッジを領域Ｒ２のスキャンができる位置まで戻してから、領域Ｒ２を再びスキャンする必要がある。原稿自動送り装置では、領域Ｒ２のスキャンができる位置まで用紙４３を逆方向に動かしてから、領域Ｒ２を再びスキャンしなければならない。
【００７１】
第２の態様では、二次元コード包含データが所定の行数のデータずつ、三つのラインメモリ群２７を輪番して展開される。第２の態様について図２０〜図２３を用いて説明する。
【００７２】
図２０に示すように、領域Ｒ１のデータがラインメモリ群２７Ａに展開される。次に、図２１に示すように、領域Ｒ２のデータがラインメモリ群２７Ｂに展開される。ラインメモリ群２７Ａでは、領域Ｒ１のデータから第１のパターンを有する行が検索される。そして、図２２に示すように、領域Ｒ３のデータがラインメモリ群２７Ｃに展開される。ラインメモリ群２７Ｂに展開された領域Ｒ２のデータから第１のパターンを有する行が検索され、ラインメモリ群２７Ａに展開された領域Ｒ１のデータは保持される。図２３に示すように、領域Ｒ４のデータがラインメモリ群２７Ａに展開される。ラインメモリ群２７Ｃでは、領域Ｒ３のデータから第１のパターンを有する行が検索される。ラインメモリ群２７Ｂでは、領域Ｒ２のデータが保持される。以上のようにして各ラインメモリ群２７Ａ，２７Ｂ，２７Ｃで、領域Ｒのデータの展開、検索、保持が実行される。
【００７３】
第２の態様では、例えば、図２３で説明したように、ラインメモリ群２７Ｂ（一のラインメモリ群）に展開された領域Ｒ２のデータから第１のパターンを有する行が見つからない場合、ラインメモリ群２７Ｃ（他のラインメモリ群）に展開された領域Ｒ３のデータにおいて第１のパターンを有する行の検索が終了するまで、ラインメモリ群２７Ｂ（一のラインメモリ群）に展開された領域Ｒ２のデータは保持され続ける。そして、ラインメモリ群２７Ａ（残りのラインメモリ群）には、次のデータとなる領域Ｒ４のデータが展開される。したがって、切り出しシンボル４５の検索をさらに高速化できる。
【図面の簡単な説明】
【００７４】
【図１】本実施形態に係る二次元コード読取装置の機能を有する複合機のハードウェア構成を示すブロック図である。
【図２】二つのラインメモリ群の拡大図である。
【図３】二次元コードが記録されている用紙の一例の平面図である。
【図４】切り出しシンボル及びセルの拡大図である。
【図５】切り出しシンボルを行方向、列方向、斜め方向にスキャンして得られた信号を二値化したデータを示す図である。
【図６】本実施形態に係る二次元コードの読み取り動作を説明するフローチャートである。
【図７】本実施形態に係る二次元コードの読み取り動作において、二つのラインメモリ群の状態（第１の状態）を示す図である。
【図８】同第２の状態を示す図である。
【図９】同第３の状態を示す図である。
【図１０】同第４の状態を示す図である。
【図１１】同第５の状態を示す図である。
【図１２】同第６の状態を示す図である。
【図１３】第１のパターンが展開されたラインメモリを示す図である。
【図１４】パターン記憶部に格納されている領域Ｒ２及び領域３のデータを示す図である。
【図１５】パターン記憶部に格納されている領域Ｒ２、領域Ｒ３及び領域４のデータを示す図である。
【図１６】パターン記憶部に格納されている二次元コードを示す図である。
【図１７】切り出しパターン記憶部に格納されている第２の結合パターンを示す図である。
【図１８】切り出しパターン記憶部に格納されている第１の結合パターンを示す図である。
【図１９】本実施形態に係る二次元コード読取装置の機能ブロック図である。
【図２０】本実施形態に係る二次元コードの読み取り動作おいて、三つのラインメモリ群の状態（第１の状態）を示す図である。
【図２１】同第２の状態を示す図である。
【図２２】同第３の状態を示す図である。
【図２３】同第４の状態を示す図である。
【符号の説明】
【００７５】
１・・・複合機、３・・・制御部、５・・・画像読取部、７・・・画像記録部、９・・・表示部、１１・・・操作部、１３・・・モデム、１５・・・ＮＣＵ、１７・・・ＲＯＭ、１９・・・ＲＡＭ、２１・・・画像メモリ、２３・・・コーデック、２５・・・ＬＡＮインターフェース、２７，２７Ａ，２７Ｂ・・・ラインメモリ群、２９・・・バス、３１・・・ラインメモリ、３３・・・メモリセル、４１・・・二次元コード、４３・・・用紙、４５，４５Ａ，４５Ｂ，４５Ｃ・・・切り出しシンボル、４７・・・セル、４９・・・第１のパターン、５１・・・パターン記憶部、５３・・・第２のパターン、５５・・・第２の結合パターン、５７・・・パターン、５９・・・切り出しパターン記憶部、６１・・・第３のパターン、６３・・・第１の結合パターン、７１・・・二次元コード読取装置、７３・・・データ処理部、７５・・・スキャン処理部、７７・・・情報表示部、７９・・・検索部、８１・・・推定部、８３・・・確定部、Ｌ・・・公衆電話回線、Ｘ・・・主走査方向、Ｙ・・・副走査方向、Ｒ，Ｒ１，Ｒ２，Ｒ３，Ｒ４・・・領域
【図１】
2009043124.tif 000003
【図２】
2009043124.tif 000004
【図３】
2009043124.tif 000005
【図４】
2009043124.tif 000006
【図５】
2009043124.tif 000007
【図６】
2009043124.tif 000008
【図７】
2009043124.tif 000009
【図８】
2009043124.tif 000010
【図９】
2009043124.tif 000011
【図１０】
2009043124.tif 000012
【図１１】
2009043124.tif 000013
【図１２】
2009043124.tif 000014
【図１３】
2009043124.tif 000015
【図１４】
2009043124.tif 000016
【図１５】
2009043124.tif 000017
【図１６】
2009043124.tif 000018
【図１７】
2009043124.tif 000019
【図１８】
2009043124.tif 000020
【図１９】
2009043124.tif 000021
【図２０】
2009043124.tif 000022
【図２１】
2009043124.tif 000023
【図２２】
2009043124.tif 000024
【図２３】
2009043124.tif 000025