(57)【特許請求の範囲】
【請求項１】
２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から、前記コードとして認識された前記コードの位置を求め、
所定の位置関係にある前記コードが同じ集合体に含まれるように、各前記コードの位置に基づいて、各前記コードを複数の集合体に分類し、
各前記集合体に含まれる前記コードの数を比較して、他の前記集合体よりも前記コードの数が少ない前記集合体を選択し、
選択された前記集合体が位置する前記画像内の領域から、認識されない前記コードが存在すると推測される推測領域を決定することを、演算部が実行する方法。
【請求項２】
前記画像は、２次元アレイ状に配置された複数の前記コードを含むコード群の輪郭を規定する２本の交差する直線を、前記画像のｘ軸及びｙ軸の方向と一致させるように撮像されており、
複数の前記集合体は、前記画像のｘ軸が複数に分割された領域と対応するように形成された複数の集合体Ｘと、前記画像のｙ軸が複数に分割された領域と対応するように形成された複数の集合体Ｙとを有し、
前記演算部は、
前記コードの位置を示す代表位置のｘ座標が所定の範囲内にある前記コードが同じ前記集合体Ｘに含まれるように、各前記コードを複数の前記集合体Ｘに分類し、
前記コードの位置を示す代表位置のｙ座標が所定の範囲内にある前記コードが同じ前記集合体Ｙに含まれるように、各前記コードを複数の前記集合体Ｙに分類する請求項１に記載の方法。
【請求項３】
複数の前記集合体Ｘは、前記画像のｘ軸が前記コードのｘ軸方向の寸法と対応するように複数に分割された領域と対応するように形成され、
複数の前記集合体Ｙは、前記画像のｙ軸が前記コードのｙ軸方向の寸法と対応するように複数に分割された領域と対応するように形成される請求項２に記載の方法。
【請求項４】
前記演算部は、
前記コードを、前記コードの前記代表位置のｘ座標の順番にソートし、
複数の前記集合体Ｘに、各前記コードを分類し、
前記コードを、前記コードの前記代表位置のｙ座標の順番にソートし、
複数の前記集合体Ｙに、各前記コードを分類する請求項３に記載の方法。
【請求項５】
前記演算部は、
各前記集合体Ｘに含まれる前記コードの数を比較して、他の前記集合体Ｘよりも前記コードの数が少ない前記集合体Ｘである集合体Ｘａを選択し、
各前記集合体Ｙに含まれる前記コードの数を比較して、他の前記集合体Ｙよりも前記コードの数が少ない前記集合体Ｙである集合体Ｙｂを選択し、
前記集合体Ｘａに含まれる前記コードの前記代表位置のｘ座標の平均値である平均ｘ座標と、前記集合体Ｙｂに含まれる前記コードの前記代表位置のｙ座標の平均値である平均ｙ座標とを含むように、前記推測領域を決定する請求項２〜４の何れか一項に記載の方法。
【請求項６】
前記演算部は、
選択された前記集合体が含む前記コードを、前記コードの位置に基づいて並べ、隣接する前記コード同士の間の距離を求めて、最大の距離を示した隣接する前記コードの間の領域を含むように前記推測領域を決定する請求項１又は２に記載の方法。
【請求項７】
２次元アレイ状に配置された複数の前記コードを含むコード群の輪郭は３角形又は４角形の形状を有し、
前記演算部は、
２次元アレイ状に配置された複数の前記コードを含むコード群の輪郭を規定する交差する２本の直線がなす交差角度で交差する２本の直線の傾きを求め、
求めた２本の直線の傾きの内の一の傾きを用いて、一の前記コードを通る直線を作成し、この直線が通る前記コードを同じ集合体に分類し、
前記一の傾きを用いて、前記集合体に分類されていない他の前記コードを通る直線を作成し、この直線が通る前記コードを同じ集合体に分類することを繰り返して、各前記コードを複数の前記集合体に分類する請求項１又は６に記載の方法。
【請求項８】
前記演算部は、
前記コード群の輪郭の一の隅部を形成する前記コードである隅コードと、前記隅コードの周りに位置する一の前記コードを通る第１直線を作成し、且つ、前記隅コードと、前記隅コードの周りに位置する他の前記コードを通る第２直線を作成し、
前記第１直線及び前記第２直線が前記隅コードで交差する角度を求め、求めた角度が、前記交差角度と所定の範囲内で一致する角度で交差する前記第１直線及び第２直線を選択し、
選択された前記第１直線及び第２直線の傾きを求める請求項７に記載の方法。
【請求項９】
前記画像は、前記コード群の輪郭の隅部にマーカが配置されて撮像されており、
前記演算部は、
２つの前記マーカを結ぶ直線の内、前記交差角度で交差する２本の直線の傾きを求める請求項７に記載の方法。
【請求項１０】
前記演算部は、
前記コード群の輪郭の隅部を形成する前記コードである隅コードの位置を示す代表位置に基づいて、２つの前記代表位置を結ぶ直線の内、前記交差角度で交差する２本の直線の傾きを求める請求項７に記載の方法。
【請求項１１】
２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から、前記コードとして認識された前記コードの位置を求め、
所定の位置関係にある前記コードが同じ集合体に含まれるように、各前記コードの位置に基づいて、各前記コードを複数の集合体に分類し、
各前記集合体に含まれる前記コードの数を比較して、他の前記集合体よりも前記コードの数が少ない前記集合体を選択し、
選択された前記集合体が位置する前記画像内の領域から、認識されない前記コードが存在すると推測される推測領域を決定する、演算部を備える装置。
【請求項１２】
２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から、前記コードとして認識された前記コードの位置を求め、
所定の位置関係にある前記コードが同じ集合体に含まれるように、各前記コードの位置に基づいて、各前記コードを複数の集合体に分類し、
各前記集合体に含まれる前記コードの数を比較して、他の前記集合体よりも前記コードの数が少ない前記集合体を選択し、
選択された前記集合体が位置する前記画像内の領域から、認識されない前記コードが存在すると推測される推測領域を決定することを、コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から認識されないコードが存在すると推測される推測領域を決定する方法、装置及びプログラムに関する。
【背景技術】
【０００２】
従来、二次元コード等の情報を有するコードが用いられている。二次元コード等の情報を有するコードは、狭い面積に多くの情報を含めることができるので、物品管理や、携帯電話を用いたウェブ誘導など、様々な用途で広く活用されている。
【０００３】
例えば、図１に示すように、二次元コード１２０が、箱１００の表面に配置されて、物品を管理するために用いられる。二次元コード１２０は、例えば、箱１００の中に収納されている物品の種類及び数等の情報を有する。
【０００４】
箱１００は、二次元コード１２０が配置された面を同一の方向に向けて、縦及び横方向に並べて積まれている。複数の二次元コード１２０は、全体として２次元アレイ状に配置されており、一つのコード群を形成している。
【０００５】
物品の情報を得るには、図１に示すように、二次元コード１２０を解析する解析装置１１０を用いて、コード群を撮像し、撮像された画像から各二次元コード１２０の画像を解析することが提案されている。コード群を撮像して解析することにより、各二次元コード１２０を、個々に撮像して解析することよりも処理速度を高めることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−３５３２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
図２は、解析装置１１０を用いてコード群が撮像された画像１３０を示す。
【０００８】
ここで、図２の四角の枠に示すように、一の二次元コードが上手く撮像されていないため、コードの認識が困難な場合がある。
【０００９】
この理由として、図１に示す一の二次元コード１２０ａとカメラ間の距離がまちまちで、一部の二次元コード１２０ａの焦点が合わない状態で撮像されたことが考えられる。縦及び横方向に並べて積まれた箱が全てが綺麗に積まれているとは限らないからである。
【００１０】
また、一の二次元コードが上手く撮像されていない理由として、一の二次元コード１２０ａに汚れが付着しているか、又は傷が付いていることも考えられる。
【００１１】
このように、コード群を撮像した画像１３０に認識することが困難なコードが含まれていると、解析装置１１０は、そのコードの解析することができないおそれがある。
【００１２】
例えば、特許文献１は、情報を含むコードを撮像した画像に基づいて明暗の変化点の数を計数し、その計数された明暗変化点数に基づいて、コードが存在する可能性の高い検査区域を抽出し、抽出された検査区域を再検査することを提案している。
【００１３】
しかし、特許文献１が提案する方法では、例えば赤、青、黄などの色の配列で情報を表示するカラーコードなどの明暗変化が弱いコードを用いた場合、検査区域を上手く抽出することができないおそれがある。また、撮像した画像に二次元コードのような明暗変化を持つデザインの物体が写りこんだ場合、誤った区域を検査区域として抽出するおそれがある。
【００１４】
そこで、本明細書では、上述した問題を解決し得る方法、装置及びプログラムを提案することを課題とする。
【課題を解決するための手段】
【００１５】
本明細書に開示する方法によれば、２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から、上記コードとして認識された上記コードの位置を求め、所定の位置関係にある上記コードが同じ集合体に含まれるように、各上記コードの位置に基づいて、各上記コードを複数の集合体に分類し、各上記集合体に含まれる上記コードの数を比較して、他の上記集合体よりも上記コードの数が少ない上記集合体を選択し、選択された上記集合体が位置する上記画像内の領域から、認識されない上記コードが存在すると推測される推測領域を決定することを、演算部が実行する。
【００１６】
また、本明細書に開示する装置によれば、２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から、上記コードとして認識された上記コードの位置を求め、所定の位置関係にある上記コードが同じ集合体に含まれるように、各上記コードの位置に基づいて、各上記コードを複数の集合体に分類し、各上記集合体に含まれる上記コードの数を比較して、他の上記集合体よりも上記コードの数が少ない上記集合体を選択し、選択された上記集合体が位置する上記画像内の領域から、認識されない上記コードが存在すると推測される推測領域を決定する、演算部を備える。
【００１７】
更に、本明細書に開示するプログラムによれば、２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から、上記コードとして認識された上記コードの位置を求め、所定の位置関係にある上記コードが同じ集合体に含まれるように、各上記コードの位置に基づいて、各上記コードを複数の集合体に分類し、各上記集合体に含まれる上記コードの数を比較して、他の上記集合体よりも上記コードの数が少ない上記集合体を選択し、選択された上記集合体が位置する上記画像内の領域から、認識されない上記コードが存在すると推測される推測領域を決定することを、コンピュータに実行させる。
【発明の効果】
【００１８】
上述した本明細書に開示する方法によれば、２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から認識されないコードが存在すると推測される推測領域を決定するができる。
【００１９】
また、上述した本明細書に開示する装置によれば、２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から認識されないコードが存在すると推測される推測領域を決定するができる。
【００２０】
更に、上述した本明細書に開示するプログラムによれば、２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から認識されないコードが存在すると推測される推測領域を決定するができる。
【図面の簡単な説明】
【００２１】
【図１】コード群及びコード群を解析する解析装置を示す図である。
【図２】解析装置によりコード群が撮像された画像を示す図である。
【図３】本明細書に開示する解析装置の第１実施形態を示す図である。
【図４】コード群を説明する図である。
【図５】解析装置により撮像されたコード群の画像を示す図である。
【図６】コードを説明する図である。
【図７】本実施形態の解析装置の動作を説明するフローチャート（その１）である。
【図８】本実施形態の解析装置の動作を説明するフローチャート（その２）である。
【図９】本実施形態の解析装置の動作を説明するフローチャート（その３）である。
【図１０】集合体Ｘを説明する図である。
【図１１】集合体Ｙを説明する図である。
【図１２】各コードを集合体Ｙに分類する処理を説明する図（その１）である。
【図１３】各コードを集合体Ｙに分類する処理を説明する図（その２）である。
【図１４】本実施形態の解析装置の動作を説明するフローチャート（その４）である。
【図１５】本実施形態の解析装置の動作を説明するフローチャート（その５）である。
【図１６】推測領域を決定する処理を説明する図である。
【図１７】推測領域を再走査する処理を説明する図である。
【図１８】第１実施形態の変形例１を説明する図である。
【図１９】第１実施形態の変形例２を説明する図である。
【図２０】本明細書に開示する解析装置の第２実施形態が解析する画像を説明する図である。
【図２１】本実施形態の解析装置の動作を説明するフローチャート（その１）である。
【図２２】本実施形態の解析装置の動作を説明するフローチャート（その２）である。
【図２３】本実施形態の解析装置の動作を説明するフローチャート（その３）である。
【図２４】本実施形態の解析装置の動作を説明するフローチャート（その４）である。
【図２５】隅コードの周りに位置する他のコードを選択する処理を説明する図である。
【図２６】隅コードと、選択された他のコードとを通る直線を作成する処理を説明する図である。
【図２７】隅コードを通り、傾きａｉを有する直線を作成する処理を説明する図である。
【図２８】各コードを集合体に分類する処理を説明する図である。
【図２９】第２実施形態の変形例１を説明する図である。
【図３０】第２実施形態の変形例２を説明する図である。
【発明を実施するための形態】
【００２２】
以下、本明細書で開示する解析装置の好ましい第１実施形態を、図を参照して説明する。但し、本発明の技術範囲はそれらの実施形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【００２３】
図３は、本明細書に開示する解析装置の第１実施形態を示す図である。図４は、コード群を説明する図である。図５は、解析装置により撮像されたコード群の画像を示す図である。図６は、コードを説明する図である。
【００２４】
本実施形態の解析装置１０は、２次元アレイ状に配置された情報を含む複数のコードを有するコード群を撮像した画像から、各コードを認識して解析し、解析した結果を出力する。
【００２５】
また、解析装置１０は、認識されないコードが存在すると推測される場合には、認識されないコードが存在すると推測される推測領域を決定し、画像内の推測領域を再走査して認識されたコードを解析する。
【００２６】
図４に示すように、撮像される複数のコード２０は、２次元アレイ状に配置されたコードの群を形成する。このようなコード群として、例えば、図１に示すようなコード群が挙げられる。図４に示す例では、縦方向にｍ個のコード２０が並べられており、横方向にｎ個のコード２０が並べられている。コード群の輪郭は長方形を形成する。
【００２７】
本実施形態の解析装置１０は、２次元アレイ状に配置されたコードの群の縦方向のコード数及び横方向のコード数が未知であっても動作可能である。
【００２８】
図５に示すように、解析装置１０により撮像された画像には、コード群が含まれている。コード群の画像３０は、２次元アレイ状に配置されたコードの画像３１を含む。コード群の画像３０は、２次元アレイ状に配置された複数のコードを含むコード群の輪郭を規定する２本の交差する直線Ｌ１、Ｌ２を、画像３０のｘ軸及びｙ軸の方向と一致させるように撮像されている。
【００２９】
図５には、コード群の画像３０の座標系の原点Ｏと共にｘ軸及びｙ軸を示す。
【００３０】
画像のｙ軸方向には、ｍ個のコードの画像３１が並んでおり、画像のｘ軸方向には、ｎ個のコードの画像３１が並んでいる。
【００３１】
ここで、コード群の画像３０の中央付近には、解析装置１０の認識が困難なように撮像されたコードの画像３１ａが存在する。
【００３２】
コードの画像３１は、コード２０が撮像されたものであり、コード２０と同じ情報を有している。以下、本明細書では、コードの画像を単にコードともいうことにする。
【００３３】
図６に示すように、本実施形態で撮像されたコード（コードの画像）３１は、二次元コードである。コード３１は、二進コードで表されるデータをセル化して、二次元のマトリックス状にパターンとして配置しており、コードの位置を検出するための４つの異なる位置検出パターンＸ０〜Ｘ３と、４つの位置検出パターンＸ０〜Ｘ３に囲まれたデータ部を有する。データ部は、更に、フォーマット情報、及び誤り訂正符号等と、セグメントを含む実データ部等を有する。位置検出パターンＸ０〜Ｘ３は、コード中には位置検出パターンと同形状のパターンが出現しないように設計してあるため、コードの画像３１から個々にそれぞれ認識可能になされている。
【００３４】
本実施形態で撮像されるコードは、カラーコード又は絵柄が配置された二次元コード等の他の形式を有する二次元コードであってもよい。また、本実施形態で撮像されるコードは、バーコード等の一次元コードであってもよい。
【００３５】
次に、解析装置１０について、以下に詳細に説明する。
【００３６】
解析装置１０は、演算部１１と、記憶部１２と、操作部１３と、表示部１４と、通信部１５と、撮像部１６を有する。
【００３７】
演算部１１は、記憶部１２に予め記憶されている所定のプログラムに従い、解析装置１０の各要素の制御及び各種処理を行い、処理中に生じるデータを一時的に保存するために記憶部１２を利用する。
【００３８】
記憶部１２は、１次記憶装置及び２次記憶装置を有していても良い。また、記憶部１２は、所定のプログラムを記憶する記憶媒体１２ａを読み出し可能なドライブを有していても良い。
【００３９】
操作部１３は、解析装置１０の操作者等によって操作されて、各種の情報を入力する。操作部１３としては、例えば、タッチパネルを用いることができる。演算部１１は、操作部１３から入力された各種の情報を用いて、各種処理を行う。
【００４０】
表示部１４は、演算部１１の動作によって、各種の情報を表示する。表示部１４としては、例えば、液晶パネルを用いることができる。
【００４１】
通信部１５は、撮像部１６からの画像データを入力する。また、通信部１５は、外部のネットワークを介して、他の装置との間でコードを解析した情報等のデータの送受信を行うことができる。
【００４２】
撮像部１６は、通信部１５を介して、演算部１１により制御されて、コード群を撮像する。撮像部１６としては、例えば、ＣＣＤ、又はＣＭＯＳ画像化素子等を用いることができる。
【００４３】
解析装置１０としては、例えば、多機能型携帯電話機、タブレット端末、ノート型パーソナルコンピュータ等を用いることができる。
【００４４】
次に、解析装置１０の動作を図７及び図８に示すフローチャートを参照しながら、以下に説明する。
【００４５】
まず、ステップＳ１０において、解析装置１０は、情報を含むコードが２次元アレイ状に配置されたコード群を撮像する。撮像された画像は、記憶部１２に記憶される。
【００４６】
次に、ステップＳ１２において、解析装置１０は、コード群の画像を走査してコードを認識し、認識されたコードを解析する。また、解析装置１０は、認識されたコードの数を求める。
【００４７】
次に、ステップＳ１４において、解析装置１０は、２つ以上のコードを認識したか否かを判断する。２つ以上のコードが認識されている場合には、ステップＳ１６へ進む。一方、２つ以上のコードが認識されていない場合には、ステップＳ３２へ進む。
【００４８】
ステップＳ３２へ進んだ場合には、解析装置１０は、コードを解析した解析結果を表示部１４に出力する。
【００４９】
ステップＳ１６へ進んだ場合には、解析装置１０は、認識したコードの位置検出パターンの座標を抽出する。図６を参照して、解析装置１０の処理を以下に説明する。
【００５０】
解析装置１０は、認識したコードが有する４つの位置検出パターンの隅部Ｐ０〜Ｐ３の位置を求める。この処理により、位置検出パターンＸ０の隅部Ｐ０の座標（ｐｘ０，ｐｙ０）、位置検出パターンＸ１の隅部Ｐ１の座標（ｐｘ１，ｐｙ１）、位置検出パターンＸ２の隅部Ｐ２の座標（ｐｘ２，ｐｙ２）、位置検出パターンＸ３の隅部Ｐ３の座標（ｐｘ３，ｐｙ３）が得られる。
【００５１】
次に、ステップＳ１８において、解析装置１０は、認識された各コードの位置を代表する代表位置として中心Ｃの座標（ｃｘ、ｃｙ）を求める。解析装置１０は、ステップＳ１６で求めた４つの位置検出パターンの隅部Ｐ０〜Ｐ３の座標を用いて、コードの中心Ｃの座標を求めることができる。
【００５２】
具体的には、コードの中心Ｃのｘ座標は、（ｐｘ０＋ｐｘ１＋ｐｘ２＋ｐｘ３）／４となり、ｙ座標は、（ｐｙ０＋ｐｙ１＋ｐｙ２＋ｐｙ３）／４となる。
【００５３】
また、解析装置１０は、コードの対角線上に位置する２つの位置検出パターンの隅部の座標を用いて、コードの中心Ｃの座標を求めてもよい。
【００５４】
具体的には、２つの位置検出パターンＸ０、Ｘ２を用いる場合には、コードの中心Ｃのｘ座標は、（ｐｘ０＋ｐｘ２）／２となり、ｙ座標は、（ｐｙ０＋ｐｙ２）／２となる。また、２つの位置検出パターンＸ１、Ｘ３を用いる場合には、コードの中心Ｃのｘ座標は、（ｐｘ１＋ｐｘ３）／２となり、ｙ座標は、（ｐｙ１＋ｐｙ３）／２となる。
【００５５】
なお、コードの位置を代表する代表位置は、コードの中心でなくてもよい。また、コードの中心の位置を求める方法としては、上述した方法以外の他の方法を用いてもよい。
【００５６】
次に、ステップＳ２０において、解析装置１０は、認識された各コードの中心の座標と、位置検出パターンの座標とを関連づけて、記憶部１２に記憶する。
【００５７】
次に、ステップＳ２２において、解析装置１０は、所定の位置関係にあるコードが同じ集合体に含まれるように、各コードの位置に基づいて、各コードを複数の集合体に分類する。各コードの位置は、コードの位置を代表する代表位置として、コードの中心の座標を用いる。
【００５８】
ステップＳ２２の処理を、図９〜図１３を参照して、以下に説明する。
【００５９】
図９は、解析装置の処理を説明するフローチャートである。図１０は、集合体Ｘを説明する図である。図１１は、集合体Ｙを説明する図である。
【００６０】
図１０及び図１１に示すように、複数の集合体は、画像のｘ軸が複数に分割された領域と対応するように形成された複数の集合体Ｘと、画像のｙ軸が複数に分割された領域と対応するように形成された複数の集合体Ｙとを有する。
【００６１】
複数の集合体Ｘは、画像のｘ軸がコードのｘ軸方向の寸法と対応するように複数に分割された領域と対応するように形成される。また、複数の集合体Ｙは、画像のｙ軸がコードのｙ軸方向の寸法と対応するように複数に分割された領域と対応するように形成される。
【００６２】
このようにして、コード群のｙ軸方向に列をなすように並んだコードは、同じ集合体Ｘに分類され、コード群のｘ軸方向に行をなすように並んだコードは、同じ集合体Ｙに分類される。
【００６３】
次に、認識した各コードを、複数の集合体Ｙに分類する処理を、以下に説明する。認識した各コードを、複数の集合体Ｘに分類する処理も同様に行われる。
【００６４】
まず、図９のステップＳ４０において、解析装置１０は、認識した各コードを、コードの代表位置である中心のｙ座標の順番にソートする。画像から認識されたコードの数をＮとすると、ソートされたコードは、コード１、コード２・・・コードＮというように、１番目からＮ番目までの順番にソートされる。
【００６５】
次に、ステップＳ４２において、解析装置１０は、ソートされたコードの順番を示す変数ｉに２を設定し、集合体Ｙの順番を示す変数ｊに１を設定する。また、解析装置１０は、集合体Ｙｊに含まれるコードのｙ座標の最大値を示す変数Ｙｊ＿ｙｍａｘに対して、ソートされた１番目のコード１の最大のｙ座標を有する位置検出パターンの中心のｙ座標の値を設定する。
【００６６】
次に、ソートされたコード２からコードＮまでの各コードに対して、ステップＳ４４からステップＳ６２の間の処理が繰り返される。
【００６７】
まず、ステップＳ４６において、解析装置１０は、コードｉの中心のｙ座標が、Ｙｊ＿ｙｍａｘよりも大きいか否かを判断する。コードｉの中心のｙ座標が、Ｙｊ＿ｙｍａｘ以下の場合には、ステップＳ４８へ進む。一方、コードｉの中心のｙ座標が、Ｙｊ＿ｙｍａｘよりも大きい場合には、ステップＳ５４へ進む。
【００６８】
ステップＳ４８へ進んだ場合には、解析装置１０は、コードｉを集合体Ｙｊに分類する。
【００６９】
図１２に示す例では、集合体Ｙ１には、コード１及びコード２がすでに分類されている。次に、コード３のコード３の中心のｙ座標は、Ｙ１＿ｙｍａｘ以下なので、コード３も集合体Ｙ１に分類される。
【００７０】
次に、ステップＳ５０において、解析装置１０は、コードｉが有する位置検出パターンの内で、最大のｙ座標を持つ位置検出パターンの中心のｙ座標ｙｉ＿ｆｍａｘが、Ｙｊ＿ｙｍａｘよりも大きいか否かを判断する。ｙｉ＿ｆｍａｘが、Ｙｊ＿ｙｍａｘよりも大きい場合には、ステップＳ５２へ進む。一方、ｙｉ＿ｆｍａｘが、Ｙｊ＿ｙｍａｘよりも大きくない場合には、ステップＳ６２へ進む。
【００７１】
ステップＳ５２へ進んだ場合には、解析装置１０は、ｙｉ＿ｆｍａｘを、Ｙｊ＿ｙｍａｘに代入する。一方、ｙｉ＿ｆｍａｘが、Ｙｊ＿ｙｍａｘよりも大きくない場合には、Ｙｊ＿ｙｍａｘ値の変更はされない。このように、集合体Ｙｊに新しいコードが分類される度に、Ｙｊ＿ｙｍａｘの更新処理が行われる。
【００７２】
図１３に示す例では、集合体Ｙｊに新しいコードｉが分類される。このコードｉのｙｉ＿ｆｍａｘは、Ｙｊ＿ｙｍａｘよりも大きい。そこで、Ｙｊ＿ｙｍａｘの更新処理が行われて、コードｉのｙｉ＿ｆｍａｘがＹｊ＿ｙｍａｘに代入される。
【００７３】
一方、ステップ４６において、ステップＳ５４へ進んだ場合には、解析装置１０は、集合体Ｙｊ＋１を生成して、コードｉを集合体Ｙｊ＋１に分類する。
【００７４】
図１２に示す例では、コード４の中心のｙ座標が、Ｙ１＿ｙｍａｘよりも大きいので、コード４は、新たに生成された集合体Ｙ２に分類される。
【００７５】
次に、ステップＳ５６において、解析装置１０は、コードｉが有する位置検出パターンの内で、その中心の位置が最大のｙ座標を持つ位置検出パターンのｙ座標ｙｉ＿ｆｍａｘを求める。
【００７６】
次に、ステップＳ５８において、解析装置１０は、ｙｉ＿ｆｍａｘを、Ｙｊ＋１＿ｙｍａｘに代入する。このように、新しい集合体Ｙｊ＋１が生成される度に、Ｙｊ＿ｙｍａｘの更新処理が行われる。
【００７７】
次に、ステップＳ６０において、解析装置１０は、集合体Ｙの順番を示す変数ｊに１を加えた値を、新たな変数ｊとして設定する。
【００７８】
上述したステップＳ４６からステップＳ６２の間の処理を行うことにより、図１１に示すように、認識した各コードは、コードの中心の位置を示すｙ座標が所定の範囲内にあるコードが同じ集合体Ｙに含まれるように、複数の集合体Ｙに分類される。図１１に示す例では、認識した各コードは、複数の集合体Ｙ１〜集合体Ｙｍに分類される。
【００７９】
また、認識した各コードの中心のｘ座標を用いて、上述したのと同様の処理を行うことにより、図１０に示すように、認識した各コードは、コードの中心の位置を示すｘ座標が所定の範囲内にあるコードが同じ集合体Ｘに含まれるように、複数の集合体Ｘに分類される。そして、ステップＳ２４に進む。図１０に示す例では、認識した各コードは、複数の集合体Ｘ１〜集合体Ｘｎに分類される。
【００８０】
そして、図７のステップＳ２４へ進む。
【００８１】
次に、ステップＳ２４において、解析装置１０は、複数の集合体に基づいて、コード群の画像内に認識されないコードが存在するか否かを判断する。コード群の画像内に認識されないコードが存在する場合には、ステップＳ２６へ進む。一方、コード群の画像内に認識されないコードが存在しない場合には、ステップＳ３２へ進む。ステップＳ３２へ進んだ場合には、解析装置１０は、認識したコードを解析した結果を表示部１４に出力する。
【００８２】
ステップＳ２６へ進んだ場合には、解析装置１０は、認識されないコードが存在すると推測される推測領域の中心の座標を求める。
【００８３】
次に、ステップＳ２８において、解析装置１０は、認識されないコードが存在すると推測される推測領域を決定する。
【００８４】
上述したステップＳ２４からステップＳ２８の詳細な処理を、図１４〜図１６を参照しながら、以下に説明する。
【００８５】
まず、ステップＳ７０において、解析装置１０は、各集合体Ｘに含まれるコードの数を比較して、他の集合体Ｘよりもコードの数が少ない集合体が存在するか否かを判断する。他の集合体Ｘよりもコードの数が少ない集合体が存在する場合には、ステップＳ７２へ進む。一方、他の集合体Ｘよりもコードの数が少ない集合体が存在しない場合には、ステップ３２へ進む。ステップＳ３２へ進んだ場合には、解析装置１０は、認識したコードを解析した結果を表示部１４に出力する。
【００８６】
解析装置１０は、複数の集合体Ｘの内で、最も多いコードの数を有する集合体のコード数をＸｍａｘとして、コード数がＸｍａｘよりも少ない集合体を、他の集合体Ｘよりもコードの数が少ない集合体として判断することができる。
【００８７】
コード群のｘ軸方向に並ぶコードの数がｎであることが既知である場合には、コード数がｎよりも少ない集合体を、他の集合体Ｘよりもコードの数が少ない集合体として判断してもよい。例えば、コード群がｍ×ｎ個のコードにより形成されており、このコード群が２つ並んでいる場合がある。この場合、画像には、ｍ×２ｎ個又は２ｍ×ｎ個のコードが含まれることになる。ここで、コード群がｍ×ｎ個のコードにより形成されていることが既知であれば、コード数がｎよりも少ない集合体を、他の集合体Ｘよりもコードの数が少ない集合体として判断して、処理を行える。この説明は、集合体Ｙの処理に対しても適用される。
【００８８】
ステップ７２へ進んだ場合には、解析装置１０は、他の集合体Ｘよりもコードの数が少ない集合体Ｘである集合体Ｘａを選択する。
【００８９】
図１０に示す例では、複数の集合体Ｘの内で、最も多いコードの数を有する集合体のコード数Ｘｍａｘはｍである。図１０に示す例では、コード群の中で認識されないコードの数が一つなので、他の集合体Ｘよりもコードの数が少ない集合体Ｘａの数は一つであり、集合体Ｘａが有するコードの数はｍ−１である。なお、認識されないコードの数は、２つ以上の場合もある。
【００９０】
次に、ステップＳ７４において、解析装置１０は、各集合体Ｙに含まれるコードの数を比較して、他の集合体Ｙよりもコードの数が少ない集合体が存在するか否かを判断する。他の集合体Ｙよりもコードの数が少ない集合体が存在する場合には、ステップＳ７６へ進む。一方、他の集合体Ｙよりもコードの数が少ない集合体が存在しない場合には、ステップ３２へ進む。ステップＳ３２へ進んだ場合には、解析装置１０は、認識したコードを解析した結果を表示部１４に出力する。
【００９１】
解析装置１０は、複数の集合体Ｙの内で、最も多いコードの数を有する集合体のコード数をＹｍａｘとして、コード数がＹｍａｘよりも少ない集合体を、他の集合体Ｙよりもコードの数が少ない集合体として判断することができる。
【００９２】
コード群のｙ軸方向に並ぶコードの数がｍであることが既知である場合には、コード数がｍよりも少ない集合体を、他の集合体Ｙよりもコードの数が少ない集合体として判断してもよい。
【００９３】
ステップ７６へ進んだ場合には、解析装置１０は、他の集合体Ｙよりもコードの数が少ない集合体Ｙである集合体Ｙｂを選択する。
【００９４】
図１１に示す例では、複数の集合体Ｙの内で、最も多いコードの数を有する集合体のコード数Ｙｍａｘはｎである。図１１に示す例では、コード群の中で認識されないコードの数が一つなので、他の集合体Ｙよりもコードの数が少ない集合体Ｙｂの数は一つであり、集合体Ｙｂが有するコードの数はｎ−１である。なお、認識されないコードの数は、２つ以上の場合もある。
【００９５】
次に、ステップＳ７８において、解析装置１０は、集合体Ｘａに含まれるコードの中心のｘ座標の平均値であるｘ座標ｘａｖｅと、集合体Ｙｂに含まれるコードの中心のｙ座標の平均値であるｙ座標ｙａｖｅを求める。
【００９６】
図１０に示す例では、集合体Ｘａに含まれるコードの中心のｘ座標を、（ｘａ１，ｙａ１），（ｘａ２，ｙａ２），・・・，（ｘａ（ｍ−１），ｙａ（ｍ−１））とすると、集合体Ｘａが含むコードの中心のｘ座標の平均値ｘａｖｅは、
ｘａｖｅ＝（ｘａ１＋ｘａ２＋・・・ｘａ（ｍ−１））／（ｍ−１）
となる。
【００９７】
また、図１１に示す例では、集合体Ｙｂに含まれるコードの中心のｙ座標を、（ｘｂ１，ｙｂ１），（ｘｂ２，ｙｂ２），・・・，（ｘｂ（ｎ−１），ｙｂ（ｎ−１））とすると、集合体Ｙｂが含むコードの中心のｙ座標の平均値ｙａｖｅは、
ｙａｖｅ＝（ｙｂ１＋ｙｂ２＋・・・ｙｂ（ｎ−１））／（ｎ−１）
となる。
【００９８】
次に、ステップＳ８０において、解析装置１０は、推測領域の中心の位置として、ｘ座標をｘａｖｅとし、ｙ座標をｙａｖｅとして、中心の座標（ｘａｖｅ、ｙａｖｅ）を決定する。
【００９９】
図１６の例に示すように、集合体Ｘａと集合体Ｙｂとが重複する領域に、推測領域の中心の座標（ｘａｖｅ、ｙａｖｅ）が含まれる。
【０１００】
次に、全ての推測領域の中心に対して、ステップＳ８２からステップＳ８９の間の処理が繰り返される。なお、本実施形態では、推測領域の中心は一つなので、ステップＳ８２からステップＳ８９の間の処理は一回だけ行われる。
【０１０１】
まず、ステップＳ８４において、解析装置１０は、集合体Ｘａに含まれるコードの内で、ｙａｖｅより小さい中心のｙ座標を有するコードの中で最大のｙ座標を有するコードＡを選択する。また、解析装置１０は、集合体Ｙｂに含まれるコードの内で、ｘａｖｅより小さいｘ座標を有するコードの中で最大のｘ座標を有するコードＢを選択する。
【０１０２】
図１６に示す例では、コードＡが、その中心の座標（ｘａｓ、ｙａｓ）が、集合体Ｘａに含まれるコードの内で、ｙａｖｅより小さい中心のｙ座標を有するコードの中で最大のｙ座標を有するコードとして選択される。また、コードＢが、その中心の座標（ｘｂｔ、ｙｂｔ）が、ｘａｖｅより小さいｘ座標を有するコードの中で最大のｘ座標を有するコードとして選択される。
【０１０３】
次に、ステップＳ８６において、解析装置１０は、コードＡに対して、中心の座標と関連づけられて記憶されている位置検出パターンの座標に基づいて、最大のｙ座標を有する位置検出パターンの中心のｙ座標ｙｆを求める。また、解析装置１０は、コードＢに対して、中心の座標と関連づけられて記憶されている位置検出パターンの座標に基づいて、最大のｘ座標を有する位置検出パターンの中心のｘ座標ｘｆを求める。
【０１０４】
次に、ステップＳ８８において、解析装置１０は、推測領域３２を決定する。推測領域３２の境界は、例えば、以下のように決定され得る。
【０１０５】
まず、推測領域３２の一の境界を示す推測領域開始点の座標（ｘｓｔａｒｔ，ｙｓｔａｒｔ）を、図１６に示すように、コードＡの最大のｙ座標を有する位置検出パターンの中心のｙ座標ｙｆと、コードＢの最大のｘ座標を有する位置検出パターンの中心のｘ座標ｘｆとを用いて、座標（ｘｆ、ｙｆ）とすることができる。
【０１０６】
また、推測領域３２の他の境界を示す推測領域終了点の座標（ｘｅｎｄ，ｙｅｎｄ）を、
ｘｅｎｄ＝（ｘａｖｅ-ｘｆ）×２＋ｘｆ＝２ｘａｖｅ−ｘｆ
ｙｅｎｄ＝（ｙａｖｅ-ｙｆ）×２＋ｙｆ＝２ｙａｖｅ−ｙｆ
とすることができる。
【０１０７】
図１６に示すように、推測領域３２は、推測領域開始点と推測領域終了点により規定される領域として決定され得る。そして、ステップＳ３０へ進む。
【０１０８】
次に、図８ステップＳ３０において、解析装置１０は、コード群の画像内の推測領域３２を再走査して、認識されたコードを解析する。
【０１０９】
図１７に示すように、解析装置１０は、記憶部１２に記憶された画像内の推測領域３２を再走査する。再走査では、走査する範囲が、画像内の推測領域３２の部分だけなので、走査の分解能を最初の走査よりも高めて行うことが好ましい。また、再走査では、複数の解析条件（二値化閾値等）を用いて、解析を行ってもよい。再走査では、走査の分解能を高めるか、又は複数の解析条件を用いて、解析を行うことが認識されにくいコードを認識する上で好ましい。推測領域３２に対して、このような再走査及び解析処理を行っても、画像全体を再走査又は解析する処理よりも処理時間を短縮することができる。
【０１１０】
次に、ステップＳ３２において、解析装置１０は、最初の走査で認識されたコードの解析結果と共に、推測領域を再走査して認識されたコードに対する解析結果を表示部１４に出力する。
【０１１１】
次に、ステップＳ３４において、解析装置１０は、解析を終了するか否かを判断する。例えば、ユーザの指示により、更に認識されないコードを解析する必要がある場合には、解析を終了せずに、ステップＳ１０へ戻る。
【０１１２】
上述した本実施形態の解析装置１０によれば、２次元アレイ状に配置された情報を含む複数のコードを撮像した画像から認識されないコードが存在すると推測される推測領域を決定できる。そして、推測領域について認識されなかったコードを再走査して解析できるので、処理速度を向上することが可能である。
【０１１３】
なお、コード群を形成するコードの数が既知である場合、例えば、コード群がｍ×ｎ個のコードにより形成されることが既知である場合には、上述したステップＳ１４において、認識されたコードの数が、ｍ×ｎ個である場合には、ステップＳ３２へ進んで、ステップＳ１６以降の処理を行わなくてもよい。
【０１１４】
また、上述したように、複数の集合体Ｘは、画像のｘ軸がコードのｘ軸方向の寸法と対応するように複数に分割された領域と対応するように形成されていればよく、また、複数の集合体Ｙは、画像のｙ軸がコードのｙ軸方向の寸法と対応するように複数に分割された領域と対応するように形成されていればよい。以下、分割された領域の他の例として、変形例１及び変形例２を説明する。
【０１１５】
図１８に示す変形例１では、コードが一の集合体Ｙに追加される度に、Ｙｊ＿ｙｍａｘが更新される。図１８に示す例では、集合体Ｙｊには、５つのコードが分類されており、Ｙｊ＿ｙｍａｘは、５つのコードそれぞれが有する位置検出パターンの内で、最大のｙ座標を持つ位置検出パターンのｙ座標の値の平均値として更新される。次のコードの中心の座標は、更新されたＹｊ＿ｙｍａｘと比較される。集合体Ｘについても、各コードを集合体Ｘに分類することも、同様に行うことができる。
【０１１６】
図１９に示す変形例２では、一の集合体Ｙが有するコードの中から基準となる基準コードを選択し、基準コードが有する位置検出パターンの内で、最大のｙ座標を持つ位置検出パターンのｙ座標を、Ｙｊ＿ｙｍａｘとする。このＹｊ＿ｙｍａｘは、集合体Ｙに分類されるコードのｙ座標の上限値である。同様に、基準コードが有する位置検出パターンの内で、最小のｙ座標を持つ位置検出パターンのｙ座標を、集合体Ｙに分類されるコードのｙ座標の下限値を示す変数Ｙｊ＿ｙｍｉｎとしてもよい。この場合、各コードの分類は、Ｙｊ＿ｙｍａｘ及びＹｊ＿ｙｍｉｎを用いて行われる。基準コードとしては、各集合体Ｙに最初に分類されるコードを選択することができる。各コードを集合体Ｘに分類することも、同様に行うことができる。
【０１１７】
次に、上述した解析装置の第２実施形態を、図２０〜図２８を参照しながら以下に説明する。他の実施形態について特に説明しない点については、上述の第１実施形態に関して詳述した説明が適宜適用される。また、同一の構成要素には同一の符号を付してある。
【０１１８】
上述した実施形態では、コード群は、コード群の輪郭を規定する２本の交差する直線Ｌ１、Ｌ２を、画像３０のｘ軸及びｙ軸の方向と一致させるように撮像されていた。
【０１１９】
しかし、コード群の輪郭が、画像のｘ軸及びｙ軸の方向と一致するように撮像されるとは限らない。
【０１２０】
本実施形態の解析装置は、コード群の輪郭が、画像のｘ軸及びｙ軸の方向と一致するように撮像されていなくとも、各コード群を複数の集合体に分類して、推測領域を決定するものである。
【０１２１】
ただし、本実施形態では、２次元アレイ状に配置された複数のコードを含むコード群の輪郭が３角形又は４角形の形状を有しており、コード群の縦方向に並ぶコードの数がｍ個であること及び横方向に並ぶコードの数がｎ（ｍ≦ｎ）個であることは既知であるとする。また、２次元アレイ状に配置された複数のコードを含むコード群の輪郭を規定する２本の直線Ｌ１，Ｌ２が交差してなす交差角度も既知であるとする。
【０１２２】
本実施形態の解析装置１０の構成は、図３に示す上述した第１実施形態と同様である。
【０１２３】
図２０は、本明細書に開示する解析装置の第２実施形態が解析する画像を説明する図である。コード群の輪郭は、長方形であり、２本の直線Ｌ１，Ｌ２がなす交差角度は、９０度である。
【０１２４】
図２０に示すように、コード群の輪郭は、画像のｘ軸及びｙ軸の方向と一致するようには撮像されていない。
【０１２５】
次に、解析装置１０の動作を図２１〜図２４に示すフローチャートを参照しながら、以下に説明する。
【０１２６】
まず、ステップＳ９０において、解析装置１０は、情報を含むコードが２次元アレイ状に配置されたコード群を撮像する。撮像された画像は、記憶部１２に記憶される。
【０１２７】
次に、ステップＳ９２において、解析装置１０は、コード群の画像を走査して、コードを認識し、認識されたコードを解析する。また、解析装置１０は、認識されたコードの数を求める。
【０１２８】
次に、ステップＳ９４において、解析装置１０は、２つ以上のコードを認識したか否かを判断する。２つ以上のコードが認識されている場合には、ステップＳ９６へ進む。一方、２つ以上のコードが認識されていない場合には、ステップＳ１４０へ進む。
【０１２９】
ステップＳ１４０へ進んだ場合には、解析装置１０は、コードを解析した解析結果を表示部１４に出力する。
【０１３０】
次に、ステップＳ９６において、解析装置１０は、コード群の輪郭の隅を形成する４つの隅コード１〜隅コード４の位置を求める。解析装置１０は、隅コードの位置として、コードの位置を代表する代表位置として中心の座標を求める。
【０１３１】
解析装置１０は、認識した各コードの中心の座標を比較して、最大のｘ座標ｘｍａｘ、最大のｙ座標ｙｍａｘ、最小のｘ座標ｘｍｉｎ、最小のｙ座標ｙｍｉｎを有する４つのコードを隅コードとして選択する。
【０１３２】
図２０に示す例では、隅コード１は、最大のｙ座標ｙｍａｘを有する。隅コード２は、最小のｘ座標ｘｍｉｎを有する。隅コード３は、最小のｙ座標ｙｍｉｎを有する。隅コード４は、最大のｘ座標ｘｍａｘを有する。
【０１３３】
次に、ステップＳ９８において、解析装置１０は、隅コードの番号を示す変数ｉに１を設定する。
【０１３４】
次に、ステップＳ１００において、解析装置１０は、ｉ≦４であるか否かを判断する。ｉ≦４である場合には、ステップＳ１０２へ進む。一方、ｉ≦４でない場合には、ステップＳ１０７へ進む。Ｓ１０７へ進んだ場合には、４つの隅コードを用いても、各コードを複数の集合体に分類できなかったので、解析装置１０は、解析不可能であると判断して、処理を終了する。
【０１３５】
次に、ステップＳ１０２において、解析装置１０は、ステップＳ１０８からステップＳ１１６の間の処理を行う回数を示す変数ｒに１を設定する。
【０１３６】
次に、ステップＳ１０４において、解析装置１０は、ｒ＜ｍであるか否かを判断する。ｒ＜ｍである場合には、ステップＳ１０８へ進む。一方、ｒ＜ｍでない場合には、ステップＳ１０６へ進む。ステップＳ１０６へ進んだ場合には、変数ｉに１を加えた値を新たな変数ｉとして、ステップＳ１００へ戻り、次の隅コードに対して、同じ処理を繰り返す。
【０１３７】
ステップＳ１０８へ進んだ場合には、解析装置１０は、隅コードｉの周りに位置する他のコードを選択する。図２５に示す例では、解析装置１０は、隅コード１の周りに最近接で位置し且つ以前には選択されていないコードを選択する。ｒ＝１では、解析装置１０は、コードＣ１〜コードＣ３の３つのコードを選択する。また、ｒ＝ｐでは、解析装置１０は、コードＣ１〜Ｃｑのｑ＝２ｐ＋１個のコードを選択する。なお、隅コード１の周りに最近接で位置するとは、図２５に示すように、四角形の形状を有するコードの一辺の長さと対角線の長さ程度の距離の差は、同じ最近接の距離に含まれることを意味する。
【０１３８】
次に、ステップＳ１１０において、解析装置１０は、コード群の輪郭の一の隅部を形成する隅コードｉと、ステップＳ１０８で選択された他のコードを通る直線を作成する。
【０１３９】
図２６に示す例では、隅コード１と、選択されたｑ＝２ｐ＋１個のコードＣ１〜Ｃｑを通る直線が形成される。具体的には、解析装置１０は、コード群の輪郭の一の隅部を形成する隅コード１の中心と、隅コード１の周りに位置する選択された一のコードＣ１の中心を通り傾きａ１を有する第１直線から、隅コード１の中心と隅コード１の周りに位置する選択された他のコードＣｑの中心を通り傾きａｑを有する第ｑ直線までのｑ＝２ｐ＋１本の直線を作成する。
【０１４０】
次に、ステップＳ１１２において、解析装置１０は、ステップＳ１１０で作成された複数の直線の内の２つの直線が隅コードｉで交差する角度を求め、求めた角度が、交差角度９０度と所定の範囲内で一致する角度で交差する２つの直線を選択し、選択された２つの直線の傾きａｉ、ａｊを求める。所定の範囲としては、例えば、１０度以内、好ましくは５度以内とすることができる。
【０１４１】
図２６に示す例では、隅コード１とコードＣ１を通る直線と、隅コード１とコードＣｑを通る直線が選択される。この２つの直線は、コード群の輪郭を規定する交差する直線に対応する。ここで、コードＣｑを通る直線の傾きａｑを傾きａｉとし、コードＣ１を通る直線の傾きａ１をａｊとする。
【０１４２】
次に、ステップＳ１１４において、図２７に示すように、解析装置１０は、求めた２本の直線の傾きの内の一の傾きａｉを用いて、隅コード１の中心を通る直線を作成する。なお、他の傾きａｊを用いて、隅コード１の中心を通る直線を作成してもよい。
【０１４３】
次に、ステップＳ１１６において、解析装置１０は、傾きａｉの直線上にｍ個のコードが重なるか否かを判断する。傾きａｉの直線上にｍ個のコードが重なる場合には、ステップＳ１１８へ進む。一方、傾きａｉの直線上にｍ個のコードが重ならない場合には、ステップＳ１２０へ進む。なお、傾きａｊを用いた場合には、傾きａｊの直線上にｎ個のコードが重なるか否かを判断する。
【０１４４】
ここで、傾きａｉを有し、隅コード１の中心を通る直線（ｙ＝ａｉ・ｘ＋ｂｉ）が、隅コード１以外の認識されている一のコードと重なっているか否かは、次のように判断される。
【０１４５】
まず、認識されている一のコードの４つの隅の点の座標（又は位置検出パターンの中心）の内で、最大のｘ座標を持つ点の座標を（ｘｍａｘ，ｙ１）とし、最小のｘ座標を持つ点の座標を（ｘｍｉｎ，ｙ２）とし、最大のｙ座標を持つ点の座標を（ｘ１，ｙｍａｘ）とし、最小のｘ座標を持つ点の座標を（ｘ２，ｙｍｉｎ）とする。
【０１４６】
下記の２つの関係の内の何れか一方が満足されていれば、傾きａｉを有し、隅コード１の中心を通る直線が、一のコードと重なっていると判断される。
【０１４７】
関係（１）｛ｙ２≦ａｉ・ｘｍｉｎ＋ｂｉ｝∧｛ｙ１≧ａｉ・ｘｍａｘ＋ｂｉ｝  又は
｛ｙ１≦ａｉ・ｘｍａｘ＋ｂｉ｝∧｛ｙ２  ≧  ａｉ・ｘｍｉｎ＋ｂｉ｝
関係（２）｛ｙｍａｘ≦ａｉ・ｘ１＋ｂｉ｝∧｛ｙｍｉｎ≧ａｉ・ｘ２＋ｂｉ｝  又は
｛ｙｍａｘ≦ａｉ・ｘ１＋ｂｉ｝∧｛ｙｍｉｎ≧ａｉ・ｘ１＋ｂｉ｝
【０１４８】
ステップＳ１１８へ進んだ場合には、解析装置１０は、ステップＳ１１４で作成した直線が通るコードを同じ集合体Ｍ１に分類する。
【０１４９】
図２７に示すように、傾きａｉを有し、隅コード１の中心を通る直線（ｙ＝ａｉ・ｘ＋ｂｉ）は、コード群の一の輪郭を規定するコードの列と重なっているので、隅コード１を含むｍ個のコードが、集合体Ｍ１に分類される。
【０１５０】
一方、ステップＳ１１６において、ステップＳ１２０へ進んだ場合には、解析装置１０は、変数ｒに１を加えた値を新たな変数ｒとして、ステップＳ１０４へ戻り、ステップＳ１０８以降のステップを繰り返す。
【０１５１】
次に、ステップＳ１２２において、解析装置１０は、集合体Ｍの数を示す変数ｅに２を設定する。
【０１５２】
次に、ステップＳ１２４において、解析装置１０は、認識したコードの内で、集合体Ｍに分類されていないコードＣを選択する。
【０１５３】
図２８に示す例では、解析装置１０は、中心の座標（ｘｃ、ｙｃ）を有するコードＣを選択する。コードＣは、集合体Ｍ１には含まれない。
【０１５４】
次に、ステップＳ１２６において、図２８に示すように、解析装置１０は、コードＣの中心を通り、傾きａｉを有する直線（ｙ＝ａｉ・ｘ＋（ｙｃ−ａｉ・ｘｃ））を作成する。なお、ステップＳ１１４において、傾きａｊを用いた場合には、このステップにおいても同じ傾きを用いる。
【０１５５】
次に、ステップＳ１２８において、解析装置１０は、ステップＳ１２６で作成した直線と重なるコードを集合体Ｍｅに分類する。
【０１５６】
図２８に示すように、傾きａｉを有し、コードＣの中心を通る直線（ｙ＝ａｉ・ｘ＋（ｙｃ−ａｉ・ｘｃ））と重なるｍ個のコードが、集合体Ｍｅに分類される。
【０１５７】
次に、ステップＳ１３０において、解析装置１０は、ｅ＞ｎであるか否かを判断する。ｅ＞ｎである場合には、ステップＳ１３４へ進む。一方、ｅ＞ｎでない場合には、ステップＳ１３２へ進む。
【０１５８】
ステップＳ１３２へ進んだ場合には、解析装置１０は、変数ｅに１を加えた値を新たな変数ｅとして、ステップＳ１２４へ戻り、ステップＳ１２４〜ステップＳ１２８の処理を繰り返す。
【０１５９】
一方、ステップＳ１３４へ進んだ場合には、解析装置１０は、各集合体Ｍに含まれるコードの数を比較して、他の集合体Ｍよりもコードの数が少ない集合体Ｍｓを選択する。他の集合体Ｍよりもコードの数が少ない集合体Ｍｓを選択する方法としては、例えば、上述した第１実施形態と同様の方法を用いることができる。
【０１６０】
次に、ステップＳ１３６において、解析装置１０は、集合体Ｍｓが含むコードを、コードの位置に基づいて傾きａｉの方向に並べ、隣接するコード同士の間の距離を求めて、最大の距離を示した隣接するコードの間の領域を含むように推測領域を決定する。
【０１６１】
推測領域は、例えば、以下のように決定できる。
【０１６２】
最大の距離を示した隣接する２つのコードそれぞれは、他方のコードと対向する側に２つの隅に位置する点を有するので、推測領域を規定する４つの隅の位置が得られる。
【０１６３】
ここで、４つの隅の位置の座標に基づいて、最大のｘ座標を示すｘｓ＿ｍａｘ、最大のｙ座標を示すｙｓ＿ｍａｘ、最小のｘ座標を示すｘｓ＿ｍｉｎ、最小のｙ座標を示すｙｓ＿ｍｉｎが求められる。これらの座標を用いて、推測領域を、（ｘｓ＿ｍａｘ，ｙｓ＿ｍａｘ）、（ｘｓ＿ｍａｘ，ｙｓ＿ｍｉｎ）、（ｘｓ＿ｍｉｎ，ｙｓ＿ｍａｘ）、（ｘｓ＿ｍｉｎ，ｙｓ＿ｍｉｎ）の４つの点により規定される四角形の領域とすることができる。
【０１６４】
次に、ステップＳ１３８において、解析装置１０は、コード群の画像内の推測領域を再走査して、認識されたコードを解析する。
【０１６５】
次に、ステップＳ１４０において、解析装置１０は、最初の走査で認識されたコードの解析結果と共に、推測領域を再走査して認識されたコードに対する解析結果を表示部１４に出力する。
【０１６６】
次に、ステップＳ１４２において、解析装置１０は、解析を終了するか否かを判断する。例えば、ユーザの指示により、更に認識されないコードを解析する必要がある場合には、解析を終了せずに、ステップＳ９０へ戻る。
【０１６７】
上述した実施形態の解析装置１０によれば、コード群の輪郭が、画像のｘ軸及びｙ軸の方向と一致するように撮像されていなくとも、推測領域を決定することができる。そして、推測領域について認識されなかったコードを再走査して解析できるので、処理速度を向上することが可能である。なお、本実施形態の解析装置１０は、コード群の輪郭が、画像のｘ軸及びｙ軸の方向と一致するように撮像されている場合にも適用可能であることはいうまでもない。
【０１６８】
本実施形態の解析装置１０は、コード群の輪郭が正方形又は長方形又は平行四辺形又は三角形であれば、各コードを複数の集合体に精度良く分類して、推測領域を決定できる。なお、コード群の輪郭が平行四辺形の場合には、交差角は２つの角度を有する。また、コード群の輪郭が三角形の場合には、交差角は３つの角度を有する。
【０１６９】
また、上記以外の多角形に対しては、精度の低下や計算量の増加はあるものの、各コードを複数の集合体に分類して、推測領域を決定できる。
【０１７０】
２次元アレイ状に配置された複数の前記コードを含むコード群の輪郭を規定する交差する２本の直線がなす交差角度で交差する２本の直線の傾きを求める方法として、他の方法を用いることができる。以下、他の方法を用いる例として、変形例１及び変形例２を説明する。
【０１７１】
図２９は、第２実施形態の変形例１を説明する図である。
【０１７２】
変形例１では、コード群の画像は、コード群の輪郭の４つの各隅部にマーカが配置されて撮像されている。マーカの画像４０を、以下、単にマーカともいう。
【０１７３】
解析装置１０は、２つのマーカ４０の中心を結ぶ直線の内、交差角度で交差する２本の直線の傾きを求め、コード群の輪郭を規定する交差する２本の直線がなす交差角度で交差する２本の直線Ｌ１，Ｌ２の傾きとする。
【０１７４】
マーカは、コードと共に撮像されたものである。例えば、図１に示すように、箱にコードが配置されている場合には、棚の枠内に、箱を縦方向及び横方向に積み上げて並べておき、棚の枠の４隅にマーカを配置して、マーカを含むコード群を撮像することができる。
【０１７５】
４つのマーカ４０は、コード群の輪郭を形成するように配置されることが好ましい。また、コード群の対角線上に位置しない２つのマーカ４０を結んだ直線は、コード群の輪郭を規定する直線と平行になるように、各マーカ４０が配置されることが好ましい。
【０１７６】
４つのマーカは全て同じパターンである必要はないが、位置検出パターンのようにカメラで認識されやすい形状・デザインであることが好ましい。以上が、変形例１の説明である。
【０１７７】
図３０は、第２実施形態の変形例２を説明する図である。
【０１７８】
変形例２では、解析装置１０は、コード群の輪郭の４つの隅部を形成するコードである４つの隅コードの位置を示す中心の座標に基づいて、２つのコードの中心の座標を結ぶ直線の内、交差角度で交差する２本の直線の傾きを求めて、コード群の輪郭を規定する交差する２本の直線がなす交差角度で交差する２本の直線Ｌ１，Ｌ２の傾きとする。
【０１７９】
まず、解析装置１０は、認識したコードすべての中心の座標のうち、最大のｘ座標、最大のｙ座標、最小のｘ座標、最小のｙ座標を有する４つのコードを隅コードとして選択する。
【０１８０】
次に、図３０に示すように、解析装置１０は、隅コードの中心の座標同士を直線で結び、その中から最短の４本の直線を選択する。
【０１８１】
次に、解析装置１０は、選定された４本の直線の内で、交差角度で交差する２本の直線の傾きを求める。以上が、変形例２の説明である。
【０１８２】
本発明では、上述した実施形態の方法、装置及びプログラムは、本発明の趣旨を逸脱しない限り適宜変更が可能である。また、一の実施形態が有する構成要件は、他の実施形態にも適宜適用することができる。
【符号の説明】
【０１８３】
１０    解析装置
１１    演算部
１２    記憶部
１２ａ    記憶媒体
１３    操作部
１４    表示部
１５    通信部
１６    撮像部
２０    コード
３０    画像
３１    コードの画像
３２    推測領域
Ｌ１，Ｌ２    コード群の輪郭を規定する直線
４０    マーカの画像
１００    箱
１１０    解析装置
１２０    コード
１２０ａ    コード
１３０    画像
【図１】
0006370188.tif 000002
【図２】
0006370188.tif 000003
【図３】
0006370188.tif 000004
【図４】
0006370188.tif 000005
【図５】
0006370188.tif 000006
【図６】
0006370188.tif 000007
【図７】
0006370188.tif 000008
【図８】
0006370188.tif 000009
【図９】
0006370188.tif 000010
【図１０】
0006370188.tif 000011
【図１１】
0006370188.tif 000012
【図１２】
0006370188.tif 000013
【図１３】
0006370188.tif 000014
【図１４】
0006370188.tif 000015
【図１５】
0006370188.tif 000016
【図１６】
0006370188.tif 000017
【図１７】
0006370188.tif 000018
【図１８】
0006370188.tif 000019
【図１９】
0006370188.tif 000020
【図２０】
0006370188.tif 000021
【図２１】
0006370188.tif 000022
【図２２】
0006370188.tif 000023
【図２３】
0006370188.tif 000024
【図２４】
0006370188.tif 000025
【図２５】
0006370188.tif 000026
【図２６】
0006370188.tif 000027
【図２７】
0006370188.tif 000028
【図２８】
0006370188.tif 000029
【図２９】
0006370188.tif 000030
【図３０】
0006370188.tif 000031