(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-17
(45)【発行日】2024-07-25
(54)【発明の名称】コード復号装置、コード復号方法及びプログラム
(51)【国際特許分類】
G06K 7/14 20060101AFI20240718BHJP
G06T 7/60 20170101ALI20240718BHJP
【FI】
G06K7/14 082
G06T7/60 300A
G06K7/14 017
(21)【出願番号】P 2020088825
(22)【出願日】2020-05-21
【審査請求日】2023-05-16
(73)【特許権者】
【識別番号】504258527
【氏名又は名称】国立大学法人 鹿児島大学
(74)【代理人】
【識別番号】100095407
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100162259
【氏名又は名称】末富 孝典
(74)【代理人】
【識別番号】100168114
【氏名又は名称】山中 生太
(74)【代理人】
【識別番号】100146916
【氏名又は名称】廣石 雅紀
(72)【発明者】
【氏名】小野 智司
(72)【発明者】
【氏名】神薗 誠
(72)【発明者】
【氏名】鞍津輪 一希
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2004-362053(JP,A)
【文献】特開2019-067278(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06K 7/14
G06T 7/60
G06K 7/10
(57)【特許請求の範囲】
【請求項1】
互いに輝度が異なる第1の領域と第2の領域のいずれかで構成されるセルの組み合わせでコード情報が符号化された2次元コードの画像から、前記セルの輪郭線
の断片を検出する輪郭線検出部と、
前記輪郭線検出部で検出された
前記輪郭線の断片のうち、縦方向に延びる前記輪郭線の断片の端部同士をその断片が横方向に並ぶ順番に従って縦方向に接続して途切れのない縦の輪郭線を生成したときに、途切れのない縦の輪郭線を構成する断片の最適な組み合わせを探索するとともに、横方向に延びる前記輪郭線の断片の端部同士をその断片が縦方向に並ぶ順番に従って横方向に接続して途切れのない横の輪郭線を生成したときに、途切れのない横の輪郭線を構成する断片の最適な組み合わせを探索し、探索された前記輪郭線の断片の最適な組み合わせに基づいて、前記2次元コードにおける途切れのない前記セルの輪郭線の位置情報を推定する輪郭線推定部と、
前記輪郭線推定部で推定された
途切れのない前記セルの輪郭線
の位置情
報に基づいて、前記セルの前記2次元コード内の位置情報を推定し、前記セルの位置情報の推定結果に基づいて前記コード情報を復号化する復号部と、
を備えるコード復号装置。
【請求項2】
前記輪郭線推定部は、
前記輪郭線検出部で検出された前記輪郭線
の断片のうち、縦方向に延びる前記輪郭線の断片に対して、その断片が横方向に並ぶ順番に従って前記2次元コード内の位置を表す識別番号を付与するとともに、横方向に延びる前記輪郭線の断片に対して、その断片が縦方向に並ぶ順番に従って前記2次元コード内の位置を表す識別番号を付与し、
付与した
それぞれの識別番号に基づいて、
縦方向に延びる前記輪郭線の断片の端部同士を縦方向に接続して縦の前記輪郭線の断片の最適な組み合わせを探索するとともに、横方向に延びる前記輪郭線の断片の端部同士を横方向に接続して横の前記輪郭線の断片の最適な組み合わせを探索する、
請求項1に記載のコード復号装置。
【請求項3】
前記輪郭線推定部は、
同
じ識別番号を有する前記輪郭線
の断片の端部同士を接続線で接続した場合において、前記接続線と前記輪郭線
の断片とのなす角度が大きくなるにつれて大きくなる第1の関数と、前記接続線同士の交叉回数が増えるにつれて大きくなる第2の関数と、隣接する前記輪郭線
の断片の間隔が大きくなるにつれて大きくなる第3の関数とのいずれか、又は、前記第1の関数、前記第2の関数及び前記第3の関数のうちの少なくとも2つの和のいずれかを含む目的関数を用いて、前記輪郭線
の断片に付与され
る識別番号の組み合わせの中から、前記目的関数の値が最も小さくな
る識別番号の組み合わせを探索する、
請求項2に記載のコード復号装置。
【請求項4】
前記目的関数において、前記第1の関数と、前記第2の関数と、前記第3の関数とには、それぞれ異なる重みが付与されている、
請求項3に記載のコード復号装置。
【請求項5】
前記輪郭線検出部は、
機械学習を行って、前記2次元コードの画像から、両隣の前記セルの輝度が等しいために不可視の前記セル
の輪郭線
の断片を検出する機械学習部を備える、
請求項1から4のいずれか一項に記載のコード復号装置。
【請求項6】
前記機械学習部は、
多層パーセプトロン、畳み込みニューラルネットワーク、又は前記2次元コードの画像の各画素をノードとするグラフ構造で表現したマルコフ確率場として最適化を行う最適化器である、
請求項5に記載のコード復号装置。
【請求項7】
前記畳み込みニューラルネットワークは、全結合層を持たず全ての層が畳み込み層である全層畳み込みネットワークである、
請求項6に記載のコード復号装置。
【請求項8】
情報処理装置によって実行されるコード復号方法であって、
互いに輝度が異なる第1の領域と第2の領域のいずれかで構成されるセルの組み合わせでコード情報が符号化された2次元コードの画像から、前記セルの輪郭線
の断片を検出する輪郭線検出ステップと、
前記輪郭線検出ステップで検出された
前記輪郭線の断片のうち、縦方向に延びる前記輪郭線の断片の端部同士をその断片の横方向の順番に従って縦方向に接続して途切れのない縦の輪郭線を生成したときに、途切れのない縦の輪郭線を構成する断片の最適な組み合わせを探索するとともに、横方向に延びる前記輪郭線の断片の端部同士をその断片の縦方向の順番に従って横方向に接続して途切れのない横の輪郭線を生成したときに、途切れのない横の輪郭線を構成する断片の最適な組み合わせを探索し、探索された前記輪郭線の断片の最適な組み合わせに基づいて、前記2次元コードにおける途切れのない前記セルの輪郭線の位置情報を推定する輪郭線推定ステップと、
前記輪郭線推定ステップで推定された
途切れのない前記セルの輪郭線
の位置情
報に基づいて、前記セルの前記2次元コード内の位置情報を推定し、前記セルの位置情報の推定結果に基づいて前記コード情報を復号化する復号ステップと、
を含むコード復号方法。
【請求項9】
コンピュータを、
互いに輝度が異なる第1の領域と第2の領域のいずれかで構成されるセルの組み合わせでコード情報が符号化された2次元コードの画像から、前記セルの輪郭線
の断片を検出する輪郭線検出部、
前記輪郭線検出部で検出された
前記輪郭線の断片のうち、縦方向に延びる前記輪郭線の断片の端部同士をその断片の横方向の順番に従って縦方向に接続して途切れのない縦の輪郭線を生成したときに、途切れのない縦の輪郭線を構成する断片の最適な組み合わせを探索するとともに、横方向に延びる前記輪郭線の断片の端部同士をその断片の縦方向の順番に従って横方向に接続して途切れのない横の輪郭線を生成したときに、途切れのない横の輪郭線を構成する断片の最適な組み合わせを探索し、探索された前記輪郭線の断片の最適な組み合わせに基づいて、前記2次元コードにおける途切れのない前記セルの輪郭線の位置情報を推定する輪郭線推定部、
前記輪郭線推定部で推定された
途切れのない前記セルの輪郭線
の位置情
報に基づいて、前記セルの前記2次元コード内の位置情報を推定し、前記セルの位置情報の推定結果に基づいて前記コード情報を復号化する復号部、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コード復号装置、コード復号方法及びプログラムに関する。
【背景技術】
【0002】
交通機関の搭乗券、決済、認証などにおいて、シート上に印刷された2次元コードが用いられる場面が増えている。2次元コードの画像から、コード情報を復号化する際には、まず、その中に埋め込まれた位置検出用コードが検出される。続いて、検出された位置検出用コードに従って、サンプリンググリッドとも呼ばれる2次元格子が2次元コードの画像上に規定される。この場合、2次元格子の交点は2次元コードを構成する各セル(1ビットの情報を示す単位領域)の位置に合致する。したがって、サンプリング点の明暗情報から、コード情報を検出してコード情報を復号化することができる。
【0003】
2次元コードが紙などのシート上に印刷されている場合、シートが折れたり皺が寄ったりすると、印刷された2次元コードも複雑に歪む。この場合、サンプリング点と実際のセルの位置とにずれが生じ、明暗情報が間違って検出され、コード情報を正確に復号化できない場合がある。
【0004】
このような状況に対応すべく、2次元コードの様々な検出方法が提案されている。例えば、2次元コードの包絡線、すなわち2次元コード全体の外形から形成した補助線に基づいてコード情報を検出する技術が開示されている(例えば、特許文献1参照)。この他、2次元コードに予め補助線を埋め込んで、復号化の際に補助線を検出し、検出した補助線に沿ってコード情報を検出して、復号を行う技術が開示されている(例えば、非特許文献1、2参照)。
【先行技術文献】
【特許文献】
【0005】
【非特許文献】
【0006】
【文献】K.Kamizuru, Y.Kawakami, H.Kawasaki, S.Ono, “Belief-propagation-based robust decoding for two-dimensional barcodes to overcome distortion and occlusion and its extension to multi-view decoding”, ICIP, pp.2359~2363,2015.
【文献】K.Kamizuru, K.Nakamura, H.Kawasaki, S.Ono, “A belief-propagation-based decoding method for two-dimensional barcodes with monochrome auxiliary lines robust against non-uniform geometric distortion”, QCAV, 2017.
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記特許文献1に開示された装置によれば、2次元コードの緩やかな歪みに対して高速かつ正確なコード情報の検出が可能となる。しかしながら、この装置では、2次元コードに、
図14(A)の点線で囲まれた部分に示すような不均一な凸状又は凹状な歪み(複雑、局所的な歪み)があったり、
図14(B)の点線で囲まれた部分に示すような遮蔽領域のある歪みがあったりする場合には、コード情報を正確に検出するのが困難になる。
【0008】
上記非特許文献1、2に開示された装置によれば、2次元コードに複雑な歪み、局所的な歪みおよび遮蔽領域のある歪みにも対応することが可能である。2次元コードの補助線の位置から、明暗が同じ、すなわち同色のセル同士の間の境界線の正確な位置を把握することができるので、複雑な局所的な歪み、遮蔽領域のある歪みをある程度把握し易くすることができるためである。しかしながら、これらの装置では、2次元コード内に補助線を予め設けておく必要があり、補助線のない一般的な2次元コードには対応することができない。
【0009】
本発明は、上記実情の下になされたものであり、補助線が設けられていない2次元コードの画像に複雑な歪み、局所的な歪みおよび遮蔽領域のある歪みがあっても、コード情報を正確に検出することができるコード復号装置、コード復号方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本発明の第1の観点に係るコード復号装置は、
互いに輝度が異なる第1の領域と第2の領域のいずれかで構成されるセルの組み合わせでコード情報が符号化された2次元コードの画像から、前記セルの輪郭線の断片を検出する輪郭線検出部と、
前記輪郭線検出部で検出された前記輪郭線の断片のうち、縦方向に延びる前記輪郭線の断片の端部同士をその断片が横方向に並ぶ順番に従って縦方向に接続して途切れのない縦の輪郭線を生成したときに、途切れのない縦の輪郭線を構成する断片の最適な組み合わせを探索するとともに、横方向に延びる前記輪郭線の断片の端部同士をその断片が縦方向に並ぶ順番に従って横方向に接続して途切れのない横の輪郭線を生成したときに、途切れのない横の輪郭線を構成する断片の最適な組み合わせを探索し、探索された前記輪郭線の断片の最適な組み合わせに基づいて、前記2次元コードにおける途切れのない前記セルの輪郭線の位置情報を推定する輪郭線推定部と、
前記輪郭線推定部で推定された途切れのない前記セルの輪郭線の位置情報に基づいて、前記セルの前記2次元コード内の位置情報を推定し、前記セルの位置情報の推定結果に基づいて前記コード情報を復号化する復号部と、
を備える。
【0011】
この場合、前記輪郭線推定部は、
前記輪郭線検出部で検出された前記輪郭線の断片のうち、縦方向に延びる前記輪郭線の断片に対して、その断片が横方向に並ぶ順番に従って前記2次元コード内の位置を表す識別番号を付与するとともに、横方向に延びる前記輪郭線の断片に対して、その断片が縦方向に並ぶ順番に従って前記2次元コード内の位置を表す識別番号を付与し、
付与したそれぞれの識別番号に基づいて、縦方向に延びる前記輪郭線の断片の端部同士を縦方向に接続して縦の前記輪郭線の断片の最適な組み合わせを探索するとともに、横方向に延びる前記輪郭線の断片の端部同士を横方向に接続して横の前記輪郭線の断片の最適な組み合わせを探索する、
こととしてもよい。
これにより、輝度が等しい両隣の前記セル同士の間の前記輪郭線を抽出することが可能となる。
【0012】
また、前記輪郭線推定部は、
同じ識別番号を有する前記輪郭線の断片の端部同士を接続線で接続した場合において、前記接続線と前記輪郭線の断片とのなす角度が大きくなるにつれて大きくなる第1の関数と、前記接続線同士の交叉回数が増えるにつれて大きくなる第2の関数と、隣接する前記輪郭線の断片の間隔が大きくなるにつれて大きくなる第3の関数とのいずれか、又は、前記第1の関数、前記第2の関数及び前記第3の関数のうちの少なくとも2つの和のいずれかを含む目的関数を用いて、前記輪郭線の断片に付与される識別番号の組み合わせの中から、前記目的関数の値が最も小さくなる識別番号の組み合わせを探索する、
こととしてもよい。
前記目的関数を用いて前記輪郭線の断片に付与される最適な前記識別番号の組み合わせを探索することにより、全ての前記セルの輪郭線を見つけ出すことができるとともに、全ての前記セルの位置を特定することができ、前記2次元コードを復元できるようになる。
【0013】
前記目的関数において、前記第1の関数と、前記第2の関数と、前記第3の関数とには、それぞれ異なる重みが付与されている、
こととしてもよい。
【0014】
前記輪郭線検出部は、
機械学習を行って、前記2次元コードの画像から、両隣の前記セルの輝度が等しいために不可視の前記セルの輪郭線の断片を検出する機械学習部を備える、
こととしてもよい。
【0015】
前記機械学習部は、
多層パーセプトロン、畳み込みニューラルネットワーク、又は前記2次元コードの画像の各画素をノードとするグラフ構造で表現したマルコフ確率場として最適化を行う最適化器である、
こととしてもよい。前記多層パーセプトロンや前記畳み込みニューラルネットワークは、前記2次元コードの画像の各画素に対して前記輪郭線であるか否かを識別するモデルであり、移動窓方式により画像の全画素について識別を行う。また、前記マルコフ確率場は、画像の領域分割に利用される一般的なモデルと同一である。
【0016】
前記畳み込みニューラルネットワークは、全結合層を持たず全ての層が畳み込み層である全層畳み込みネットワークである、
こととしてもよい。
【0017】
本発明の第2の観点に係るコード復号方法は、
情報処理装置によって実行されるコード復号方法であって、
互いに輝度が異なる第1の領域と第2の領域のいずれかで構成されるセルの組み合わせでコード情報が符号化された2次元コードの画像から、前記セルの輪郭線の断片を検出する輪郭線検出ステップと、
前記輪郭線検出ステップで検出された前記輪郭線の断片のうち、縦方向に延びる前記輪郭線の断片の端部同士をその断片の横方向の順番に従って縦方向に接続して途切れのない縦の輪郭線を生成したときに、途切れのない縦の輪郭線を構成する断片の最適な組み合わせを探索するとともに、横方向に延びる前記輪郭線の断片の端部同士をその断片の縦方向の順番に従って横方向に接続して途切れのない横の輪郭線を生成したときに、途切れのない横の輪郭線を構成する断片の最適な組み合わせを探索し、探索された前記輪郭線の断片の最適な組み合わせに基づいて、前記2次元コードにおける途切れのない前記セルの輪郭線の位置情報を推定する輪郭線推定ステップと、
前記輪郭線推定ステップで推定された途切れのない前記セルの輪郭線の位置情報に基づいて、前記セルの前記2次元コード内の位置情報を推定し、前記セルの位置情報の推定結果に基づいて前記コード情報を復号化する復号ステップと、
を含む。
【0018】
本発明の第3の観点に係るプログラムは、
コンピュータを、
互いに輝度が異なる第1の領域と第2の領域のいずれかで構成されるセルの組み合わせでコード情報が符号化された2次元コードの画像から、前記セルの輪郭線の断片を検出する輪郭線検出部、
前記輪郭線検出部で検出された前記輪郭線の断片のうち、縦方向に延びる前記輪郭線の断片の端部同士をその断片の横方向の順番に従って縦方向に接続して途切れのない縦の輪郭線を生成したときに、途切れのない縦の輪郭線を構成する断片の最適な組み合わせを探索するとともに、横方向に延びる前記輪郭線の断片の端部同士をその断片の縦方向の順番に従って横方向に接続して途切れのない横の輪郭線を生成したときに、途切れのない横の輪郭線を構成する断片の最適な組み合わせを探索し、探索された前記輪郭線の断片の最適な組み合わせに基づいて、前記2次元コードにおける途切れのない前記セルの輪郭線の位置情報を推定する輪郭線推定部、
前記輪郭線推定部で推定された途切れのない前記セルの輪郭線の位置情報に基づいて、前記セルの前記2次元コード内の位置情報を推定し、前記セルの位置情報の推定結果に基づいて前記コード情報を復号化する復号部、
として機能させる。
【発明の効果】
【0019】
本発明によれば、互いに輝度が異なる第1の領域と第2の領域のいずれかで構成されるセルの組み合わせでコード情報が符号化された2次元コードの画像から、セルの輪郭線を検出するだけでなく、輪郭線の2次元コード内の位置情報を推定する。これにより、検出された輪郭線と推定された輪郭線の2次元コード内の位置情報とに基づいて、セルの2次元コード内の位置情報を正確に推定することができる。このため、補助線が設けられていない2次元コードの画像に複雑な歪み、局所的な歪みおよび遮蔽領域のある歪みがあっても、コード情報を正確に検出することができる。
【図面の簡単な説明】
【0020】
【
図1】本発明の実施の形態に係るコード復号装置の構成を示すブロック図である。
【
図2】2次元コードの画像に推定された輪郭線を重ねた模式図である。
【
図3】(A)は、2次元コードの一部を示す図である。(B)は、(A)の2次元コードの一部に対応する輪郭線を示す図である。
【
図4】機械学習部における畳み込みニューラルネットワークの構造を示す模式図である。
【
図5】(A)は、訓練データとして用いられる2次元コードの画像の一例を示す図である。(B)は、(A)の画像から正確に作成された輪郭線の画像を示す図である。
【
図6】(A)は、エッジ検出により検出された縦の輪郭線の一例を示す図である。(B)は、輪郭線検出部で検出された縦の輪郭線の一例を示す図である。(C)は、輪郭線推定部で推定された縦の輪郭線の全体の一例を示す図である。
【
図7】(A)、(B)及び(C)は、目的関数を構成する各関数の意味を示す図である。
【
図9】
図1のコード復号装置のハードウエア構成を示すブロック図である。
【
図10】本発明の実施の形態に係るコード復号装置の動作を示すフローチャートである。
【
図11】輪郭線推定部の処理を示すフローチャートである。
【
図12】(A)は、縦の輪郭線の一例を示す図である。(B)は、横の輪郭線の一例を示す図である。
【
図13】最終的に形成される輪郭線の一例を示す図である。
【
図14】(A)及び(B)は、2次元コードの歪みの一例を示す図である。
【発明を実施するための形態】
【0021】
以下、本発明の実施の形態について図面を参照して詳細に説明する。全図において、同一又は相当する構成要素には、同一の符号が付されている。
【0022】
実施の形態1
まず、本発明の実施の形態1について説明する。
図1に示すように、2次元コード2は、紙等のシート3に印刷されたものであり、シート3の歪みに応じて歪んでいる。カメラ5は、この2次元コード2を撮像する。本実施の形態に係るコード復号装置1は、カメラ5で撮像された2次元コード2の画像Im1に基づいて、コード情報を検出し、そのコード情報を復号化する。
【0023】
図2に示すように、2次元コード2は、矩形状のセル4がマトリクス状に配列されることにより構成されている。セル4は、第1の領域としての黒領域4Aと、第2の領域としての白領域4Bのいずれかで構成される、1ビットの情報を示す単位領域である。セル4は、モジュールとも呼ばれる。黒領域4Aと白領域4Bは、互いに輝度が異なる。黒領域4Aがコード情報の「1」を示し、白領域4Bがコード情報の「0」を示しているが、この逆であってもよい。2次元コード2は、セル4毎に「1」か「0」かを示す明暗情報で符号化されている。
【0024】
図1に戻り、セル4は矩形状であるため、その外形に4辺の輪郭線6が形成されている。隣接するセル4同士では、その境界線が輪郭線6となる。この輪郭線6は、モジュールエッジともいう。
【0025】
セル4は、マトリクス状に配列されているため、シート3に印刷された2次元コード2に歪みがない場合には、セル4の輪郭線6は、
図2に示すように、縦方向に延びる直線と横方向に延びる直線とになる。縦方向に延びる輪郭線6を輪郭線6Vとし、横方向に延びる輪郭線6を輪郭線6Hとする。なお、輪郭線6は、2次元コード2の上に実際に形成されてはいない。
図2では、説明のために、2次元コード2の上に、輪郭線6を重ねて示しているだけである。2次元コード2の歪みにより、輪郭線6(6V,6H)も歪んでいる(
図3(A)及び
図3(B)参照)。
【0026】
本実施の形態に係るコード復号装置1は、セル4の輪郭線6(6V,6H)を検出する。そして、コード復号装置1は、縦の輪郭線6Vと横の輪郭線6Hとで仕切られる領域を抽出し、その領域の輝度が黒領域4Aのものであるか白領域4Bのものであるかを判定する。さらに、コード復号装置1は、その領域が「1」を示すか「0」を示すかを判定することにより、コード情報を読み出して、復号化する。
【0027】
なお、セル4は、黒領域4Aか白領域4Bかのいずれかであるため、
図3(A)に示すように、黒領域4A同士、白領域4B同士が隣接する場合もある。
図3(B)に示すように、これら同輝度、同色のセル4の間では輪郭線6(6v,6h)が明示されず、不可視となる。このようなこともあって、検出される輪郭線6(6v,6h)は、途中で途切れるようになる。そこで、本実施の形態に係るコード復号装置1は、黒領域4A同士、白領域4B同士を仕切る輪郭線6をも推定する。なお、以下では、このようにして推定された輪郭線6を、輪郭線6(6v’,6h’)とする。また、輪郭線6(6v,6h)と、輪郭線6(6v’,6h’)とを組み合わせた輪郭線6を、輪郭線6(6v+6v’,6h+6h’)と表現する。
【0028】
図1に戻り、本実施の形態に係るコード復号装置1は、輪郭線検出部10と、輪郭線推定部11と、復号部12と、を備える。輪郭線検出部10は、カメラ5で撮像された2次元コード2の画像Im1から、セル4の輪郭線6(6v+6v’,6h+6h’)を検出する。輪郭線推定部11は、輪郭線検出部10で検出された輪郭線6(6v+6v’,6h+6h’)の2次元コード2内の位置情報を推定する。輪郭線推定部11での位置情報の推定により追加生成される輪郭線6を、輪郭線6(6v”,6h”)とする。復号部12は、輪郭線検出部10で検出された輪郭線6(6v+6v’,6h+6h’)と、輪郭線推定部11で推定された輪郭線6の位置情報とに基づいて、セル4の2次元コード2内の位置情報を推定し、セル4の位置情報の推定結果に基づいてコード情報を復号化する。ここでは、全てのセル4の2次元コード2内での相対位置が認識され、各セル4の明暗を判定することで復号化が行われる。以下、コード復号装置1の各構成要素の詳細について説明する。
【0029】
[輪郭線検出部]
輪郭線検出部10の詳細について説明する。輪郭線検出部10は、機械学習を行って、2次元コード2の画像Im1から、輪郭線6(6v,6h)の他、両隣のセル4の輝度が等しいために不可視のセル4の輪郭線6(6v’,6h’)を推定し、輪郭線6(6v+6v’,6h+6h’)を出力する機械学習部21を有している。
【0030】
機械学習部21は、例えば、多層パーセプトロン又は畳み込みニューラルネットワーク,全層畳み込みネットワークとすることができる。多層パーセプトロンや畳み込みニューラルネットワークは、画素の各画素に対して輪郭線であるか否かを識別するモデルであり、移動窓方式により画像の全画素について識別を行う。また、この機械学習部21を、2次元コード2の画像Im1の各画素をノードとするグラフ構造で表現したマルコフ確率場として最適化を行う最適化器とすることができる。マルコフ確率場は、画像の領域分割に利用される一般的なモデルと同一とすることができる。
【0031】
スキップ結合を含み、全結合層を持たず全ての層が畳み込み層である全層畳み込みネットワークであるU-Netを用いた例を
図4に示す。U-Netは、エンコーダ・デコーダ構造にスキップ構造を加えたネットワークである。
図4に示すように、本実施の形態に係るU-Netでは、5層の畳み込み層と、同じく5層の逆畳み込み層とで構成される。しかしながら、畳み込み層及び逆畳み込み層は、5層には限られない。
【0032】
U-Netでは、エンコーダ時の特徴マップをデコーダ時にも利用するスキップ結合(スキップ接続)が導入されている。U-Netは、エンコーダとデコーダとが対となる構造となっている。U-Netでは、対応するエンコーダとデコーダの畳み込み層で得られる特徴マップは、同じサイズとなるため、そのまま連結し、スキップ結合を実現することができる。このスキップ結合の採用により、セグメンテーションの結果が粗くなるのを防止することが可能となる。
【0033】
言い換えれば、U-Netは、画素単位の領域分割を行う全層畳み込みニューラルネットワークであり、スキップ結合により詳細な領域分割が可能になる。
図4では、各層のデータサイズと、特徴マップの数が示されている。例えば、入力画像のサイズは512×512ピクセルであり、その次の畳み込み層のサイズは256×256ピクセルとなり、枚数は64となる。
【0034】
輪郭線検出部10は、深層学習が行われた畳み込みニューラルネットワークである機械学習部21を用いて、画像Im1から、輪郭線6(6v+6v’,6h+6h’)を推定する。この深層学習は、全セルの全輪郭線から構成される画像を教師データとして訓練が行われる。具体的には、2次元コード2の画像Im1(
図5(A)参照)と、正確に得られた輪郭線6(6v+6v’,6h+6h’)の画像Im2(
図5(B)参照)との組み合わせを複数作成し、作成された訓練データを用いて深層学習が行われる。なお、輪郭線6(6v+6v’,6h+6h’)の画像Im2には、遮蔽領域が輪郭線6とは異なる他の色に着色されている。このような画像を用いて学習を行えば、2次元コード2の遮蔽領域を検出し、遮蔽領域付近での不正確な輪郭線6’の抽出を回避することができる。
【0035】
深層学習には、例えば、誤差逆伝搬法等が用いられる。深層学習の結果得られたパラメータは、予め別のサーバコンピュータで行うことができ、サーバコンピュータから、後述する通信インターフェイス35を介して最適なパラメータを受信して、畳み込みニューラルネットワークに設定しておくことができる。
【0036】
このように、深層学習された畳み込みニューラルネットワークの機械学習部21を用いることにより、従来は困難であった輝度差のない領域同士の輪郭線6(6v’,6h’)をも検出することが可能となる。なお、
図6(A)には、機械学習部21を用いることなくエッジ検出された縦の輪郭線6(6v)の一例が示され、
図6(B)には、機械学習部21で推定された縦の輪郭線6(6v+6v’)の一例が示されている。
【0037】
[輪郭線推定部]
次に、輪郭線推定部11(
図1参照)の詳細について説明する。輪郭線検出部10で検出された輪郭線6(6v+6v’,6h+6h’)は完全ではなく、一部つながっておらず、検出されていない輪郭線6(6v”,6h”)も存在する。輪郭線推定部11は、輪郭線検出部10で検出された輪郭線6(6v+6v’,6h+6h’)の番号を推定するとともに、輪郭線検出部10で検出されなかった輪郭線6(6v”,6h”)を推定する。これにより、輪郭線6全体の2次元コード2内の位置情報が推定される。
図6(B)には、縦の輪郭線6(6v+6v’)が示され、
図6(C)には、縦の輪郭線6(6v”)が示されている。
【0038】
輪郭線6の推定は、以下のようにして行われる。輪郭線推定部11は、例えば、
図6(B)に示すように、縦の輪郭線6(6v+6v’)に対して、輪郭線6(6v+6v’)が並ぶ方向に、順番に識別番号としてのラベルを付与する。ラベルは、輪郭線6(6v+6v’)毎の固有の情報であり、輪郭線6(6v+6v’)の2次元コード2内の位置を表す情報である。例えば、左から0、1、2、3、4、・・・というように輪郭線6が並ぶ順番に付与される。途切れた輪郭線6についても、左から順番に0,1,2,・・・というように順番にラベルが付与される。例えば、型番が3のQRコード(登録商標)であれば29×29セルを含むため、ラベルは0から29となる。なお、横の輪郭線6(6h+6h’)の場合には、上から輪郭線6が並ぶ順番に、0、1、2、・・・というようにラベルを付与することができる。これらのラベルは、輪郭線6(6v+6v’,6h+6h’)の2次元コード2内での位置を表し、各セル4の2次元コード2内での位置を推定することを可能にする。輪郭線推定部11は、付与したラベルに基づいて、輪郭線検出部10で検出されなかった輪郭線6(6v”,6h”)の2次元コード2内の位置情報を推定する。
【0039】
輪郭線6は、理想的には2次元コード2の一辺と同じ長さを持つ線であるが、輪郭線検出部10で検出された輪郭線6は途切れ途切れとなっており、途切れた輪郭線6毎にラベルが付与される。本実施の形態に係る輪郭線推定部11は、同じラベルを有する途切れた輪郭線6(6v+6v’,6h+6h’)の端部同士を、輪郭線(接続線)6(6v”,6h”)で接続して途切れのない輪郭線6(6v+6v’+6v”,6h+6h’+6h”)を生成する。このとき、接続線6(6v”,6h”)を結び後述する目的関数F(C)を用いることで、途切れた輪郭線6の集合に対して付与されたラベルの組み合わせの適切さを評価することが可能となる。結果的に、輪郭線推定部11は、輪郭線6(6v+6v’,6h+6h’)に、輪郭線6(6v”,6h”)を加えた輪郭線6(6v+6v’+6v”,6h+6h’+6h”)を出力する。なお、
図6(C)では、縦の輪郭線6(6v+6v’+6v”)しか示されていないが、横の輪郭線6(6h+6h’+6h”)についても、同様の推定処理が行われる。
【0040】
輪郭線推定部11は、輪郭線6(6v+6v’,6h+6h’)に対して最適なラベルの組み合わせを割り当てるために、仮に割り当てたラベルにより得られる接続線6(6v”,6h”)において、3つの関数の値を算出することでその妥当性を評価する。第1の関数Fa(C)と、第2の関数Fc(C)と、第3の関数Fi(C)である。なお、これらの関数の説明では、輪郭線6(6v+6v’,6h+6h’)を輪郭線6’とし、輪郭線、すなわち接続線6(6v”,6h”)を輪郭線6”として説明する。
【0041】
第1の関数F
a(C)は、輪郭線6’と接続線6”とのなす角度が大きくなるにつれて大きくなる評価関数である。
図7(A)に示すように、ラベルが同じ上の輪郭線6’(モジュールエッジe
1)と、下の輪郭線6’(モジュールエッジe
2)とが、接続線6”で接続されるものとした場合、上の輪郭線6’と接続線6”とのなす角度をθ
i,topとし、下の輪郭線6’と接続線6”とのなす角度をθ
i,bottomとする。輪郭線6’について引かれた接続線6”の総数をnとすると、第1の関数F
a(C)は、以下の式(1)で示されている。
【数1】
【0042】
第2の関数F
c(C)は、
図7(B)に示すように、接続線6”同士の交叉回数が増えるにつれて大きくなる評価関数である。第2の関数F
c(C)は、以下の式(2)で示されている。
F
c(C)=C
cross ・・・(2)
ここで、C
crossは、輪郭線6’について引かれた接続線6”の交叉回数である。
【0043】
第3の関数F
i(C)は、
図7(C)に示すように、隣接する輪郭線6’の間隔が大きくなるにつれて大きくなる評価関数である。第3の関数F
i(C)を以下の式(3)に示す。
【数2】
ここで、εは、輪郭線6’の組み合わせの集合であり、|ε|は組み合わせの総数である。e
i,e
jは、輪郭線(モジュールエッジ)6’である。l(e
i),l(e
j)は、モジュールエッジ6’のラベルである。
【数3】
は、隣接する輪郭線6’の間隔の推定値であり、δ(e
i,e
j)は、e
iとe
jの間隔の実測値である。このように、上記式(3)は、隣接する2本の輪郭線e
i,e
jの間隔から推定されるラベルの差と、その輪郭線6’に付与されたラベルの差(l(e
j)-l(e
i))との違いに基づく値となる。
【0044】
目的関数F(C)としては、例えば次式を採用することができる。
【数4】
上述のように、第1の関数F
a(C)は、輪郭線6’と接続線6”とがなす角度による評価関数である。また、第2の関数F
c(C)は、接続線6”の交叉回数による評価関数である。また、第3の関数F
i(C)は、隣接する輪郭線6’の間隔による評価関数である。上述の式において、w
a,w
c,w
iは、第1の関数F
a(C)、第2の関数F
c(C)及び第3の関数F
i(C)の重みである。
【0045】
輪郭線推定部11は、目的関数F(C)を用いて、輪郭線6’に付与されるラベルの組み合わせの中から、目的関数F(C)の値が最も小さくなるラベルの組み合わせを探索する。目的関数F(C)の値が最も小さくなる接続線6”で接続された輪郭線6が、最終的な輪郭線6となる。なお、目的関数F(C)は、上記式のものに限らず、第1の関数Fa(C)、第2の関数Fc(C)及び第3の関数Fi(C)のいずれか、又は第1の関数Fa(C)、第2の関数Fc(C)及び第3の関数Fi(C)のうちの少なくとも2つの和のいずれかを含んでいればよい。
【0046】
[復号部]
次に、復号部12の詳細について説明する。復号部12は、輪郭線検出部10で検出された輪郭線6と、輪郭線推定部11で推定された輪郭線6の位置情報とに基づいて、セル4の2次元コード内の位置情報を推定する。例えば、
図8に示すように、ラベル14、15が付与された縦の輪郭線6及びその位置情報と、ラベル14、15が付与された横の輪郭線6及びその位置情報とによって、その間の領域が推定される。復号部12は、推定された輝度値を検出し、検出した輝度値を閾値と比較して、「1」を示しているか、「0」を示しているかを判定する。この判定は、例えば、領域内の平均輝度値が閾値以上であるか否かにより行われる。この判定結果により、セル4を示す値が決定される。このように、復号部12は、輪郭線6(6v+6v’+6v”,6h+6h’+6h”)及びその位置情報に基づいてセル4の領域を推定し、領域毎に輝度値を検出し、その輝度値と閾値とを比較して、「1」又は「0」を判定する処理をすべての領域について行う。そして、すべての領域での「1」、「0」の情報を組み合わせてコード情報が生成される。
【0047】
[ハードウエア構成]
図9には、コード復号装置1(情報処理装置)のコンピュータのハードウエア構成が示されている。
図9に示すように、コード復号装置1は、CPU(Central Processing Unit)30と、メモリ31と、外部記憶部32と、入出力部33と、通信インターフェイス35とを備える。コード復号装置1の各構成要素は、内部バス40を介して接続されている。
【0048】
CPU30は、ソフトウエアプログラム(以下、単に「プログラム」とする)を実行するプロセッサ(演算装置)である。メモリ31には、外部記憶部32からプログラム39が読み込まれ、CPU30は、メモリ31に格納されたプログラム39を実行することにより、輪郭線検出部10、輪郭線推定部11及び復号部12の動作を行う。
【0049】
メモリ31は、例えばRAM(Random Access Memory)である。メモリ31には、CPU30によって実行されるプログラム39が格納される他、CPU30によるプログラム39の実行で必要なデータ、プログラム39の実行の結果生成されるデータが記憶される。
【0050】
外部記憶部32は、例えばハードディスク等である。外部記憶部32は、CPU30により実行されるプログラム39が記憶される。
【0051】
入出力部33は、カメラ5とのデータ入出力を行うインターフェイスである。カメラ5で撮像された画像は、入出力部33を介してメモリ31等に記憶される。
【0052】
通信インターフェイス35は、インターネット等の通信ネットワークに接続する通信インターフェイスである。深層学習によって得られた畳み込みニューラルネットワーク等の機械学習部21のパラメータは、この通信インターフェイス35を介してダウンロードされ、コード復号装置1に設定される。
【0053】
なお、輪郭線検出部10、輪郭線推定部11及び復号部12の機能は、通信ネットワーク上に構築されるクラウドコンピュータによって実現されるようにしてもよい。この場合、CPU30は、クラウドコンピュータに画像等を送り、復号の指示を行うだけでよい。
【0054】
次に、本実施の形態に係るコード復号装置1(情報処理装置)の動作、すなわちコード復号装置1によって実行されるコード復号方法について説明する。
【0055】
カメラ5で2次元コード2の画像Im1が撮像されると、
図10に示すように、まず、輪郭線検出部10は、画像Im1における2次元コード2の位置を検出する(ステップS1)。この検出は、例えば、Star検出器を用いて行われる。Star検出器は、Center Surround Extremas(CenSurE)から派生した特徴点検出器である。CenSurE検出器は、グレースケール画像に対して回転やスケール変化に不変であり、簡素化された2階層のCenter-surroundフィルタを用いることで差分処理を行い、極値を検出する。Star検出器では、大小の星形範囲の符号をそれぞれ変えて重ねたフィルタが使用されている。このフィルタは、格子状に符号化されている2次元コードの領域間で多くの特徴点を検出する。この検出結果により2次元コード2の画像Im1が規格化される。
【0056】
続いて、輪郭線検出部10を構成する機械学習部21は、画像Im1(
図5(A)参照)から、セル4(4A,4B)の輪郭線6(6v+6v’,6h+6h’)を推定する(ステップS2;輪郭線検出ステップ)。これにより、機械学習部21から輪郭線6(6v+6v’,6h+6h’)の画像Im2(
図5(B))が得られる。
【0057】
続いて、輪郭線推定部11は、輪郭線6を縦の輪郭線6v+6v’と、横の輪郭線6h+6h’とに分離する(ステップS4)。これにより、
図12(A)及び
図12(B)に示すように、例えば、ステップS2,S3で検出された輪郭線6が、縦の輪郭線6(6v+6v’)と、横の輪郭線6(6h+6h’)とに分離される。
【0058】
さらに、輪郭線推定部11は、
図6(B)に示すように、縦の輪郭線6(6v+6v’)にラベルを付与するとともに、横の輪郭線6(6h+6h’)にラベルを付与する(ステップS5)。輪郭線6(6v+6v’,6h+6h’)の位置情報の推定は、このラベルに基づいて行われる。
【0059】
さらに、輪郭線推定部11は、ステップS2で検出された縦の輪郭線6(6v+6v’)同士をつなぎ合わせてセル4の輪郭線6(6v”)の位置情報を推定するとともに、ステップS2で検出された横の輪郭線6(6h+6h’)同士をつなぎ合わせてセル4の輪郭線6(6h”)の位置情報を推定する推定処理サブルーチンを行う(ステップS6;輪郭線推定ステップ)。
【0060】
この推定処理サブルーチンでは、山登り法を用いて、輪郭線6に付与されるラベルの組み合わせの最適化が行われる。具体的には、例えば、
図11に示すように、まず、輪郭線推定部11が、初期解を生成する(ステップS10)。この推定処理サブルーチンにおいて、「解」とは、輪郭線6に付与されるラベルの組み合わせのことである。このような、輪郭線6に付与されるラベルの組み合わせは複数あり、その中の1つの組み合わせが初期解となる。
【0061】
続いて、輪郭線推定部11は、生成された解の評価を行う(ステップS11)。具体的には、輪郭線推定部11は、設定された初期解について、上述の式を用いて、目的関数F(C)を算出する。
【0062】
続いて、輪郭線推定部11は、終了判定を行う(ステップS12)。ここで、終了条件は、最適解の近傍にあるすべての解の評価が完了することであるとする。ここでは、初期解の評価が行われただけであるので、判定は否定される(ステップS12;No)。
【0063】
続いて、輪郭線推定部11は、新たな解の候補を生成する(ステップS13)。まだ、評価が行われていない、ラベルの組み合わせが存在する場合には、その組み合わせが生成される。
【0064】
続いて、輪郭線推定部11は、リペア処理を行う(ステップS14)。このリペア処理では、接続線6”でつないで形成される輪郭線6’について、接続線6”同士の交叉を解消したり、分割されている接続線6”を結合したり、結合されている接続線6”を解消したり、ラベルが付与されていない輪郭線6’を削除したりすることなどが行われる。
【0065】
リペア処理を行った後、輪郭線推定部11は、新たな解について評価を行う(ステップS11)。以降、ステップS12で終了である、すなわち、すべての解の組み合わせでの評価が完了し、終了条件を満たすまで(ステップS12;Yes)、ステップS11→S12→S13→S14が繰り返される。終了条件を満たすと(ステップS12;Yes)、推定処理のサブルーチンが終了する。
【0066】
上述の推定処理により、例えば、
図13に示すように、2次元コード2全体に対応する輪郭線6(6v+6v’+6v”,6h+6h’+6h”)が形成される。
【0067】
図10に戻り、続いて、復号部12は、輪郭線6(6v+6v’+6v”,6h+6h’+6h”)で2次元コード2の画像Im1を仕切って、領域分割を行う(ステップS7)。さらに、復号部12は、
図8に示すように、仕切られた領域を各セル4として推定し、コード情報を検出して、その復号化を行う(ステップS8;復号ステップ)。これにより、2次元コード2の画像Im1の各セル4の輝度が判定され、「1」と「0」とのデータ列であるコード情報が生成される。このコードは、例えば、インターネットのサイトのアドレスなどを表している。
【0068】
以上詳細に説明したように、本実施の形態に係るコード復号装置1によれば、互いに輝度が異なる黒領域4Aと白領域4Bのいずれかで構成されるセル4の組み合わせでコード情報が符号化された2次元コード2の画像Im1から、セル4の輪郭線6(6v+6v’,6h+6h’)が検出されるだけでなく、検出された輪郭線6(6v+6v’,6h+6h’)の2次元コード内での位置を表すラベルを推定するとともに、検出されなかった輪郭線6(6v”,6h”)を推定する。これにより、検出された輪郭線6(6v+6v’,6h+6h’)と推定された輪郭線6(6v”,6h”)とに基づいて、全てのセル4の輪郭線が得られ、セル4の位置を正確に特定することができる。このため、補助線が設けられていない2次元コード2の画像Im1に複雑な歪み、局所的な歪みおよび遮蔽領域のある歪みがあっても、コード情報を正確に検出することができる。
【0069】
また、上記実施の形態によれば、
図6(B)に示すように、輪郭線推定部11は、輪郭線検出部10で検出された輪郭線6(6v+6v’,6h+6h’)に対して、輪郭線6(6v+6v’,6h+6h’)が並ぶ方向に、順番にラベルを付与する。さらに、輪郭線推定部11は、付与したラベルに基づいて、輪郭線検出部10で検出されなかった輪郭線6(6v”,6h”)を推定する。このように、輪郭線6(6v”,6h”)を推定することにより、断片化された輪郭線6(6v+6v’,6h+6h’)の総数を削減することができ、ラベルの推定を行う組み合わせ最適化の問題のサイズが抑えられるため、番号の推定を行い易くなるうえ、推定に要する時間を短縮することが可能となる。
【0070】
また、上記実施の形態に係るコード復号装置1において、輪郭線推定部11においてラベルの割り当ての妥当性を評価するために、以下の関数を用いる。すなわち、仮に割り当てられたラベルに基づいて、同じラベルを有する輪郭線6’同士を接続線6”で接続した場合において、輪郭線6’と接続線6”とのなす角度が大きくなるにつれて大きくなる第1の関数Fa(C)と、接続線6”同士の交叉回数が増えるにつれて大きくなる第2の関数Fc(C)と、隣接する輪郭線6’の間隔が大きくなるにつれて大きくなる第3の関数Fi(C)とのいずれか、又は、第1の関数Fa(C)、第2の関数Fc(C)及び第3の関数Fi(C)のうちの少なくとも2つの和のいずれかを含む目的関数F(C)を用いて、輪郭線6に付与されるラベルの組み合わせの中から、目的関数F(C)の値が最も小さくなる組み合わせを探索する。このようにすれば、推定される輪郭線6を最適なものとすることができる。
【0071】
また、目的関数では、第1の関数Fa(C)と、第2の関数Fc(C)と、第3の関数Fi(C)とは、それぞれ異なる重みwa,wc,wiが付与されている。このようにすれば、輪郭線6との角度、交叉回数、間隔それぞれ重みwa,wc,wiを異ならせるようにした最適化が可能となる。
【0072】
また、上記実施の形態に係るコード復号装置1において、輪郭線検出部10は、2次元コード2の画像Im1を入力し、セル4の輪郭線6を出力する機械学習部21を有している。輪郭線検出部10は、2次元コード2の撮像画像Im1と、理想的な輪郭線6(6v’,6h’)の画像との組み合わせを訓練データとして学習させた機械学習部21を用いて、輪郭線6(6v’,6h’)を推定する。このようにすれば、同じ輝度のセル4間の輪郭線6を推定することが可能となる。これにより、輪郭線推定部11における輪郭線6に対する番号の推定時間を短縮することができる。
【0073】
また、上記実施の形態に係るコード復号装置1において、機械学習部21について、畳み込みニューラルネットワークを採用した場合には、その畳み込みニューラルネットワークを、U-Netとすることができる。このようにすれば、画像のボケの発生を防止することができる。しかしながら、本実施の形態に係るコード復号装置1で用いることができる畳み込みニューラルネットワークはU-Netには限られない。例えば、畳み込みニューラルネットワークとしてSegNet(画像セグメンテーションニューラルネットワーク)、GAN(敵対的生成ネットワーク)等を採用するようにしてもよい。
【0074】
なお、輪郭線検出部10は、機械学習部21を用いなくてもよい。例えば、ソーベルフィルタを用いて、輪郭線6、すなわちモジュールエッジを検出するだけでもよい。また、ソーベルフィルタを用いて輪郭線6(6v+6h)を検出した後、輪郭線6(6v+6h)の画像を機械学習部21に入力して、輪郭線6(6v+6v’,6h+6h’)を推定するようにしてもよい。
【0075】
また、輪郭線検出部10により、全ての輪郭線6が抽出されている場合には、輪郭線推定部11は、処理を行う必要はない。
【0076】
また、上記実施の形態に係るコード復号装置1は、QRコード(登録商標)の2次元コード2の画像Im1から、コード情報を復号化した。しかしながら、本発明はこれには限られない。いわゆるバーコードを復号化するのに用いるようにしてもよい。本発明は、QRコード(登録商標)以外のマトリクス型の2次元コードにも、スタック型の2次元コードにも適用することが可能である。
【0077】
その他、コード復号装置1のハードウエア構成やソフトウエア構成は一例であり、任意に変更および修正が可能である。
【0078】
輪郭線検出部10、輪郭線推定部11及び復号部12などから構成されるコード復号装置1の処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読み取り可能な記録媒体(フレキシブルディスク、CD-ROM、DVD-ROM等)に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行するコード復号装置1を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することでコード復号装置1を構成してもよい。
【0079】
コード復号装置1の機能を、OS(オペレーティングシステム)とアプリケーションプログラムとの分担、またはOSとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【0080】
搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。例えば、通信ネットワーク上の掲示板(BBS;Bulletin Board System)にコンピュータプログラムを掲示し、ネットワークを介してコンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、OSの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【0081】
この発明は、この発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この発明を説明するためのものであり、この発明の範囲を限定するものではない。すなわち、この発明の範囲は、実施の形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、この発明の範囲内とみなされる。
【産業上の利用可能性】
【0082】
本発明は、撮像画像からコードを検出するのに適用することができる。
【符号の説明】
【0083】
1 コード復号装置、2 2次元コード、3 シート、4 セル、4A 黒領域(第1の領域)、4B 白領域(第2の領域)、5 カメラ、6,6’,6V,6H,6v,6v’,6h,6h’ 輪郭線(モジュールエッジ)、6”,6v”,6h” 輪郭線(接続線)、10 輪郭線検出部、11 輪郭線推定部、12 復号部、21 機械学習部、30 CPU、31 メモリ、32 外部記憶部、33 入出力部、35 通信インターフェイス、39 プログラム、40 内部バス、Im1,1m2 画像