(57)【特許請求の範囲】
【請求項１】
画像から、予め決められた数のロケーションシンボルを含む二次元コードを検出する画像処理装置であって、
前記画像から複数のロケーションシンボルを検出するシンボル検出手段と、
前記検出された複数のロケーションシンボルの１つを着目し、当該着目したロケーションシンボルの大きさと当該着目したロケーションシンボルからの距離とに基づいて、前記検出された複数のロケーションシンボルの中から、当該着目したロケーションシンボルとともに前記二次元コードを構成するロケーションシンボルの候補を決定する決定手段と、
前記決定手段で決定された候補のうち、前記着目したロケーションシンボルに近いものから順に検査していくことにより、前記二次元コードを構成するロケーションシンボルの組み合わせを検出する組み合わせ検出手段と、
を備え、
前記組み合わせ検出手段は、更に、前記二次元コードを構成するロケーションシンボルについて、より小さい二次元コードを他のロケーションシンボルと構成しうるか否か判断し、より小さい二次元コードを構成しうると判断した場合は、更に他の候補との組み合わせを検査していくことを特徴とする画像処理装置。
【請求項２】
前記シンボル検出手段は、前記画像から複数の黒画素塊を抽出し、当該抽出した黒画素塊の中から予め定めた条件を満たす黒画素塊を前記ロケーションシンボルとして検出することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記シンボル検出手段は、前記抽出した黒画素塊について、当該黒画素塊の内部に別の黒画素塊を含むか否かと、当該内部の黒画素塊と外部の黒画素塊との間の画素数比と、各黒画素塊に外接する各外接矩形の形状と、当該内部の黒画素塊に外接する外接矩形の１辺と当該外部の黒画素塊に外接する外接矩形の１辺との間の比と、各黒画素塊に外接する各外接矩形の中心とに基づいて、前記ロケーションシンボルを検出することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記決定手段は、前記検出された複数のロケーションシンボルの中から、前記着目したロケーションシンボルの大きさとほぼ等しい大きさで、且つ、前記着目したロケーションシンボルからの距離が想定される最大サイズの二次元コードの対角線の長さよりも短いロケーションシンボルを、前記ロケーションシンボルの候補として決定することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記二次元コードはＱＲコード（登録商標）であることを特徴とする請求項１乃至４のいずれかに記載の画像処理装置。
【請求項６】
画像から、予め決められた数のロケーションシンボルを含む二次元コードを検出する画像処理方法であって、
シンボル検出手段が、前記画像から複数のロケーションシンボルを検出するシンボル検出ステップと、
決定手段が、前記検出された複数のロケーションシンボルの１つを着目し、当該着目したロケーションシンボルの大きさと当該着目したロケーションシンボルからの距離とに基づいて、前記検出された複数のロケーションシンボルの中から、当該着目したロケーションシンボルとともに前記二次元コードを構成するロケーションシンボルの候補を決定する決定ステップと、
検出手段が、前記決定ステップで決定された候補のうち、前記着目したロケーションシンボルに近いものから順に検査していくことにより、前記二次元コードを構成するロケーションシンボルの組み合わせを検出する組み合わせ検出ステップと、
を備え、
前記組み合わせ検出ステップでは、更に、前記二次元コードを構成するロケーションシンボルについて、より小さい二次元コードを他のロケーションシンボルと構成しうるか否か判断し、より小さい二次元コードを構成しうると判断した場合は、更に他の候補との組み合わせを検査していくことを特徴とする画像処理方法。
【請求項７】
画像から、予め決められた数のロケーションシンボルを含む二次元コードを検出するためのコンピュータプログラムであって、
コンピュータを、
画像から複数のロケーションシンボルを検出するシンボル検出手段、
前記検出された複数のロケーションシンボルの１つを着目し、当該着目したロケーションシンボルの大きさと当該着目したロケーションシンボルからの距離とに基づいて、前記検出された複数のロケーションシンボルの中から、当該着目したロケーションシンボルとともに前記二次元コードを構成するロケーションシンボルの候補を決定する決定手段、
前記決定手段で決定された候補のうち、前記着目したロケーションシンボルに近いものから順に検査していくことにより、前記二次元コードを構成するロケーションシンボルの組み合わせを検出する組み合わせ検出手段、
として機能させ、更に、
前記組み合わせ検出手段では、更に、前記二次元コードを構成するロケーションシンボルについて、より小さい二次元コードを他のロケーションシンボルと構成しうるか否か判断し、より小さい二次元コードを構成しうると判断した場合は、更に他の候補との組み合わせを検査していくように、前記コンピュータを機能させるためのコンピュータプログラム。
【請求項８】
請求項７に記載のコンピュータプログラムを記憶した、コンピュータ読取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像内から二次元コードを検出するための画像処理方法及び画像処理装置、プログラムに関する。
【背景技術】
【０００２】
特許文献１では、画像を一定方向に走査し、その走査線信号パターンに基づいて検出用シンボルの信号を検出し、当該画像内から二次元コードを検出することが記載されている。
【０００３】
また、特許文献２では、画像をＭ×Ｎ画素のブロックで格子状に分割して、二次元コードと思われるブロックが連続している領域を検出して、当該領域を二次元コード領域として抽出することが記載されている。
【０００４】
また、特許文献３では、画像を小領域に区分けし、小領域の階調に基づいて複雑度の高い小領域を求めて、二次元コードの概略位置を決定していた。
【特許文献１】特開平０８−１８０１２５号公報
【特許文献２】特開２００１−３０７０１４号公報
【特許文献３】特開２００１−０２２８８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の走査に基づく検出用シンボル検出では二次元コードが４５度程度回転している場合に検出用シンボルが検出されにくい。
【０００６】
画像を小領域に分割する手法では、検出される二次元コードのサイズが小領域のサイズに依存するため、画像内に異なるサイズの二次元コードが含まれる場合に検出されにくい。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の画像処理装置は、画像から、予め決められた数のロケーションシンボルを含む二次元コードを検出する画像処理装置であって、前記画像から複数のロケーションシンボルを検出するシンボル検出手段と、前記検出された複数のロケーションシンボルの１つを着目し、当該着目したロケーションシンボルの大きさと当該着目したロケーションシンボルからの距離とに基づいて、前記検出された複数のロケーションシンボルの中から、当該着目したロケーションシンボルとともに前記二次元コードを構成するロケーションシンボルの候補を決定する決定手段と、前記決定手段で決定された候補のうち、前記着目したロケーションシンボルに近いものから順に検査していくことにより、前記二次元コードを構成するロケーションシンボルの組み合わせを検出する組み合わせ検出手段と、を備え、前記組み合わせ検出手段は、更に、前記二次元コードを構成するロケーションシンボルについて、より小さい二次元コードを他のロケーションシンボルと構成しうるか否か判断し、より小さい二次元コードを構成しうると判断した場合は、更に他の候補との組み合わせを検査していくことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、入力画像内から１乃至複数の二次元コードを精度良く検出できる。特に、入力画像内に含まれる複数のＱＲコードの回転角度やサイズが異なっていても、精度良く検出できるようになる。
【発明を実施するための最良の形態】
【０００９】
（実施例１）
図７は、本実施例の画像処理装置の構成例を示すブロック図である。
【００１０】
同図において、画像処理装置７００は、ＲＯＭ７０２、あるいはハードディスクなどの大規模記憶装置７１０に記憶されたソフトウェアを実行するＣＰＵ７０１を備え、ＣＰＵ７０１はシステムバス７１３に接続される各デバイスを総括的に制御する。即ち、システムバス７１３には、ＲＯＭ７０２、ＲＡＭ７０３、ネットワークインタフェースカード７０４、外部入力コントローラ７０５、ディスプレイコントローラ７０７、ディスクコントローラ７０９、印字部７１１、及び画像読み取り部７１２が接続されている。
【００１１】
ＲＡＭ７０３は、ＣＰＵ７０１の主メモリやワークエリア等として機能し、ネットワークインタフェースカード７０４は、ＬＡＮ７１４を介して、他のネットワーク機器あるいはファイルサーバ等と双方向にデータをやりとりする。外部入力コントローラ７０５は、画像処理装置に備えられた各種ボタンあるいはタッチパネルなどで構成される操作部７０６からの指示入力を制御する。ディスプレイコントローラ７０７は、例えば液晶ディスプレイなどで構成される表示モジュール（ＤＩＳＰＬＡＹ）７０８の表示を制御する。
【００１２】
ディスクコントローラ７０９は、前記大規模記憶装置７１０に対するアクセスを制御する。なお、大規模記憶装置７１０は、場合によっては画像の一時記憶場所としても使われることがある。プリンタ７１１は、例えば電子写真方式あるいはインクジェット方式などで実現され、用紙に対して印字を行う。スキャナ７１２は、用紙に印字された画像を読み込む機能を有する。なお、本発明の画像処理装置で処理対象とする画像は、スキャナ７１２で読み込んだ画像であってもよいし、デジタルカメラで撮影した画像など、その他の画像入力機器から入力された画像であってもよい。
【００１３】
なお、後述する処理は、ＲＯＭ７０２あるいは大規模記憶装置７１０などのコンピュータ読取り可能な記憶媒体に記憶されているコンピュータプログラムを、ＣＰＵ７０１が実行することによって実現される。すなわち、該コンピュータプログラムは、コンピュータを、後述する各処理ステップを実行する各処理部（処理手段）として機能させる。
【００１４】
また、本発明の画像処理装置の構成は、図７で記載した構成に限るものではない。例えば、電子回路などのハードウェアで構成しても構わないし、ハードウェアによる処理とＣＰＵを用いたソフトウェア処理とを組み合わせることで実現させるようにしても構わない。
【００１５】
本実施例が対象とする入力画像の例を図２に示す。該入力画像には、複数の二次元コード（例えば、ＱＲコード（商標）２０１〜２０３）が含まれており、各々のＱＲコードの角度やサイズはそれぞれ異なっているものとする。各々のＱＲコードは、ＱＲコード検出用の切り出しシンボル（ロケーションシンボル）を３つ含んでいる。
【００１６】
図１は、本実施例の二次元コードの検出に関するフローチャートである。なお、ここで、処理対象となる画像は２値画像である。したがって、多値画像を処理する場合は、予め二値化処理をおこなってから本フローチャートの処理を行う。
【００１７】
まず、ステップ１０１において、画像内からロケーションシンボル（切り出しシンボル）を複数個検出する処理を実行する。
【００１８】
次に、ステップ１０２において、画像内の複数の上記ロケーションシンボルの組み合わせからＱＲコードを１乃至複数個検出し、当該検出したＱＲコードを出力する処理を実行する。
【００１９】
図１のステップ１０１の詳細について、図３のフローチャートを用いて説明する。図３のフローチャートでは、入力された２値画像内からロケーションシンボルを複数個検出し、ロケーションシンボル群として出力する処理が行われる。
【００２０】
ここで、図４に、図２のロケーションシンボル２１１近傍の拡大図を示し、この図を用いて説明を行う。
【００２１】
ステップ３０１において、画像内から黒の画素塊（黒の連結画素群）を抽出する。画素塊の抽出は、黒画素にラベルを付けて画素塊を取り出すラベリング法や、黒画素塊の輪郭を追跡して取り出す輪郭追跡法など、公知の技術を用いることが可能である。ここでは、例えば、白画素に囲まれた黒画素塊４０１、４０３などが検出される。
【００２２】
ステップ３０２において、ステップ３０１で検出された全ての黒画素塊のうち、黒画素塊の内部に白画素塊と別の黒画素塊とを有する画素塊を検出する。そして、内部に別の黒画素塊を含む黒画素塊を処理対象として、ステップ３０３〜３０４の処理を行う。ステップ３０３〜３０４の処理は、内部に別の黒画素塊を有する画素塊全てに対して、順番に行われる。図４では、ステップ３０１で検出された黒画素塊４０１の内部に、別の黒画素塊４０２が含まれることが検出されるので、当該黒画素塊４０１を処理対象とする。
【００２３】
ステップ３０３では、外側の画素塊と内部の画素塊について、双方の画素数比がほぼ８：３であるか、各画素塊に外接する各外接矩形の１辺の比がほぼ７：３となるか、各画素塊に外接する各外接矩形の中心がほぼ等しいか、各画素塊に外接する各外接矩形の形状がほぼ正方形かを判定する。全ての条件を満たすと判断した場合、ステップ３０４に進む。全ての条件を満たさないと判断した場合、ステップ３０５に進む。
【００２４】
ステップ３０４では、前記条件を満たした外側の画素塊とその内部の画素塊（図４の例では、画素塊４０１と画素塊４０２）は、ロケーションシンボルとして記録される。ここでは、ロケーションシンボルの中心座標と大きさとを記録しておく。
【００２５】
ステップ３０５では、内部に別の黒画素塊を有する画素塊で、まだステップ３０３−３０４の処理を行っていない画素塊があるか判断し、もしあれば、ステップ３０２に戻ってその未処理の画素塊を対象にして、ステップ３０３の処理を行う。一方、内部に別の黒画素塊を有する画素塊全てに対して、ステップ３０３−３０４の処理を行ったと判断した場合は、ステップ３０６に進む。
【００２６】
ステップ３０６では、ステップ３０４で記録された全てのロケーションシンボルの情報を出力する。
【００２７】
図１のステップ１０２の詳細を図５に示す。ここでは、ステップ３０６で出力されたロケーションシンボル情報を受け取り、当該ロケーションシンボル情報に基づいて、ＱＲコードを探索して、検出されたＱＲコードに関する情報を出力する。
【００２８】
以下では、図２のロケーションシンボル２１１〜２１４に関する情報を、受け取ったロケーションシンボル情報の例として説明する。
【００２９】
ステップ５０１で、受け取ったロケーションシンボル情報と同数のフラグ領域を確保し、全てのロケーションシンボルに対して使用フラグを対応付けて、全ての使用フラグを「未使用（ＯＦＦ）」に初期化する。
【００３０】
ステップ５０２で、使用フラグがＯＦＦで、未だ着目対象にしていないロケーションシンボル情報から任意に選択した１つのロケーションシンボルを着目対象にして、ステップ５０３からステップ５０８の処理を行う。
【００３１】
ステップ５０３では、ステップ５０２で着目したロケーションシンボルに着目して、近傍のロケーションシンボルを探査することにより、ＱＲコードを構成する３つのロケーションシンボルがあるかどうか検索する。
【００３２】
ステップ５０４では、ステップ５０３の結果に基づき、ＱＲコードを構成する３つのロケーションシンボルが検索されたかどうか判断し、検索されたならば、ステップ５０５に進む。検索されなかったならばステップ５０７に進む。
【００３３】
ステップ５０５では、ステップ５０４で検出した３つのロケーションシンボルが１つのＱＲコードを構成するとして当該ロケーションシンボルの組を記録する。
【００３４】
ステップ５０６では、それら３つのロケーションシンボルに対応するフラグを「使用（ＯＮ）」にセットする。
【００３５】
例えば、ロケーションシンボル２１１に着目してステップ５０３の処理を行うと、３つのロケーションシンボル２１１，２１２，２１３がＱＲコード２０３を構成すると検索される。そして、そのロケーションシンボルの組の情報がステップ５０５で記録され、ステップ５０６でロケーションシンボル２１１〜２１３に対応する使用フラグが「ＯＮ」にセットされる。
【００３６】
ステップ５０７では、使用フラグがＯＦＦで且つまだ着目していないロケーションシンボル（未処理のロケーションシンボル）があるかどうか判断し、あると判断した場合はステップ５０２に戻り、ないと判断した場合はステップ５０８に進む。
【００３７】
ステップ５０８では、ステップ５０５において記録された全てのＱＲコードの情報を出力して、図５の処理フローを終了する。
【００３８】
次に、図５のステップ５０４における、ＱＲコードを構成するロケーションシンボル探索処理の詳細フローチャートを図６に示す。
【００３９】
ステップ６０１では、まず、想定される最大サイズのＱＲコードの対角線の長さ情報を取得する。そして、着目ロケーションシンボルからの距離が当該取得した対角線の長さよりも短く、且つ、当該着目ロケーションシンボルの大きさとほぼ等しい大きさのロケーションシンボルを、ＱＲコードを構成するロケーションシンボルの候補として決定する。対角線の長さ情報は、例えば、着目しているロケーションシンボルの外接矩形の大きさに基づいて、想定される最大サイズのＱＲコードを求め、そのＱＲコードの対角線の長さを算出することによって求めることができる。なお、本実施例では、ロケーションシンボルのサイズに対するＱＲコードのサイズが規格で定められているので、その規格に基づいて最大サイズの対角線の長さを算出することとする。しかしながら、これに限るものではなく、例えば、原稿内に含まれるＱＲコードのサイズが予め想定できる場合などでは、予め定めておいた値を対角線長さとして用いるようにしてもよい。
【００４０】
例えば、図２の原稿において、着目ロケーションシンボルを２１１とした場合に、最大サイズの対角線の長さが２２１だったとする。すると、複数のロケーションシンボル群２１２〜２１５のうち、距離が対角線長さ２２１よりも短く、且つ、大きさがほぼ等しいロケーションシンボルを検索して、ロケーションシンボル２１２，２１３，２１４が候補となる。
【００４１】
ステップ６０２では、ステップ６０１でロケーションシンボル候補が２つ以上求められたか判断し、２つ以上あると判断したならばステップ６０３に進む。一方、ロケーションシンボル候補が２つ以上存在しないと判断した場合、ステップ６１０に進む。
【００４２】
ステップ６１０では、当該着目ロケーションシンボルを含むＱＲコードは存在しないと判断して、その判断した結果（ＱＲコード無し）を出力する。
【００４３】
ステップ６０３では、未検査のロケーションシンボル候補のうち、近いものから順に２つを取り出して検査対象とし、その検査対象のロケーションシンボル候補と着目ロケーションシンボルとを組み合わせたときにＱＲコードを構成するか検査する。すなわち、任意の２つのロケーションシンボル候補の組み合わせのうち、着目ＬＳから近い組み合わせから順に検査対象として、ＱＲコードを構成するものであるか否かを検査する。なお、３つのロケーションシンボルがＱＲコードを構成し得るか否かの検査としては、例えば、３つのロケーションシンボルを結ぶ形状が直角二等辺三角形を構成するか否かの検査や、３つのロケーションシンボルの間に黒画素塊があるか否かの検査などが行われる。また、ＱＲコードとして認識可能か否かの検査も合わせて行うようにしても構わない。
【００４４】
ステップ６０４では、ＱＲコードを構成すると判断した場合はステップ６０５へ進み、一方、ＱＲコードを構成しないと判断した場合はステップ６０９へ進む。
【００４５】
ステップ６０９では、他に未検査のロケーションシンボル候補の組み合わせがあるか否か判断し、あると判断した場合は、ステップ６０３へ戻って次のロケーションシンボル候補の組み合わせについて検査を行う。一方、他に未検査のロケーションシンボル候補がないと判断した場合は、ステップ６１０へ進む。
【００４６】
ステップ６０５では、ステップ６０４でＱＲコードを構成すると判断された２つのロケーションシンボル候補の１つを新たな着目ロケーションシンボルとして、当該検出されたＱＲコードよりも小さいＱＲコードを構成する３つのロケーションシンボルが存在するか検査する。すなわち、当該新たな着目ロケーションシンボルに対して、図６の処理を再帰的に行う。なお、より小さいＱＲコードを検出するための処理であるので、再帰的に行うときのステップ６０１では、その前に検出されたＱＲコードの１辺の長さよりも短く、該新たな着目ロケーションシンボルの大きさとほぼ等しい大きさのロケーションシンボルを候補とする。なお、より小さいＱＲコードがあった場合は、その再帰的に行われた図６の処理において、より小さいＱＲコードを構成する３つのロケーションシンボルが出力されることになる。
【００４７】
ステップ６０６では、より小さいＱＲコードがあったか否か判断する。より小さいＱＲコードがあったと判断した場合は、その２つのロケーションシンボル候補の組み合わせを検査済みとして、ステップ６０２に戻り、他のロケーションシンボル候補の組み合わせがあるか判断する。
【００４８】
一方、より小さいＱＲコードがなかったと判断した場合は、ステップ６０７に進む。ステップ６０７では、該２つのロケーションシンボル候補の両方について、ステップ６０５の検査を行ったか判断し、検査済みの場合はステップ６０８に進み、検査を行っていない場合はもう一方を新たな着目ロケーションシンボルとしてステップ６０５の処理に戻る。
【００４９】
ステップ６０８では、ＱＲコードを構成するロケーションシンボルとして、当該３つのロケーションシンボル（着目ＬＳとその検査対象ＬＳ候補）の組み合わせ情報を出力する。
【００５０】
このようにして検出されたＱＲコードに対してＱＲコード認識処理を行うと、認識結果を得ることができる。
【００５１】
以上説明したように、本実施形態では、複数のロケーションシンボル（切り出しシンボル）を検出し、そのロケーションシンボル間の距離とロケーションシンボルの大きさとに基づいて、ＱＲコードを構成するロケーションシンボルの組み合わせを検出している。このように構成することにより、入力画像から、回転角度やサイズが異なっていても、複数のＱＲコードを検出できるようになる。
【図面の簡単な説明】
【００５２】
【図１】二次元コード検出の全体フローチャート
【図２】二次元コード（ＱＲコード）を含む入力画像の例
【図３】ロケーションシンボル検出に関するフローチャート
【図４】ロケーションシンボル近傍の拡大図
【図５】ＱＲコードの検出に関するフローチャート
【図６】ＱＲコードを構成する３つのロケーションシンボルの検索に関するフローチャート
【図７】実施例１における画像処理装置の構成例
【図１】
0005111055.tif 000002
【図２】
0005111055.tif 000003
【図３】
0005111055.tif 000004
【図４】
0005111055.tif 000005
【図５】
0005111055.tif 000006
【図６】
0005111055.tif 000007
【図７】
0005111055.tif 000008