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