説明

撮像装置、オクルージョン領域の探索方法、及びプログラム

【課題】CCDカメラによって取得した輝度情報と、TOFカメラによって取得された距離情報を統合することで高速かつ高精度に環境の情報を計測する撮像装置、オクルージョン領域の探索方法、及びプログラムを提供する。
【解決手段】撮像装置14は、TOFカメラ10で得られた距離画像及びCCDカメラ12で得られた輝度画像とを用いて外部パラメータの推定を行う外部パラメータ推定部22と、予め記憶されているTOFカメラ10及びCCDカメラ12a又はCCDカメラ12bの内部パラメータ及び前記外部パラメータを用いて距離画像における画素位置と輝度画像における画素位置との対応関係を決定する対応画素決定部24と、距離画像における画素位置と輝度画像における画素位置との対応関係を用いて距離画像におけるオクルージョン領域を探索するオクルージョン探索部28とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、TOFカメラとCCDカメラとを有する撮像装置、オクルージョン領域の探索方法、及びプログラムに関する。
【背景技術】
【0002】
コンピュータビジョン、特にロボットビジョンの分野において、下記非特許文献1に記載されているように、3次元情報の利用は非常に重要である。例えば、実空間で自ら認識、判断して作業を遂行するような自律ロボットは、人間と同じように周囲の物体の形や動きなど、自分の置かれた環境をリアルタイムに3次元で認識する機能が不可欠である。
【0003】
近年、3次元計測技術の発達は目覚ましく様々な手法が提案されている。これらの手法は、大きく受動型センサを用いた手法と、能動型センサを用いた手法に大別される。前者は、CCDカメラを複数用いたステレオに代表される多視点計測であり、2台のカメラを平行に用いたベースラインステレオは、現在非常に広く用いられている。しかし、一般に縮退した2次元の情報から3次元を復元することは容易ではない。特に多視点画像からの復元は、画像間の対応点探索の問題であり、誤った対応点による精度の大幅な低下を完全に避けることは難しい。また、テクスチャの少ない対象の距離を計測することは原理的に不可能であり、対応点探索の計算コストの問題もある。
【0004】
一方、レーザーレンジファインダなどのような能動型センサは照明などの影響を受けにくく、ステレオカメラよりも高速で高精度の距離計測が可能である。しかし、3次元レーザーレンジファインダは装置自体が大きく非常に高価であるため、家庭用ロボットなどの用途には向かない。また、2次元レーザーレンジファインダをモーターによって駆動することで、高精度な3次元情報を得る手法が移動ロボットの環境マッピングなどの場面ではよく用いられる。しかし、2次元レーザーレンジファインダをモーターで動かすために、スキャンの度にロボットは静止する必要がある。近年、こうした問題を解決する能動型センサの一つとして、下記非特許文献2に記載されているように、赤外線TOF(Time of flight)カメラが注目されている。赤外線TOFカメラは、変調した近赤外線を用いたTOF計測により、3次元情報を30fps程度の速度で取得することが可能である。その精度は、レーザーレンジファインダに比べ大きく劣るものの、ベースラインステレオに比べれば非常に高く、多くの応用分野で有用であると考えられる。また比較的小さな装置であり、家庭用移動ロボットなどへの搭載が容易である。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】D.A.Forsyth, J.Ponce, Computer Vision: A Modern Approach, Prentice Hall, 2002
【非特許文献2】T.Oggier, F.Lustenberger and N.Blanc, “Miniature 3D TOF Camera for Real-Time Imaging”, in Proc. of Perception and Interactive Technologies 2006, pp. 212-216,June 2006
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、こうした能動型センサの一般的な問題として、取得した座標の色情報が取得できないことが挙げられる。
【0007】
本発明は、CCDカメラによって、色、テクスチャ等の情報を、TOFカメラによって高精度な3次元情報を取得し、それらを統合することで高速かつ高精度に環境の情報を計測する撮像装置、及びその撮像装置を制御するためのプログラムに関する。この場合、TOFカメラとCCDカメラのキャリブレーションが重要となる。本発明では、CCDカメラとTOFカメラの内部パラメータの推定、及び、それぞれの輝度画像を用いた外部パラメータの推定を行うことでキャリブレーションを実現する。
【0008】
もう一つの大きな課題は、オクルージョンである。TOFカメラとCCDカメラは視点位置が異なるため、場合によってTOFカメラでは観測された点がCCDカメラでは観測されないことが起こり得る。そこで本発明では、さらに、高速にオクルージョン領域を探索するオクルージョン領域の探索方法を提案する。また、本発明によれば、2台のCCDカメラを用いることで、オクルージョンによって欠落した情報をもう一台のカメラの情報によって補う。これにより、色情報と高精度な3次元情報を同時かつリアルタイムで得ることが可能となる。
【0009】
本発明では、さらに、TOFカメラとCCDカメラを用いた画像処理システムを実現し、実際にロボットへ実装することでシステムの性能を評価する。具体的には、ロボットによる物体抽出、学習、認識、3次元地図の生成の例を示す。TOFカメラは、ここ数年注目されており、様々な場面への応用が検討されている。文献(K.Ohno, T.Nomura and S.Tadokoro, “Real-Time Robot Trajectory Estimation and 3D Map Construction using 3D Camera”, in Proc. of IEEE/RSJ Int.Conf. on Intelligent Robots and Systems, pp.5279-5285,Oct. 2006)では、レスキューロボットでの3次元地図生成にTOFカメラを用いている。文献(S.May, D.Droeschel, D.Holz, C.Wiesen and S.Fuchs,“3D Pose Estimation and Mapping with Time-of-Flight Cameras”, in Proc. of IEEE/RSJ Int. Conf. on Intelligent Robots and Systems, Oct. 2008)、及び、文献(C.Beder, I.Schiller and R.Koch, “Real-Time Estimation of the Camera Path from a Sequence of Intrinsically Calibrated PMD Depth Images”, in Proc. of the International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, vol.XXXVII,pp.45-50, July 2008)では、3次元ポーズやカメラパスの推定にTOFカメラを用いている。また、文献(S.B.Gokturk and C.Tomasi, “3D Head Tracking Based on Recognition and Interpolation Using a Time-Of-Flight Depth Sensor”, in Proc. of IEEE Computer Society Conference on Computer Vision and Pattern Recognition, Vol.2, pp.211-217, July 2004)、及び、文献(D.W.Hansen, M.S.Hansen, M.Kirschmeyer, R.Larsen and D.Silvestre, “Cluster tracking with Time-of-Flight cameras”, in Proc. of IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshops, pp.1-6, June 2008)では、頭部や物体のトラッキングに応用することでその有効性を示している。ただし、これらの研究では、TOFカメラによって得られる3次元情報のみを用いている。一方、TOFカメラとCCDカメラの組み合わせの応用として、文献(B.Bartczak, I.Schiller, C.Beder and R.Koch, “Integration of a Time-of-Flight Camera into a Mixed Reality System for Handling Dynamic Scenes, Moving Viewpoints and Occlusions in Real-Time”, in Proc. of International Symposium on 3D Data Processing, Visualization and Transmission, June 2008)では、バーチャルリアリティーへの応用を検討している。また、文献(T.Harada, A.Kanezaki, Y.Kuniyoshi, “The Development of Color CHLAC Features for Object Exploration in 3D Map”, Journal of Robotics Society of Japan,vol.27, no.7, pp.749-758, 2009(in Japanese))では3次元物体認識に適用している。ただし、キャリブレーションやオクルージョンの問題は扱っておらず、3次元物体認識の特徴量の検討が主眼である。現状では、キャリブレーションされたTOFカメラとCCDカメラが家庭用自律移動ロボットに用いられている例はない。
【0010】
キャリブレーションの問題に対しては、文献(M.Lindner, A.Kolb and K.Hartmann, “Data-Fusion of PMD-Based Distance-Information and High-Resolution RGB-Images”, in Proc. of International Symposium on Signals, Circuits and Systems, vol.1, pp.1-4, July 2007)、文献(S.Fuchs and G.Hirzinger, “Extrinsic and depth calibration of ToF-cameras”, in Proc. of IEEE Conf. on Computer Vision and Pattern Recognition, pp.1-6, June 2008)、文献(Y.Min Kim, D.Chan, C.Theobalt and S.Thrun, “Design and Calibration of a Multi-view TOF Sensor Fusion System”, in Proc. of IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshops, pp.1-7, June 2008)で検討されているが、多くはTOFカメラの距離情報の補正が主眼となっている。また、TOFカメラとCCDカメラのオクルージョンの問題を扱っているものはない。
【課題を解決するための手段】
【0011】
上記目的を達成するために、本発明は、距離画像センサと輝度画像センサとを有する撮像装置であって、前記距離画像センサで得られた距離画像及び前記輝度画像センサで得られた輝度画像とを用いて、外部パラメータの推定を行う外部パラメータ推定部と、予め記憶されている前記距離画像センサ及び前記輝度画像センサの内部パラメータと、前記外部パラメータとを用いて、前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を決定する対応画素決定部と、前記対応画素決定部が決定した前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を用いて、前記距離画像におけるオクルージョン領域を探索するオクルージョン探索部と、を備えることを特徴とする。
【0012】
前記オクルージョン探索部は、前記距離画像における画素を一方向に走査し、前記距離画像における該画素に対応する前記輝度画像における画素の移動方向が、前記一方向とは逆方向になったときの前記距離画像における画素の画素位置を、オクルージョンが開始する画素位置とする。
【0013】
前記オクルージョン探索部は、前記距離画像における画素に対応する前記輝度画像における画素の画素位置が、移動方向が変わる直前の前記輝度画像における画素の画素位置より前記一方向側となる直前の前記距離画像における画素の画素位置を、該一方向におけるオクルージョンが終了する画素位置とする。
【0014】
前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を用いて、前記オクルージョン領域以外の前記距離画像における画素の距離情報に、該画素に対応する前記輝度画像の画素の輝度情報をマッピングするマッピング部を備える。
【0015】
少なくとも2つの前記輝度画像センサを備え、前記マッピング部は、前記オクルージョン探索部により、一方の前記輝度画像センサで撮像された前記輝度画像を用いて探索された前記距離画像におけるオクルージョン領域の画素の距離情報に、該画素に対応する他方の前記輝度画像センサで撮像された前記輝度画像の画素の輝度情報をマッピングする。
【0016】
上記目的を達成するために、本発明は、距離画像センサと輝度画像センサとを有するコンピュータが実行するオクルージョン領域の探索方法であって、前記距離画像センサで得られた距離画像及び前記輝度画像センサで得られた輝度画像とを用いて、外部パラメータの推定を行う工程と、予め記憶されている前記距離画像センサ及び前記輝度画像センサの内部パラメータと、前記外部パラメータとを用いて、前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を決定する工程と、決定された前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を用いて、前記距離画像におけるオクルージョン領域を探索する工程と、を備えることを特徴とする。
【0017】
上記目的を達成するために、本発明は、プログラムであって、距離画像センサと輝度画像センサとを有するコンピュータを、前記距離画像センサで得られた距離画像及び前記輝度画像センサで得られた輝度画像とを用いて、外部パラメータの推定を行う外部パラメータ推定部、予め記憶されている前記距離画像センサ及び前記輝度画像センサの内部パラメータと、前記外部パラメータとを用いて、前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を決定する対応画素決定部、前記対応画素決定部が決定した前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を用いて、前記距離画像におけるオクルージョン領域を探索するオクルージョン探索部、として機能させることを特徴とする。
【発明の効果】
【0018】
本願発明によれば、予め記憶されている距離画像センサ及び輝度画像センサの内部パラメータと、推定した外部パラメータとを用いて、前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を決定し、決定した前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を用いて、前記距離画像におけるオクルージョン領域を探索するので、オクルージョン領域を探索することができ、オクルージョンを除去することが可能となる。距離画像における画素位置と輝度画像における画素位置との対応関係を決定するので、輝度情報がマッピングされた距離画像を得ることが可能となる。
【0019】
また、前記距離画像における画素を一方向に走査し、前記距離画像における該画素に対応する前記輝度画像における画素の移動方向が、前記一方向とは逆方向になったときの前記距離画像における画素の画素位置を、オクルージョンが開始する画素位置とするので、精度良くオクルージョン領域の開始画素を探索することができる。
【0020】
前記距離画像における画素に対応する前記輝度画像における画素の画素位置が、移動方向が変わる直前の前記輝度画像における画素の画素位置より前記一方向側となる直前の前記距離画像における画素の画素位置を、該一方向におけるオクルージョンが終了する画素位置とするので、精度よくオクルージョン領域の終了画素を探索することができる。
【0021】
前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を用いて、前記オクルージョン領域以外の前記距離画像における画素の距離情報に、該画素に対応する前記輝度画像の画素の輝度情報をマッピングするので、輝度情報を有する距離画像を得ることができる。
【0022】
少なくとも2つの前記輝度画像センサを備え、前記マッピング部は、前記オクルージョン探索部により、一方の前記輝度画像センサで撮像された前記輝度画像を用いて探索された前記距離画像におけるオクルージョン領域の画素の距離情報に、該画素に対応する他方の前記輝度画像センサで撮像された前記輝度画像の画素の輝度情報をマッピングするので、前記他方の輝度画像センサで撮像された輝度情報を用いてオクルージョン領域を補うことができ、オクルージョンが発生していても、綺麗な3次元画像を得ることができる。
【図面の簡単な説明】
【0023】
【図1】図1は、ロボットに設けられた撮像装置の構成を示す図である。
【図2】TOFカメラの座標系とCCDカメラの座標系との位置関係を示す図である。
【図3】色情報のマッピングを説明するための図であり、図3Aは、カラー画像を本出願のためにモノクロ化した図、図3Bは、図3Aに示す画像の奥行き(3次元情報)を示す図、図3Cは、キャリブレーションされてマッピングされた画像を示す図である。
【図4】発生するオクルージョン領域を説明する図であり、図4Aは、TOFカメラ及びCCDカメラで計測できる領域を示す図、図4Bは、TOFカメラでは計測できているがCCDカメラでは計測できていない領域を示す図、図4Cは、TOFカメラでは計測できているが、あるCCDカメラでは計測できていない領域を他のCCDカメラで補って該領域を計測する場合を示す図である。
【図5】オクルージョン領域の探索を説明するための図であり、図5Aは、オクルージョン領域を考慮しない場合のキャリブレーションされた画像を示し、図5Bは、オクルージョン領域を考慮した場合のキャリブレーションされた画像を示す。
【図6】実験環境とロボットを示す図であり、図6Aは、実験でロボットが動作するリビングルームを示し、図6Bは、実験で使用するロボットを示す。
【図7】図6Bに示すロボットの物体教示を示す図である。
【図8】実験に用いた物体を示す図である。
【図9】動きによる物体検出を説明するための図であり、図9Aは、図6Bに示すロボットによって検出された物体領域を示し、図9Bは、図6Bに示すロボットによって検出された物体を示す。
【図10】平面検出による物体検出を説明するための図であり、図10Aは、平面検出による物体検出の成功結果を示し、図10Bは、平面検出による物体検出の失敗結果を示す。
【図11】3次元環境地図作製を説明するための図であり、図11Aは、距離情報に色情報がマッピングされた画像の例を示し、図11Bは、図11Aに示す画像のプロット座標を示し、図11Cは、構築された3次元環境地図を示す。
【図12】実施の形態にかかる撮像装置の電気的な概略構成図である。
【図13】輝度画像における画素位置(ui,vj)を説明するための図である。
【図14】オクルージョン探索の手法を説明する図であり、i=m、j=nの場合に、距離画像において選択される画素の画素位置、及び、選択した画素に対応する輝度画像における画素の画素位置を示す図である。
【図15】オクルージョン探索の手法を説明する図であり、i=m+1、j=nの場合に、距離画像において選択される画素の画素位置、及び、選択した画素に対応する輝度画像における画素の画素位置を示す図である。
【図16】オクルージョン探索の手法を説明する図であり、i=m+2、j=nの場合に、距離画像において選択される画素の画素位置、及び、選択した画素に対応する輝度画像における画素の画素位置を示す図である。
【図17】オクルージョン探索の手法を説明する図であり、i=m+3、j=nの場合に、距離画像において選択される画素の画素位置、及び、選択した画素に対応する輝度画像における画素の画素位置を示す図である。
【図18】オクルージョン探索の手法を説明する図であり、i=m+4、j=nの場合に、距離画像において選択される画素の画素位置、及び、選択した画素に対応する輝度画像における画素の画素位置を示す図である。
【図19】オクルージョン探索の手法を説明する図であり、i=m+5、j=nの場合に、距離画像において選択される画素の画素位置、及び、選択した画素に対応する輝度画像における画素の画素位置を示す図である。
【図20】オクルージョン探索の手法を説明する図であり、i=m+6、j=nの場合に、距離画像において選択される画素の画素位置、及び、選択した画素に対応する輝度画像における画素の画素位置を示す図である。
【図21】距離画像のうち、一方のCCDカメラで撮像されていない領域(オクルージョン領域)を探索する動作を示すフローチャートである。
【図22】距離画像のうち、他方のCCDカメラで撮像されていない領域(オクルージョン領域)を探索する動作を示すフローチャートである。
【図23】図21に示す動作により探索されたオクルージョン領域の輝度情報を、他方のCCDカメラで得られた輝度画像Bで補う動作を示すフローチャートである。
【発明を実施するための形態】
【0024】
本発明に係る撮像装置ついて、それを制御するプログラム及び前記撮像装置によって実行されるオクルージョン領域の探索方法との関係で好適な実施の形態を掲げ、添付の図面を参照しながら以下、詳細に説明する。
【0025】
A.カメラキャリブレーション
まず、カメラキャリブレーションについて説明する。TOFカメラ10は、精度の高い3次元情報を高速に取得することができるが、色の情報を取得することができないという問題点がある。本実施の形態では、図1に示すように、TOFカメラ(センサ)10と2台のCCDカメラ(センサ)12とを用いた3次元センサとして機能する撮像装置14を提案する。なお、この撮像装置14は、例えば、自律移動型ロボット「DiGORO」(以下、ロボット16という)に設けられる。TOFカメラ10により得られた3次元情報(距離データ)とCCDカメラ12により得られたカラー画像情報とのキャリブレーションを行うことで、高速かつ高精度に距離と色情報(輝度画像)を取得することができる3次元センサを実現可能である。ただし、距離情報と色情報とをそれぞれ独立したデータとして扱うのではなく、それらの情報を統合して一つのデータにする必要がある。そこでTOFカメラ10で得られた各画素における距離情報に対応するCCDカメラ12の画像座標を求め、距離情報に色情報をマッピングする。
【0026】
一般的に、CCDカメラ12では解像度の高い画像(例えば、1024×768)を取得するのに対し、TOFカメラ10は解像度が低い画像(例えば、176×144)しか得ることができない。また、TOFカメラ10及びCCDカメラ12は、互いに焦点距離、レンズによる歪みなどといった幾何学的な特性が異なる。異種のセンサ(カメラ)により得られた情報を同一の座標系に統合する際には、これらの問題が生じるため単純な位置合わせだけではキャリブレーションをすることができない。また、TOFカメラ10及びCCDカメラ12の設置位置により、全てのセンサで計測することができない領域が生じてしまう。これらの問題を解決して統合する手法を述べる。
【0027】
A−1.TOFカメラ10
TOFカメラ10の距離計測はタイムオブフライトの原理に基づくものである。これは、光源から出た光が視野内の対象物で反射し、TOFカメラ10に届くまでの飛行時間から距離を計測する手法である。本実施の形態では、SwissRanger社のSR4000を用いる(MESA Imaging, HYPERLINK "http://www.mesa-imaging.ch/index.php" http://www.mesa-imaging.ch/index.php 参照)。SR4000はLED光源を変調させ、CCD/CMOSイメージセンサで反射してきた変調信号の位相を計測する。計測した変調周波数をfとすると、光速cは与えられているので、距離Dは次のように定義される。
【0028】
【数1】

【0029】
この距離計測がTOFカメラ10の画素ごとに行われるので、結果として176×144画素の距離画像を得ることができる。
【0030】
A−2.パラメータの推定
カメラ(TOFカメラ10及びCCDカメラ12を総称して単にカメラと呼ぶ)により得られたデータのキャリブレーションを行うために、まずカメラのパラメータの推定を行う。カメラは、理想的には光が一点を通って撮像面に投影されるというピンホールカメラでモデル化をすることができる。ピンホールカメラモデルに基づく幾何学的キャリブレーションにおいて、カメラの位置姿勢や特性を表すパラメータは、外部パラメータ(回転、平行移動)と内部パラメータ(焦点距離、レンズ歪み係数、光学中心、画素サイズ)に分類される。外部パラメータはカメラの3次元空間における位置姿勢を表し、内部パラメータは3次元空間を2次元画像平面へ投影するためのパラメータであり、カメラそのものの特性を表している。
【0031】
これらのパラメータの推定には様々な手法が提案されているが、本システムでは、Zhangによるキャリブレーション手法を用いる。この手法は、幾何特性が既知の物体を多方向から撮影し、世界座標系と画像座標系の対応関係を求めることでパラメータを推定するものである。
【0032】
A−3.色情報のマッピング
それぞれのカメラのパラメータを求めた後、それらを用いてTOFカメラ10とCCDカメラ12の相対位置を求める。それぞれの座標系が図2に示されるような位置関係にあるとする。TOFカメラ10の座標系(X1,Y1,Z1)を基準として、CCDカメラ12の座標系(X2,Y2,Z2)への回転のパラメータをR、平行移動のパラメータをtとすると、点Pの座標について、以下の関係式が成り立つ。
【0033】
【数2】

【0034】
【数3】

【0035】
【数4】

【0036】
ただし、レンズ歪は補正されているとする。この関係より、TOFカメラ10で取得した全ての画素の3次元情報をCCDカメラ12の座標系に変換する。さらに、以下の式よりCCDカメラ12の画像座標系に変換し、その画素の色情報を結びつける。なお、f2は、CCDカメラの焦点距離である。
【0037】
【数5】

【0038】
【数6】

【0039】
以上の処理によって得られた結果を図3に示す。距離が遠く、データの信頼度の低い画素の情報は使用しないものとする。
【0040】
A−4.オクルージョン
複数のカメラの情報を統合する際には、全てのカメラによる計測ができない領域、すなわちオクルージョン領域を考慮する必要がある。本システムにおいて考えられる領域は次の4つである。
1.TOFカメラ10、CCDカメラ12共に計測可能な領域
2.TOFカメラ10のみ計測可能な領域
3.CCDカメラ12のみ計測可能な領域
4.TOFカメラ10、CCDカメラ12共に計測不能な領域
【0041】
ここではTOFカメラ10で取得した距離情報にCCDカメラ12で取得した色情報をマッピングするため、この中で考えるべき領域は上記2.のみである。
【0042】
図4にオクルージョンが発生する例を示す。図4Bでは、TOFカメラ10では計測できているがCCDカメラ12では計測できていない。この場合、TOFカメラ10で取得した座標をCCDカメラ12の座標に変換し、画像座標系に射影すると、手前の領域の情報を得てしまうことになる。よってオクルージョン領域を考慮しない場合は、図5Aのような結果となる。この領域の情報を除去するために、オクルージョン領域の探索をしなければならない。このために、Zバッファを用いることも考えられるが、本実施の形態ではより高速に探索する手法を提案する。
【0043】
注目する点がオクルージョン領域かどうかという判断は、マッピング過程での画像の走査時に行う。基本的な考え方は、TOFカメラ10とCCDカメラ12とが横方向に(地面に対して略水平方向)に設けられている場合は、TOFカメラ10の各画素位置に対応するCCDカメラ12の画素位置を横方向に走査していくと、必ず一方向に移動するが、オクルージョン領域に入ると逆方向に移動するという性質を利用するものである。つまり、TOFカメラ10の画素位置を横方向(例えば、左から右への一方向)に走査していくと、TOFカメラ10の画素位置に対応するCCDカメラ12の画素位置も一方向に移動するが、オクルージョン領域では、TOFカメラ10の画素位置に対応するCCDカメラ12の画素位置が逆方向に移動する。オクルージョン領域探索のアルゴリズムを次に示す。なお、TOFカメラ10及びCCDカメラ12の撮像素子は、画素が行列状に配置されているものとする。
【0044】
(1)TOFカメラ10のNu×Nvの全ての画素に対して、対応するCCDカメラ12の画素を求め、TOFカメラ10の画像座標(ui,vj)に対応するCCDカメラ12の座標を(U(ui),V(vj))とする。
【0045】
(2)vj行について、U(ui)<U(ui-1)となる画素をiの値を増加させながら探索する。見つかれば(3)へ進み、見つからなければ(2)へ戻る。i=Nuであれば(4)へ進む。
【0046】
(3)U(ui-1)<U(ui+k)となる画素をkの値を増加させながら探索する。見つかればi=i+kとして(2)へ戻り、見つからなければ(ui+k,vj)の結びつきを削除し(3)へ戻る。i+k=Nuであれば(4)へ進む。
【0047】
(4)jの値を増加させ(2)へ戻る。j=Nvであれば終了する。
【0048】
実際にこの処理を行った結果を図5Bに示す。ただし、これは左CCDカメラ12とTOFカメラ10についてキャリブレーションにおいてのオクルージョン探索であり、右CCDカメラ12とのキャリブレーションについてはアルゴリズムが異なり、i=Nuから減少させる方向に走査することになる。
【0049】
オクルージョンによって得られなかった領域の情報は、図4Cで示すように、もう一台のカメラで取得することができる。左CCDカメラ12で計測できない点は右CCDカメラ12で補い、逆に右CCDカメラ12で計測できない点は左CCDカメラ12で補う。最終的にそれらの情報を統合するとで、欠落の少ない情報となる。
【0050】
B.画像処理への応用
ロボット16は、図6Aのような一般的なリビングルームで動作し、実験は全てここで行うものとする。撮像装置14における画像処理について、例を以下に示す。
【0051】
B−1.未知物体の検出
物体の情報を取得するためには、対象となる物体のみをシーンから抽出しなければならない。しかし、未知物体の抽出に対しては、物体の形状や色などに関する事前知識は使用できない。そのため、複雑な背景下では物体領域と非物体領域の区別ができず、検出が困難である。TOFカメラ10及び2台のCCDカメラ12によって取得された情報を用いて、2つの手法で物体の検出を行う。
【0052】
B−1−1.動きによる物体検出
視野内の動くかたまりは物体であるという事前知識を与え、情景中から物体を検出することを可能とする。これは人間の選択的注視過程の概念を画像処理に適用したものである。まず、距離情報に色情報がマッピングされたフレーム間の差分によって得られた画像情報から入力画像中の注目すべき領域(初期領域)を検出する。この初期領域は画像中の動きのある領域を検出するだけであり、物体の輪郭としては正確さに欠ける。しかし、この初期領域には注目物体が含まれる可能性が高く、該初期領域内の情報を利用することが可能であると考えられる。初期領域内の距離のヒストグラムf(d)と色相のヒストグラムg(h)を取得し、それぞれを確率密度関数として扱い、距離画像D(x,y)と色相画像H(x,y)について物体の確率を表すマップを生成する。距離物体確率マップをPD、色相物体確率マップをPHとすると、
【0053】
【数7】

【0054】
【数8】

となる。さらに2つの確率マップをそれぞれ重みwd、whを用いて足し合わせたものを最終的な物体の確率マップPOとして、物体の検出を行う。ただし重みは、それぞれの情報の分散により自動的に調整される。
【0055】
【数9】

【0056】
次に、物体検出の精度を評価するために行った実験について述べる。実験では、図7のように、リビングルームでユーザがロボット16に対して未知の物体を動かしながら見せる。物体は図8に示すような一般的な物、計50個を用いた。ロボット16はユーザが物体を見せ始めてから50フレーム分の画像を取得し、その間注目物体の切り出しを行う。動きによって物体を検出した結果を図9に示す。各フレームにおける切り出し結果を、次の6パターンに分類し、評価を行った。
【0057】
[1]90%以上の物体領域が抽出されている。
【0058】
[2]物体以外の領域を若干含んでいる。
【0059】
[3]物体の一部が欠けている。
【0060】
[4]物体以外の領域を大きく含んでいる。
【0061】
[5]物体領域が大きく欠けている。
【0062】
[6]物体の領域とは異なるところが抽出されている。
【0063】
このうち[1]〜[3]は物体の情報を得るために十分であるので切り出し成功とし、それ以外を切り出し失敗とした。実験結果を表1に示す。
【0064】
【表1】

【0065】
表1中の[1]〜[6]は上記の切り出しの分類に相当している。ステレオカメラを用いた際には、検出領域に背景が大きく含まれている場合や物体が大きく欠けてしまう場合など、物体によって精度のばらつきがあった。一方、提案する3次元センサを用いた新たなシステムでは、成功した割合が97.5%と安定して抽出ができている。ただし、TOFカメラ10は先に述べたように、赤外線を照射して跳ね返りの時間から距離を計測しているため、ペットボトルのラベルのない透明な部分や、物体の色が黒い部分は距離を正確に計測することができない可能性がある。
【0066】
B−1−2.平面検出による物体検出
物体は平面に支えられて存在しているという仮定を基に、物体を検出することができる。3次元空間上の平面は、x軸との角度θ,y軸との角度φ,原点からの距離ρの3つのパラメータで表わされ、次の式で与えられる。
【0067】
【数10】

【0068】
パラメータθ0、φ0、ρ0をもつ平面上にのる3次元点がいくつか存在するとき、それぞれの点が自身を通る全ての平面をθ−φ−ρ空間上の1つの曲面で表わすことができ、それらの曲面は、(θ0,φ0,ρ0)の1点で交わることになる。そこで、入力データからランダムで点を選び、パラメータの算出、投票を繰り返し行い、頻度の高いパラメータを求める。このパラメータで表わされる平面が、その入力データ中の「最も平面らしい面」となる。
【0069】
平面が得られた後に、全ての距離情報をその平面上に射影し、ラベリングを行うことで物体を検出することができる。平面検出を用いて物体の検出を行った例を図10に示す。テーブルや床といった平面はテクスチャが少ないことが多いため、ステレオカメラを用いた場合、視差が計算できず距離が取得できない場合が多かったが、提案する3次元センサを用いることで、精度よく平面を検出できた。また、物体検出については、距離情報をベースに行っているため、図10Bで示すように、グラスなどの距離の計測できない物体は、動きによる物体検出と同様に失敗した。
【0070】
B−2.物体の学習・認識
物体を認識する手掛かりとして、色情報、テクスチャ情報、3次元形状情報を用いる。これらの情報は常に用いることができるわけではなく、物体の性質によって使い分ける必要がある。例えば、表面にテクスチャが十分にある場合は、PCA−SIFTを用いたマッチングを行う。一方で、テクスチャがなくSIFT特徴量が十分に抽出されない物体の場合は、形状情報を利用する。色情報はヒストグラムとして利用するが、安定性が低いため、候補物体の絞り込みに利用する。
【0071】
学習時に物体の特徴として上記の情報を蓄積し、認識時にはそれらの情報と入力画像中の物体の特徴とを比較照合することでマッチングを行う。実験では、検出実験と同様に50個の物体をロボット16に見せて学習させ、それらを全て認識させた。物体の学習については、リビングルームのある一ヶ所で行うが、認識を行う場所は、物体を学習した場所を含め、それ以外にも照明条件の異なる場所を選び、計4ヶ所で2回ずつ行った。結果を表2に示す。認識率は平均して約90%であった。
【0072】
【表2】

【0073】
B−3.3次元環境地図作成
距離情報と色情報のキャリブレーションを行ったデータを用いて、未知環境での3次元環境地図を作成する。図11A、図11Bに示されるように、TOFカメラ10は画角が狭く、また解像度が低いので、広域の地図を作成するためには、複数のシーンの情報を重ね合わせなければならない。各シーンの距離情報は、ICP(Iterative Closest Point)アルゴリズムによって重ね合わせることが可能であるが、初期状態において距離情報が大まかに位置合わせされていなければならない。そこで、距離情報にマッピングされた色情報を用いて、各シーンごとにSIFT特徴点のマッチングを行うことで、初期位置を決定する。このようにして構築された3次元環境地図を図11Cに示す。
【0074】
このように、本発明は、TOFカメラ10とCCDカメラ12のキャリブレーションによる3次元センサを提案し、さらに、ロボット16の視覚システムとしての実装を行った。提案する3次元センサを用いることで、ステレオカメラよりも精度よく情報を取得することができ、取得した情報は様々な画像処理への利用が可能である。また、このシステムを実装したロボット16は、RoboCupの@Homeリーグにおいて好成績を収め、その高い実用性が実証された。
【0075】
図12は、本実施の形態の撮像装置14の電気的な概略構成図である。撮像装置14は、TOFカメラ(距離画像センサ)10、2つのCCDカメラ(輝度画像センサ)12(一方のCCDカメラ12をCCDカメラ12aと言い、他方のCCDカメラ12をCCDカメラ12bと言う)、内部パラメータ記憶部20、外部パラメータ推定部22、対応画素決定部24、マッピング部26、オクルージョン探索部28、及び画像処理部30を備える。コンピュータに所定のプログラムを読み込ませることによって、該コンピュータを内部パラメータ記憶部20、外部パラメータ推定部22、対応画素決定部24、マッピング部26、オクルージョン探索部28、及び画像処理部30として機能させることができる。つまり、TOFカメラ10及び2台のCCDカメラ12を備えたコンピュータに所定のプログラムを読み込ませることによって、本発明の撮像装置14として機能させる。前記コンピュータは、図示しないメモリを有し、前記所定のプログラムは該メモリに記憶されている。また、該メモリが内部パラメータ記憶部20として機能してもよい。
【0076】
TOFカメラ10は、CCD又はCMOS等の撮像素子及びレーザ光を照射する照射装置とを有し(図示略)、タイムオブフライト(Time of Flight)の原理により、被写体までの距離を計測することができるカメラである。簡単に説明すると、TOFカメラ10の撮像素子が、レーザ光の反射光を受光することで、レーザ光を被写体に照射してから、その反射光がTOFカメラ10の撮像素子の各画素に入射するまでの時間を計測する。これにより、画素毎に被写体までの距離を計測することができる。距離画像は、各画素における距離情報の集合体である。
【0077】
CCDカメラ12a、12bは、CCDを有し、被写体の輝度画像を取得する。なお、CCDカメラ12a、12bが、例えば、赤(R)、緑(G)、青(B)の色フィルタを有することで、被写体のカラー画像を取得することができる。本実施の形態において、輝度情報の概念に色情報も含まれる。色情報は、例えば、R、G、Bの各色の輝度情報から構成されるからである。なお、CCDカメラ12a、12bは、CMOSカメラであってもよい。要は、撮像素子を有し、2次元画像を撮像できるものであればよい。CCDカメラ12aで得られた輝度画像を輝度画像A、CCDカメラ12bで得られた輝度画像を輝度画像Bと呼ぶ。輝度画像は、各画素における輝度情報の集合体である。
【0078】
TOFカメラ10は、CCDカメラ12a、12bの間に設けられており、TOFカメラ10及びCCDカメラ12a、12bは、地面に対して略水平方向に設けられている。
【0079】
内部パラメータ記憶部20は、TOFカメラ10、CCDカメラ12a、12bの内部パラメータを記憶する。内部パラメータとは、焦点距離、レンズ歪み係数、光学中心、画素サイズ等であり、3次元空間を2次元画像平面に投影するパラメータであり、カメラそのものの特性を示すパラメータである。なお、撮像装置14は、TOFカメラ10、CCDカメラ12a、12bの内部パラメータを推定する内部パラメータ推定部を有してよく、内部パラメータ推定部が推定した該内部パラメータを記憶するようにしてもよい。内部パラメータ推定部は、TOFカメラ10により得られた距離画像と、CCDカメラ12a、12bにより得られた輝度画像とを用いて、TOFカメラ10と、CCDカメラ12a、12bとの内部パラメータを推定する。この内部パラメータの推定は、周知技術なので詳しく説明しないが、DLT手法、Tsai手法、Zhang手法によって推定することができる。
【0080】
外部パラメータ推定部22は、TOFカメラ10、CCDカメラ12a、12bの3次元空間における位置、姿勢等を示すパラメータであり、DLT手法、Tsai手法、Zhang手法によって推定することができる。外部パラメータ推定部22は、TOFカメラ10により得られた距離画像と、CCDカメラ12a、12bにより得られた輝度画像とを用いて、TOFカメラ10と、CCDカメラ12a、12bとの外部パラメータを推定する。
【0081】
対応画素決定部24は、内部パラメータ及び外部パラメータを用いて、TOFカメラ10によって得られた距離画像における画素位置と、CCDカメラ12a、12bによって得られた輝度画像A、Bにおける画素位置との対応関係を決定する。つまり、距離画像における画素位置が、それぞれ輝度画像A及び輝度画像
Bのどの画素に対応するものであるかを決定する。
【0082】
上述したように、例えば、TOFカメラ10と、CCDカメラ12とが図2に示す位置関係にある場合は、TOFカメラ10の座標系(X1,Y1,Z1)を基準として、CCDカメラ12の座標系(X2,Y2,Z2)への回転のパラメータをR、平行移動のパラメータをtとすると、点Pの座標は、数2、数3、数4に示す関係式が成り立つ。この関係により、TOFカメラ10で取得した全ての画素の3次元情報をCCDカメラ12の座標系に変換する。そして、CCDカメラ12の座標系に変換されたTOFカメラ10の全ての画素の3次元情報を、数5、数6により、CCDカメラ12の画像座標系に変換する。この原理により、距離画像における画素位置と輝度画像A及びBにおける画素位置との対応関係を決定することができる。
【0083】
マッピング部26は、対応画素決定部24が決定した距離画像における画素位置と輝度画像における画素位置との対応関係を用いて、距離画像における画素の距離情報と、該画素に対応する輝度画像における画素の輝度情報とを関連付ける(結びつける)。つまり、距離画像のオクルージョン領域の各画素における距離情報に、対応する画素の輝度情報をマッピングする。これにより、距離画像と輝度画像とを統合することができる。
【0084】
詳しくは、マッピング部26は、距離画像のうち、後述するオクルージョン探索部28により探索された輝度画像Aに対するオクルージョン領域以外の画素の距離情報に、該画素に対応する輝度画像Aの画素の輝度情報をマッピングする。また、マッピング部26は、距離画像のうち、輝度画像Aに対するオクルージョン領域の画素の距離情報に、該画素に対応する輝度画像Bの画素の輝度情報をマッピングする。
【0085】
オクルージョン探索部28は、距離画像における画素位置と輝度画像における画素位置の対応関係を用いて、距離画像におけるオクルージョン領域を探索する。詳しくは、オクルージョン探索部28は、距離画像のうち、CCDカメラ12aによって撮像されない画像領域(輝度画像Aに対するオクルージョン領域)と、CCDカメラ12bによって撮像されない画像領域(輝度画像Bに対するオクルージョン領域)を探索する。このオクルージョン領域の探索については後で詳しく述べる。
【0086】
画像処理部30は、上述したように、輝度情報が統合された距離画像に対して、物体検出処理、物体の学習・認識処理、及び3次元環境地図作成処理等を行う。なお、画像処理部30は、輝度情報が統合された距離画像に対して、上述した以外の画像処理を施してもよい。
【0087】
図13は、輝度画像における画素位置(ui,vj)を説明するための図である。uiは、行方向の画素位置を示し、vjは、列方向の画素位置を示す。但し、i=1,2,3,・・・,Nu、j=1,2,3,・・・,Nv、とする。
【0088】
輝度画像のうち、一番左上の画素位置を(u1,v1)とし、画素位置が右になるにつれ、行方向の画素位置の位置を示すuiのiは、2、3、4,・・・、Nuというように値が増加する。また、画素位置が下になるにつれ、列方向の画素位置を示す画素位置のvjのjは、2、3、4、・・・、Nvというように値が増加する。なお、距離画像はNu×Nv個の画素によって得られた情報であり、TOFカメラ10の撮像素子は、Nu×Nv個の画素を有する。
【0089】
次に、図14〜図20を用いてオクルージョン領域の探索手法を説明する。図14に示す画素50は、距離画像の中から選択した1の画素であり、該画素50の画素位置を(um,vn)とし(i=m,j=n)、選択した該画素50に対応する輝度画像における画素52の画素位置を(U(um),V(vn))とする。iをi+1にすると(選択する画素50を1つ右にずらすと)、図15に示すように、新たに選択される画素50の画素位置は(um+1,vn)となり、画素位置(um+1,vn)に対応する画素52の画素位置は(U(um+1),V(vn))となる。
【0090】
その後、iをi+1にすると、図16に示すように、新たに選択される画素50の画素位置は(um+2,vn)となり、画素位置(um+2,vn)に対応する画素52の画素位置は(U(um+2),V(vn))となる。さらに、iをi+1にすると、図17に示すように、新たに選択される画素50の画素位置は(um+3,vn)となり、画素位置(um+3,vn)に対応する画素52の画素位置は(U(um+3),V(vn))となる。
【0091】
このように、距離画像の画素50を一方向に走査していくと(選択する画素50を右方向にずらしていくと)、該距離画像の画素50に対応する輝度画像の画素52も前記一方向に移動する。しかしながら、オクルージョン領域が開始する画素は、距離画像の画素50の移動方向と逆方向に移動する。その性質を利用してオクルージョン領域を探索する。
【0092】
図17に示す状態で、さらに、iをi+1にすると、図18に示すように、新たに選択される画素50の画素位置は(um+4,vn)となり、画素位置(um+4,vn)に対応する画素52の画素位置は(U(um+4),V(vn))となる。しかしながら、図18に示すように、画素位置(U(um+4),V(vn))は、前回の画素位置(U(um+3),V(vn))より左側にあり、移動方向が反対になる。したがって、輝度画像の画素52の移動方向が、距離画像の画素50の移動方向と逆方向になったときの距離画像の画素50が、n列のオクルージョンの開始画素となる。つまり、画素位置(um+4,vn)が、n列のオクルージョンが開始する画素位置となる。ここで、輝度画像の画素52の移動方向が変わる直前の輝度画像の画素を参照符号54で表す。
【0093】
その後、iをi+1にすると、図19に示すように、新たに選択される画素50の画素位置は(um+5,vn)となり、画素位置(um+5,vn)に対応する画素52の画素位置は(U(um+5),V(vn))となる。画素52の画素位置(U(um+5),V(vn))は、画素54の画素位置(U(um+3),V(vn))より左側(移動方向とは反対側)にあるので、画素位置(um+5,vn)はオクルージョン領域の画素位置となる。
【0094】
図19に示す状態で、さらに、iをi+1にすると、図20に示すように、新たに選択される画素50の位置は(um+6,vn)となり、画素位置(um+6,vn)に対応する画素52の画素位置は(U(um+6),V(vn))となる。画素52の画素位置(U(um+6),V(vn))は、画素54の画素位置(U(um+3),V(vn))より右側(移動方向側)となるので、画素位置(um+6,vn)はオクルージョン領域とならない。したがって、画素位置(um+5,vn)が、オクルージョン領域が終了する画素位置となる。図20において、探索されたオクルージョン領域の画素を参照符号56で表す。つまり、画素54の画素位置(U(um+3),V(vn))より左側(移動方向と反対側)であり、且つ、画素位置(U(um+3),V(vn))に最も近い画素位置(U(um+5),V(vn))に対応する距離画像における画素位置(um+5,vn)が、オクルージョン領域が終了する画素位置となる。
【0095】
次に、本実施の形態の撮像装置14の動作を図21〜図23のフローチャートにしたがって説明する。
【0096】
図21は、距離画像のうち、CCDカメラ12aで撮像されていない領域(輝度画像Aに対するオクルージョン領域)を探索する動作を示すフローチャートであり、図22は、距離画像のうち、CCDカメラ12bで撮像されていない領域(輝度画像Bに対するオクルージョン領域)を探索する動作を示すフローチャートであり、図23は、図21に示す動作により探索されたオクルージョン領域の輝度情報を、CCDカメラ12bで得られた輝度画像Bで補う動作を示すフローチャートである。なお、距離画像における画素位置を、(ui,vj)で表し、該画素位置(ui,vj)に対応する輝度画像A及び輝度画像Bにおける画素位置を、それぞれ(UA(ui),VA(vj))、(UB(ui),VB(vj))で表す。u1、UA(ui)、UB(ui)は行方向の画素位置を示し、vj、UA(vj)、UB(vj)は列方向の画素位置を示すものとする。また、行方向の画素位置ui、UA(ui)、UB(ui)の値は、より右側にある画素位置の方が大きいものとする。
【0097】
まず、図21のフローチャートにしたがって、輝度画像Aに対するオクルージョンの探索動作を説明する。対応画素決定部24は、距離画像における各画素位置と、輝度画像Aにおける各画素位置との対応関係を決定する(ステップS1)。
【0098】
次いで、オクルージョン探索部28は、i=2,j=1に設定する(ステップS2)。これにより、輝度画像Aにおける画素位置(u2,v1)の画素が選択されることになる。
【0099】
次いで、オクルージョン探索部28は、行方向の画素位置UA(ui)が行方向の画素位置UA(ui-1)より小さいか(UA(ui)<UA(ui-1)の関係式を満たすか)否かを判断する(ステップS3)。つまり、現在選択している距離画像の画素の画素位置(ui,vj)に対応する輝度画像Aにおける画素の画素位置(UA(ui),VA(vj))が、前回選択した距離画像の画素の画素位置(ui-1,vj)に対応する輝度画像Aにおける画素の画素位置(UA(ui-1),VA(vj))より左側(走査方向側とは反対側)にあるか否かを判断している。図21のフローチャートにおける走査方向とは、iの値を大きくした場合に選択される画素の画素位置(ui,vj)が移動する方向をいう。つまり、この場合、走査方向は図13でいうところの右方向となる。
【0100】
これにより、現在選択している距離画像の画素位置(ui,vj)がオクルージョン領域の開始画素位置であるかを判断することができる。つまり、行方向の画素位置UA(ui)がUA(ui-1)より小さい場合は、選択される画素位置(UA(ui),VA(vj))の移動方向が変わったと判断し、現在選択している画素位置(ui,vj)を、オクルージョン領域が開始する画素位置と判断する。
【0101】
ステップS3で、行方向の画素位置UA(ui)が行方向の画素位置UA(ui-1)より小さくないと判断すると、オクルージョン探索部28は、マッピング部26に、現在選択している画素の画素位置(ui,vj)の距離情報と、該画素に対応する輝度画像Aにおける画素位置(UA(ui),VA(vj))の輝度情報とを関連付けさせる(ステップS4)。つまり、マッピング部26は、現在選択している画素位置(ui,vj)の距離情報に、画素位置(UA(ui),VA(vj))の輝度情報をマッピングする。
【0102】
次いで、オクルージョン探索部28は、現在設定されているiがNuと同じ値であるか否かを判断する(ステップS5)。つまり、現在設定しているiが、i=Nuの関係式を満たすか否かを判断する。ステップS5で、i=Nuの関係式を満たさないと判断すると、ステップS6に進み、オクルージョン探索部28は、i=i+1にして(iをインクリメントして)、ステップS3に戻る。これにより、選択する距離画像における画素を走査方向に1つ移動させることできる。
【0103】
一方で、ステップS3で、行方向の画素位置UA(ui)が行方向の画素位置UA(ui-1)より小さいと判断すると、オクルージョン探索部28は、現在選択している画素位置(ui,vj)を、オクルージョン領域が開始する画素位置であると判断して、k=1に設定する(ステップS7)。ステップS3で判断されるオクルージョン領域が開始する画素位置は、図18で示すところの画素50の画素位置(um+4,vn)に相当する。
【0104】
次いで、オクルージョン探索部28は、行方向の画素位置UA(ui-1)が行方向の画素位置UA(ui+k)より小さいか(UA(ui-1)<UA(ui+k)の関係式を満たすか)否かを判断する(ステップS8)。つまり、距離画像の画素の画素位置(ui+k,vj)に対応する輝度画像Aにおける画素位置(UA(ui+k),VA(vj))が、移動方向が変わる直前の輝度画像Aにおける画素の画素位置(UA(ui-1),VA(vj))より右側(走査方向側)にあるか否かを判断する。移動方向が変わる直前の輝度画像Aにおける画素の画素位置(UA(ui-1),VA(vj))は、図18〜図20で示すところの画素54の画素位置(U(um+3),V(vn))に相当する。これにより、オクルージョン領域が終了したかを判断することができる。
【0105】
ステップS8で、行方向の画素位置UA(ui-1)が行方向の画素位置UA(ui+k)より小さくないと判断すると、ステップS9に進み、オクルージョン探索部28は、k=k+1にして(kをインクリメントして)、ステップS8に戻る。
【0106】
一方で、ステップS8で、行方向の画素位置UA(ui-1)が行方向の画素位置UA(ui+k)より小さいと判断すると、オクルージョン探索部28は、画素位置(ui+k-1,vj)を、オクルージョン領域が終了する画素位置であると判断し、輝度画像Aに対するオクルージョン領域の画素位置(ui,vj)〜(ui+k-1,vj)を前記メモリに記憶する(ステップS10)。例えば、現在設定されているkが2の場合は、画素位置(ui,vj)と画素位置(ui+1,vj)とがオクルージョン領域となる。
【0107】
ステップS8〜ステップS10での画素位置(ui,vj)は、ステップS3で、オクルージョン領域が開始すると判断された画素位置であり、現在選択されている画素位置でもある。また、画素位置(ui+k-1,vj)は、図19で示すところの画素50の画素位置(um+5,vn)に相当する。言い換えるならば、画素位置(ui+k-1,vj)は、輝度画像Aにおける画素の画素位置の移動方向が変わる直前の画素位置(UA(ui-1),VA(vj))(図18〜図20で示すところの画素54の画素位置(U(um+3),V(vn)に相当する)より走査方向側になる直前の輝度画像Aにおける画素位置(UA(ui+k-1),VA(vj))に対応する距離画像における画素位置である。画素位置(UA(ui+k-1),VA(vj))は、図19で示すところの画素52の画素位置(U(um+5),V(vn))に相当する。
【0108】
次いで、オクルージョン探索部28は、i=i+kに設定して(ステップS11)、ステップS4に戻る。これにより、画素位置(ui,vj)の画素が新たに選択され、ステップS4で、新たに選択された画素位置(ui,vj)の距離情報と、新たに選択された画素(ui,vj)に対応する輝度画像Aにおける画素位置(UA(ui),VA(vj))の輝度情報とが関連付けられる。
【0109】
ステップS5で、i=Nuの関係式を満たすと判断すると、オクルージョン探索部28は、現在設定しているjがNvと同じ値であるか否かを判断する(ステップS12)。つまり、現在設定しているjが、j=Nvの関係式を満たすか否かを判断する。ステップS12で、j=Nvの関係式を満たさないと判断すると、オクルージョン探索部28は、i=2,j=j+1に設定して(ステップS13)、ステップS3に戻る。これにより、列単位毎でオクルージョン領域を探索することができる。一方、ステップS12で、j=Nvの関係式を満たすと判断すると、オクルージョンの探索を終了する。
【0110】
このように、距離画像のうち、輝度画像Aに対するオクルージョン領域の画素位置(ui,vj)の距離情報に、輝度情報をマッピングしないので、オクルージョンを除去することができる。
【0111】
次に、図22のフローチャートにしたがって、輝度画像Bに対するオクルージョンの探索動作を説明する。対応画素決定部24は、距離画像における各画素位置と、輝度画像Bにおける各画素位置との対応関係を決定する(ステップS21)。
【0112】
次いで、オクルージョン探索部28は、i=Nu−1,j=1に設定する(ステップS22)。これにより、輝度画像Bにおける画素位置(uNu-1,v1)の画素が選択されることになる。
【0113】
次いで、オクルージョン探索部28は、行方向の画素位置UB(ui)が行方向の画素位置UB(ui+1)より大きいか(UB(ui)>UB(ui+1)の関係式を満たすか)否かを判断する(ステップS23)。つまり、現在選択している距離画像の画素の画素位置(ui,vj)に対応する輝度画像Bにおける画素の画素位置(UB(ui),VB(vj))が、前回選択した距離画像の画素の画素位置(ui+1,vj)に対応する輝度画像Bにおける画素の画素位置(UB(ui+1),VB(vj))より右側(走査方向側とは反対側)にあるか否かを判断している。図22のフローチャートにおける走査方向とは、iの値を小さくした場合に選択される画素位置(ui,vj)が移動する方向をいう。つまり、この場合、走査方向は図13でいうところの左方向となる。
【0114】
これにより、現在選択している距離画像の画素位置(ui,vj)がオクルージョン領域の開始画素位置であるかを判断することができる。つまり、行方向の画素位置UB(ui)がUB(ui+1)より大きい場合は、選択される画素位置(UB(ui),VB(vj))の移動方向が変わったと判断し、現在選択している画素位置(ui,vj)を、オクルージョン領域が開始する画素位置と判断する。
【0115】
ステップS23で、行方向の画素位置UB(ui)が行方向の画素位置UB(ui+1)より大きくないと判断すると、オクルージョン探索部28は、マッピング部26に、現在選択している画素の画素位置(ui,vj)の距離情報と、該画素に対応する輝度画像Bにおける画素位置(UB(ui),VB(vj))の輝度情報とを関連付けさせる(ステップS24)。つまり、マッピング部26は、現在選択している画素位置(ui,vj)の距離情報に、画素位置(UB(ui),VB(vj))の輝度情報をマッピングする。
【0116】
次いで、オクルージョン探索部28は、現在設定されているiが1であるか否かを判断する(ステップS25)。つまり、現在設定しているiが、i=1の関係式を満たすか否かを判断する。ステップS25で、i=1の関係式を満たさないと判断すると、ステップS26に進み、オクルージョン探索部28は、i=i−1にして(iをデクリメントして)、ステップS23に戻る。これにより、選択する距離画像における画素を走査方向に1つ移動させることできる。
【0117】
一方で、ステップS23で、行方向の画素位置UB(ui)が行方向の画素位置UB(ui+1)より大きいと判断すると、オクルージョン探索部28は、現在選択している画素位置(ui,vj)を、オクルージョン領域が開始する画素位置であると判断して、k=1に設定する(ステップS27)。
【0118】
次いで、オクルージョン探索部28は、行方向の画素位置UB(ui+1)が行方向の画素位置UB(ui-k)より大きいか(UB(ui+1)>UB(ui-k)の関係式を満たすか)否かを判断する(ステップS28)。つまり、距離画像の画素の画素位置(ui-k,vj)に対応する輝度画像Bにおける画素位置(UB(ui+k),VB(vj))が、移動方向が変わる直前の輝度画像Bにおける画素の画素位置(UB(ui+1),VB(vj))より左側(走査方向側)にあるか否かを判断する。これにより、オクルージョン領域が終了したかを判断することができる。
【0119】
ステップS28で、行方向の画素位置UB(ui+1)が行方向の画素位置UB(ui-k)より大きくないと判断すると、ステップS29に進み、オクルージョン探索部28は、k=k+1にして(kをインクリメントして)、ステップS28に戻る。
【0120】
一方で、ステップS28で、行方向の画素位置UB(ui+1)が行方向の画素位置UB(ui-k)より大きいと判断すると、オクルージョン探索部28は、画素位置(ui-k+1,vj)を、オクルージョン領域が終了する画素位置であると判断し、輝度画像Bに対するオクルージョン領域の画素位置(ui,vj)〜(ui-k+1,vj)を前記メモリに記憶する(ステップS30)。例えば、現在設定されているkが2の場合は、画素位置(ui,vj)と画素位置(ui-1,vj)とがオクルージョン領域となる。
【0121】
ステップS28〜ステップS30での画素位置(ui,vj)は、ステップS23で、オクルージョン領域が開始すると判断された画素位置であり、現在選択されている画素位置でもある。
【0122】
次いで、オクルージョン探索部28は、i=i−kに設定して(ステップS31)、ステップS24に戻る。これにより、画素位置(ui,vj)の画素が新たに選択され、ステップS24で、新たに選択された画素位置(ui,vj)の距離情報と、新たに選択された画素(ui,vj)に対応する輝度画像Bにおける画素位置(UB(ui),VB(vj))の輝度情報とが関連付けられる。
【0123】
ステップS25で、i=1の関係式を満たすと判断すると、オクルージョン探索部28は、現在設定しているjがNvと同じ値であるか否かを判断する(ステップS32)。つまり、現在設定しているjが、j=Nvの関係式を満たすか否かを判断する。ステップS32で、j=Nvの関係式を満たさないと判断すると、オクルージョン探索部28は、i=Nu−1,j=j+1に設定して(ステップS33)、ステップS23に戻る。これにより、列単位毎でオクルージョン領域を探索することができる。一方、ステップS32で、j=Nvの関係式を満たすと判断すると、オクルージョンの探索を終了する。
【0124】
このように、距離画像のうち、輝度画像Bに対するオクルージョン領域の画素位置(ui,vj)の距離情報に、輝度情報をマッピングしないので、オクルージョンを除去することができる。
【0125】
なお、輝度画像Bに対するオクルージョン領域の探索の走査方向を、輝度画像Aに対するオクルージョン領域の探索の走査方向と逆にしたが、同じにしてもよい。この場合は、輝度画像Bに対するオクルージョン領域の探索は、図21に示すフローチャートと同様の動作を経ることになる。
【0126】
次に、図23のフローチャートにしたがって、オクルージョン領域の輝度情報を補う動作を説明する。マッピング部26は、i=2,j=1に設定する(ステップS51)。これにより、画素位置(u2,v1)の画素が選択されることになる。
【0127】
次いで、マッピング部26は、選択した該画素位置(ui,vj)が輝度画像Aに対してオクルージョン領域であるか否かを判断する(ステップS52)。この判断は、選択した画素位置が、図21のステップS10で輝度画像Aに対するオクルージョン領域として前記メモリに記憶されているか否かによって判断する。
【0128】
ステップS52で、現在選択している画素位置(ui,vj)が輝度画像Aに対してオクルージョン領域でないと判断すると、マッピング部26は、現在設定されているiがNuと同じ値であるか否かを判断する(ステップS53)。つまり、現在設定されているiが、i=Nuの関係式を満たすか否かを判断する。ステップS53で、i=Nuの関係式を満たさないと判断すると、ステップS54に進み、マッピング部26は、i=i+1にして(iをインクリメントして)、ステップS52に戻る。
【0129】
一方で、ステップS52で、現在選択している画素位置(ui,vj)が輝度画像Aに対してオクルージョン領域であると判断すると、マッピング部26は、現在選択している画素位置(ui,vj)が輝度画像Bに対してオクルージョン領域であるか否かを判断する(ステップS55)。この判断は、選択した画素位置(ui,vj)が、輝度画像Bに対するオクルージョン領域として前記メモリに記憶されているか否かによって判断する。
【0130】
ステップS55で、現在選択している画素位置(ui,vj)が輝度画像Bに対してオクルージョン領域でないと判断すると、マッピング部26は、画素位置(ui,vj)の距離情報と、該画素位置(ui,vj)に対応する輝度画像Bにおける画素位置(UB(ui),UB(vj))の輝度情報とを関連付けて(ステップS56)、ステップS53に戻る。つまり、現在選択している画素位置(ui,vj)の距離情報に、画素位置(UB(ui),UB(vj))の輝度情報をマッピングする。このように、距離画像のうち、輝度画像Aに対するオクルージョン領域の画素位置(ui,vj)の距離情報に、輝度画像Bの輝度情報をマッピングするので、オクルージョンを除去することができるとともに、オクルージョン領域に正しい色情報がマッピングされた距離画像を得ることができ、綺麗な3次元画像を得ることができる。
【0131】
一方で、ステップS55で、現在選択している画素位置(ui,vj)が輝度画像Bに対してオクルージョン領域であると判断すると、マッピング部26は、現在選択している画素位置(ui,vj)の距離情報と、予め定められた輝度情報(例えば、黒や白などの予め定められた輝度情報)とを関連付けて(ステップS57)、ステップS53に戻る。つまり、現在選択している画素位置(ui,vj)の距離情報に予め定められた輝度情報をマッピングする。これにより、オクルージョンを除去することができる。
【0132】
ステップS53で、i=Nuの関係式を満たすと判断すると、マッピング部26は、現在設定されているjがNvと同じ値であるか否かを判断する(ステップS58)。つまり、現在設定されているjが、j=Nvの関係式を満たすか否かを判断する。ステップS58で、j=Nvの関係式を満たさないと判断すると、ステップS59に進み、マッピング部26は、i=2,j=j+1に設定して、ステップS52に戻る。ステップS58で、j=Nvの関係式を満たすと判断されると、オクルージョン領域の輝度情報を補う動作を終了する。
【0133】
なお、上記図21に示すオクルージョンの探索動作では、オクルージョン領域を探索すると共に、オクルージョン領域でない画素位置(ui,vj)に輝度情報をマッピングするようにしたが、オクルージョン領域であるか否かにかかわらず、距離画像における各画素の画素位置(ui,vj)の距離情報に、該各画素にそれぞれ対応する輝度画像Aにおける画素位置(UA(ui),UA(vj))の輝度情報をマッピングしてもよい。この場合は、輝度情報をマッピングした後に、輝度画像Aに対する距離画像のオクルージョン領域の探索を行う。探索した結果、オクルージョン領域がある場合は、探索されたオクルージョン領域の画素位置(ui,vj)の距離情報と、該画素位置に対応する輝度画像Aにおける画素位置(UA(ui),UA(vj))の輝度情報との結びつきを消去し(マッピングを解除し)、オクルージョン領域の画素位置(ui,vj)の距離情報と、該画素位置に対応する輝度画像Bにおける画素位置(UB(ui),UB(vj))の輝度情報をマッピングする。この場合、輝度画像Aに対するオクルージョン領域と輝度画像Bに対するオクルージョン領域とが重複する領域がある場合は、該重複する領域の画素位置(ui,vj)に所定の輝度情報をマッピングする。
【0134】
このように、本実施の形態においては、距離画像における画素位置(ui,vj)と輝度画像Aにおける画素位置(UA(ui),UA(vj))との対応関係を決定し、決定した距離画像における画素位置(ui,vj)と輝度画像Aにおける画素位置(UA(ui),UA(vj))との対応関係を用いて、距離画像におけるオクルージョン領域を探索するので、オクルージョン領域を探索することができる。
【0135】
また、オクルージョン領域の探索では、距離画像における画素を一方向に走査し、距離画像における該画素に対応する輝度画像Aにおける画素の移動方向が、前記一方向とは逆方向になったときの距離画像における画素の画素位置(um+4,vn)を、オクルージョンが開始する画素位置とするので、精度良くオクルージョン領域の開始画素を探索することができる。距離画像における画素に対応する輝度画像Aにおける画素の画素位置(UA(ui),UA(vj))が、移動方向が変わる直前の輝度画像Aにおける画素の画素位置(UA(um+3),UA(vn))より前記一方向側となる直前の距離画像における画素の画素位置(um+5,vn)を、該一方向におけるオクルージョンが終了する画素位置とするので、精度よくオクルージョン領域の終了画素を探索することができる。
【0136】
距離画像における画素位置(ui,vj)と輝度画像Aにおける画素位置(UA(ui),UA(vj))との対応関係を用いて、前記オクルージョン領域以外の前記距離画像における画素の距離情報に、該画素に対応する前記輝度画像Aの画素の輝度情報をマッピングするので、輝度情報を有する距離画像を得ることができる。
【0137】
少なくとも2つのCCDカメラ12a、12bを備え、前記マッピング部26は、前記オクルージョン探索部28により、CCDカメラ12aで撮像された輝度画像Aを用いて探索された距離画像におけるオクルージョン領域の画素の距離情報に、該画素に対応するCCDカメラ12bで撮像された前記輝度画像Bの画素の輝度情報をマッピングするので、他方のCCDカメラ12bで撮像された輝度情報を用いて輝度画像Aに対するオクルージョン領域を補うことができ、オクルージョンが発生していても、綺麗な3次元画像を得ることができる。
【0138】
なお、上記実施の形態においては、TOFカメラ10、CCDカメラ12a、及びCCDカメラ12bを地面に対して略水平方向に設けるようにしたが、TOFカメラ10、CCDカメラ12a、及びCCDカメラ12bを地面に対して垂直方向に設けるようにしてもよい。この場合のオクルージョン探索の走査方向は横方向(水平方向)ではなく、縦方向(垂直方向)となる。つまり、オクルージョン探索の走査方向は、TOFカメラ10、CCDカメラ12a、及びCCDカメラ12bが設けられた方向と同じ方向となる。TOFカメラ10、CCDカメラ12a、及びCCDカメラ12bを地面に対して垂直に設ける場合であっても、TOFカメラ10は、CCDカメラ12aとCCDカメラ12bの間に設けられる。
【0139】
また、上記実施の形態においては、CCDカメラ12を2つ設けるようにしたが、CCDカメラ12は1つであってもよい。この場合に、TOFカメラ10により得られた距離画像の中に、CCDカメラ12で撮像することができないオクルージョン領域がある場合は、該領域の画素の距離情報に所定の輝度情報をマッピングし、オクルージョン領域以外の画素の距離情報に、CCDカメラ12で得られた輝度画像の輝度情報をマッピングする。また、設けるCCDカメラ12は2つではなく、3つ以上であってもよい。
【0140】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【符号の説明】
【0141】
10…TOFカメラ 12、12a、12b…CCDカメラ
14…撮像装置 16…ロボット
20…内部パラメータ記憶部 22…外部パラメータ推定部
24…対応画素決定部 26…マッピング部
28…オクルージョン探索部 30…画像処理部

【特許請求の範囲】
【請求項1】
距離画像センサと輝度画像センサとを有する撮像装置であって、
前記距離画像センサで得られた距離画像及び前記輝度画像センサで得られた輝度画像とを用いて、外部パラメータの推定を行う外部パラメータ推定部と、
予め記憶されている前記距離画像センサ及び前記輝度画像センサの内部パラメータと、前記外部パラメータとを用いて、前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を決定する対応画素決定部と、
前記対応画素決定部が決定した前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を用いて、前記距離画像におけるオクルージョン領域を探索するオクルージョン探索部と、
を備えることを特徴とする撮像装置。
【請求項2】
請求項1に記載の撮像装置であって、
前記オクルージョン探索部は、前記距離画像における画素を一方向に走査し、前記距離画像における該画素に対応する前記輝度画像における画素の移動方向が、前記一方向とは逆方向になったときの前記距離画像における画素の画素位置を、オクルージョンが開始する画素位置とする
ことを特徴とする撮像装置。
【請求項3】
請求項2に記載の撮像装置であって、
前記オクルージョン探索部は、前記距離画像における画素に対応する前記輝度画像における画素の画素位置が、移動方向が変わる直前の前記輝度画像における画素の画素位置より前記一方向側となる直前の前記距離画像における画素の画素位置を、該一方向におけるオクルージョンが終了する画素位置とする
ことを特徴とする撮像装置。
【請求項4】
請求項1〜3の何れか1項に記載の撮像装置であって、
前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を用いて、前記オクルージョン領域以外の前記距離画像における画素の距離情報に、該画素に対応する前記輝度画像の画素の輝度情報をマッピングするマッピング部を備える
ことを特徴とする撮像装置。
【請求項5】
請求項4に記載の撮像装置であって、
少なくとも2つの前記輝度画像センサを備え、
前記マッピング部は、前記オクルージョン探索部により、一方の前記輝度画像センサで撮像された前記輝度画像を用いて探索された前記距離画像におけるオクルージョン領域の画素の距離情報に、該画素に対応する他方の前記輝度画像センサで撮像された前記輝度画像の画素の輝度情報をマッピングする
ことを特徴とする撮像装置。
【請求項6】
距離画像センサと輝度画像センサとを有するコンピュータが実行するオクルージョン領域の探索方法であって、
前記距離画像センサで得られた距離画像及び前記輝度画像センサで得られた輝度画像とを用いて、外部パラメータの推定を行う工程と、
予め記憶されている前記距離画像センサ及び前記輝度画像センサの内部パラメータと、前記外部パラメータとを用いて、前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を決定する工程と、
決定された前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を用いて、前記距離画像におけるオクルージョン領域を探索する工程と、
を備えることを特徴とするオクルージョン領域の探索方法。
【請求項7】
距離画像センサと輝度画像センサとを有するコンピュータを、
前記距離画像センサで得られた距離画像及び前記輝度画像センサで得られた輝度画像とを用いて、外部パラメータの推定を行う外部パラメータ推定部、
予め記憶されている前記距離画像センサ及び前記輝度画像センサの内部パラメータと、前記外部パラメータとを用いて、前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を決定する対応画素決定部、
前記対応画素決定部が決定した前記距離画像における画素位置と前記輝度画像における画素位置との対応関係を用いて、前記距離画像におけるオクルージョン領域を探索するオクルージョン探索部、
として機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate