2次元コード、2次元コード検出方法、および2次元コード検出装置
【課題】 2次元コードに対してほぼ正対する方向からだけではなく、任意の方向からその2次元コードを検出することを可能とする2次元コードへのビット情報の埋め込みをより高密度化する。
【解決手段】 背景と明度または色によって識別可能な正方形の外形形状をもち、その内部の外周に一定の間隔をおいてその内部を特定のサイズに分割し、分割された各領域のそれぞれの明度または色によって、情報を表現する2次元コードにおいて、その2次元コードの内部を分割する各領域が隣接し合う六角形とする。
【解決手段】 背景と明度または色によって識別可能な正方形の外形形状をもち、その内部の外周に一定の間隔をおいてその内部を特定のサイズに分割し、分割された各領域のそれぞれの明度または色によって、情報を表現する2次元コードにおいて、その2次元コードの内部を分割する各領域が隣接し合う六角形とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像から検出できる2次元コードの構成、2次元コードを画像から検出する方法および装置に関するものである。
【背景技術】
【0002】
[従来技術1]
図10に示すMaxiCodeと呼ばれる二次元コードが従来から知られている。この二次元コードは、中心部に同心円状に半径の異なる帯状の黒領域と白領域があり、その部位を基準に、周囲に微小な正六角形領域が規則正しく並んでいる構造となっている。各正六角形を黒または白とすることによって、2値の情報を表現し、それをカメラで撮影することによって情報を読み出す。以下では、これを2次元コード1と呼ぶ。
【0003】
また、図11や図12に示す二次元コードも従来から知られている。これらの二次元コードは、背景と明度によって分離できる正方形領域をもち、その内部を均等に区分した各々の小正方形領域の明暗によって情報を表現する。通常、これらのコードはカメラによって撮影され、背景からこの2次元コードの外形を識別・検出し、内部に割り当てられた各区分領域の明度に基づいて情報が読み出される。以下では、この種の2次元コードを2次元コード2と呼ぶ。
【0004】
2次元コード1と2次元コード2は、物品等に貼り付けておき、その物品の情報、例えば、製品番号、個体番号、製造日などの製造に関わる情報や、発送元、発送先、発送日時などの輸送に関わる情報などを管理するために利用されるのが通例である。これらのコードは、コードが貼り付けられている面に対して、ほぼ正対する方向からカメラによって撮像されるのが通例であり、その撮像装置の撮像面に対して十分に大きく映るように撮影されることで認識ができることを前提としている。
【0005】
[従来技術2]
現実空間に仮想物体を重畳表示する複合現実感(以下MR)技術において、仮想画像を描画するために以下のような処理が行われる。現実空間にある正方形のマーカを用い、そのマーカを基準とする現実カメラの位置姿勢を推定する。そして、得られた現実カメラの位置姿勢を基にして仮想カメラのパラメータを設定することによって仮想物体を描画する。
【0006】
その代表的な例として、非特許文献1の中に示されているARToolKitがある。ARToolkitでは、図13に示すようなマーカを利用する。このマーカは、その外形となる正方形が画像に撮影されて形成される四角形を画像から検出する。そして、その四角形が3次元空間中では正方形である元来の形に対してどのように変形しているか(透視投影の影響によって歪んでいるか)を情報源として、カメラの位置姿勢を推定する。さらに、複数のマーカを同時に利用された場合に、個々のマーカを識別するために、各マーカの内部はそれぞれ異なる図形パターンによって塗り分けられている。このマーカの識別は、画像から得られた四角形の内部の模様が予め用意されたパターンとの間でパターンマッチング技術を用いて行われる。以下ではこれを2次元コード3と呼ぶ。
【0007】
また、MR用のマーカとしては、非特許文献1の中で示されている図14のようなマーカもある。このマーカでは、内部を4x4の格子状に区切り、各格子点を中心とする円を黒くするか否かによって、個別に識別する機能を実現している点が、2次元コード3と異なる。しかしながら、その外形である正方形を基準として、カメラの位置姿勢を推定する点に関しては二次元コード3と同様である。これを2次元コード4と呼ぶ。
【0008】
MR分野においては、他にも様々な正方形外形を持つマーカが提案されている。例えば、図15に示すようなマーカがある。このマーカは、正方形の外部に正方形の面内での回転方向と特定するための複数の小正方形領域を持っている。内部は、4x4領域に分割され、それぞれが小さな正方形となっており、各小正方形の明度によって個別の識別情報を表現している。これを2次元コード5と呼ぶ。
【0009】
以上の2次元コード3、2次元コード4、2次元コード5のようなMRに利用されているマーカは、外形として正方形を有している点が共通の特徴である。
【非特許文献1】X.Zhang、S.Fronz、N.Navab:Visual marker detection and decoding in AR systems:A comparative study、Proc.of International Symposium on Mixed and Augmented Reality(ISMAR’02)、2002.
【発明の開示】
【発明が解決しようとする課題】
【0010】
従来技術1で述べた2次元コード1は、その全体の領域の中心部分に同心円があり、その周囲を小さな正六角形領域が取り囲んでいる。各正六角形領域は、それぞれお互いに隙間なく接合しており、白か黒かによって塗り分けられている。この白または黒によって2値を表現しており、カメラによって撮影され読み出される。そのとき、中心の同心円を基準とし、60度の角度毎のラインを基準として、各正六角形領域の場所を特定している。言い換えると、2次元コード1にほぼ正対して撮影する場合(2次元コードの貼り付けられた面の法線とほぼ等しい光軸をもつカメラによって撮影する場合)にしか、指標を検出することができない。これは2次元コード2においても同様であり、従来技術1の2次元コードは、指標にほぼ正対した状態で撮影することを前提としたものであって、正対しない任意の方向からの撮影を考慮したものではない。
【0011】
従来技術2で開示されている2次元コード3、4、5は、いずれも明度の高い背景に対して、明度の低い正方形を外形の形状として持っている。従来技術2では、画像における外形の正方形の変形の仕方を情報源として、2次元コードに対するカメラの位置姿勢を推定計算する。外形の正方形が画像に捉えられたときの変形は、カメラの撮影工程で行われる、3次元空間を2次元の画像に投影する射影変換の影響によって引き起こされる。すなわち、従来技術2の指標は、指標に対してほぼ正対する向きから撮影することを前提としておらず、むしろ逆に指標の法線方向とは異なる視軸方向から撮影されることを前提とする指標である。
【0012】
2次元コード3に関しては、指標の個体識別を行うために、正方形領域内部の任意のパターンをパターンマッチングの技術によって識別する。指標の内部のパターンは、パターンマッチングで使用するために予め別途保存されている。そして、撮影画像から指標の内部を切り出した画像を正規化した後に、保存されていたパターンとの比較を行い、似ているか否かによって個体を識別する。この方法には、利用するパターンの種類と一度に撮影される指標の数が増えてくると、パターンマッチングしなければならない組み合わせが増えてしまうため、計算時間が膨大になってしまうという問題がある。また、パターン数を増やすと、必然的に似通ったパターンが増えてしまうため、誤認識を引き起こしてしまう問題があり、実質上一度に利用できるパターンの数は数十個程度である。
【0013】
それに対して、2次元コード4と2次元コード5は、正方形内部を等間隔で区切った小さな正方形領域とし、その明度(白黒)によって1ビットを表現する方法である。この方法であれば、2次元コード3で生じる問題は発生しない。しかし、以下に示すような改善の余地があった。
【0014】
2次元コードにできるだけ多くの情報を載せるためには、ビット領域を多くする必要がある。しかし、ビット領域は画像から認識される必要があるため、一つあたりの大きさを小さくすることに限界がある。逆に言えば、一つあたりのビット領域が画像に撮像・投影されたときの大きさによって、その2次元コードが認識可能であるか否かが決定される。一般に、MR用途においては、できるだけ小さな2次元コードが利用できることが望ましい。しかし、2次元コードに載せる情報を増やすと画像上で十分に大きく映るように物理的に大きな2次元コードとしなければならない。よって、2次元コードの大きさと載せられる情報量はトレードオフの関係にある。そのため、できるだけ全体の大きさを小さく、かつ、情報量を多くするためには、2次元コード内のビット領域を細密に配置することが望ましい。
【0015】
2次元コード4は、内部のビット領域を円形としている。そして、ビット領域である円形領域が、正方格子状に配置されている。この方法では、一つの円形領域が小さくなった場合に円形領域間の隙間が問題となる。例えば、あるひとつの領域が黒で塗られていたときに、その円形領域が画像において一画素幅相当近くまで小さくなったとき、画像上では周囲の隙間の白い領域と混在した中間明度として観測されることとなってしまう。これは、ビット読み出しの際に誤りを増やしてしまうことを意味する。すなわち、内部の領域は隙間を設けることなく隣接して並んでいることが望ましい。
【0016】
2次元コード5では、内部のビット領域は正方形として区切られていて隣接しているため、その問題は発生しない。この指標は必ずしも指標に対して正対していない方向から撮影されていても検出できることを特徴としている。正方形の内部を等間隔で区切った小さな正方形は、画像上ではどのような向きとして撮影されるのかが不定である。言い換えると、どのような形の四角形の投影像となるのかが不定である。2次元コード5は、画像上に捉えられた個々の小さな四角形領域の明度を基にして、ビット値に変換する処理を行うものである。よって、明度を読み出すときにはその個々の小四角形中心点を基準として、その位置の明度を読み出すこととなる。そのとき、正しく明度を読み出すためには、どのような向きで撮影されようとも、画像中の投影された小正方形領域が読み出し位置中心に十分な一定距離を持っているように撮影されなければならない。この条件を言い換えると、元来の指標上での小領域が画像に映ったときに、その小領域の投影像が読み出し位置を中心として画像面上で円形状に近いほど、指標上での小領域の面積を小さくできることを意味する。個々のビットを表現する小領域の面積が小さいほど、指標全体の面積に占めるビット割り当て数を大きくすることができるためである。それに対して、個々の小領域が正方形であると、投影像は角の立った四角形となっていることから、必ずしも効率よく密度高く配置されているとはいえない。
【0017】
一方、2次元コード4は、個々の領域は円形状であるものの、領域間には無駄な隙間が存在しており、ビット領域は高密度には配置されているとはいえない。
【0018】
これらのことから、2次元コード4と2次元コード5には、ビット領域の高密度化に対する改善の余地があった。
【課題を解決するための手段】
【0019】
本願請求項1記載の発明である2次元コードは、背景と明度または色によって識別可能な多角形の外形形状と、該外形形状の内部の外周に一定の間隔をおいて配置された内部領域とを有し、前記内部領域を特定のサイズに分割し、該分割領域それぞれの明度または色によって情報を表現する2次元コードであって、前記分割領域が隣接し合う六角形であること特徴とする。
【0020】
本願請求項5記載の発明である2次元コード検出方法は、画像中に映った2次元コートを背景から検出する外形多角形検出工程と、画像中での外形多角形の形状に応じて、内部のビット領域の位置を特定するビット領域特定工程と、前記特定されたビット領域の明度または色に基づいてビット値を取得するビット値取得工程とを有し、前記2次元コードは、背景と明度または色によって識別可能な六角形の外形形状と、該外形形状の内部の外周に一定の間隔をおいて配置された内部領域とを有し、該内部領域は隣接し合う六角形で構成される複数の情報領域を有すること特徴とする。
【発明の効果】
【0021】
本発明によれば、2次元コードに対してほぼ正対する方向からだけではなく、任意の方向からその2次元コードを検出することを可能としながら、高密度にビット情報を埋め込むことが可能となる。
【発明を実施するための最良の形態】
【0022】
以下、添付図面を参照して、本発明をその好適な実施形態に従って詳細に説明する。
【0023】
[第1の実施形態]
図1は、本実施形態における2次元コードである。図1(a)の101は2次元コードの背景となる黒い背景であって、102のようにその上に白い正六角形外形として2次元コードが形成されている。その外枠からある距離をおいて内部を正六角形に区分する領域を設け、それぞれが黒ないしは白に塗り分けられている。各区分された領域と外枠との関係は図1(b)に示す通りである。この場合、内部の小正六角形領域と外枠の六角形領域とは、30度傾いて配置されており、内部の正六角形と外枠の六角形との間の隙間は、内部の正六角形の対角頂点間の長さの半分の長さに設定されている。これらの関係をわかりやすく示した図が、図1(c)である。図1(c)は、図1(b)の背景に補助線として、等間隔となる平行な線群を120度ずつ回転させて得られる正三角形のメッシュを点線で描き足した図である。
【0024】
このように、図1に示す2次元コードは、六角形の外形形状の対角頂点を結ぶ直線と、内部の小正六角形領域の形状である正六角形の対向する辺のうちのいずれかとが直交するように、外形形状に対して小正六角形領域が配置されている。
【0025】
この2次元コードを読み取る2次元コード検出装置の好適な構成例に関して以下に説明する。図3は、図1で示した2次元コードを検出する2次元コード検出装置の構成例を示すブロック図である。
【0026】
図3の301はカメラであり、図1で示した2次元コードを撮像する。撮像画像は、302の画像取り込み部を通して304のバスコントローラの調停のもと、305のメモリに書き込まれる。また、305のメモリには、本実施形態の処理手順が記憶されていて、303がその処理手順に従って処理を行うCPUである。304は、303のCPU、302の画像取り込み部、305のメモリ間でデータの入出力と調停を行うバスコントローラである。
【0027】
この図3で示したブロック図で構成される2次元コード検出装置の処理手順を示すフローチャートを図4に示し、図4を用いて処理手順を説明する。
【0028】
まず、ステップS401にて図1に示した2次元コードを301のカメラで撮影し、撮影した画像を302の画像取り込み部を通して取得する。得られた画像から、ステップS402にて、画像に映った2次元コードの外形形状である六角形を検出する。カメラでの撮影は指標に正対する姿勢で撮影されるとは限らない(むしろMR用途で利用する場合、様々な角度から撮影されることになる)。さらに、画像の横軸縦軸と指標の外形である正六角形の辺の向きもそろっていない。
【0029】
このステップS402の外形形状を検出する処理を図5を用いて説明する。図5(a)は指標を正対する位置から見た様子であり、内部のビット領域を省略して描いたものである。ここでは、一旦、内部のビット領域に関しては無視をして説明をする。この指標を実際のカメラで撮影すると例えば図5(b)のような画像を得ることとなる。指標が図形として正六角形であっても、カメラで撮影される際には正対した位置からの撮影を行わない限り、このように正六角形ではない凸六角形として観察されることとなり、かつその向きは任意の向きを採り得る。さらに、図形上での白領域と黒領域は、それぞれ明度の高低として捉えられることとなり、境界領域では中間調の明度として得られる。そこで、図5(b)の画像を二値化することによって図5(c)のように二値画像化する。二値化の方法はどのような方法でも構わないが、単純な閾値処理によって実現できる。この二値画像から、白領域の外周を形成している画素を追跡検出すると、図5(d)のような一画素幅で閉ループをなす画素の並びを得ることができる。この画素の並びに対して、折れ線近似処理を行うと、図5(e)に示す六角形が得られる。このとき、元の図形が六角形以外の図形である場合、折れ線近似の結果折れ点が6点とはならないため、元の図形が六角形であったか否かを判別することができる。
【0030】
また、以上のS402の説明では、指標の内部のビット領域に関して無視をしている。しかし、内部のビット領域と六角形外形との間には間隔が設けてあるため、指標が画像中で占める大きさがある一定以上ある場合(その間隔が画像上で1画素幅以上ある状態で撮影されている場合)は、このS402の処理に関して内部の領域は影響しない。
【0031】
次にステップS403にて、検出された六角形外形形状を基準としてそれぞれの内部ビット領域の中心位置を計算する。これを図6を用いて説明する。図6に示すように、指標元来の図形形状である正六角形の各頂点を(Xn、Yn)(n=0、1、、5)と表し、画面中で検出された外形形状である六角形の各頂点を(xn、yn)と表すと、それらの間には以下の式に示す2次元射影変換の関係が成り立つ。
【0032】
【数1】
【0033】
この関係式は、以下のように同次座標変換により行列演算によって記述することも可能である。
【0034】
【数2】
【0035】
このとき、行列
【0036】
【数3】
【0037】
は、ホモグラフィ行列と呼ばれる。(Xn、Yn)と(xn、yn)とは、対応する点が6点あるため、数1あるいは数2に示す関係式が6つ成り立つ。言い換えると連立方程式を解くことによって、数3に示すホモグラフィ行列、あるいは、数1のH11、H12、H13、H21、H22、H23、H31、H32の8つのパラメータをその6点の関係から求めることができる。なお、未知数は8つであるため4点の対応があれば一意に決定される。したがって、6点の対応からこの8つのパラメータを求める場合には、連立方程式が冗長となっているため,最小二乗法などによって求める方がよい。
【0038】
以上により、一旦数1あるいは数2の関係式が得られれば、空間(X、Y)上の任意の点を空間(x、y)へと写像することが可能となる。すなわち、指標の内部の任意のビット領域の中心点が、画像に映った際に画像上でどの位置に投影されているのかを求めることができる。例えば、図7に示す701の点が画像上のどの座標に投影されているのかを求めることができる。ステップS403とは、以上の方法によって指標の内部ビット領域の中心点が画像に映った際の位置を計算する工程のことである。
【0039】
引き続き、ステップS404にて得られた画像上での各ビット領域の中心位置の明度値を取得する。ステップS403にて得られている点の位置は、撮像された六角形の外形形状を基にして、六角形が撮像されるときに起こる射影変換によって計算されたものであるため、整数値とはならない。したがって、対応する画素を直接的に表すものではない。そこで、その位置の明度を最近傍となる画素値とするか、もしくは、近傍4画素の値を基にして線形補間などの方法によって内挿することによって求める。これを図8を用いて説明する。ステップS403で得られているビット領域の画像上での中心位置が801であるとする。801の座標値は整数値とはならないので、画像の画素の中心ではない。その801の点の明度値を求める処理というのが、ステップS404の処理である。最近傍点の画素値とするという処理とは、801のその中心が最も近い画素である画素802の画素値によって801の明度値を代用するという意味である。近傍4画素の画素値から線形補間などの方法によって内挿するという処理とは、画素802、803、804、805の画素値から、明度値を内挿するという意味である。
【0040】
次にステップS405にて、得られた明度値をビット値に変換する。最も簡便な方法は、予め定めておいた閾値との比較によって、1か0かを判定する方法である。予め定めておいた閾値として、ステップS402で行った画像の二値化の時に利用した閾値を利用してもよいし、他のいかなる方法を用いても構わない。また、ステップS405をステップS404とステップS406との間ではなく、ステップS406にてすべてのビット領域での処理が終わった後の工程に組み入れても良い。その場合、ステップS403、S404、S406にて、すべての内部ビット領域に渡って各内部のビット領域の明度値を取得しておき、その後得られている明度値の分布を基準にして、それぞれをビット値への変換するといった処理を行うことも可能である。
【0041】
以上により、本実施形態における正六角形を外形形状とし、内部を互いに隣接する小正六角形領域で区分した2次元コードからビット値を読み出す処理の説明を行った。ここで、正六角形は、回転対称形状であることから、これまでの処理だけでは画像中に映った指標の上方向がどちらであるのかを特定することができない。この解決方法としては、内部のビット領域の特定の複数の領域を回転方向を決定するために利用し、あらかじめ白と黒が定まったものとして塗り分けておく方法が考えられる。また、2次元コード5のように、六角形外形の外部に方向性を決定するための別の領域を設けることによって実現してもよい。
【0042】
以上により、正六角形の外形形状をもち,内部に互いに隣接し合う六角形のビット領域をもつ2次元コードから,ビットを読み出す方法の説明を行った.このような2次元コードが従来技術にある課題を解決できる理由を図9を用いて以下に詳細に説明する。
【0043】
図9(a)は、図1(b)と同じ図であり、本実施形態で利用する正六角形外形の内部に互いに隣接し合う正六角形のビット領域が配置されている図である。これに対して、図9(b)は、従来技術2の2次元コード5と同様な方法でビット領域を設けた場合であり、内部が互いに隣接し合う正方形で構成されている。図7(a)の一つの領域と図7(b)の一つの領域とは、図7(c)に示す通り、重ねて描くと対向する辺の間隔が等しいものとする。これらの2次元コードは、上述したように任意の向きからカメラによって撮影されることとなるので、カメラで撮像されたときのそれぞれの像を重ねて描くと、例えば、図7(d)に示すようになる。ここで、カメラは通常、格子状に並んだ画素を持っていて、それぞれの画素の画素値として外界の明度や色を取得するものである。よって、図8を利用してステップS403の説明で述べたように、この投影領域の中心を基準として、最近傍点や4近傍点の画素値から、このビット領域の明度や色を取得することとなる。この図7(d)に示すように、ビット領域が正方形であった場合に、ビット領域が六角形であった場合と比較して画像上で面積が増える領域は、中心から離れた四角形の頂点付近となる。これは、中心の明度値や色を取得するときに、ほとんど影響を与えないことを意味する。2次元コードはカメラに対して様々な角度で撮影されることを前提としているため、中心点から一定の距離を一つのビット領域とすること、すなわち、できるだけ円に近い方が、一つあたりのビット領域の面積を少なくすることが可能である。図7(a)の1つのビット領域の面積は,図7(b)の1つのビット領域の約0.866倍であるにも関わらず,ビットの読み出し可能な最小サイズは,様々な角度から撮影されることを前提とした場合ほぼ等しい。図7(a)には、19個のビット領域があるのに対して、図7(b)には16個のビット領域しかないが,それらを合わせた面積はほぼ等しい。このように本発明によれば、2次元コードのサイズを大きくすることなく、多くのビットを記録することを可能とすることができる。
【0044】
[変形例]
図1で示した実施形態1の2次元コードは、正六角形の外形形状と正六角形の内部ビット領域により構成されているが、それぞれ必ずしも正六角形でなくとも、六角形であればよい。また、図1で示した実施形態1の2次元コードの外形形状を図2に示すような長方形としても良い。2次元コードが、外形形状から一定間隔の隙間を開けて内部にビット領域が配置されていて、画像に映ったその外形形状を基準として画像上での内部のビット領域の位置を特定することが可能であって、内部のビット領域がそれぞれ隣接しあった六角形領域となっていれば、本発明の本質を失うことはない。
【0045】
また、実施形態の1例として、個々のビット領域は白黒に塗り分けられていて、その明度を閾値判定することによって1か0である二値に変換する方法を説明した。変形例として、複数の明度を利用してn値に変換する方法であってもよいし、個々のビット領域を複数の色によって塗り分けても良い。その場合であっても、ニアレストネイバー法、あるいは双一次補間法などの近傍画素からの補間法によって、個々の領域の色を取得できることに変わりはない。得られた色を複数(m個)の登録済み色候補の中から最も確からしいものとして選択することによって、m個の状態に変換することができる。
【0046】
[他の実施例]
また、上述の実施形態で説明した指標識別装置と同等の機能を複数の機器から構成されるシステムによって実現しても良い。
【0047】
尚、前述した実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線/無線通信を用いて当該プログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを実行することによって同等の機能が達成される場合も本発明に含む。
【0048】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。
【0049】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【0050】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記録媒体、MO、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−R、DVD−RW等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
【0051】
有線/無線通信を用いたプログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイル等、クライアントコンピュータ上で本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムデータファイル)を記憶し、接続のあったクライアントコンピュータにプログラムデータファイルをダウンロードする方法などが挙げられる。この場合、プログラムデータファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに配置することも可能である。
【0052】
つまり、本発明の機能処理をコンピュータで実現するためのプログラムデータファイルを複数のユーザに対してダウンロードさせるサーバ装置も本発明に含む。
【0053】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件を満たしたユーザに対して暗号化を解く鍵情報を、例えばインターネットを介してホームページからダウンロードさせることによって供給し、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0054】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【0055】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【図面の簡単な説明】
【0056】
【図1】第1の実施形態の2次元コードの構成図である。
【図2】第1の実施形態の2次元コードのその他の構成図である。
【図3】第1の実施形態の2次元コード検出装置を表すブロック図である。
【図4】第1の実施形態の2次元コード検出装置が行う処理のフローチャートである。
【図5】2次元コードの外形正方形を検出する方法を説明するための模式図である。
【図6】元来の2次元コードの外形六角形と、それが画像映ったときの形状との対応を示し、その間の射影変換を説明するための模式図である。
【図7】検出された六角形外形形状を基準としてそれぞれの内部ビット領域の中心位置を計算する方法を説明するための模式図である。
【図8】2次元コード面上でのある特定のビット領域の中心点とその近傍画素との関係を示す模式図である。
【図9】第一の実施形態の2次元コードと従来技術の2次元コードの一つあたりのビット領域の比較を説明する模式図である。
【図10】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【図11】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【図12】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【図13】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【図14】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【図15】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【技術分野】
【0001】
本発明は、画像から検出できる2次元コードの構成、2次元コードを画像から検出する方法および装置に関するものである。
【背景技術】
【0002】
[従来技術1]
図10に示すMaxiCodeと呼ばれる二次元コードが従来から知られている。この二次元コードは、中心部に同心円状に半径の異なる帯状の黒領域と白領域があり、その部位を基準に、周囲に微小な正六角形領域が規則正しく並んでいる構造となっている。各正六角形を黒または白とすることによって、2値の情報を表現し、それをカメラで撮影することによって情報を読み出す。以下では、これを2次元コード1と呼ぶ。
【0003】
また、図11や図12に示す二次元コードも従来から知られている。これらの二次元コードは、背景と明度によって分離できる正方形領域をもち、その内部を均等に区分した各々の小正方形領域の明暗によって情報を表現する。通常、これらのコードはカメラによって撮影され、背景からこの2次元コードの外形を識別・検出し、内部に割り当てられた各区分領域の明度に基づいて情報が読み出される。以下では、この種の2次元コードを2次元コード2と呼ぶ。
【0004】
2次元コード1と2次元コード2は、物品等に貼り付けておき、その物品の情報、例えば、製品番号、個体番号、製造日などの製造に関わる情報や、発送元、発送先、発送日時などの輸送に関わる情報などを管理するために利用されるのが通例である。これらのコードは、コードが貼り付けられている面に対して、ほぼ正対する方向からカメラによって撮像されるのが通例であり、その撮像装置の撮像面に対して十分に大きく映るように撮影されることで認識ができることを前提としている。
【0005】
[従来技術2]
現実空間に仮想物体を重畳表示する複合現実感(以下MR)技術において、仮想画像を描画するために以下のような処理が行われる。現実空間にある正方形のマーカを用い、そのマーカを基準とする現実カメラの位置姿勢を推定する。そして、得られた現実カメラの位置姿勢を基にして仮想カメラのパラメータを設定することによって仮想物体を描画する。
【0006】
その代表的な例として、非特許文献1の中に示されているARToolKitがある。ARToolkitでは、図13に示すようなマーカを利用する。このマーカは、その外形となる正方形が画像に撮影されて形成される四角形を画像から検出する。そして、その四角形が3次元空間中では正方形である元来の形に対してどのように変形しているか(透視投影の影響によって歪んでいるか)を情報源として、カメラの位置姿勢を推定する。さらに、複数のマーカを同時に利用された場合に、個々のマーカを識別するために、各マーカの内部はそれぞれ異なる図形パターンによって塗り分けられている。このマーカの識別は、画像から得られた四角形の内部の模様が予め用意されたパターンとの間でパターンマッチング技術を用いて行われる。以下ではこれを2次元コード3と呼ぶ。
【0007】
また、MR用のマーカとしては、非特許文献1の中で示されている図14のようなマーカもある。このマーカでは、内部を4x4の格子状に区切り、各格子点を中心とする円を黒くするか否かによって、個別に識別する機能を実現している点が、2次元コード3と異なる。しかしながら、その外形である正方形を基準として、カメラの位置姿勢を推定する点に関しては二次元コード3と同様である。これを2次元コード4と呼ぶ。
【0008】
MR分野においては、他にも様々な正方形外形を持つマーカが提案されている。例えば、図15に示すようなマーカがある。このマーカは、正方形の外部に正方形の面内での回転方向と特定するための複数の小正方形領域を持っている。内部は、4x4領域に分割され、それぞれが小さな正方形となっており、各小正方形の明度によって個別の識別情報を表現している。これを2次元コード5と呼ぶ。
【0009】
以上の2次元コード3、2次元コード4、2次元コード5のようなMRに利用されているマーカは、外形として正方形を有している点が共通の特徴である。
【非特許文献1】X.Zhang、S.Fronz、N.Navab:Visual marker detection and decoding in AR systems:A comparative study、Proc.of International Symposium on Mixed and Augmented Reality(ISMAR’02)、2002.
【発明の開示】
【発明が解決しようとする課題】
【0010】
従来技術1で述べた2次元コード1は、その全体の領域の中心部分に同心円があり、その周囲を小さな正六角形領域が取り囲んでいる。各正六角形領域は、それぞれお互いに隙間なく接合しており、白か黒かによって塗り分けられている。この白または黒によって2値を表現しており、カメラによって撮影され読み出される。そのとき、中心の同心円を基準とし、60度の角度毎のラインを基準として、各正六角形領域の場所を特定している。言い換えると、2次元コード1にほぼ正対して撮影する場合(2次元コードの貼り付けられた面の法線とほぼ等しい光軸をもつカメラによって撮影する場合)にしか、指標を検出することができない。これは2次元コード2においても同様であり、従来技術1の2次元コードは、指標にほぼ正対した状態で撮影することを前提としたものであって、正対しない任意の方向からの撮影を考慮したものではない。
【0011】
従来技術2で開示されている2次元コード3、4、5は、いずれも明度の高い背景に対して、明度の低い正方形を外形の形状として持っている。従来技術2では、画像における外形の正方形の変形の仕方を情報源として、2次元コードに対するカメラの位置姿勢を推定計算する。外形の正方形が画像に捉えられたときの変形は、カメラの撮影工程で行われる、3次元空間を2次元の画像に投影する射影変換の影響によって引き起こされる。すなわち、従来技術2の指標は、指標に対してほぼ正対する向きから撮影することを前提としておらず、むしろ逆に指標の法線方向とは異なる視軸方向から撮影されることを前提とする指標である。
【0012】
2次元コード3に関しては、指標の個体識別を行うために、正方形領域内部の任意のパターンをパターンマッチングの技術によって識別する。指標の内部のパターンは、パターンマッチングで使用するために予め別途保存されている。そして、撮影画像から指標の内部を切り出した画像を正規化した後に、保存されていたパターンとの比較を行い、似ているか否かによって個体を識別する。この方法には、利用するパターンの種類と一度に撮影される指標の数が増えてくると、パターンマッチングしなければならない組み合わせが増えてしまうため、計算時間が膨大になってしまうという問題がある。また、パターン数を増やすと、必然的に似通ったパターンが増えてしまうため、誤認識を引き起こしてしまう問題があり、実質上一度に利用できるパターンの数は数十個程度である。
【0013】
それに対して、2次元コード4と2次元コード5は、正方形内部を等間隔で区切った小さな正方形領域とし、その明度(白黒)によって1ビットを表現する方法である。この方法であれば、2次元コード3で生じる問題は発生しない。しかし、以下に示すような改善の余地があった。
【0014】
2次元コードにできるだけ多くの情報を載せるためには、ビット領域を多くする必要がある。しかし、ビット領域は画像から認識される必要があるため、一つあたりの大きさを小さくすることに限界がある。逆に言えば、一つあたりのビット領域が画像に撮像・投影されたときの大きさによって、その2次元コードが認識可能であるか否かが決定される。一般に、MR用途においては、できるだけ小さな2次元コードが利用できることが望ましい。しかし、2次元コードに載せる情報を増やすと画像上で十分に大きく映るように物理的に大きな2次元コードとしなければならない。よって、2次元コードの大きさと載せられる情報量はトレードオフの関係にある。そのため、できるだけ全体の大きさを小さく、かつ、情報量を多くするためには、2次元コード内のビット領域を細密に配置することが望ましい。
【0015】
2次元コード4は、内部のビット領域を円形としている。そして、ビット領域である円形領域が、正方格子状に配置されている。この方法では、一つの円形領域が小さくなった場合に円形領域間の隙間が問題となる。例えば、あるひとつの領域が黒で塗られていたときに、その円形領域が画像において一画素幅相当近くまで小さくなったとき、画像上では周囲の隙間の白い領域と混在した中間明度として観測されることとなってしまう。これは、ビット読み出しの際に誤りを増やしてしまうことを意味する。すなわち、内部の領域は隙間を設けることなく隣接して並んでいることが望ましい。
【0016】
2次元コード5では、内部のビット領域は正方形として区切られていて隣接しているため、その問題は発生しない。この指標は必ずしも指標に対して正対していない方向から撮影されていても検出できることを特徴としている。正方形の内部を等間隔で区切った小さな正方形は、画像上ではどのような向きとして撮影されるのかが不定である。言い換えると、どのような形の四角形の投影像となるのかが不定である。2次元コード5は、画像上に捉えられた個々の小さな四角形領域の明度を基にして、ビット値に変換する処理を行うものである。よって、明度を読み出すときにはその個々の小四角形中心点を基準として、その位置の明度を読み出すこととなる。そのとき、正しく明度を読み出すためには、どのような向きで撮影されようとも、画像中の投影された小正方形領域が読み出し位置中心に十分な一定距離を持っているように撮影されなければならない。この条件を言い換えると、元来の指標上での小領域が画像に映ったときに、その小領域の投影像が読み出し位置を中心として画像面上で円形状に近いほど、指標上での小領域の面積を小さくできることを意味する。個々のビットを表現する小領域の面積が小さいほど、指標全体の面積に占めるビット割り当て数を大きくすることができるためである。それに対して、個々の小領域が正方形であると、投影像は角の立った四角形となっていることから、必ずしも効率よく密度高く配置されているとはいえない。
【0017】
一方、2次元コード4は、個々の領域は円形状であるものの、領域間には無駄な隙間が存在しており、ビット領域は高密度には配置されているとはいえない。
【0018】
これらのことから、2次元コード4と2次元コード5には、ビット領域の高密度化に対する改善の余地があった。
【課題を解決するための手段】
【0019】
本願請求項1記載の発明である2次元コードは、背景と明度または色によって識別可能な多角形の外形形状と、該外形形状の内部の外周に一定の間隔をおいて配置された内部領域とを有し、前記内部領域を特定のサイズに分割し、該分割領域それぞれの明度または色によって情報を表現する2次元コードであって、前記分割領域が隣接し合う六角形であること特徴とする。
【0020】
本願請求項5記載の発明である2次元コード検出方法は、画像中に映った2次元コートを背景から検出する外形多角形検出工程と、画像中での外形多角形の形状に応じて、内部のビット領域の位置を特定するビット領域特定工程と、前記特定されたビット領域の明度または色に基づいてビット値を取得するビット値取得工程とを有し、前記2次元コードは、背景と明度または色によって識別可能な六角形の外形形状と、該外形形状の内部の外周に一定の間隔をおいて配置された内部領域とを有し、該内部領域は隣接し合う六角形で構成される複数の情報領域を有すること特徴とする。
【発明の効果】
【0021】
本発明によれば、2次元コードに対してほぼ正対する方向からだけではなく、任意の方向からその2次元コードを検出することを可能としながら、高密度にビット情報を埋め込むことが可能となる。
【発明を実施するための最良の形態】
【0022】
以下、添付図面を参照して、本発明をその好適な実施形態に従って詳細に説明する。
【0023】
[第1の実施形態]
図1は、本実施形態における2次元コードである。図1(a)の101は2次元コードの背景となる黒い背景であって、102のようにその上に白い正六角形外形として2次元コードが形成されている。その外枠からある距離をおいて内部を正六角形に区分する領域を設け、それぞれが黒ないしは白に塗り分けられている。各区分された領域と外枠との関係は図1(b)に示す通りである。この場合、内部の小正六角形領域と外枠の六角形領域とは、30度傾いて配置されており、内部の正六角形と外枠の六角形との間の隙間は、内部の正六角形の対角頂点間の長さの半分の長さに設定されている。これらの関係をわかりやすく示した図が、図1(c)である。図1(c)は、図1(b)の背景に補助線として、等間隔となる平行な線群を120度ずつ回転させて得られる正三角形のメッシュを点線で描き足した図である。
【0024】
このように、図1に示す2次元コードは、六角形の外形形状の対角頂点を結ぶ直線と、内部の小正六角形領域の形状である正六角形の対向する辺のうちのいずれかとが直交するように、外形形状に対して小正六角形領域が配置されている。
【0025】
この2次元コードを読み取る2次元コード検出装置の好適な構成例に関して以下に説明する。図3は、図1で示した2次元コードを検出する2次元コード検出装置の構成例を示すブロック図である。
【0026】
図3の301はカメラであり、図1で示した2次元コードを撮像する。撮像画像は、302の画像取り込み部を通して304のバスコントローラの調停のもと、305のメモリに書き込まれる。また、305のメモリには、本実施形態の処理手順が記憶されていて、303がその処理手順に従って処理を行うCPUである。304は、303のCPU、302の画像取り込み部、305のメモリ間でデータの入出力と調停を行うバスコントローラである。
【0027】
この図3で示したブロック図で構成される2次元コード検出装置の処理手順を示すフローチャートを図4に示し、図4を用いて処理手順を説明する。
【0028】
まず、ステップS401にて図1に示した2次元コードを301のカメラで撮影し、撮影した画像を302の画像取り込み部を通して取得する。得られた画像から、ステップS402にて、画像に映った2次元コードの外形形状である六角形を検出する。カメラでの撮影は指標に正対する姿勢で撮影されるとは限らない(むしろMR用途で利用する場合、様々な角度から撮影されることになる)。さらに、画像の横軸縦軸と指標の外形である正六角形の辺の向きもそろっていない。
【0029】
このステップS402の外形形状を検出する処理を図5を用いて説明する。図5(a)は指標を正対する位置から見た様子であり、内部のビット領域を省略して描いたものである。ここでは、一旦、内部のビット領域に関しては無視をして説明をする。この指標を実際のカメラで撮影すると例えば図5(b)のような画像を得ることとなる。指標が図形として正六角形であっても、カメラで撮影される際には正対した位置からの撮影を行わない限り、このように正六角形ではない凸六角形として観察されることとなり、かつその向きは任意の向きを採り得る。さらに、図形上での白領域と黒領域は、それぞれ明度の高低として捉えられることとなり、境界領域では中間調の明度として得られる。そこで、図5(b)の画像を二値化することによって図5(c)のように二値画像化する。二値化の方法はどのような方法でも構わないが、単純な閾値処理によって実現できる。この二値画像から、白領域の外周を形成している画素を追跡検出すると、図5(d)のような一画素幅で閉ループをなす画素の並びを得ることができる。この画素の並びに対して、折れ線近似処理を行うと、図5(e)に示す六角形が得られる。このとき、元の図形が六角形以外の図形である場合、折れ線近似の結果折れ点が6点とはならないため、元の図形が六角形であったか否かを判別することができる。
【0030】
また、以上のS402の説明では、指標の内部のビット領域に関して無視をしている。しかし、内部のビット領域と六角形外形との間には間隔が設けてあるため、指標が画像中で占める大きさがある一定以上ある場合(その間隔が画像上で1画素幅以上ある状態で撮影されている場合)は、このS402の処理に関して内部の領域は影響しない。
【0031】
次にステップS403にて、検出された六角形外形形状を基準としてそれぞれの内部ビット領域の中心位置を計算する。これを図6を用いて説明する。図6に示すように、指標元来の図形形状である正六角形の各頂点を(Xn、Yn)(n=0、1、、5)と表し、画面中で検出された外形形状である六角形の各頂点を(xn、yn)と表すと、それらの間には以下の式に示す2次元射影変換の関係が成り立つ。
【0032】
【数1】
【0033】
この関係式は、以下のように同次座標変換により行列演算によって記述することも可能である。
【0034】
【数2】
【0035】
このとき、行列
【0036】
【数3】
【0037】
は、ホモグラフィ行列と呼ばれる。(Xn、Yn)と(xn、yn)とは、対応する点が6点あるため、数1あるいは数2に示す関係式が6つ成り立つ。言い換えると連立方程式を解くことによって、数3に示すホモグラフィ行列、あるいは、数1のH11、H12、H13、H21、H22、H23、H31、H32の8つのパラメータをその6点の関係から求めることができる。なお、未知数は8つであるため4点の対応があれば一意に決定される。したがって、6点の対応からこの8つのパラメータを求める場合には、連立方程式が冗長となっているため,最小二乗法などによって求める方がよい。
【0038】
以上により、一旦数1あるいは数2の関係式が得られれば、空間(X、Y)上の任意の点を空間(x、y)へと写像することが可能となる。すなわち、指標の内部の任意のビット領域の中心点が、画像に映った際に画像上でどの位置に投影されているのかを求めることができる。例えば、図7に示す701の点が画像上のどの座標に投影されているのかを求めることができる。ステップS403とは、以上の方法によって指標の内部ビット領域の中心点が画像に映った際の位置を計算する工程のことである。
【0039】
引き続き、ステップS404にて得られた画像上での各ビット領域の中心位置の明度値を取得する。ステップS403にて得られている点の位置は、撮像された六角形の外形形状を基にして、六角形が撮像されるときに起こる射影変換によって計算されたものであるため、整数値とはならない。したがって、対応する画素を直接的に表すものではない。そこで、その位置の明度を最近傍となる画素値とするか、もしくは、近傍4画素の値を基にして線形補間などの方法によって内挿することによって求める。これを図8を用いて説明する。ステップS403で得られているビット領域の画像上での中心位置が801であるとする。801の座標値は整数値とはならないので、画像の画素の中心ではない。その801の点の明度値を求める処理というのが、ステップS404の処理である。最近傍点の画素値とするという処理とは、801のその中心が最も近い画素である画素802の画素値によって801の明度値を代用するという意味である。近傍4画素の画素値から線形補間などの方法によって内挿するという処理とは、画素802、803、804、805の画素値から、明度値を内挿するという意味である。
【0040】
次にステップS405にて、得られた明度値をビット値に変換する。最も簡便な方法は、予め定めておいた閾値との比較によって、1か0かを判定する方法である。予め定めておいた閾値として、ステップS402で行った画像の二値化の時に利用した閾値を利用してもよいし、他のいかなる方法を用いても構わない。また、ステップS405をステップS404とステップS406との間ではなく、ステップS406にてすべてのビット領域での処理が終わった後の工程に組み入れても良い。その場合、ステップS403、S404、S406にて、すべての内部ビット領域に渡って各内部のビット領域の明度値を取得しておき、その後得られている明度値の分布を基準にして、それぞれをビット値への変換するといった処理を行うことも可能である。
【0041】
以上により、本実施形態における正六角形を外形形状とし、内部を互いに隣接する小正六角形領域で区分した2次元コードからビット値を読み出す処理の説明を行った。ここで、正六角形は、回転対称形状であることから、これまでの処理だけでは画像中に映った指標の上方向がどちらであるのかを特定することができない。この解決方法としては、内部のビット領域の特定の複数の領域を回転方向を決定するために利用し、あらかじめ白と黒が定まったものとして塗り分けておく方法が考えられる。また、2次元コード5のように、六角形外形の外部に方向性を決定するための別の領域を設けることによって実現してもよい。
【0042】
以上により、正六角形の外形形状をもち,内部に互いに隣接し合う六角形のビット領域をもつ2次元コードから,ビットを読み出す方法の説明を行った.このような2次元コードが従来技術にある課題を解決できる理由を図9を用いて以下に詳細に説明する。
【0043】
図9(a)は、図1(b)と同じ図であり、本実施形態で利用する正六角形外形の内部に互いに隣接し合う正六角形のビット領域が配置されている図である。これに対して、図9(b)は、従来技術2の2次元コード5と同様な方法でビット領域を設けた場合であり、内部が互いに隣接し合う正方形で構成されている。図7(a)の一つの領域と図7(b)の一つの領域とは、図7(c)に示す通り、重ねて描くと対向する辺の間隔が等しいものとする。これらの2次元コードは、上述したように任意の向きからカメラによって撮影されることとなるので、カメラで撮像されたときのそれぞれの像を重ねて描くと、例えば、図7(d)に示すようになる。ここで、カメラは通常、格子状に並んだ画素を持っていて、それぞれの画素の画素値として外界の明度や色を取得するものである。よって、図8を利用してステップS403の説明で述べたように、この投影領域の中心を基準として、最近傍点や4近傍点の画素値から、このビット領域の明度や色を取得することとなる。この図7(d)に示すように、ビット領域が正方形であった場合に、ビット領域が六角形であった場合と比較して画像上で面積が増える領域は、中心から離れた四角形の頂点付近となる。これは、中心の明度値や色を取得するときに、ほとんど影響を与えないことを意味する。2次元コードはカメラに対して様々な角度で撮影されることを前提としているため、中心点から一定の距離を一つのビット領域とすること、すなわち、できるだけ円に近い方が、一つあたりのビット領域の面積を少なくすることが可能である。図7(a)の1つのビット領域の面積は,図7(b)の1つのビット領域の約0.866倍であるにも関わらず,ビットの読み出し可能な最小サイズは,様々な角度から撮影されることを前提とした場合ほぼ等しい。図7(a)には、19個のビット領域があるのに対して、図7(b)には16個のビット領域しかないが,それらを合わせた面積はほぼ等しい。このように本発明によれば、2次元コードのサイズを大きくすることなく、多くのビットを記録することを可能とすることができる。
【0044】
[変形例]
図1で示した実施形態1の2次元コードは、正六角形の外形形状と正六角形の内部ビット領域により構成されているが、それぞれ必ずしも正六角形でなくとも、六角形であればよい。また、図1で示した実施形態1の2次元コードの外形形状を図2に示すような長方形としても良い。2次元コードが、外形形状から一定間隔の隙間を開けて内部にビット領域が配置されていて、画像に映ったその外形形状を基準として画像上での内部のビット領域の位置を特定することが可能であって、内部のビット領域がそれぞれ隣接しあった六角形領域となっていれば、本発明の本質を失うことはない。
【0045】
また、実施形態の1例として、個々のビット領域は白黒に塗り分けられていて、その明度を閾値判定することによって1か0である二値に変換する方法を説明した。変形例として、複数の明度を利用してn値に変換する方法であってもよいし、個々のビット領域を複数の色によって塗り分けても良い。その場合であっても、ニアレストネイバー法、あるいは双一次補間法などの近傍画素からの補間法によって、個々の領域の色を取得できることに変わりはない。得られた色を複数(m個)の登録済み色候補の中から最も確からしいものとして選択することによって、m個の状態に変換することができる。
【0046】
[他の実施例]
また、上述の実施形態で説明した指標識別装置と同等の機能を複数の機器から構成されるシステムによって実現しても良い。
【0047】
尚、前述した実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線/無線通信を用いて当該プログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを実行することによって同等の機能が達成される場合も本発明に含む。
【0048】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。
【0049】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【0050】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記録媒体、MO、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−R、DVD−RW等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
【0051】
有線/無線通信を用いたプログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイル等、クライアントコンピュータ上で本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムデータファイル)を記憶し、接続のあったクライアントコンピュータにプログラムデータファイルをダウンロードする方法などが挙げられる。この場合、プログラムデータファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに配置することも可能である。
【0052】
つまり、本発明の機能処理をコンピュータで実現するためのプログラムデータファイルを複数のユーザに対してダウンロードさせるサーバ装置も本発明に含む。
【0053】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件を満たしたユーザに対して暗号化を解く鍵情報を、例えばインターネットを介してホームページからダウンロードさせることによって供給し、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0054】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【0055】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【図面の簡単な説明】
【0056】
【図1】第1の実施形態の2次元コードの構成図である。
【図2】第1の実施形態の2次元コードのその他の構成図である。
【図3】第1の実施形態の2次元コード検出装置を表すブロック図である。
【図4】第1の実施形態の2次元コード検出装置が行う処理のフローチャートである。
【図5】2次元コードの外形正方形を検出する方法を説明するための模式図である。
【図6】元来の2次元コードの外形六角形と、それが画像映ったときの形状との対応を示し、その間の射影変換を説明するための模式図である。
【図7】検出された六角形外形形状を基準としてそれぞれの内部ビット領域の中心位置を計算する方法を説明するための模式図である。
【図8】2次元コード面上でのある特定のビット領域の中心点とその近傍画素との関係を示す模式図である。
【図9】第一の実施形態の2次元コードと従来技術の2次元コードの一つあたりのビット領域の比較を説明する模式図である。
【図10】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【図11】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【図12】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【図13】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【図14】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【図15】従来利用されていた正方形形状を基本とした指標の例であり、2次元コードの一種である。
【特許請求の範囲】
【請求項1】
背景と明度または色によって識別可能な多角形の外形形状と、該外形形状の内部の外周に一定の間隔をおいて配置された内部領域とを有し、前記内部領域を特定のサイズに分割し、該分割領域それぞれの明度または色によって情報を表現する2次元コードであって、
前記分割領域が隣接し合う六角形であること特徴とする2次元コード。
【請求項2】
前記多角形の外形形状は、六角形であることを特徴とする請求項1に記載の2次元コード。
【請求項3】
前記各割領域の形状が正六角形であることを特徴とする請求項2に記載の2次元コード。
【請求項4】
前記六角形の外形形状の対角頂点を結ぶ直線と、前記分割領域の形状である正六角形の対向する辺のうちのいずれかとが直交するように、該外形形状に対して該分割領域が配置されていることを特徴とする請求項2または3に記載の2次元コード。
【請求項5】
画像中に映った2次元コートを背景から検出する外形多角形検出工程と、
画像中での外形多角形の形状に応じて、内部のビット領域の位置を特定するビット領域特定工程と、
前記特定されたビット領域の明度または色に基づいてビット値を取得するビット値取得工程とを有し、
前記2次元コードは、背景と明度または色によって識別可能な六角形の外形形状と、該外形形状の内部の外周に一定の間隔をおいて配置された内部領域とを有し、該内部領域は隣接し合う六角形で構成される複数の情報領域を有すること特徴とする2次元コード検出方法。
【請求項6】
前記ビット領域特定工程は、前記外形多角形検出工程で画像から検出された四角形外形形状と物理的な外形形状との間の関係から、2次元射影変換に相当する情報を算出し、
前記2次元射影変換に相当する情報を用いて、前記分割領域それぞれの前記画像における位置を計算することを特徴とする請求項5に記載の2次元コード検出方法。
【請求項7】
コンピュータに、請求項5または6記載の2次元コード検出方法を実行させるためのコンピュータプログラム。
【請求項8】
請求項7記載のコンピュータプログラムをコンピュータが読み取り可能に格納したコンピュータ読み取り可能な記録媒体。
【請求項9】
画像中に映った2次元コートを背景から検出する外形多角形検出手段と、
画像中での外形多角形の形状に応じて、内部のビット領域の位置を特定するビット領域特定手段と、
前記特定されたビット領域の明度または色に基づいてビット値を取得するビット値取得手段とを有し、
前記2次元コードは、背景と明度または色によって識別可能な六角形の外形形状と、該外形形状の内部の外周に一定の間隔をおいて配置された内部領域とを有し、前記内部領域は隣接し合う六角形で構成される複数の情報領域を有すること特徴とする2次元コード検出装置。
【請求項1】
背景と明度または色によって識別可能な多角形の外形形状と、該外形形状の内部の外周に一定の間隔をおいて配置された内部領域とを有し、前記内部領域を特定のサイズに分割し、該分割領域それぞれの明度または色によって情報を表現する2次元コードであって、
前記分割領域が隣接し合う六角形であること特徴とする2次元コード。
【請求項2】
前記多角形の外形形状は、六角形であることを特徴とする請求項1に記載の2次元コード。
【請求項3】
前記各割領域の形状が正六角形であることを特徴とする請求項2に記載の2次元コード。
【請求項4】
前記六角形の外形形状の対角頂点を結ぶ直線と、前記分割領域の形状である正六角形の対向する辺のうちのいずれかとが直交するように、該外形形状に対して該分割領域が配置されていることを特徴とする請求項2または3に記載の2次元コード。
【請求項5】
画像中に映った2次元コートを背景から検出する外形多角形検出工程と、
画像中での外形多角形の形状に応じて、内部のビット領域の位置を特定するビット領域特定工程と、
前記特定されたビット領域の明度または色に基づいてビット値を取得するビット値取得工程とを有し、
前記2次元コードは、背景と明度または色によって識別可能な六角形の外形形状と、該外形形状の内部の外周に一定の間隔をおいて配置された内部領域とを有し、該内部領域は隣接し合う六角形で構成される複数の情報領域を有すること特徴とする2次元コード検出方法。
【請求項6】
前記ビット領域特定工程は、前記外形多角形検出工程で画像から検出された四角形外形形状と物理的な外形形状との間の関係から、2次元射影変換に相当する情報を算出し、
前記2次元射影変換に相当する情報を用いて、前記分割領域それぞれの前記画像における位置を計算することを特徴とする請求項5に記載の2次元コード検出方法。
【請求項7】
コンピュータに、請求項5または6記載の2次元コード検出方法を実行させるためのコンピュータプログラム。
【請求項8】
請求項7記載のコンピュータプログラムをコンピュータが読み取り可能に格納したコンピュータ読み取り可能な記録媒体。
【請求項9】
画像中に映った2次元コートを背景から検出する外形多角形検出手段と、
画像中での外形多角形の形状に応じて、内部のビット領域の位置を特定するビット領域特定手段と、
前記特定されたビット領域の明度または色に基づいてビット値を取得するビット値取得手段とを有し、
前記2次元コードは、背景と明度または色によって識別可能な六角形の外形形状と、該外形形状の内部の外周に一定の間隔をおいて配置された内部領域とを有し、前記内部領域は隣接し合う六角形で構成される複数の情報領域を有すること特徴とする2次元コード検出装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2007−148558(P2007−148558A)
【公開日】平成19年6月14日(2007.6.14)
【国際特許分類】
【出願番号】特願2005−339080(P2005−339080)
【出願日】平成17年11月24日(2005.11.24)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成19年6月14日(2007.6.14)
【国際特許分類】
【出願日】平成17年11月24日(2005.11.24)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]