以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(構造化光パタン)
2.第2の実施の形態(構造化光パタン生成装置)
3.第3の実施の形態(投影撮像システム)
4.第4の実施の形態(投影撮像システム・投影撮像装置)
<1.第1の実施の形態>
<対応点検出と幾何補正>
プロジェクタの投影面(スクリーンや壁等)に対する姿勢(位置や向き等)や投影面の形状等によって、例えば図1のAのように、投影された画像(投影画像とも称する)が歪み、見づらくなってしまう場合がある。このような場合、プロジェクタが投影する画像に対して歪みの補正等の幾何補正を施すことにより、図1のBの例のように、投影画像の歪みを低減し、見やすくすることができる。
また、図2の例のように、複数のプロジェクタにより画像を投影して、1つの投影画像を形成させるシステムがある。例えば、図2のAのように、複数のプロジェクタから互いに同位置に画像を投影することにより、コントラスト比を大きくし、ハイダイナミックレンジを実現する方法がある。また、例えば、図2のBのように、各プロジェクタから投影された投影画像を並べることにより、1台のプロジェクタが投影する投影画像よりも大きな投影画像(1台のプロジェクタが投影する投影画像よりも高解像度の投影画像)を実現する方法がある。これらの方法の場合、各プロジェクタから投影された投影画像同士の位置関係が不適切であると、投影画像同士がずれて重畳されたり不要な隙間が生じたりして投影画像全体としての画質が低減するおそれがある。そのため、各投影画像に対する上述した歪み補正だけでなく、投影画像同士の位置合わせ等の幾何補正も必要になる場合がある。
このように投影する画像に対して幾何補正を行うことにより、図3の例のように、複数のプロジェクタから曲面の投影面に対して画像を投影する場合であっても、1つの画像のように投影することができる。なお、図2のBや図3の例のように、複数の投影画像を並べて大きな投影画像を形成する場合、図3の例のように、隣接する投影画像の一部同士を重畳させる(オーバラップさせる)ことにより、その位置合わせをより容易にすることができる。
このような幾何補正は、プロジェクタを操作する操作者等の手動によって行うこともできるが、煩雑な作業を必要とするおそれがある。そこで、カメラを用いてプロジェクタが投影した投影画像を撮像し、その撮像画像を用いて幾何補正を行う方法が考えられた。
例えば、図4の例のように、プロジェクタ11から所定の絵柄の標準化光パタン12をスクリーン13に投影し、カメラ14によりその投影された標準化光パタン12を撮像して撮像画像15を得る。そして、その標準化光パタン12の絵柄に基づいて標準化光パタン12と撮像画像15との対応点を求め、その対応点に基づいて三角測量等によりプロジェクタ11とカメラ14の姿勢(位置関係)やスクリーン13の形状等を求め、その結果に基づいて幾何補正を行う。このようにすることにより、手動で行う場合よりもより容易に幾何補正を行うことができる。
このようにカメラを利用して幾何補正を行う場合、投影画像(投影される画像でもよい)と撮像画像との間で対応点(投影画像および撮像画像の、投影面の互いに同じ位置に対応する画素)を求める必要がある。つまり、カメラ14(撮像画像15)の画素とプロジェクタ11(標準化光パタン12)の画素との対応関係を求める必要がある。
また、図2や図3の例のように複数のプロジェクタを用いる場合は、各投影画像同士の位置関係も求める必要がある。
例えば、図5の例のように、投影部21−1(プロジェクタ)と撮像部22−1(カメラ)とを有する投影撮像装置20−1と、投影部21−2(プロジェクタ)と撮像部22−2(カメラ)とを有する投影撮像装置20−2とを協働させて画像を投影するとする。ここで、投影撮像装置20−1と投影撮像装置20−2とを互いに区別して説明する必要が無い場合、投影撮像装置20と称する。また、投影部21−1と投影部21−2とを互いに区別して説明する必要が無い場合、投影部21と称する。さらに、撮像部22−1と撮像部22−2とを互いに区別して説明する必要が無い場合、撮像部22と称する。
図5に示されるように、投影撮像装置20−1の投影部21−1による投影面23の投影領域(投影画像の範囲)は、P0L乃至P0Rの範囲である。また、投影撮像装置20−2の投影部21−2による投影面23の投影領域は、P1L乃至P1Rの範囲である。つまり、両矢印24で示される範囲(P1L乃至P0Rの範囲)が、互いの投影画像が重畳するオーバーラップ領域となる。
なお、投影撮像装置20−1の撮像部22−1による投影面23の撮像領域(撮像画像に含まれる範囲)は、C0L乃至C0Rの範囲である。また、投影撮像装置20−2の撮像部22−2による投影面23の撮像領域(撮像画像に含まれる範囲)は、C1L乃至C1Rの範囲である。
このようなシステムの場合、上述したように、投影画像同士の位置合わせを行うために、各投影撮像装置20における投影部21と撮像部22との間の対応点を求めるだけでなく、投影撮像装置20間において投影部21と撮像部22との間の対応点を求める必要がある。そこで、例えば、図6のように、投影部21−1のある画素から照射された光(矢印27)が、投影面23のXにおいて反射し、撮像部22−2のどの画素により受光される(矢印28)かが求められる。また、投影部21−2と撮像部22−1との間でも同様の画素対応関係が求められる。
このように、対応点を求めることができる全ての投影部21と撮像部22との間で対応点を求めることにより、幾何補正によって、オーバーラップ領域(両矢印24で示される範囲)の位置合わせを行うことができる。
<オンラインセンシング>
このような幾何補正の為の対応点検出は、映像の投影を開始する前に行うことが考えられるが、初期設置後、映像を投影している最中に温度や振動などの外乱の影響等により、この対応点がずれてしまうおそれがあった。対応点がずれると、幾何補正が不適切なものとなり、投影画像に歪みや位置ずれが生じてしまうおそれがあった。
このような場合、対応点検出をやり直す必要があるが、そのために映像の投影を中断することは、その映像を視ているユーザにとって好ましくない(満足度を低減させるおそれがあった)。そこで、映像の投影を継続したまま対応点を検出する方法(オンラインセンシング)が考えられた。
オンラインセンシング技術として、例えば、Infrared等の不可視光を利用した方式、SIFT等の画像特徴量を利用した方式、ISL(Imperceptible Structured Light)方式等が考えられた。Infrared等の不可視光を利用した方式の場合、不可視光を投影するプロジェクタ(例えばInfraredプロジェクタ)がさらに必要になるためコストが増大するおそれがあった。また、SIFT等の画像特徴量を利用した方式の場合、対応点の検出精度や密度が投影する画像コンテンツに依存してしまうため、対応点検出を安定した精度で行うことが困難であった。
これらに対してISL方式の場合、可視光を利用するため、システム構成要素の増大(すなわちコストの増大)を抑制することができる。また、投影する画像に依存せずに安定した精度で対応点検出を行うことができる。
<ISL方式>
ISL方式は、所定のパタンの画像である構造化光パタンをポジ・ネガ反転させて投影画に埋め込み、人間に知覚されないように投影する技術である。
図7に示されるように、プロジェクタは、入力画像のあるフレームに対して所定の構造化光パタンを足すことにより、入力画像に構造化光パタンのポジ画像を合成したフレーム画像を生成し、入力画像のその次のフレームに対して構造化光パタンを引くことにより、入力画像に構造化光パタンのネガ画像を合成したフレーム画像を生成する。そしてプロジェクタは、それらのフレームを連続投影する。高速に切り替えられたポジ・ネガの2フレームは、積分効果により人間の目には足し合わされて知覚される。その結果、投影画像を視るユーザにとって、入力画像に埋め込まれた構造化光パタンを認識することが困難になる。
これに対して、カメラは、それらのフレームの投影画像を撮像し、両フレームの撮影画像の差分を求めることにより、撮像画像に含まれる構造化光パタンのみを抽出する。この抽出された構造化光パタンを用いて対応点検出が行われる。
このように、ISL方式では撮像画像の差分を求めるだけで容易に構造化パタンを抽出することができるので、投影する画像に依存せずに安定した精度で対応点検出を行うことができる。
このようなISL方式に用いられる構造化光パタンとして、例えば、グレイコードを用いる方法がある。例えば、図8のAに示されるような所定のパターン画像を時系列に切り替えながら投影して、各パターンを撮像する。そして、全てのパターンの撮像が完了したら撮像画像の各画素において、各撮像パターンの「1」(白)または「0」(黒)を検出して、図8のBに示されるように、その「1」と「0」の変化パターンをデコードすることでプロジェクタ画素の位置を取得する。これにより画素の対応関係を取得することができる。
また、例えば、構造化光パタンとして図9に示されるようなチェッカーパタンを用いる方法がある。例えば、図9に示されるようなチェッカー1枚とチェッカーの4隅のうちどれかが欠けたパターン4枚とを投影し、パターンの投影順序と欠けた隅の情報の整合を取ることでチェッカーの各コーナーがプロジェクタのどの画素に対応するかを検出する。
しかしながら、このようなグレイコードやチェッカーパタンは、輝度変化勾配が大きくかつ空間的に規則性の高いパタンを有するため、投影画像を見ているユーザに知覚され易く、不可視性が低減するおそれがある。このような構造化光パタンは、重畳する画像(投影中の映像)にとって(すなわちユーザにとって)不要なものである。つまり、この構造化光パタンを知覚することは、ユーザにとって投影画像(投影中の映像)の画質低減に相当する可能性がある。
なお、グレイコードやチェッカーパタンを用いる場合、多くの枚数を投影する必要がある。一般的に、投影する枚数が増大するほどよりユーザに知覚され易くなり、不可視性がより低減するおそれがある。
また、プロジェクタとカメラのベースラインが短いシステムにおいては三角測量を精度よく行うために、サブピクセル精度での対応点検出が求められるが、グレイコードやチェッカーパタンを用いる方法では、画素以下の検出精度を出せず、三角測量の精度を十分に高くすることが困難である。また、チェッカーパタンを用いる方法では、カメラから最低1つの欠けた隅が見えている必要があり、プロジェクタやカメラの設置自由度(位置や姿勢の自由度)が低減するおそれがある。
さらに、上述したようにグレイコードやチェッカーパタンを用いる場合、多くの枚数を投影する必要があるため、その分、対応点検出の時間が増大するおそれがある。そして、より高密度の対応点を検出するためには、より多くの枚数を投影する必要があり、対応点検出の時間がより増大するおそれがある。
<構造化光パタンの構造>
図10に示される構造化光パタン100は、本技術を適用した構造化光パタンの一実施の形態の例を示す。構造化光パタン100は、投影部により投影された投影画像と撮像部により撮像された撮像画像との間の対応点(つまり、投影部と撮像部との画素対応関係)を検出するためのものであり、図10に示されるように、周辺と輝度値が異なる楕円形状の輝度分布のパタン101を複数有する。つまり、構造化光パタン100には複数のパタン101が配置(形成)されている。構造化光パタン100のパタン101を検出することで対応点の検出を行うことができる。
パタン101内において輝度値は、図11に示されるように、その周辺とその重心との間で2次元ガウス関数状に変化する。つまり、パタン101は、2次元ガウス関数状の輝度分布を有する。
このようにすることにより、グレイコードやチェッカーパタンの場合と比べて輝度変化勾配を低減させる(緩やかにする)ことができ、より知覚され難くすることができる。したがって、例えば、視線が移動したり、視界が遮られたり、投影画像のフレームレートが低かったりする等して積分効果が低減するような場合であっても、投影画像を見ているユーザがこのパタン101を知覚することをより困難にすることができる。つまり、不可視性を向上させることができる。
また、輝度分布が例えば矩形の辺や角のように直線で構成される形状の場合、自然画像に少ない構成であるためユーザに知覚され易くなるおそれがあるが、パタン101のように輝度分布を曲線で構成される楕円形状とすることにより、それに比べて不可視性を向上させることができる。また、形状が単純であるため、パタン101の検出精度を向上させることができる(投影画像の変形等の誤差やノイズに対する耐性を向上させることができる)。
また、構造化光パタン100は、複数種類のパタン101の配置の仕方(どのような並びで配置されたか等)によって対応点検出を可能にする。つまり、構造化光パタン100の投影画像を撮像した撮像画像に含まれるパタン101の並び方と一致する部分を構造化光パタン100の中から検索することによって、撮像画像に含まれる部分が構造化光パタン100のどの部分に相当するかが求められる。一般的に、構造化光パタン100に含まれるパタン101の種類数が多い程、パタン101の組み合わせが増える。つまり、パタン101の配置の仕方(の種類)が増大する。したがって、構造化光パタン100内に同じパタン101の並びを増大させずにより多くのパタン101を配置することができるので、より高精度に(高密度に)対応点を検出することができる。また、パタン101の配置の仕方が増大することにより、より少ない数のパタン101によって構造化パタン100内での位置を一意に特定すること(対応点の検出)が可能となる。詳細については後述するが、対応点検出に必要なパタン101の数が少ないほど、対応点検出が可能な、投影部と撮像部との姿勢の自由度が向上する。なお、対応点検出に必要なパタン101の数が少ないほど対応点検出処理の負荷も低減する。
図11に示されるように、構造化光パタン100においては、パタン101の輝度変化方向が2種類存在する。例えば、図11において、パタン101−1の輝度値は、曲線102−1のように、その周辺から重心に向かって正の方向にガウス関数状に変化する。これに対してパタン101−2の輝度値は、曲線102−2のように、その周辺から重心に向かって負の方向にガウス関数状に変化する。つまり、構造化光パタン100は、輝度変化方向が互いに逆の2種類のパタン101を有する。
このようにパタン101の輝度変化方向を複数化することにより、パタン101の形状を変えずにパタン101の種類数を増大させることができる。また、このように輝度変化方向を利用することにより、全てのパタン101において2次元ガウス関数状の輝度分布を採用することができる。つまり、知覚されやすい輝度変化勾配や形状を用いずにパタン101の種類数を増大させることができる。すなわち、不可視性を低減させずにパタン101の種類数を増大させることができる。付言するに、図11の例のように互いに逆方向の輝度変化方向のパタン101同士は、容易に識別することができる。また、どちらの方向にも輝度変化を大きくすることができるので、撮像画像から抽出された構造化光パタン100のS/N比を大きくことができる。
なお、この2種類のパタン101(図10のパタン101−1およびパタン101−2)は、実際には、いずれも図11の例のようにその周辺と重心との間で輝度が変化するが、図10においては、簡略化の為、パタン101−1を白の楕円で示し、パタン101−2を黒の楕円で示している。つまり、図10においてパタン101の色は、輝度変化の種類が2種類存在することを示しているのみであり、輝度変化の様子を示すものではない。以下に説明する他の図においても、同様の理由により、図10と同様の図示を行う場合がある。
また、図10のパタン101の輝度分布は、所定の慣性主軸を有する。図10や図11に示される例の場合、パタン101の輝度分布は楕円形状であり、その長手方向の中心軸が慣性主軸となる。そして、図10の構造化光パタン100においては、この慣性主軸の方向が、図中縦方向と横方向の2種類存在する。つまり、この例の場合、構造化光パタン100は、図12に示されるように、輝度変化方向と慣性主軸の方向について、4種類のパタン101(図12のパタン101−1乃至パタン101−4)を有する。
例えば、図12において、パタン101−1は、その輝度値が周辺から重心に向かって正方向にガウス関数状に変化し、かつ、その慣性主軸は縦方向である。また、パタン101−2は、その輝度値が周辺から重心に向かって正方向にガウス関数状に変化し、かつ、その慣性主軸は横方向である。これに対して、パタン101−3は、その輝度値が周辺から重心に向かって負方向にガウス関数状に変化し、かつ、その慣性主軸は縦方向である。また、パタン101−4は、その輝度値が周辺から重心に向かって負方向にガウス関数状に変化し、かつ、その慣性主軸は横方向である。
このようにパタン101の慣性主軸の方向(パタンの姿勢)を複数化することにより、パタン101の形状を変えずにパタン101の種類数を増大させることができる。つまり、知覚されやすい形状を用いずにパタン101の種類数を増大させることができる。すなわち、不可視性を低減させずにパタン101の種類数を増大させることができる。付言するに、図12の例のように互いに直角な慣性主軸の方向のパタン101同士は、容易に識別することができる。
また、図12の例のように、輝度変化方向および慣性主軸の方向の両方を組み合わせることにより、パタン101の不可視性を低減させずにパタン101の種類数をさらに増大させることができる。
さらに、パタン101の輝度変化方向、慣性主軸の方向、またはその両方を用いて種類数を増大させることにより、パタン101の形状や大きさを変えて種類数を増大させる場合に比べて、各パタン101の位置や範囲の特定がより容易であり、パタン101の検出をより容易に行うことができる。
なお、以上においては、パタン101の輝度分布が2次元ガウス関数状であるように説明したが、パタン101の輝度分布は、グレイコードやチェッカーパタンの場合に比べて輝度変化勾配を低減させるような分布であればどのような関数状であってもよい。ただし、輝度値が最大(若しくは最小)となる位置(重心)をより容易に求めることができる分布とすることにより、その重心を用いて対応点検出を行うことができ、より容易により高精度な(サブピクセル精度で)対応点検出を実現することができる。なお、この輝度分布(関数)は、全てのパタン101において共通であってもよいし、共通でなくてもよい。
また、パタン101の(輝度分布の)形状は任意であり、楕円形状以外であってもよい。パタン101の大きさや慣性主軸の方向も任意である。パタン101内に文字、記号、絵柄、模様等が形成されるようにしてもよい。なお、これらのパラメータも、全てのパタン101において共通であってもよいし、共通でなくてもよい。さらに、パタン101の配置位置も任意である。例えば、構造化光パタン100において、パタン101が略等間隔で配置されるようにしてもよいし、パタン101の分布に偏りが生じていてもよい。
また、構造化光パタン100が、輝度分布の代わりに単数若しくは複数の色成分(若しくは色差成分)の分布により形成されるようにしてもよいし、輝度と色成分の両方の分布により形成されるようにしてもよい。さらに、構造化光パタン100のサイズやアスペクト比は、任意であり、構造化光パタン100が重畳される他の画像と同一であってもよいし、異なっていてもよい。つまり、パタン101が他の画像の全体に配置されるようにしてもよいし、一部に配置されるようにしてもよい。
また、パタン101の種類数は任意であり、3種類以下であってもよいし、5種類以上であってもよい。例えば、輝度変化方向を3方向以上に識別することによって3種類以上の分類を行うようにしてもよいし、慣性主軸を3方向以上に識別することによって3種類以上の分類を行うようにしてもよい。さらに、パタン101を分類するためのパラメータは任意である。例えば輝度変化方向として正の方向と負の方向以外の方向を用いるようにしてもよい。また、例えば慣性主軸として縦方向および横方向以外の方向を用いるようにしてもよい。さらに、輝度変化方向および慣性主軸の方向以外のパラメータを利用するようにしてもよい。例えば、パタン101の形状、色、大きさ、絵柄(模様)、配置位置(位置ずれ)、輝度変化の変化率(関数)等のパラメータの値によって、パタン101を分類するようにしてもよい。そして、これらのパラメータを複数組み合わせてもよいし、輝度変化方向および慣性主軸と組み合わせてもよい。
ISL方式の場合、このような構成の構造化光パタン100は、他の画像に重畳して投影される。その際、図7を参照して説明した場合と同様に、他の画像のあるフレームに対して構造化光パタン100の輝度値を加算して投影し、次のフレームに対して構造化光パタン100の輝度値を減算して投影するようにする。つまり、構造化光パタン100は、図13に示されるようにポジ画像100−1やネガ画像100−2として、他の画像に重畳されるようにする。ネガ画像100−2は、ポジ画像100−1の輝度値の正負を反転させた画像である。このようなポジ画像100−1とネガ画像100−2とが連続する2フレームに重畳して投影することにより、積分効果により構造化光パタン100が投影画像を見るユーザにより知覚され難くすることができる。
もちろん、他の画像に対してポジ画像100−1若しくはネガ画像100−2のみを重畳させるようにしてもよい。その場合、上述したような積分効果を得ることができないが、図11の例のように各パタン101の輝度変化勾配を低減させることにより、不可視性の低減を抑制することができる。
なお、構造化光パタン100をISL方式以外の対応点検出手法に利用するようにしてもよい。つまり、構造化光パタンを他の画像に重畳させずに投影して対応点検出に利用するようにしてもよい。
<パタンの符号列化>
ところで、プロジェクタ(投影部)とカメラ(撮影部)の設置の自由度(位置や姿勢の自由度)が高いほど、システム構築が容易になり、多様な構成のシステムの実現も容易になる。例えば、図14に示されるように、プロジェクタ111が構造化光パタン100を投影し、カメラ112がその投影画像を撮像して、撮像画像113を得るものとする。このようなシステムにおいてプロジェクタ111とカメラ112の設置の自由度が高いと、カメラ112が投影された構造化光パタン100の全体を撮像することができず、撮像画像113には構造化光パタン100の一部のみしか含まれないケースが生じる可能性がある。
撮像画像113に含まれるパタン101の情報が少なすぎる(パタン101の位置の特定に必要な範囲よりも撮像画像113に含まれる範囲が狭い場合)と、点線両矢印114や点線両矢印115のように、撮像画像113に含まれるパタン101の構造化光パタン100における位置を一意に特定することができないおそれがある。
そこで、構造化光パタン100におけるパタン101の配置を疑似ランダム配列とする。疑似ランダム配列とは、N(Nは任意の自然数)個の変数で構成される配列であり、ある一定のサイズのウィンドウ(部分領域)を切り抜いてその要素を順列展開したとき、その符号列が配列全体で一意であるという性質をもつ配列である。換言するに、構造化光パタン100のパタン101は、全ての部分領域のパタン101の配置(符号列)が互いに異なるように配置されており、撮像画像に含まれる部分領域内のパタン101から、それらのパタン101が構造化光パタン100のどの部分のパタンであるかを特定することができる。つまり、この部分領域内の情報を用いて対応点を求めることができる。なお、パタン101の配置を擬似ランダム配列とすることにより、構造化光パタン100の輝度分布の規則性が低減するので、構造化光パタン100をより知覚され難くすることができる。
以下においてこの部分領域を対応点検出単位とも称する。この部分領域のサイズをできるだけ小さくすることにより、プロジェクタ111とカメラ112のより高い設置の自由度にも対応することができる。
例えば、構造化光パタン100におけるパタン101の配置を、図15の例のように、縦3×横3(合計9個)のパタンの配置に基づいて、その配置位置を一意に特定することができるようにしてもよい。
例えば、図16に示されるように、撮像画像において、処理対象の領域121−1を定め、その中に位置するパタン101−1を検出する。次に、その領域121−1の上に位置する領域121−2内においてパタン101−2を検出し、領域121−1の左に位置する領域121−3内においてパタン101−3を検出し、領域121−1の下に位置する領域121−4内においてパタン101−4を検出し、領域121−1の右に位置する領域121−5内においてパタン101−5を検出する。同様に、領域121−1の右上に位置する領域121−6内においてパタン101−6を検出し、領域121−1の左上に位置する領域121−7内においてパタン101−7を検出し、領域121−1の左下に位置する領域121−8内においてパタン101−8を検出し、領域121−1の右下に位置する領域121−9内においてパタン101−9を検出する。
なお、以下において領域121−1乃至領域121−9を互いに区別して説明する必要が無い場合、領域121と称する。
このように求めた3×3のパタン101をそれぞれ変数化し、図17のAに示されるように所定の順序で順列展開して、図17のBに示されるような符号列を生成する。図17のAおよび図17のBにおいて各領域121に示す数字は順列展開する順序の例を示している。
そして、このように求められた符号列と一致する符号列を、構造化光パタン100の中から検索する。構造化光パタン100の各パタン101は、その任意の位置の3×3のパタン101を変数化して順列展開した符号列が互いに異なる(一意に定まる)ような並びで配置されているので、対応点の検出が可能となる。
このようにすることにより、グレイ−コード等を用いる場合と比べて、より少ない構造化光パタン100に基づいて対応点の検出が可能となるので、投影画像を見ているユーザに知覚され難くすることができ、対応点検出の不可視性を向上させることができる。また、グレイ−コード等を用いる場合と比べて、より短時間に対応点を検出することができる。
なお、プロジェクタ111やカメラ112の設置の自由度がより高くなると、投影画像に対して撮像画像が傾く可能性があり、この傾きによって誤った符号列を生成してしまうおそれがある。
例えば、各パタン101の変数識別の誤りが生じる可能性がある。投影画像に対して撮像画像が傾いていない場合、ある対応点検出単位においてパタン101が図18のAに示されるように配置されているとする。この場合、パタン101−1の慣性主軸の方向は縦方向であり、パタン101−4の慣性主軸の方向は横方向であると識別される。これに対して、撮像画像が図中右に45度回転すると、この対応点検出単位のパタン101の配置は、図18のBに示されるような配置となる。この場合、図18のBに示されるようにパタン101−1およびパタン101−4は、45度ずつ傾くので、パタン101−1の慣性主軸の方向が横方向であり、パタン101−4の慣性主軸の方向が縦方向であると識別される可能性がある。撮像画像の傾きがさらに大きくなると、このような誤りの可能性はさらに高くなる。
また、例えば、各パタン101を順列展開する際の展開順序の誤りが生じる可能性がある。投影画像に対して撮像画像が傾いていない場合、ある対応点検出単位の各パタン101が図19のAに示されるような順序で展開されるとする。これに対して、撮像画像が図中右に45度回転すると、図19のBに示されるような順序で展開されてしまう可能性がある。撮像画像の傾きがさらに大きくなると、このような誤りの可能性はさらに高くなる。
つまり、撮像画像に含まれる対応点検出単位のパタン101から符号列を生成した場合、図20に示されるように、符号列展開順序の不定性として4通り(つまり、対応点検出単位が、0度回転した状態で展開された可能性、90度回転した状態で展開された可能性、180度回転した状態で展開された可能性、270度回転した状態で展開された可能性の4通り)、変数識別の不定性として2通り(つまり、慣性主軸が、0度若しくは180度傾いた可能性と、90度若しくは270度傾いた可能性の2通り)、合計8通りの不定性が考えられるので、構造化光パタン100にこれらの8通りの内の複数の符号列が存在すると、符号列を一意に定めることが困難になり、対応点の検出精度が低減してしまうおそれがある。
そこで、構造化光パタン100の符号列群(各対応点検出単位に対応する符号列)は、互いに異なるグループに属する符号列のみにより構成されるようにする(つまり、パタン101の配置をそのような配置とする)。このようにすることにより、撮像画像において検出された符号列がグループに属するいずれの符号列であっても、その符号列(若しくは同グループに属する符号列)を、構造化光パタン100において一意に求めることができ、対応点を検出することができる。
なお、この符号列のグループ化の基準は任意であり、どのような情報に基づいて符号列をグループ化するようにしてもよい。例えば、符号列生成の不定性に基づいて符号列をグループ化することにより、符号列の不定性による対応点の検出精度の低減を抑制することができる。例えば、このグループが、所定のパタン群の各パタンを変数化して順列展開した符号列、および、そのパタン群を所定の角度回転して各パタンを変数化して順列展開した符号列を含むようにしてもよい。また、このグループが、所定のパタン群の各パタンを変数化して順列展開した符号列、および、そのパタン群の各パタンを他の値に変数化して順列展開した符号列を含むようにしてもよい。さらに、このグループが、所定のパタン群の各パタンを変数化して順列展開した符号列、および、そのパタン群を所定の角度回転して各パタンを他の値に変数化して順列展開した符号列を含むようにしてもよい。また、このグループが、所定のパタン群の各パタンを変数化して順列展開した符号列、そのパタン群を所定の角度回転して各パタンを変数化して順列展開した符号列、並びに、そのパタン群を所定の角度回転して各パタンを他の値に変数化して順列展開した符号列を含むようにしてもよい。さらに、このグループが、所定のパタン群の各パタンを変数化して順列展開した符号列、そのパタン群の各パタンを他の値に変数化して順列展開した符号列、並びに、そのパタン群を所定の角度回転して各パタンを他の値に変数化して順列展開した符号列を含むようにしてもよい。また、図20に示されるように、このグループが、所定のパタン群の各パタンを変数化して順列展開した符号列、そのパタン群の各パタンを他の値に変数化して順列展開した符号列、そのパタン群を所定の角度回転して各パタンを変数化して順列展開した符号列、並びに、そのパタン群を所定の角度回転して各パタンを他の値に変数化して順列展開した符号列を含むようにしてもよい。このようにすることにより、上述したような展開順序の不定性や変数識別の不定性による対応点の検出精度の低減を抑制することができる。つまり、プロジェクタ111とカメラ112のより高い設置の自由度にも対応することができるようになる。なお、図20においては、符号列展開順序の不定性が4通り存在し、変数識別の不定性が2通り存在する場合について説明したが、これらの不定性の種類数はそれぞれ任意であり(対応点検出単位やパタン101の形状や構造等に依存する可能性がある)、図20の例に限定されない。例えば、符号列展開順序の不定性の回転角度として0度、90度、180度、270度を例に説明したが、これらの角度以外であってもよい。そして各不定性の全ての通りをグループに含めるようにしてもよいし、一部のみをグループに含めるようにしてもよい。さらに、上述した以外の不定性が存在する場合、その不定性に基づく符号列パタンをグループに含めるようにしてもよい。
なお、以上においては、1枚の構造化光パタン100(のポジ画像およびネガ画像)を用いて対応点を検出するように説明したが、対応点検出の方法はこれに限定されない。例えば、1枚の構造化光パタン100(のポジ画像およびネガ画像)を複数回繰り返し投影して、複数回撮像し、得られた複数枚の撮像画像を用いてパタン101抽出の際のS/N比を向上させてパタン101の検出精度を向上させるようにしてもよい。パタン101をより正確に検出することにより、対応点の検出精度を向上させることができる。
また、パタン101の配置が互いに異なる複数の構造化光パタンを用いて対応点を検出するようにしてもよい。つまり、以上においては、空間的に近傍の複数のパタンを用いて符号列を生成するように説明したが、これに限らず、時間的に近傍の複数のパタンを用いて符号列を生成するようにしてもよい。例えば、所謂コロケーテッドのように、時間的にも空間的にも近傍のパタンを用いて符号列を生成するようにしてもよい。また、空間的に近傍のパタンと時間的に近傍のパタンの両方を用いて符号列を生成するようにしてもよい。
なお、符号列展開の順序は任意であり、上述した例に限定されない。また、対応点検出単位とする部分領域の大きさや形状は任意であり、上述した例(3×3)に限定されない。つまり、符号列の長さも任意であり、上述した例(9個)に限定されない。
<2.第2の実施の形態>
<構造化光パタン生成装置>
次に、以上のような構造化光パタン100の生成について説明する。構造化光パタン100は、その一部若しくは全部が、任意の装置において生成されるようにしてもよい。図21は、本技術を適用した画像処理装置の一実施の形態である構造化光パタン生成装置の主な構成例を示すブロック図である。
図21に示されるように、構造化光パタン生成装置200は、CPU(Central Processing Unit)201、ROM(Read Only Memory)202、RAM(Random Access Memory)203、バス204、入出力インタフェース210、入力部211、出力部212、記憶部213、通信部214、ドライブ215、および符号列データベース231を有する。
CPU201、ROM202、RAM203は、バス204を介して相互に接続されている。バス204にはまた、入出力インタフェース210も接続されている。入出力インタフェース210には、入力部211、出力部212、記憶部213、通信部214、ドライブ215、および符号列データベース231が接続されている。
入力部211は、ユーザ入力等の外部の情報を受け付ける入力デバイスよりなる。例えば、入力部211には、キーボード、マウス、操作ボタン、タッチパネル、カメラ、マイクロホン、入力端子等が含まれるようにしてもよい。また、加速度センサ、光センサ、温度センサ等の各種センサや、バーコードリーダ等の入力機器が入力部211に含まれるようにしてもよい。出力部212は、画像や音声等の情報を出力する出力デバイスよりなる。例えば、出力部212には、ディスプレイ、スピーカ、出力端子等が含まれるようにしてもよい。
記憶部213は、プログラムやデータ等の情報を記憶する記憶媒体よりなる。例えば、記憶部213には、ハードディスク、RAMディスク、不揮発性メモリ等が含まれるようにしてもよい。通信部214は、所定の通信媒体(例えばインターネット等の任意のネットワーク)を介して外部の装置とプログラムやデータ等の情報を授受する通信を行う通信デバイスよりなる。通信部214は、例えば、ネットワークインタフェースよりなるようにしてもよい。例えば、通信部214は、構造化光パタン生成装置200の外部の装置と通信(プログラムやデータの授受)を行う。
ドライブ215は、自身に装着された、例えば、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア221に記憶されている情報(プログラムやデータ等)を読み出す。ドライブ215は、リムーバブルメディア221から読み出した情報をCPU201やRAM203等に供給する。また、ドライブ215は、書き込み可能なリムーバブルメディア221が自身に装着された場合、CPU201やRAM203等から供給される情報(プログラムやデータ等)を、そのリムーバブルメディア221に記憶させることができる。
CPU201は、例えば、記憶部213に記憶されているプログラムを、入出力インタフェース210およびバス204を介して、RAM203にロードして実行することにより、各種処理を行う。RAM203にはまた、CPU201が各種の処理を実行する上において必要なデータなども適宜記憶される。
例えば、CPU201は、そのようにプログラム等を実行することにより、構造化光パタン生成に関する処理を行うことができる。
符号列データベース231は、構造化光パタン100の各パタン101に対応する、対応点検出単位の符号列とその位置を関連付けて登録するデータベースである。符号列データベース231は、少なくとも記憶している情報に基づいて構造化光パタン100を生成することができるものであれば、符号列とその位置の情報をどのような形式で記憶するようにしてもよい。例えば、符号列データベース231が、符号列の情報とその位置を示す情報とをテーブル情報等を用いて互いに紐付けて記憶するようにしてもよい。また、符号列データベース231が、構造化光パタン100を例えば図10に示されるような画像データとして記憶するようにしてもよい。さらに、符号列データベース231が、互いに紐付けられた符号列の情報およびその位置を示す情報と、構造化光パタン100の画像データとの両方を記憶するようにしてもよい。また、構造化光パタン100は、符号列データベース231に登録されている全ての符号列により形成されるようにしてもよい。その場合、符号列データベース231は、構造化光パタン100のデータ(構造化光パタン100と等価である)とも言える。もちろん、構造化光パタン100が、符号列データベース231に登録されている一部の符号列により形成されるようにしてもよい。例えば、符号列データベース231が複数の構造化光パタン100に対応するようにしてもよい。その際、符号列データベース231は、構造化光パタン100毎に独立に、その符号列を登録するようにしてもよいし、複数の構造化光パタン100に含まれる共通の符号列を1の符号列として登録することができるようにしてもよい。
なお、符号列データベース231は、記憶部213の内部に形成するようにしてもよいし、構造化光パタン生成装置200とは独立した装置として、構造化光パタン生成装置200の外部に設けるようにしてもよい。
<機能ブロック>
図22は、構造化光パタン生成装置200がプログラム等を実行することにより実現する機能の例を示す機能ブロック図である。図22に示されるように、プログラムを実行することにより構造化光パタン生成装置200は、構造化光パタン生成部240の機能を有する。
構造化光パタン生成部240は、構造化光パタン100の生成に関する処理を行う。構造化光パタン生成部240は、パタン領域設定部241、処理対象対応点検出単位選択部242、パタン設定部243、基本符号列生成部244、回転・変数スワップ符号列生成部245、符号列検索部246、および符号列登録部247を有する。
パタン領域設定部241は、パタン領域の設定に関する処理を行う。処理対象対応点検出単位選択部242は、処理対象とする対応点検出単位の選択に関する処理を行う。パタン設定部243は、パタン101の設定に関する処理を行う。基本符号列生成部244は、基本符号列の生成に関する処理を行う。回転・変数スワップ符号列生成部245は、回転・変数スワップ符号列の生成に関する処理を行う。符号列検索部246は、符号列の検索に関する処理を行う。符号列登録部247は、符号列の登録に関する処理を行う。
なお、各ブロックは、必要に応じて相互に情報(例えば命令やデータ等)を授受することが可能とされている。
<構造化光パタン生成処理の流れ>
構造化光パタン生成部240は、所定のタイミングにおいて、若しくは、ユーザやプログラムの指示や要求等に基づいて、構造化光パタン生成処理を実行し、第1の実施の形態において説明したような技術的特徴を有する構造化光パタン100を生成する。図23のフローチャートを参照して、構造化光パタン生成処理の流れの例を説明する。
構造化光パタン生成処理が開始されると、ステップS201において、パタン領域設定部241は、パタン領域を設定する。パタン領域は、パタン101を形成する領域である。1のパタン領域に1のパタン101が形成される。パタン領域設定部241は、生成する構造化光パタン100の全領域若しくは一部の領域に対して、複数のパタン領域を設定する。なお、パタン領域の大きさや形状は任意である。各パタン領域の大きさや形状は全て同一であってもよいし、少なくとも一部が異なるようにしてもよい。また、構造化光パタン100の領域に隙間なくパタン領域が形成されるようにしてもよいし、隣り合うパタン領域間に隙間が形成されるようにしてもよいし、隣り合うパタン領域の一部が重畳するようにしてもよい。
ステップS202において、処理対象対応点検出単位選択部242は、処理対象とする対応点検出単位(処理対象対応点検出単位とも称する)を選択する。ステップS201においてパタン領域が設定されることにより、そのパタン領域を組み合わせて対応点検出単位も設定される。処理対象対応点検出単位選択部242は、その対応点検出単位の中から処理対象とする領域を選択する。
ステップS203において、パタン設定部243は、処理対象対応点検出単位内のパタン未設定のパタン領域に2次元ガウス関数の輝度分布を有するパタン101を仮設定する。処理対象対応点検出単位において、パタン設定部243は、パタン101が未設定の各パタン領域に、第1の実施の形態において説明したような技術的特徴を有するパタン101を1つずつ仮設定する。その際、パタン設定部243は、予め用意されたパタン101の種類の内の任意の1種類を選択し、仮設定する。例えば、図12の場合、パタン設定部243は、図12に示される4種類のパタン101の中から、各パタン領域に仮設定する種類を選択する。
なお、当該処理対象対応点検出単位内にパタン101を既に登録済みのパタン領域(パタン101の種類が決定済みのパタン領域)が存在する場合、そのパタン領域についてはその決定済みのパタン101を以下の処理に採用する。また、パタン101が未設定のパタン領域が複数存在する場合、パタン設定部243は、それぞれのパタン領域について互いに独立にパタン101の種類を選択し、仮設定する。
このパタン101の種類の選択方法は任意である。予め定められた所定の順に選択する(すなわち、各種類に何らかの優先順を設ける)ようにしてもよいし、タイミングやデータ等の何らかの条件に基づいて優先順を設けるようにしてもよいし、ランダムに選択するようにしてもよい。ただし、当該処理対象対応点検出単位について今回が2回目以降の処理である場合、パタン設定部243は、前回以前の処理において仮設定したことのあるパタン101の配置(すなわち符号列)以外の配置(符号列)で仮設定を行う。
ステップS204において、基本符号列生成部244は、処理対象対応点検出単位の各パタン101を変数に置き換えて予め定められた所定順に展開し、基本符号列を生成する。ここで、各変数を所定順に展開することを順列展開とも称する。また、各パタン101を変数に置き換えて所定順に展開することを順列符号展開とも称する。また、基本符号列とは、仮設定したパタン101を順列符号展開した符号列を示す。
ステップS205において、回転・変数スワップ符号列生成部245は、基本符号列に対応する回転・変数スワップ符号列を生成する。ここで、回転・変数スワップ符号列は、処理対象対応点検出単位の各パタン101を他の変数に置き換えて順列展開した符号列、処理対象対応点検出単位を所定の角度回転してから各パタン101を順列符号展開した符号列、並びに、処理対象対応点検出単位を所定の角度回転してから各パタン101を他の変数に置き換えて順列展開した符号列を示す。つまり、ステップS204およびステップS205の処理により、互いに同一のグループに属する符号列を全て生成する。
例えば、図24のAの下から3段目に示されるように、回転角0°の処理対象対応点検出単位を、回転角90°、回転角180°、回転角270°で回転させた処理対象対応点検出単位をそれぞれ生成する。
次に、図24のAの下から2段目に示されるように、回転角0°、回転角90°、回転角180°、回転角270°のそれぞれの処理対象対応点検出単位の各パタン101を変数化する。なお、図24のAにおいて、パタン101は、その種類(例えば、輝度変化方向と慣性主軸の方向)に応じて変数0乃至3のいずれかに変数化される。
さらに、図24のAの下から1段目に示されるように、回転角0°、回転角90°、回転角180°、回転角270°のそれぞれの処理対象対応点検出単位の各パタン101を他の値に変数化する。
そして、図24のBに示されるような所定の順に、各処理対象対応点検出単位の変数を順列展開することにより、基本符号列および回転・変数スワップ符号列が生成される。
ステップS206において、符号列検索部247は、ステップS204およびステップS205の処理により生成した基本符号列および回転・変数スワップ符号列を、符号列データベース231で検索する。つまり、符号列検索部247は、基本符号列および回転・変数スワップ符号列のいずれかの符号列に一致する符号列を、符号列データベース231に登録されている符号列(登録符号列とも称する)の中から検索する。換言するに、符号列検索部247は、基本符号列と同一のグループに属する登録符号列を検索する。
符号列データベース231には、構造化光パタン100を構成するパタン101に対応する符号列が登録される。つまり、ステップS206の処理が行われる時点において、符号列データベース231には、その時点において構造化光パタン100を構成するパタン101として決定済みのパタンに対応する符号列が登録されている。
ステップS207において、符号列検索部247は、基本符号列若しくは回転・変数スワップ符号列のいずれかに一致する登録符号列が存在しないか否かを判定する。符号列データベース231には、1つのグループに属する符号列の内、1つの符号列のみを登録することができる。換言するに、いずれかの符号列が既に登録されているグループに属する符号列は、いずれも符号列データベース231に登録することができない。したがって、ステップS207において一致する登録符号列が存在すると判定された場合、処理はステップS203に戻り、それ以降の処理が行われる。つまり、処理対象対応点検出単位のパタン101の仮設定をやり直す。このように、当該グループに属する全ての符号列が符号列データベース231に登録されていない符号列が見つかるまで、ステップS203乃至ステップS207の処理が繰り返される。
ステップS207において、一致する符号列が存在しないと判定された場合、そのグループの符号列を符号列データベース231に登録することができるので、処理はステップS208に進む。
ステップS208において、パタン設定部243は、処理対象対応点検出単位について、各パタン領域のパタン101を決定する。つまり、基本符号列とその基本符号列の構造化光パタン100における位置が決定される。ステップS209において、符号列登録部247は、決定された基本符号列を符号列データベース231に登録する。その際、符号列登録部247は、基本符号列を、その基本符号列の構造化光パタン100における位置と紐付けて符号列データベース231に登録する。
ステップS210において、パタン領域設定部241は、ステップS201において設定した全てのパタン領域にパタン101を設定したか否かを判定する。未設定のパタン領域が存在すると判定された場合、処理はステップS202に戻り、それ以降の処理が実行される。つまり、新たな未処理の対応点検出単位が処理対象として選択され、その処理対象対応点検出単位に対して上述した処理が実行される。このように、全てのパタン領域にパタン101が設定されるまで、ステップS202乃至ステップS210の処理が繰り返される。
ステップS210において、全てのパタン領域にパタン101が設定されたと判定された場合、構造化光パタン生成処理が終了する。
以上のように、第1の実施の形態において説明した構造化光パタン100を生成することにより、構造化光パタン生成装置200は、第1の実施の形態の場合と同様に、対応点検出の不可視性を向上させることができる。
<3.第3の実施の形態>
<投影撮像システム>
次に、以上のような構造化光パタン100を用いた対応点の検出について説明する。図25は、本技術を適用した投影撮像システムの一実施の形態の主な構成例を示すブロック図である。図25において、投影撮像システム300は、画像を投影したり、投影画像を撮像したり、本技術を適用した方法で、ISL方式による対応点検出を行ったりすることができるシステムである。
図25に示されるように、投影撮像システム300は、制御装置301、並びに、投影撮像装置302−1乃至投影撮像装置302−N(Nは任意の自然数)を有する。投影撮像装置302−1乃至投影撮像装置302−Nは、それぞれ、ケーブル303−1乃至ケーブル303−Nを介して制御装置301に接続されている。
以下において、投影撮像装置302−1乃至投影撮像装置302−Nを互いに区別して説明する必要が無い場合、投影撮像装置302と称する。また、ケーブル303−1乃至ケーブル303−Nを互いに区別して説明する必要が無い場合、ケーブル303と称する。
制御装置301は、ケーブル303を介して各投影撮像装置302を制御する。例えば、制御装置301は、各投影撮像装置302に対して、投影する画像を供給し、その画像を投影させることができる。また、例えば、制御装置301は、各投影撮像装置302に対して、投影画像等の撮像を指示し、その撮像画像を取得することができる。さらに、例えば、制御装置301は、投影画像と撮像画像の対応点の検出を行ったり、その求めた対応点に基づいて各投影撮像装置302に投影させる画像の幾何補正を行ったりすることができる。なお、この幾何補正には、投影させる画像に対する画像処理(例えば、拡大、縮小、変形等)の他に、各投影撮像装置302の光学系の制御等(例えば、投影方向や撮像方向等の制御等)も含むことができる。
投影撮像装置302−1乃至投影撮像装置302−Nは、それぞれ、画像を投影する投影部311−1乃至投影部311−N、並びに、被写体を撮像する撮像部312−1乃至撮像部312−Nを有する。以下において、投影部311−1乃至投影部311−Nを互いに区別して説明する必要が無い場合、投影部311と称する。また、撮像部312−1乃至撮像部312−Nを互いに区別して説明する必要が無い場合、撮像部312と称する。
投影部311は、所謂プロジェクタの機能を有する。つまり、投影撮像装置302は、投影部311を用いてプロジェクタとして駆動することができる。例えば、投影撮像装置302は、この投影部311を用いて、制御装置301から供給される画像を任意の投影面に投影することができる。
撮像部312は、所謂カメラの機能を有する。つまり、投影撮像装置302は、撮像部312を用いてカメラとして駆動することができる。例えば、投影撮像装置302は、この撮像部312を用いて、投影部311により画像が投影された投影面の撮像を行い、得られた撮像画像のデータを制御装置301に供給することができる。
投影撮像装置302の数は任意であり、単数でも複数でも良い。投影撮像装置302が複数の場合、各投影撮像装置302は、制御装置301の制御の下、互いに協働し、図2や図3を参照して説明したような画像の投影を行うことができる。つまり、その場合の投影撮像システム300は、所謂マルチプロジェクションシステムであり、所謂プロジェクションマッピングを実現することができる。
なお、投影部311による画像の投影方向や拡大率、並びに、投影画像の歪み補正等が制御可能としてもよい。この制御のために、例えば、投影部311が有する光学系や投影部311全体の位置や姿勢を制御可能としてもよい。
また、撮像部312による画像の撮像方向や画角、並びに、撮像画像の歪み補正等が制御可能としてもよい。この制御のために、例えば、撮像部312が有する光学系や撮像部312全体の位置や姿勢を制御可能としてもよい。
さらに、このような投影部311の制御と撮像部312の制御は、互いに独立して行うことができるようにしてもよい。また、投影撮像装置302の位置や姿勢を制御可能としてもよい。なお、このような投影部311、撮像部312、および投影撮像装置302の制御は、制御装置301が行うようにしてもよいし、制御装置301以外が行うようにしてもよい。
ケーブル303は、制御装置301と投影撮像装置302との間の通信路となり得る任意の通信規格の電気通信ケーブルである。なお、制御装置301と投影撮像装置302とが互いに通信可能であればよく、例えば、制御装置301と投影撮像装置302とが無線通信により接続されるようにしてもよい。その場合、ケーブル303を省略することができる。
このような投影撮像システム300において、制御装置301は、画像の幾何補正のために、各投影部311と各撮像部312との間の対応点検出を行う。例えば、制御装置301は、オンラインセンシングのISL方式により対応点検出を行うことができる。その際、制御装置301は、本技術を適用した対応点検出を行うことができる。
<制御装置>
図26は、本技術を適用した画像処理装置の一実施の形態である制御装置301の主な構成例を示すブロック図である。
図26に示されるように、制御装置301は、CPU321、ROM322、RAM323、バス324、入出力インタフェース330、入力部331、出力部332、記憶部333、通信部334、ドライブ335、および符号列データベース231を有する。
CPU321、ROM322、RAM323は、バス324を介して相互に接続されている。バス324にはまた、入出力インタフェース330も接続されている。入出力インタフェース330には、入力部331、出力部332、記憶部333、通信部334、ドライブ335、および符号列データベース231が接続されている。
入力部331は、ユーザ入力等の外部の情報を受け付ける入力デバイスよりなる。例えば、入力部331には、キーボード、マウス、操作ボタン、タッチパネル、カメラ、マイクロホン、入力端子等が含まれるようにしてもよい。また、加速度センサ、光センサ、温度センサ等の各種センサや、バーコードリーダ等の入力機器が入力部211に含まれるようにしてもよい。出力部332は、画像や音声等の情報を出力する出力デバイスよりなる。例えば、出力部332には、ディスプレイ、スピーカ、出力端子等が含まれるようにしてもよい。
記憶部333は、プログラムやデータ等の情報を記憶する記憶媒体よりなる。例えば、記憶部333には、ハードディスク、RAMディスク、不揮発性メモリ等が含まれるようにしてもよい。通信部334は、所定の通信媒体(例えばインターネット等の任意のネットワーク)を介して外部の装置とプログラムやデータ等の情報を授受する通信を行う通信デバイスよりなる。通信部334は、例えば、ネットワークインタフェースよりなるようにしてもよい。例えば、通信部334は、制御装置301の外部の装置と通信(プログラムやデータの授受)を行う。なお、通信部334が有線通信機能を有するようにしてもよいし、無線通信機能を有するようにしてもよいし、その両方を有するようにしてもよい。
ドライブ335は、自身に装着された、例えば、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア341に記憶されている情報(プログラムやデータ等)を読み出す。ドライブ335は、リムーバブルメディア341から読み出した情報をCPU321やRAM323等に供給する。また、ドライブ335は、書き込み可能なリムーバブルメディア341が自身に装着された場合、CPU321やRAM323等から供給される情報(プログラムやデータ等)を、そのリムーバブルメディア341に記憶させることができる。
CPU321は、例えば、記憶部333に記憶されているプログラムを、入出力インタフェース330およびバス324を介して、RAM323にロードして実行することにより、各種処理を行う。RAM323にはまた、CPU321が各種の処理を実行する上において必要なデータなども適宜記憶される。
例えば、CPU321は、そのようにプログラム等を実行することにより、対応点の検出に関する処理を行うことができる。
符号列データベース231は、構造化光パタン生成装置200により生成されたデータベースであり、上述したように構造化光パタン100に関する情報を記憶している。なお、符号列データベース231は、記憶部333の内部に形成するようにしてもよいし、制御装置301とは独立した装置として、制御装置301の外部に設けるようにしてもよい。
<制御装置の機能ブロック>
図27は、制御装置301がプログラム等を実行することにより実現する機能の例を示す機能ブロック図である。図27に示されるように、プログラムを実行することにより制御装置301は、投影撮像処理部351、対応点検出部352、姿勢推定部353、幾何補正部354、投影制御部355、および撮像制御部356の機能を有する。
投影撮像処理部351は、各投影撮像装置302による投影や撮像に関する処理を行う。対応点検出部352は、各投影部311と各撮像部312との間の対応点検出に関する処理を行う。姿勢推定部353は、各投影部311や各撮像部312の姿勢推定に関する処理を行う。幾何補正部354は、各投影部311から投影させる画像の幾何補正に関する処理を行う。投影制御部355は、各投影部311の動作を制御する。撮像制御部356は、各撮像部312の動作を制御する。
なお、各ブロックは、必要に応じて相互に情報(例えば命令やデータ等)を授受することが可能とされている。
<対応点検出部>
対応点検出部352は、図28において機能ブロックとして示される機能を有する。つまり、対応点検出部352は、制御部361、ノイズ低減部362、差分画像生成部363、2値化部364、領域分割部365、重心検出部366、変数識別部367、対応点検出単位処理部368、順列符号展開部369、データベース検索部370、回転・変数スワップ符号列処理部371、および位置特定部372の機能を有する。
制御部361は、対応点検出の制御に関する処理を行う。ノイズ低減部362は、ノイズ低減に関する処理を行う。差分画像生成部363は、差分画像の生成に関する処理を行う。2値化部364は、2値化に関する処理を行う。領域分割部365は、領域の分割に関する処理を行う。重心検出部366は、重心の検出に関する処理を行う。変数識別部367は、変数の識別に関する処理を行う。対応点検出単位処理部368は、対応点検出単位に関する処理を行う。順列符号展開部369は、順列符号展開に関する処理を行う。データベース検索部370は、符号列データベース231での符号列の検索に関する処理を行う。回転・変数スワップ符号列処理部371は、回転・変数スワップ符号列に関する処理を行う。位置特定部372は、構造化光パタン100における位置の特定に関する処理を行う。
なお、各ブロックは、必要に応じて相互に情報(例えば命令やデータ等)を授受することが可能とされている。
<投影撮像装置>
図29は、投影撮像装置302の主な構成例を示すブロック図である。図29に示されるように、投影撮像装置302は、制御部401、投影部311、撮像部312、入力部411、出力部412、記憶部413、通信部414、およびドライブ415を有する。
制御部401は、例えば、CPU、ROM、RAM等を有し、装置内の各処理部を制御したり、例えば画像処理等、その制御に必要な各種処理を実行したりする。制御部401は、例えば制御装置301の制御に基づいて、それらの処理を行う。
投影部311は、制御部401に制御されて、画像の投影に関する処理を行う。例えば、投影部311は、制御部401から供給される画像を投影撮像装置302の外部(例えば投影面等)に投影する。投影部311は、レーザ光を光源とし、MEMS(Micro Electro Mechanical Systems)ミラーを用いてそのレーザ光を走査することにより、画像を投影する。もちろん、投影部311の光源は任意であり、レーザ光に限らず、例えばLED(Light Emitting Diode)やキセノン等であってもよい。
撮像部312は、制御部401に制御されて、装置外部(例えば投影面等)の被写体を撮像し、撮像画像を生成し、その撮像画像を制御部401に供給する。例えば、撮像部312は、投影部311により投影面に投影された投影画像を撮像する。撮像部312は、例えばCMOS(Complementary Metal Oxide Semiconductor)を用いたイメージセンサ、CCD(Charge Coupled Device)を用いたイメージセンサ等を有し、そのイメージセンサによって被写体からの光を光電変換して、撮像画像の電気信号(データ)を生成する。
入力部411は、ユーザ入力等の外部の情報を受け付ける入力デバイスよりなる。例えば、入力部411には、操作ボタン、タッチパネル、カメラ、マイクロホン、入力端子等が含まれる。また、光センサ、温度センサ等の各種センサが入力部411に含まれるようにしてもよい。出力部412は、画像や音声等の情報を出力する出力デバイスよりなる。例えば、出力部412には、ディスプレイ、スピーカ、出力端子等が含まれる。
記憶部413は、例えば、ハードディスク、RAMディスク、不揮発性メモリなどよりなる。通信部414は、例えば、ネットワークインタフェースよりなる。例えば、通信部414は、通信ケーブル303に接続され、通信ケーブル303を介して接続される制御装置301と通信を行うことができる。なお、通信部414が有線通信機能を有するようにしてもよいし、無線通信機能を有するようにしてもよいし、その両方を有するようにしてもよい。ドライブ415は、例えば磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア421を駆動する。
<投影部>
図30は、投影部311の主な構成例を示すブロック図である。図30に示されるように、投影部311は、ビデオプロセッサ431、レーザドライバ432、レーザ出力部433−1、レーザ出力部433−2、レーザ出力部433−3、ミラー434−1、ミラー434−2、ミラー434−3、MEMSドライバ435、および、MEMSミラー436を有する。
ビデオプロセッサ431は、制御部401から供給される画像を保持したり、その画像に対して必要な画像処理を行ったりする。ビデオプロセッサ431は、その投影する画像をレーザドライバ432やMEMSドライバ435に供給する。
レーザドライバ432は、ビデオプロセッサ431から供給される画像を投影するように、レーザ出力部433−1乃至レーザ出力部433−3を制御する。レーザ出力部433−1乃至レーザ出力部433−3は、例えば、赤、青、緑等、互いに異なる色(波長域)のレーザ光を出力する。つまり、レーザドライバ432は、ビデオプロセッサ431から供給される画像を投影するように、各色のレーザ出力を制御する。なお、レーザ出力部433−1乃至レーザ出力部433−3を互いに区別して説明する必要が無い場合、レーザ出力部433と称する。
ミラー434−1は、レーザ出力部433−1から出力されるレーザ光を反射し、MEMSミラー436に誘導する。ミラー434−2は、レーザ出力部433−2から出力されるレーザ光を反射し、MEMSミラー436に誘導する。ミラー434−3は、レーザ出力部433−3から出力されるレーザ光を反射し、MEMSミラー436に誘導する。なお、ミラー434−1乃至ミラー434−3を互いに区別して説明する必要が無い場合、ミラー434と称する。
MEMSドライバ435は、ビデオプロセッサ431から供給される画像を投影するように、MEMSミラー436のミラーの駆動を制御する。MEMSミラー436は、MEMSドライバ435の制御に従ってMEMS上に取り付けられたミラー(鏡)を駆動することにより、例えば、図31の例のように各色のレーザ光を走査する。このレーザ光は、投射口から装置外部に出力され、例えば投影面に照射される。これにより、ビデオプロセッサ431から供給される画像が投影面に投影される。
なお、図30の例においては、レーザ出力部433を3つ設け、3色のレーザ光を出力するように説明したが、レーザ光の数(または色数)は任意である。例えば、レーザ出力部433を4つ以上であってもよいし、2つ以下であってもよい。つまり、投影撮像装置302(投影部311)から出力されるレーザ光は、2本以下であってもよいし、4本以上であってもよい。そして、投影撮像装置302(投影部311)から出力されるレーザ光の色数も任意であり、2色以下であってもよいし、4色以上であってもよい。また、ミラー434やMEMSミラー436の構成も任意であり、図30の例に限定されない。もちろん、レーザ光の走査パターンは任意である。
<幾何補正処理の流れ>
次に、このような構成の投影撮像システム300において実行される処理について説明する。上述したように、投影撮像システム300においては、制御装置301が、各投影撮像装置302を制御し、ISL方式のオンラインセンシングにより、コンテンツ等の画像を投影しながら、各投影部311と各撮像部312の間の対応点検出を行い、その対応点に基づいて、各投影部および各撮像部312の姿勢推定や投影面形成等を行い、投影する画像の幾何補正を行う。
これらの処理を実行するために制御装置301において実行される幾何補正処理の流れの例を、図32のフローチャートを参照して説明する。
幾何補正処理が開始されると、制御装置301の投影撮像処理部351は、投影制御部355および撮像制御部356を介して各投影撮像装置302を制御し、ステップS301において、構造化光パタン100の画像の投影や撮像を行う。
ステップS302において、対応点検出部352は、ステップS301の処理により、撮像制御部356を介して各投影撮像装置302から取得した撮像画像(撮像部312が投影面を撮像した撮像画像)を用いて対応点の検出を行う。
ステップS303において、姿勢推定部353は、検出された対応点を用いて、各投影部311および各撮像部312(または各投影撮像装置302)の姿勢推定や投影スクリーン再構成を行う。投影スクリーン再構成とは、投影面である投影スクリーンの形状を推定する処理である。
ステップS304において、幾何補正部354は、姿勢推定や投影スクリーン再構成の処理結果に基づいて、必要に応じて、各投影部311から投影させる画像についての幾何補正を行う。
幾何補正が終了すると、幾何補正処理が終了する。
<投影撮像処理の流れ>
次に、図33のフローチャートを参照して、図32のステップS301において実行される投影撮像処理の流れについて説明する。
投影撮像処理が開始されると、投影撮像処理部351は、ステップS321において、処理対象とする投影部311(処理対象投影部)を選択する。
ステップS322において、投影撮像処理部351は、投影する構造化光パタン100を選択する。投影撮像処理部351は、投影する構造化光パタン100を、符号列データベース231に登録されている構造化光パタン100の中から選択する。つまり、投影撮像処理部351は、第1の実施の形態において説明したように構成される構造化光パタン100を選択する。
ステップS323において、投影撮像処理部351は、選択した構造化光パタン100のポジ画像を処理対象投影部が投影する画像に重畳する(重畳画像を生成する)。すなわち、投影撮像処理部351は、処理対象の投影部311が投影する画像の輝度値に、選択した構造化光パタン100を加算する。
ステップS324において、投影撮像処理部351は、投影制御部355を介して、処理対象投影部に重畳画像を投影させ、その他の投影部に非重畳画像を投影させる。つまり、投影撮像処理部351は、処理対象の投影部311に、構造化光パタン100のポジ画像を重畳した画像(重畳画像)を投影させ、その他の投影部311に、適宜、構造化光パタン100のポジ画像を重畳していない画像(非重畳画像)を投影させる。
ステップS325において、投影撮像処理部351は、撮像制御部356を介して、各撮像部312に投影画像(処理対象投影部が投影した重畳画像の投影画像)を撮像させ、その撮像画像(パタン撮像画像)を得る。なお、処理対象投影部が投影した重畳画像の投影画像が撮像範囲外となることが明らかな撮像部312については、撮像を省略させるようにしてもよい。
ステップS326において、投影撮像処理部351は、選択した構造化光パタン100のネガ画像を処理対象投影部が投影する画像に重畳する(重畳画像を生成する)。すなわち、投影撮像処理部351は、処理対象の投影部311が投影する画像の輝度値に、選択した構造化光パタン100を減算する。
ステップS327において、投影撮像処理部351は、投影制御部355を介して、処理対象投影部に重畳画像を投影させ、その他の投影部に非重畳画像を投影させる。つまり、投影撮像処理部351は、処理対象の投影部311に、構造化光パタン100のネガ画像を重畳した画像(重畳画像)を投影させ、その他の投影部311に、適宜、構造化光パタン100のネガ画像を重畳していない画像(非重畳画像)を投影させる。
ステップS328において、投影撮像処理部351は、撮像制御部356を介して、各撮像部に投影画像(処理対象投影部が投影した重畳画像の投影画像)を撮像させ、その撮像画像(パタン撮像画像)を得る。なお、処理対象投影部が投影した重畳画像の投影画像が撮像範囲外となることが明らかな撮像部312については、撮像を省略させるようにしてもよい。
ステップS329において、投影撮像処理部351は、全ての投影部311について、上述した処理を行ったか否かを判定する。未処理の投影部311が存在する場合、処理はステップS321に戻り、それ以降の処理が繰り返される。つまり、各投影部311を処理対象として、ステップS321乃至ステップS329の処理が実行される。そして、ステップS329において、全ての投影部311について処理が行われたと判定された場合、投影撮像処理が終了し、処理は図32に戻る。
以上のように、投影撮像システム300(制御装置301)は、構造化光パタン100として、第2の実施の形態において説明したように生成された構造化光パタン100を投影させて対応点検出を行い、幾何補正を行うことができる。すなわち、投影撮像システム300(制御装置301)は、第1の実施の形態において説明した構成の構造化光パタン100を投影させて対応点検出を行い、幾何補正を行うことができる。したがって、投影撮像システム300(制御装置301)は、第1の実施の形態や第2の実施の形態の場合と同様に、対応点検出の不可視性を向上させることができる。
<対応点検出処理の流れ>
次に、図34および図35のフローチャートを参照して、図32のステップS302において実行される対応点検出処理の流れについて説明する。
対応点検出処理が開始されると、対応点検出部352の制御部361は、図34のステップS341において、図33の投影撮像処理において各撮像部312において得られたパタン撮像画像の内の未処理のパタン撮像画像の中から、処理対象とするパタン撮像画像(処理対象パタン撮像画像)を選択する。
ステップS342において、ノイズ低減部362は、処理対象パタン撮像画像のノイズ低減を行う。このノイズ低減の方法は任意である。例えば、ノイズ低減部362が、同一の撮像部312において同一の構造化光パタン100を撮像した複数のパタン撮像画像を重畳することにより、パタン101のS/N比を向上させるようにしてもよい。
ステップS343において、差分画像生成部363は、連続する2フレームのパタン撮像画像の差分画像(パタン差分画像)を生成する。つまり、差分画像生成部363は、構造化光パタン100のポジ画像の重畳画像と、ネガ画像の重畳画像との差分を取る。このようにすることにより、構造化光パタン100が重畳されたコンテンツ等の画像がキャンセルされて、構造化光パタン100の画像が抽出される。なお、その際、ポジ画像とネガ画像とではパタン101の輝度変化方向が互いに逆向きであるので、パタン差分画像においては、パタン101の輝度変化方向が同一方向となって加算されることになり、パタン101のS/N比を向上させることができる。
ステップS344において、2値化部364は、パタン差分画像を2値化する。ステップS345において、領域分割部365は、2値化されたパタン差分画像を用いて、8近傍連結の領域分割を行い、パタン101の領域を特定する。なお、パタン差分画像の2値化は省略することもできるが、この2値化を行うことにより、パタン101の部分とそうでない部分との境界がより明確になるので、領域分割をより容易かつより正確に行うことができる。
ステップS346において、重心検出部366は、各パタン101の重心を検出する。この重心は、サブピクセル精度で検出することができる。したがってこの重心を用いることにより、対応点検出をサブピクセル精度で(より高精度に)行うことができる。
ステップS347において、変数識別部367は、各パタン101の変数を識別する。変数識別部367は、各パタン101の0次乃至2次モーメントを求めて慣性主軸を求め、その慣性主軸の方向と輝度変化方向とに基づいて変数を識別する。図34のステップS347の処理が終了すると、処理は図35のステップS351に進む。
図35のステップS351において、対応点検出単位処理部368は、処理対象とするパタン101(処理対象パタン)を選択する。
ステップS352において、対応点検出単位処理部368は、ベース姿勢を求める。ベース姿勢は、投影画像と撮像画像との間の傾きの程度を示し、例えば、図36のAに示されるように、パタン101の慣性主軸(矢印451)の基準方向からの角度(矢印452)によって表される。より具体的には、パタン撮像画像内で抽出された複数のパタン101の慣性主軸の値を2つに分類し、分類された片方のクラスタの慣性主軸平均値をもってベース姿勢とする。
ステップS353において、対応点検出単位処理部368は、処理対象パタンを中心とする3×3の対応点検出単位内の、処理対象パタンの周辺のパタン101(周辺パタン)を特定する。つまり、対応点検出単位処理部368は、処理対象パタンの重心から最近傍8個の重心を特定する。
ステップ354において、対応点検出単位処理部368は、参照ベクトルをベース姿勢の傾きの分だけ回転させる。参照ベクトルは、処理対象パタンが位置するパタン領域から対応点検出単位内の他のパタン領域に向かう方向を示すベクトルである。例えば図36のBの場合、対応点検出単位が3×3のパタン領域群により構成され、その中心のパタン領域に処理対象パタンが位置する。したがって、この場合、参照ベクトル453は、中心のパタン領域から周辺のパタン領域に向かう8方向(上、下、左、右、右上、右下、左上、左下)のベクトルにより構成される。これらの参照ベクトル453が、図36のCに示されるように、ベース姿勢の傾き(矢印452)の分だけ回転される。
ステップS355において、対応点検出単位処理部368は、このように回転された参照ベクトルを用いて、位置カテゴリの分類を行う。つまり、対応点検出単位処理部368は、処理対象パタンの周辺の最近傍8個の各パタン(周辺パタン)が、処理対象パタンからみて8方向の参照ベクトルのいずれの方向に位置するかを分類する。より具体的には、処理対象パタンの重心から、各周辺パタンの重心に向かう方向ベクトルをそれぞれ求め、参照ベクトルと各方向ベクトルの内積値を求め、その参照ベクトルに対応する位置カテゴリを、その内積値が最も小さい方向ベクトルに対応する周辺パタンに割り当てる(図36のD)。このような処理を各参照ベクトルについて行う。
ステップS356において、順列符号展開部369は、対応点検出単位内の各パタン101を順列符号展開し、符号列を生成する。上述したようにベース姿勢の傾きの分回転された参照ベクトルを用いて位置カテゴリの分類を行っているので、順列符号展開部369は、ベース姿勢の傾きによる符号展開順序の誤りへの影響を抑制しながら順列符号展開を行うことができる。すなわち、符号展開順序の誤りの発生を抑制することができ、より正確に順列符号展開を行うことができる。
ステップS357において、データベース検索部370は、この符号列と一致する符号列を、符号列データベース231に登録されている符号列の中から検索する。符号列データベース231には、第2の実施の形態において説明したような方法で符号列が登録されている。制御部361は、ステップS358において、一致する符号列が存在するか否かを判定する。一致する符号列が符号列データベース231に存在すると判定された場合、処理はステップS359に進む。
ステップS359において、位置特定部372は、一致した符号列の構造化光パタン100における位置を求めることにより、対応点を検出する。対応点を検出すると処理はステップS363に進む。
また、ステップS358において、一致する符号列が符号列データベース231に存在しないと判定された場合、処理はステップS360に進む。
ステップS360において、制御部361は、ステップS356において順列符号展開されて得られた符号列を基本符号列とする場合に、その基本符号列に対応する回転・変数スワップ符号列となる符号列を全てを処理したか否かを判定する。未処理の回転・変数スワップ符号列が存在する場合(すなわち、ステップS356において順列符号展開されて得られた符号列と同一のグループに属する未処理の符号列が存在する場合)、処理はステップS361に進む。
ステップS361において、回転・変数スワップ符号列処理部371は、ステップS356において順列符号展開されて得られた符号列に対応する回転・変数スワップ符号列の中から未処理の回転・変数スワップ符号列を処理対象として選択し、処理をステップS357に戻す。つまり、選択された回転・変数スワップ符号列と一致する符号列の検索が行われる。このようなステップS357乃至ステップS361の一連の処理が、一致する符号列が見つかるか、若しくは、全ての回転・変数スワップ符号列について検索が終了するまで繰り返される。そして、ステップS360において、全ての回転・変数スワップ符号列を処理したと判定された場合、処理はステップS362に進む。
ステップS362において、(すなわち一致する符号列が見つからなかった場合、)制御部361は、エラー処理を行う。このエラー処理の内容は任意である。エラー処理が終了すると、処理はステップS363に進む。以上のようなステップS357乃至ステップS362の各処理により、ステップS356において順列符号展開されて得られた符号列と同グループに属する符号列が、符号列データベース231に登録されている符号列の中から検索される。
ステップS363において、制御部361は、処理対象のパタン撮像画像について、全てのパタンを処理したか否かを判定する。未処理のパタンが存在すると判定された場合、処理はステップS351に戻る。つまり、ステップS351乃至ステップS363の各処理が、各パタンについて実行される。なお、2回目以降の場合、ベース姿勢の算出や参照ベクトルの回転等の処理(ステップS352やステップS354)は省略する(初回に求めたものを利用する)ようにしてもよい。
各パタン101についてステップS351乃至ステップS363の各処理が実行され、ステップS363において全てのパタンが処理されたと判定された場合、処理はステップS364に進む。
ステップS364において、制御部361は、全てのパタン撮像画像を処理したか否かを判定する。未処理のパタン撮像画像が存在すると判定された場合、処理は図34のステップS341に戻る。つまり、図34のステップS341乃至図35のステップS364の各処理が、各パタン撮像画像について実行される。
各パタン撮像画像について図34のステップS341乃至図35のステップS364の各処理が実行され、図35のステップS364において全てのパタン撮像画像が処理されたと判定された場合、対応点検出処理が終了し、処理は図32に戻る。
以上のようにして対応点を検出することにより、第2の実施の形態において生成した構造化光パタン100(第2の実施の形態において符号列データベース231に登録した符号列)を用いて、対応点の検出を行うことができる。つまり、投影撮像システム300(制御装置301)は、第1の実施の形態において説明した構成の構造化光パタン100を用いて対応点検出を行うことができる。したがって、投影撮像システム300(制御装置301)は、第1の実施の形態や第2の実施の形態の場合と同様に、対応点検出の不可視性を向上させることができる。
また、上述したように対応点検出を行うことにより、パタン101の重心をサブピクセル精度で求めることができるので、グレイコードやチェッカーパタンを用いる方法の場合に比べて三角測量の精度を十分に高くすることができ、対応点検出をより高精度に行うことができる。したがって、例えば、図37のAに示されるように、幾何補正前において複数の投影画像が位置ずれを起こした状態で重畳されているような場合であっても、上述したように対応点検出を行って幾何補正を行うことにより、図37のBに示されるように、より高精度に位置合わせを行うことができるようになるので、投影画像の画質を向上させることができる。
また、上述したように対応点検出を行うことにより、チェッカーパタンを用いる方法の場合に比べてより狭い部分領域において対応点を求めることができるので、プロジェクタやカメラの設置自由度(位置や姿勢の自由度)がより高い場合にも対応する(対応点を検出する)ことができる。
さらに、上述したように対応点検出を行うことにより、グレイコードやチェッカーパタンを用いる場合よりも少ない枚数の構造化光パタン100によって対応点検出を行うことができる。つまり、グレイコードやチェッカーパタンを用いる場合よりも短時間に対応点を検出することができる。
<4.第4の実施の形態>
<投影撮像システム、投影撮像装置の他の構成例>
なお、本技術を適用した投影撮像システムの構成例は、上述した例に限定されない。例えば図38のAに示される投影撮像システム500のように、制御装置301並びに各投影撮像装置302がネットワーク501を介して互いに接続されるようにしてもよい。
ネットワーク501は、任意の通信網である。ネットワーク501において採用される通信方法は任意である。例えば、有線通信であってもよいし、無線通信であってもよいし、それらの両方であってもよい。また、ネットワーク501は、1の通信網により構成されるようにしてもよいし、複数の通信網により構成されるようにしてもよい。例えば、インターネット、公衆電話回線網、所謂3G回線や4G回線等の無線移動体用の広域通信網、WAN(Wide Area Network)、LAN(Local Area Network)、Bluetooth(登録商標)規格に準拠した通信を行う無線通信網、NFC(Near Field Communication)等の近距離無線通信の通信路、赤外線通信の通信路、HDMI(登録商標)(High-Definition Multimedia Interface)やUSB(Universal Serial Bus)等の規格に準拠した有線通信の通信網等、任意の通信規格の通信網や通信路がネットワーク501に含まれるようにしてもよい。
制御装置301並びに各投影撮像装置302は、このネットワーク501に通信可能に接続されている。なお、この接続は有線(すなわち、有線通信を介した接続)であってもよいし、無線(すなわち、無線通信を介した接続)であってもよいし、その両方であってもよい。なお、各装置の数、筐体の形状や大きさ、配置位置等は任意である。
制御装置301並びに各投影撮像装置302は、ネットワーク501を介して互いに通信を行う(情報の授受等を行う)ことができる。換言するに、制御装置301並びに各投影撮像装置302は、他の設備(装置や伝送路等)を介して互いに通信可能に接続されるようにしてもよい。
このような構成の投影撮像システム500の場合も、投影撮像システム300の場合と同様に本技術を適用することができ、上述した作用効果を奏することができる。
また、例えば図38のBに示される投影撮像システム510のように、投影部311と撮像部312とが互いに異なる装置として構成されるようにしてもよい。投影撮像システム510は、投影撮像装置302の代わりに、投影装置511−1乃至投影装置511−N(Nは任意の自然数)、並びに、撮像装置512−1乃至撮像装置512−M(Mは任意の自然数)を有する。投影装置511−1乃至投影装置511−Nは、それぞれ、投影部311(投影部311−1乃至投影部311−N)を有し、画像の投影を行う。撮像装置512−1乃至撮像装置512−Mは、それぞれ、撮像部312(撮像部312−1乃至撮像部312−M)を有し、投影面(投影部311が投影した投影画像)の撮像を行う。
投影装置511−1乃至投影装置511−Nを互いに区別して説明する必要が無い場合、投影装置511と称する。撮像装置512−1乃至撮像装置512−Mを互いに区別して説明する必要が無い場合、撮像装置512と称する。
各投影装置511並びに各撮像装置512は、それぞれ制御装置301と通信可能に接続されており、有線通信若しくは無線通信またはその両方により制御装置301と通信を行う(情報を授受する)ことができる。なお、各投影装置511並びに各撮像装置512が、制御装置301を介して、他の投影装置511若しくは他の撮像装置512またはその両方と通信を行うことができるようにしてもよい。
また、各装置の数、筐体の形状や大きさ、配置位置等は任意である。また、図38のAの例のように、各装置が、ネットワーク501等のような他の設備(装置や伝送路)を介して互いに通信可能に接続されるようにしてもよい。
このような構成の投影撮像システム510の場合も、投影撮像システム300の場合と同様に本技術を適用することができ、上述した作用効果を奏することができる。
また、例えば図39のAに示される投影撮像システム520のように、制御装置301を省略するようにしてもよい。図39のAに示されるように、投影撮像システム520は、投影撮像装置521−1乃至投影撮像装置521−N(Nは任意の自然数)を有する。投影撮像装置521−1乃至投影撮像装置521−Nを互いに区別して説明する必要が無い場合、投影撮像装置521と称する。各投影撮像装置521は、通信ケーブル522を介して互いに通信可能に接続されているなお、各投影撮像装置521が無線通信によって互いに通信可能に接続されるようにしてもよい。
投影撮像装置521−1乃至投影撮像装置521−Nは、それぞれ、制御部523−1乃至制御部523−Nを有する。制御部523−1乃至制御部523−Nを互いに区別して説明する必要が無い場合、制御部523と称する。制御部523は、制御装置301と同様の機能を有し、同様の処理を行うことができる。
つまり、この投影撮像システム520の場合、上述した制御装置301において行われる処理が、投影撮像装置521(の制御部523)において実行される。なお、いずれかの投影撮像装置521(の制御部523)が、制御装置301において行われる処理の全てを実行するようにしてもよいし、複数の投影撮像装置521(の制御部523)が、情報を授受し合う等して協働して処理を実行するようにしてもよい。
このような構成の投影撮像システム520の場合も、投影撮像システム300の場合と同様に本技術を適用することができ、上述した作用効果を奏することができる。
また、例えば図39のBに示されるように、投影撮像システム300が1つの装置として構成されるようにしてもよい。図39のBに示される投影撮像装置530は、投影部311(投影部311−1乃至投影部311−N(Nは任意の自然数))、撮像部312(撮像部312−1乃至撮像部312−M(Mは任意の自然数))、並びに、制御部523を有する。
投影撮像装置530において、制御部523は、上述した制御装置301において行われる処理を実行することにより、各投影部311並びに各撮像部312を制御して対応点の検出等を行う。
したがって、このような構成の投影撮像装置530の場合も、投影撮像システム300の場合と同様に本技術を適用することができ、上述した作用効果を奏することができる。
<ソフトウェア>
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
例えば図21の構造化光パタン生成装置200の場合、この記録媒体は、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されているリムーバブルメディア221により構成される。その場合、例えば、リムーバブルメディア221をドライブ215に装着することにより、そのリムーバブルメディア221に記憶されているこのプログラムを読み出させ、記憶部213にインストールさせることができる。
また、例えば図26の制御装置301の場合、この記録媒体は、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されているリムーバブルメディア341により構成される。その場合、例えば、リムーバブルメディア341をドライブ335に装着することにより、そのリムーバブルメディア341に記憶されているこのプログラムを読み出させ、記憶部333にインストールさせることができる。
また例えば図29の投影撮像装置302の場合、この記録媒体は、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されているリムーバブルメディア421により構成される。その場合、例えば、リムーバブルメディア421をドライブ415に装着することにより、そのリムーバブルメディア421に記憶されているこのプログラムを読み出させ、記憶部413にインストールさせることができる。
また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。例えば図21の構造化光パタン生成装置200の場合、プログラムは、通信部214で受信し、記憶部213にインストールすることができる。また、例えば図26の制御装置301の場合、プログラムは、通信部334で受信し、記憶部333にインストールすることができる。また、例えば図29の投影撮像装置302の場合、プログラムは、通信部414で受信し、記憶部413にインストールすることができる。
その他、このプログラムは、記憶部やROM等に、あらかじめインストールしておくこともできる。例えば図21の構造化光パタン生成装置200の場合、プログラムは、記憶部213やROM202等に予めインストールしておくこともできる。また、例えば図26の制御装置301の場合、プログラムは、記憶部333やROM322等に予めインストールしておくこともできる。また、例えば図29の投影撮像装置302の場合、プログラムは、記憶部413や制御部401に内蔵されるROM(図示せず)等に予めインストールしておくこともできる。
なお、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
また、上述した各ステップの処理は、上述した各装置、若しくは、上述した各装置以外の任意の装置において、実行することができる。その場合、その処理を実行する装置が、上述した、その処理を実行するのに必要な機能(機能ブロック等)を有するようにすればよい。また、処理に必要な情報を、適宜、その装置に伝送するようにすればよい。
<その他>
本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
また、例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
また、例えば、本技術は、1つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
また、例えば、上述のフローチャートで説明した各ステップは、1つの装置で実行する他、複数の装置で分担して実行することができる。さらに、1つのステップに複数の処理が含まれる場合には、その1つのステップに含まれる複数の処理は、1つの装置で実行する他、複数の装置で分担して実行することができる。
また、本技術は、装置やシステムとして実施するだけでなく、装置またはシステムを構成する装置に搭載するあらゆる構成、例えば、システムLSI(Large Scale Integration)等としてのプロセッサ、複数のプロセッサ等を用いるモジュール、複数のモジュール等を用いるユニット、ユニットにさらにその他の機能を付加したセット等(すなわち、装置の一部の構成)として実施することもできる。
なお、本明細書において複数説明した本技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術を、他の実施の形態において説明した本技術と組み合わせて実施することもできる。また、上述した任意の本技術を、上述していない他の技術と併用して実施することもできる。
なお、本技術は以下のような構成も取ることができる。
(1) 投影部により投影されたガウス関数の輝度分布を有するパタンが複数配置された所定の構造化光パタンを撮像部が撮像したパタン撮像画像を用いて、前記投影部により投影された投影画像と前記撮像部により撮像された撮像画像との間の対応点を検出する対応点検出部
を備える画像処理装置。
(2) 投影部により投影されたガウス関数の輝度分布を有するパタンが複数配置された所定の構造化光パタンを撮像部が撮像したパタン撮像画像を用いて、前記投影部により投影された投影画像と前記撮像部により撮像された撮像画像との間の対応点を検出する
画像処理方法。
(3) 投影部により投影された、複数種類のパタンが複数配置された構造化光パタンであって、前記構造化光パタンの所定の大きさの部分領域内のパタン群を変数化して順列展開した符号列に基づいて前記構造化光パタンにおける前記部分領域の位置が一意に定まるように前記パタンが配置された前記構造化光パタンを撮像部が撮像したパタン撮像画像を用いて、前記投影部により投影された投影画像と前記撮像部により撮像された撮像画像との間の対応点を検出する対応点検出部
を備える画像処理装置。
(4) 前記対応点検出部は、
前記パタン撮像画像に含まれる前記パタンを変数化して順列展開して符号列を求め、
前記パタン撮像画像に含まれる前記パタンに対応する前記符号列に一致する符号列に対応する前記部分領域を前記構造化光パタンにおいて検索して、前記対応点を検出する
(3)に記載の画像処理装置。
(5) 前記対応点検出部は、
前記パタン撮像画像に含まれる前記パタンに対応する前記符号列に一致する符号列を前記構造化光パタンの各部分領域に対応する符号列群の中から検索し、
符号列が一致した前記部分領域の前記構造化光パタンにおける位置に基づいて、前記対応点を検出する
(4)に記載の画像処理装置。
(6) 前記構造化光パタンの各部分領域に対応する符号列群は、互いに異なるグループに属する符号列のみにより構成され、
前記対応点検出部は、前記パタン撮像画像に含まれる前記パタンに対応する前記符号列と同一のグループに属する全ての符号列について、前記構造化光パタンの各部分領域に対応する符号列群の中から一致する符号列を検索することができるように構成される
(5)に記載の画像処理装置。
(7) 前記グループは、所定のパタン群の各パタンを変数化して順列展開した符号列、および、前記パタン群を所定の角度回転して各パタンを変数化して順列展開した符号列を含む
(6)に記載の画像処理装置。
(8) 前記対応点検出部は、前記投影部が投影した任意の画像と前記構造化光パタンとの重畳画像を前記撮像部が撮像したパタン撮像画像から前記パタンを抽出する
(3)乃至(7)のいずれかに記載の画像処理装置。
(9) 前記対応点検出部は、前記投影部が投影した任意の画像と前記構造化光パタンのポジ画像との重畳画像を前記撮像部が撮像した第1のパタン撮像画像と、前記投影部が投影した任意の画像と前記構造化光パタンのネガ画像との重畳画像を前記撮像部が撮像した第2のパタン撮像画像とを用いて、前記パタンを抽出する
(8)に記載の画像処理装置。
(10) 前記パタンは、ガウス関数の輝度分布を有する
(3)乃至(9)のいずれかに記載の画像処理装置。
(11) 前記構造化光パタンは、輝度変化方向が互いに逆向きの2種類の輝度分布と、慣性主軸が互いに異なる2方向とを組み合わせた4種類のパタンにより構成される
(3)乃至(10)のいずれかに記載の画像処理装置。
(12) 投影部により投影された、複数種類のパタンが複数配置された構造化光パタンであって、前記構造化光パタンの所定の大きさの部分領域内のパタン群を変数化して順列展開した符号列に基づいて前記構造化光パタンにおける前記部分領域の位置が一意に定まるように前記パタンが配置された前記構造化光パタンを撮像部が撮像したパタン撮像画像を用いて、前記投影部により投影された投影画像と前記撮像部により撮像された撮像画像との間の対応点を検出する
画像処理方法。
(13) ガウス関数の輝度分布を有するパタンが複数配置された、投影部により投影された投影画像と撮像部により撮像された撮像画像との間の対応点を検出するための構造化光パタンを生成する生成部
を備える画像処理装置。
(14) ガウス関数の輝度分布を有するパタンが複数配置された、投影部により投影された投影画像と撮像部により撮像された撮像画像との間の対応点を検出するための構造化光パタンを生成する
画像処理方法。
(15) 複数種類のパタンが複数配置された構造化光パタンであって、前記構造化光パタンの所定の大きさの部分領域内のパタン群を変数化して順列展開した符号列に基づいて、前記構造化光パタンにおける前記部分領域の位置が一意に定まるように前記パタンが配置された、投影部により投影された投影画像と撮像部により撮像された撮像画像との間の対応点を検出するための前記構造化光パタンを生成する生成部
を備える画像処理装置。
(16) 複数種類のパタンが複数配置された構造化光パタンであって、前記構造化光パタンの所定の大きさの部分領域内のパタン群を変数化して順列展開した符号列に基づいて、前記構造化光パタンにおける前記部分領域の位置が一意に定まるように前記パタンが配置された、投影部により投影された投影画像と撮像部により撮像された撮像画像との間の対応点を検出するための前記構造化光パタンを生成する
画像処理方法。
(17) ガウス関数の輝度分布を有するパタンが複数配置された、投影部により投影された投影画像と撮像部により撮像された撮像画像との間の対応点を検出するための構造化光パタンのデータ。
(18) ガウス関数の輝度分布を有するパタンが複数配置された、投影部により投影された投影画像と撮像部により撮像された撮像画像との間の対応点を検出するための構造化光パタンのデータが記録された記録媒体。
(19) 複数種類のパタンが複数配置された構造化光パタンであって、前記構造化光パタンの所定の大きさの部分領域内のパタン群を変数化して順列展開した符号列に基づいて、前記構造化光パタンにおける前記部分領域の位置が一意に定まるように前記パタンが配置された、投影部により投影された投影画像と撮像部により撮像された撮像画像との間の対応点を検出するための前記構造化光パタンのデータ。
(20) 複数種類のパタンが複数配置された構造化光パタンであって、前記構造化光パタンの所定の大きさの部分領域内のパタン群を変数化して順列展開した符号列に基づいて、前記構造化光パタンにおける前記部分領域の位置が一意に定まるように前記パタンが配置された、投影部により投影された投影画像と撮像部により撮像された撮像画像との間の対応点を検出するための前記構造化光パタンのデータが記録された記録媒体。