画像処理装置およびその制御方法
【課題】 複数の視点から撮像した画像に基づいて、より広範囲における任意の被写体の位置情報を取得する。
【解決手段】 上記課題を解決するために、本発明の画像処理装置は、第一の画像と、前記第一の画像とは異なる視点から撮像した第二の画像とを取得する取得手段と、前記第一の画像および前記第二の画像それぞれにおける被写体の特徴点を検出する検出手段と、前記第一の画像および前記第二の画像に基づいて、前記被写体の位置情報を算出する算出手段とを有し、 前記算出手段は、前記第一の画像および前記第二の画像の両方において前記特徴点が検出された場合、前記特徴点それぞれに基づいて、前記位置情報および前記被写体に対応する被写体モデルを算出し、前記第一の画像および前記第二の画像のいずれかのみにおいて前記特徴点が検出された場合は、前記被写体モデルを参照して、前記情報を算出することを特徴とする。
【解決手段】 上記課題を解決するために、本発明の画像処理装置は、第一の画像と、前記第一の画像とは異なる視点から撮像した第二の画像とを取得する取得手段と、前記第一の画像および前記第二の画像それぞれにおける被写体の特徴点を検出する検出手段と、前記第一の画像および前記第二の画像に基づいて、前記被写体の位置情報を算出する算出手段とを有し、 前記算出手段は、前記第一の画像および前記第二の画像の両方において前記特徴点が検出された場合、前記特徴点それぞれに基づいて、前記位置情報および前記被写体に対応する被写体モデルを算出し、前記第一の画像および前記第二の画像のいずれかのみにおいて前記特徴点が検出された場合は、前記被写体モデルを参照して、前記情報を算出することを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数視点から撮像した画像を用いて、被写体の位置情報を算出する技術に関する。
【背景技術】
【0002】
従来、撮像した画像から被写体の位置情報を取得し、被写体の位置情報に基づいてレンダリング処理した画像を表示する様々な手法が知られている。被写体の位置情報の取得方法について、特許文献1によればステレオ視手法と被写体記憶手法の2種類の手法が提案されている。ステレオ視手法は、複数の視点から撮像した複数の画像から被写体の位置情報を算出する手法である。また、被写体記憶手法は、予めデータベース上に用意した被写体のサイズを用いることにより、1台の撮像装置が被写体を撮像した画像から被写体の位置情報を算出する手法である。
ステレオ視手法は、異なる位置にある複数台の撮像装置が被写体を捉えた状態でないと被写体の位置情報の取得が困難である。そのため、被写体の位置情報を取得可能な範囲が制限されてしまうという問題がある。そこで、ステレオ視手法に被写体記憶手法を組み合わせることにより、被写体の位置情報を取得可能な範囲を拡大する方法が提案されている。例えば、特許文献2では視点の数が1つの場合には被写体記憶手法を、複数の視点から撮像された画像がある場合にはステレオ視手法を用いて被写体の位置情報を取得している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−132693号公報
【特許文献2】特開2004−045321号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、被写体記憶手法では画像上の被写体のサイズと被写体‐撮像装置間の距離とを1対1対応で保持している。つまり予めその大きさが既知の被写体を用いるため、任意の大きさの被写体を区別することができない。従って、正しい被写体の位置情報を得ることができない場合がある。
そこで本発明の目的は、複数の視点から撮像した画像に基づいて、より広範囲における任意の被写体の位置情報を取得することにある。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明の画像処理装置は、第一の画像と、前記第一の画像とは異なる視点から撮像した第二の画像とを取得する取得手段と、前記第一の画像および前記第二の画像それぞれにおける被写体の特徴点を検出する検出手段と、前記第一の画像および前記第二の画像に基づいて、前記被写体の位置情報を算出する算出手段とを有し、前記算出手段は、前記第一の画像および前記第二の画像の両方において前記特徴点が検出された場合、前記特徴点それぞれに基づいて、前記位置情報および前記被写体に対応する被写体モデルを算出し、前記第一の画像および前記第二の画像のいずれかのみにおいて前記特徴点が検出された場合は、前記被写体モデルを参照して、前記情報を算出することを特徴とする。
【発明の効果】
【0006】
本発明により、複数の視点から撮像した画像に基づいて、より広範囲における任意の被写体の位置情報を取得することができる。
【図面の簡単な説明】
【0007】
【図1】画像処理装置の構成図
【図2】被写体位置情報算出処理の概要図
【図3】被写体位置情報算出処理のフローチャートを示す図
【図4】被写体位置情報算出処理の概要図
【図5】特徴点の3次元座標算出処理のフローチャート
【図6】被写体モデル座標系の概要図
【図7】被写体モデル算出方法の説明図
【図8】特徴点の3次元座標推定処理のフローチャート
【図9】特徴点の3次元座標算出処理のフローチャート
【図10】被写体モデル精度算出方法の説明図
【図11】特徴点の3次元座標推定処理のフローチャート
【発明を実施するための形態】
【0008】
以下、添付図面を参照して、本発明を好適な実施例に従って詳細に説明する。なお、以下の実施例において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
【0009】
<実施例1>
本実施例では、被写体が撮像された画像の視点数が2以上の場合、複数に画像に基づき被写体の位置情報を算出するとともに、被写体モデルを生成する。一方、被写体が撮像された画像の視点数が1つの場合は、記憶された被写体モデルを用いて被写体の位置情報を推定する。
【0010】
図1は、本実施例に適用可能な画像処理装置の構成を示す図である。
図1において、CPU101は、RAM102をワークメモリとして、ROM103及びハードディスクドライブ(HDD)105に格納されたプログラムを実行し、システムバス110を介して後述する各構成を制御する。これにより、後述する様々な処理が実行される。
【0011】
HDDインタフェイス(I/F)104は、HDD105や光ディスクドライブなどの二次記憶領域を接続する。例えばシリアルATA(SATA)等のインタフェイスである。CPU101は、HDDI/F104を介して、HDD105からのデータ読み出し、およびHDD105へのデータ書き込みが可能である。
【0012】
さらにCPU101は、HDD105に格納されたデータをRAM102に展開し、同様に、RAM102に展開されたデータをHDD105に保存することが可能である。そしてCPU101は、RAM102に展開したデータをプログラムとみなし、実行することができる。
【0013】
入力インタフェイス(I/F)106は、キーボードやマウス、デジタルカメラなどの2つの入力デバイス107_1、107_2を接続する。例えばUSBやIEEE1394等のシリアルバスインタフェイスである。CPU101は、入力I/F106を介して入力デバイス107_1、107_2からデータを読み込むことができる。
【0014】
出力インタフェイス(I/F)108は、画像表示装置などの出力デバイス109を接続する。例えばDVIやHDMI等の映像出力インタフェイスである。CPU101は、出力I/F108を介して出力デバイス109にデータを送り、表示を実行させることができる。本実施例では、出力デバイス109として3D映像を表示するディスプレイを例に説明する。この出力デバイスは、被写体がどの位置から視聴しているかに応じて適切な3D映像を提供する。
【0015】
図2は、2つの撮像装置および被写体の概要図を示す。図2(a)におけるデジタルカメラ107_1、107_2は入力デバイスの一例(以下、それぞれカメラ1、カメラ2と記す)である。被写体3は人を例として説明する。図2(b)が示す画像1、図2(c)が示す画像2はそれぞれカメラ1、カメラ2が撮像した画像である。コンピュータ6はこれらの画像から被写体3の位置情報を算出する。ディスプレイ109は出力デバイスの一例である。尚、本実施例においてカメラ1とカメラ2は、2台同時に被写体を撮像するものとし、得られる2つの画像のうち少なくとも1枚に被写体3の両目と両鼻孔が写っているものとする。
【0016】
図2において3次元座標系7は、基準点Oを原点、水平方向右向きをx軸、鉛直方向上向きをy軸、奥行き方向をz軸とする。基準点Oは、カメラ1のカメラ位置とカメラ2のカメラ位置の中点である。以下、この座標系を基準座標系と呼ぶ。
【0017】
また、3次元座標系8は、被写体3の両目の中点FOを原点とし、直線Mx,My,Mzを座標軸とする。以下、この座標系を被写体モデル座標系と呼ぶ。
【0018】
図3は、本実施例に適用可能な処理のフローチャートである。詳細には、図3のフローチャートに示す手順を記述したコンピュータ実行可能なプログラムをROM103あるいはHDD105からRAM102上に読み込んだ後に、CPU101によって該プログラムを実行することによって当該処理が実施される。
【0019】
以下、図3に示す各処理について説明する。
【0020】
まずステップS301において、カメラ1とカメラ2から被写体を同時に撮像した画像をそれぞれ取得する。取得した画像はRAM102や容量が大きい場合にはHDD105などに記憶される。
【0021】
ステップS302において、ステップS301において取得した画像1と画像2とから被写体の特徴点の2次元座標をそれぞれ取得する。ここでは特徴点とは、顔の4つの器官、右目、左目、右鼻孔、左鼻孔それぞれの中心点である。以下これらの特徴点をFA,FB,FC,FDと表す。図2に特徴点FA〜FDの例を示す。この図では特徴点FA,FB,FC,FDが各々右目、左目、右鼻孔、左鼻孔の中心に相当する。
【0022】
以下では、これらの各特徴点の2次元座標の取得方法について説明する。ここでは図2が示すように、被写体3が2台のカメラ1、カメラ2の共通視野範囲に存在する場合の例を説明する。
【0023】
まず、既存の顔認識技術を画像1及び画像2に適用することにより、各画像における前述した4つの顔器官を含む領域(RkA,RkB,RkC,RkD)(k=1,2)を抽出する。次に、抽出したそれぞれの領域において、中心となる2次元座標(PkA,PkB,PkC,PkD)(k=1,2)を取得する。そして、これらの2次元座標をそれぞれ特徴点FA,FB,FC,FDの2次元座標として、RAM102などに記憶する。
【0024】
ところで、被写体3は常に2台のカメラの共通視野範囲に存在するとは限らない。図4は被写体3がカメラ2の視野範囲から外れた場合を示している。図5(b)が示す画像1’はカメラ1が撮像した画像であり、図5(c)が示す画像2’はカメラ2が撮像した画像である。画像1’は、前述した処理により2次元座標(P1A,P1B,P1C,P1D)が取得可能であり、得られた2次元座標はRAM102などに記憶される。一方画像2’は、被写体3の右目が画像上に写っていないため、領域R2Aの抽出及びその中心の2次元座標P2Aの取得ができない。この場合、画像2’に関する特徴点FA〜FDの2次元座標を記憶せずに、ステップS303へ進む。
【0025】
ステップS303において、画像1及び画像2の両方に被写体の全ての特徴点が写っているか否かを判定する。画像1及び画像2それぞれにおける全ての特徴点の2次元座標がRAM102に記憶されていれば、両方の画像に各特徴点が写っていると判定し、ステップS304へ進む。画像1又は画像2のどちらか一方における特徴点の2次元座標しかRAM102に記憶されていない場合は、どちらから一方の画像にのみ被写体の全ての特徴点が写っていると判定し、ステップS305へ進む。
【0026】
ステップS304において、画像1および画像2それぞれにおける各特徴点の2次元座標(PkA,PkB,PkC,PkD)(k=1,2)から、特徴点FA〜FDの3次元座標(PA〜PD)を算出する。更に、算出した特徴点の3次元座標(PA〜PD)を用いて被写体モデルを生成し、これを記憶領域に記憶してステップS306へ進む。詳細は後述する。
【0027】
一方、ステップS305においては、まず所定の記憶領域から被写体モデルを読み込む。そして、取得した被写体モデルと、ステップS302において取得した全ての特徴点が撮像された一方の画像における特徴点の2次元座標(PkA,PkB,PkC,PkD)(k=1又は2)とから、特徴点の3次元座標(PA〜PD)を推定し、ステップS306へ進む。詳細は後述する。
【0028】
ステップS306において、ステップS304又はステップS305で求めた各特徴点の3次元座標から、被写体情報を算出する。ここでは図2で示すように、特徴点FAおよびFBの中点FOの3次元座標を、被写体の位置情報とする。基準座標系7の原点である基準点Oに対する中点FOの3次元座標POは、被写体3の特徴点の3次元座標PA,PBから算出する。また被写体の向きは、被写体モデル座標系8のMz軸の向きで、大きさを1に規格化したベクトル(zM0)の向きを被写体の向き情報とする。このベクトルzM0は、基準座標系7のz軸の向きで大きさが1に規格化されたベクトルz0と、3×3回転行列Rとを用いて算出する。被写体モデル座標系8と、回転行列Rについての詳細は後述する。
【0029】
ここで、zM0とz0との間に下記の式(1)の関係が成り立つ。
【0030】
【数1】
【0031】
したがって、ベクトルzM0はベクトルz0と回転行列Rとの積を求めることにより、算出することができる。算出した被写体の向き情報は、例えば基準点Oに対する3×1平行移動ベクトル及び3×1zM0ベクトルとしてRAM102などに記憶される。
【0032】
ステップS307において、予め記憶領域に記憶しておいた表示コンテンツを読み込む。表示コンテンツとは基準座標系における3次元画像データと、ディスプレイの表示領域サイズからなるデータである。但し記憶領域に表示コンテンツが無い場合は、被写体視点画像表示処理を終了する。
【0033】
ステップS308において、ステップS306で算出した被写体情報(ここでは、位置情報と向き情報)とステップS307で取得した表示コンテンツから、特開2001−216532号記載の方式を用いて被写体の位置に合わせた表示画像を生成する。生成した表示画像は、RAM102や容量が大きい場合にはHDD105などに記憶される。
【0034】
最後に、ステップS309において、生成した表示画像をディスプレイに表示し、処理を終了する。
【0035】
◆2つの画像に基づく特徴点の3次元座標算出処理
ステップS304における特徴点の3次元座標算出処理、及び被写体モデルの生成処理の詳細について説明する。図5は、ステップS304における3次元座標算出処理のフローチャートを用いて説明する。
【0036】
まずステップS501において、ステップS302で取得した2つの画像から取得した特徴点の各2次元座標から、特徴点の3次元座標を算出する。本実施例では、特徴点の各2次元座標と、2台のカメラそれぞれに関する内部行列及び外部パラメータを用いて、三角測量の原理により、4つの特徴点の3次元座標をそれぞれ算出する。内部行列とは、レンズの焦点距離や光軸ずれからなる3×3行列である。また、外部パラメータとは、カメラの3次元座標を表す3×1平行移動ベクトル及びカメラの向きを表す3×3回転行列である。これらの行列は、予め画像撮像時に記憶領域に記憶しておいたものを読み込むことにより取得する。
【0037】
以下、特徴点FAを例に、三角測量の原理に基づいた3次元座標の算出方法を説明する。
【0038】
基準座標系7の原点である基準点Oに対する特徴点FAの3次元座標をPA=(x,y,z)T、画像1、画像2における特徴点FAの2次元座標をそれぞれP1A=(u1A,v1A )T,P2A=(u2A,v2A )Tとすると、一般的に下記の式(2)の関係が成り立つ。
【0039】
【数2】
ここでMk,Rk,tk(k=1,2)は、それぞれ画像kを撮像した際のカメラの内部行列、回転行列、平行移動ベクトルである。上記の式(2)は、3次元座標PAについての連立方程式と見なすことができる。したがって、この連立方程式を解くことにより、特徴点FAの3次元座標PAを得ることができる。
【0040】
他の特徴点FB〜FDについても特徴点FAと同様に基準点に対する3次元座標PB,PC,PDを算出することができる。算出した各特徴点の3次元座標PA,PB,PC,PDは、RAM102に記憶される。
【0041】
ステップS502において、3次元座標PA,PB,PC,PDから被写体モデルを生成し、これを記憶領域に上書き記憶する。ここで被写体モデルとは、被写体モデル座標系で表された特徴点FA,FB,FC,FDの3次元座標の組(PMA,PMB,PMC,PMD)である。被写体モデル座標系の例を図6に示す。被写体モデル座標系は、前述したように2点FA,FBの中点FOを原点とし、直線Mx,My,Mzを座標軸とする3次元座標系である。軸Mxは、2点FA,FBを通る直線である。軸Myは、2点FC,FDの中点をQとしたときの3点FA,FB,Qを含む平面π上にあり、直線Mxと原点FOで直交する直線である。Mzは、Mx及びMyと直交する直線である。
【0042】
3次元座標PMAは、基準座標系7で表された特徴点FAの3次元座標PAを用いて、次式(3)に従い算出する。
【0043】
【数3】
ここで、Tは基準座標系7の原点Oを始点とした、被写体モデル座標系の原点FOへ向かう3×1平行移動ベクトルであり、基準座標系7で表された3次元座標PA及びPBから、式(4)に従い算出される。
【0044】
【数4】
【0045】
回転行列Rは、基準座標系’のx’,y’,z’軸を、被写体モデル座標系Mx,My,Mz軸と一致させる3×3回転行列である。但し基準座標系’とは、基準座標系をTだけ平行移動させることにより、その原点を被写体モデル座標系の原点FOと一致させた座標系である。以降、基準座標系’の各座標軸をそれぞれx’,y’,z’で表す。
回転行列Rは、基準座標系’における各座標軸周りの回転角度φ,ψ,θを用いて、一般に式(5)で表せる。
【0046】
【数5】
ここでR’x(φ),R’y(ψ),R’z(θ)は、それぞれ各座標軸周りの3×3回転行列である。したがって、基準座標系’を被写体モデル座標系と一致させる回転行列R’x(φ0)〜R’z(θ0)を求めることにより、回転行列Rを算出できる。
【0047】
以下、回転角φ0,ψ0,θ0の求め方について述べる。図7は、基本座標系’の回転を示す図である。
【0048】
・回転角θ0(図7(a))
基準座標系’において、点FAをz’軸周りに角度θだけ回転させた点の3次元座標をP’A=(x’,y’,z’)Tで表す。y’=0かつx’>0となるときのθを求め、これをθ0とする。
【0049】
・回転角ψ0(図7(b))
基準座標系’において、点FAをz’軸周りに角度θ0、y’軸周りに角度ψ回転させた点の3次元座標をP’’A=(x’’,y’’,z’’)Tで表す。z’’=0かつx’’>0となるときのψを求め、これをψ0とする。
【0050】
・回転角φ0(図7(c))
基準座標系’において、点Qをz’軸周りに角度θ0、y’軸周りに角度ψ0、x’軸周りに角度φ回転させた点の3次元座標をP’’’Q=(x’’’,y’’’,z’’’)Tで表す。z’’’=0かつy’’’<0となるときのφを求め、これをφ0とする。
【0051】
平行移動ベクトルTとR’x,R’y,R’zから算出した回転行列Rは、RAM102などに記憶される。また、算出した平行移動ベクトルTと回転行列Rから、式(3)により被写体モデル座標系における点FAの3次元座標PMAを求めることができる。他の特徴点FB〜FDについても、特徴点FAと同様に、被写体モデル座標系における3次元座標PMB,PMC,PMDを算出する。算出した(PMA,PMB,PMC,PMD)の組を被写体モデルとして、HDD105に上書き記憶する。
【0052】
◆被写体モデルと1枚の画像を用いた特徴点の3次元座標推定処理
ステップS305における被写体モデルの取得、及び各特徴点の3次元座標推定処理の詳細について説明する。図8は、ステップS305における3次元座標推定処理のフローチャートを示す。
【0053】
まず、ステップS801において、所定の記憶領域に記憶された被写体モデルを記憶領域から読み込む。但し、被写体モデルが記憶領域に無い場合は、被写体視点画像表示処理を終了する。
【0054】
ステップS802において、ステップS801で取得した被写体モデルとステップS302で算出した特徴点の2次元座標から、各特徴点の3次元座標を推定する。ここで本実施例では、例えば特開2008−232950号記載の方式を用いて特徴点の3次元座標PA,PB,PC,PDを推定する。推定した各特徴点の3次元座標PA,PB,PC,PDは、RAM102などに記憶される。
【0055】
このように、各特徴点が撮像された画像が複数ある場合は、それぞれの画像から得られる二次元座標から、各特徴点の3次元座標を算出する。それと同時に、被写体の特徴に基づく被写体モデルを生成しておく。被写体モデルは、各特徴点の全てが撮像された画像が1つしかない場合に用いられるものである。被写体モデルを参照して各特徴点の3次元座標を推定することにより、被写体が1台の撮像装置でしか検出されなかった場合でも、任意の被写体情報を算出することが可能となる。
【0056】
本実施例では、人を被写体とした例について説明したが、特徴点が検出されるものであれば良い。例えば正方形の板を被写体とし、板の4つの角にそれぞれ異なる色のマーカーをつけて、そのマーカーを特徴点としても良い。
【0057】
また、特徴点FAおよびFBの中点FOの3次元座標を被写体の位置情報として用いたが、これに限らない。4つの特徴点の各3次元座標をそのまま被写体の位置情報としてもよい。さらに、本実施例では、被写体の位置を示す位置情報と、被写体である人の向きを示す向き情報とを被写体情報として算出しているが、被写体情報とは、少なくとも被写体の位置がわかる情報であればよい。ただし、被写体の向き情報を必要とする場合は、被写体における特徴点は4つ以上検出する。
【0058】
また本実施例では、2台のカメラで被写体を撮像する例について説明したが、撮像装置の台数は2台以上であれば良い。例えば、3台の撮像装置で5つの特徴点を検出する場合、ある2台の撮像装置で撮像した画像から共通する所定の特徴点が検出されているかどうかを判定すれば良い。または、停止した被写体であれば、1つの撮像装置が複数の視点から撮像した画像を用いてもよい。
【0059】
尚、撮像した画像から算出する特徴点の2次元座標の精度を向上させる為に、画像1及び画像2に対して光軸ずれの補正処理や歪曲補正処理を行った補正画像から、各特徴点の2次元座標を算出しても良い。
【0060】
更に、被写体モデル生成に用いる座標系は、ある点に対する4つの特徴点の相対的な3次元座標が算出できれば良く、他の点を原点としても良いし、極座標や斜交座標などの他の座標系を用いても良い。
【0061】
本実施例では、特徴点の推定をフレーム毎に完結した処理で実行しているが、直前フレームの情報を用いてトラッキング処理しても良いことは言うまでも無い。
【0062】
<実施例2>
実施例1では撮像した画像を取得し、視点数が2つ以上の時には常に被写体モデルを生成する方法について説明した。
【0063】
実施例2では、生成した被写体モデルを記憶する際に、被写体モデルの精度を評価した結果に応じて、記憶する被写体モデルを取捨選択する方法について説明する。記憶する被写体モデル取捨選択することにより、被写体モデルを用いた被写体情報をより精度良く推測することが可能となる。
【0064】
なお、本実施例における処理の流れは、ステップS304以外は実施例1で図4を用いて説明した内容と同じである。前述の実施例と同様の処理については、説明を省略する。本実施例ではステップS304において、実施例1の処理に加え、ステップS302において画像から検出した各特徴点の2次元座標の精度を評価する。以下、図9を用いて本実施例におけるステップS304の3次元座標算出処理を説明する。
【0065】
まず、ステップS501において特徴点の3次元座標を算出する。
【0066】
ステップS901において、ステップS302で取得した特徴点の2次元座標の精度を算出する。図10は、特徴点の精度を説明する図である。画像1の各特徴点(FA〜FD)が、エピポーラ線(LA〜LD)上にあるかどうかを評価することにより、取得した特徴点の2次元座標の精度を算出する。例えばエピポーラ線LAの方程式は、以下の式(6)から求めることができる。
【0067】
【数6】
HmAは、エピポーラ線LA上の点mA(図10)の2次元座標PmAに対応する2次元斉次座標HmA=(x,y,1)である。H2Aは、画像2から取得した特徴点FAの2次元座標P2A=(u2A,v2A)に対応する2次元斉次座標H2A=(u2A,v2A,1)である。Fはカメラ1、カメラ2の内部行列と外部パラメータから求まる3×3基礎行列である。本実施例では、基礎行列を予め記憶領域に記憶しておくことで、エピポーラ線LAの方程式を算出する。そして、算出したエピポーラ線LAと、画像1から取得した2次元座標P1Aとの距離dAを求める。
【0068】
特徴点FB〜FDについても特徴点FAと同様に、エピポーラ線LB〜LDの方程式と、エピポーラ線と特徴点の2次元座標との距離dB〜dDを算出する。2次元座標の算出の精度ρは、例えば以下の式(7)を用いる。この場合、精度ρは値が大きいほど精度が良いと判断できる。
【0069】
【数7】
算出した特徴点の2次元座標の精度ρは、RAM102などに記憶される。
【0070】
ステップS902において、ステップS901で算出した特徴点の2次元座標の精度ρが十分であるかどうかを判定する。精度ρが閾値ρ0より大きければ、ステップS502へ進む。ρがρ0以下であれば、3次元座標算出処理を終了し、ステップS306へ進む。本実施例ではρ0=0.25(pixel)−1とする。
【0071】
以上説明したように、被写体モデル生成に用いる特徴点の2次元座標を評価することにより、被写体モデルを用いて被写体情報をより精度良く算出することが可能となる。
【0072】
<実施例3>
前述の実施例では、被写体モデルが記憶領域に無い場合には、被写体視点画像表示処理を終了していた。実施例3では、視点数が1つで、かつ被写体モデルが記憶領域に無い場合でも、一般的な被写体モデルを取得することで、被写体位置情報を推定する方法について説明する。
【0073】
被写体は前述の実施例と同様、人を例に挙げる。一般的な人の被写体モデルを予め記憶領域に記憶しておくことにより、システム起動直後など、被写体が1度も複数台の撮像装置で撮像されたことが無い場合でも、被写体情報を算出することが可能となる。
【0074】
本実施例における処理の流れは、ステップS305以外は実施例1で図4を用いて説明した内容と同じである。前述の実施例と同様の処理については、説明を省略する。本実施例ではステップS305において、実施例1の処理に加え、被写体モデルが記憶領域に無い場合に、一般的な人の被写体モデルを読み込む処理を行う。図11は実施例3に適用可能な3次元座標推定処理のフローを示す図である。
【0075】
まずステップS1101において、被写体モデルが有るかどうかを判定する。HDD105などの記憶領域に被写体モデルが記憶されていれば、ステップS801へ進む。被写体モデルが記憶されていない場合は、ステップS1102へ進む。
【0076】
ステップS1102において、予め記憶領域に記憶しておいた一般的な人の被写体モデルを読み込む。本実施例では、例えばPA=(32.5,0,0)T,PB=(−32.5,0,0)T,PC=(8,−70,0)T,PD=(−8,−70,0)T(mm)を一般的な人の被写体モデルとする。読み込んだ被写体モデルは、RAM102などに記憶し、ステップS802へ進む。ステップS802については実施例1と同じである為、説明を省略する。
【0077】
以上で説明した処理を行うことにより、システム起動直後など、まだ被写体が1度も複数台の撮像装置で撮像した画像で検出されたことが無い場合でも、任意の被写体情報を算出することが可能となる。
【0078】
なお、上述した各実施例は、以下の処理を実行することによっても実現される。即ち、上記実施形態の各工程や機能を実現するソフトウェア(コンピュータプログラム)を、ネットワークや記憶媒体を介してシステムに供給し、そのシステムのコンピュータ(またはCPU等)が上記プログラムを読み込んで実行する処理である。上記コンピュータプログラムや、それを記憶したコンピュータ可読記憶媒体も本発明の範疇に含まれる。
【技術分野】
【0001】
本発明は、複数視点から撮像した画像を用いて、被写体の位置情報を算出する技術に関する。
【背景技術】
【0002】
従来、撮像した画像から被写体の位置情報を取得し、被写体の位置情報に基づいてレンダリング処理した画像を表示する様々な手法が知られている。被写体の位置情報の取得方法について、特許文献1によればステレオ視手法と被写体記憶手法の2種類の手法が提案されている。ステレオ視手法は、複数の視点から撮像した複数の画像から被写体の位置情報を算出する手法である。また、被写体記憶手法は、予めデータベース上に用意した被写体のサイズを用いることにより、1台の撮像装置が被写体を撮像した画像から被写体の位置情報を算出する手法である。
ステレオ視手法は、異なる位置にある複数台の撮像装置が被写体を捉えた状態でないと被写体の位置情報の取得が困難である。そのため、被写体の位置情報を取得可能な範囲が制限されてしまうという問題がある。そこで、ステレオ視手法に被写体記憶手法を組み合わせることにより、被写体の位置情報を取得可能な範囲を拡大する方法が提案されている。例えば、特許文献2では視点の数が1つの場合には被写体記憶手法を、複数の視点から撮像された画像がある場合にはステレオ視手法を用いて被写体の位置情報を取得している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−132693号公報
【特許文献2】特開2004−045321号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、被写体記憶手法では画像上の被写体のサイズと被写体‐撮像装置間の距離とを1対1対応で保持している。つまり予めその大きさが既知の被写体を用いるため、任意の大きさの被写体を区別することができない。従って、正しい被写体の位置情報を得ることができない場合がある。
そこで本発明の目的は、複数の視点から撮像した画像に基づいて、より広範囲における任意の被写体の位置情報を取得することにある。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明の画像処理装置は、第一の画像と、前記第一の画像とは異なる視点から撮像した第二の画像とを取得する取得手段と、前記第一の画像および前記第二の画像それぞれにおける被写体の特徴点を検出する検出手段と、前記第一の画像および前記第二の画像に基づいて、前記被写体の位置情報を算出する算出手段とを有し、前記算出手段は、前記第一の画像および前記第二の画像の両方において前記特徴点が検出された場合、前記特徴点それぞれに基づいて、前記位置情報および前記被写体に対応する被写体モデルを算出し、前記第一の画像および前記第二の画像のいずれかのみにおいて前記特徴点が検出された場合は、前記被写体モデルを参照して、前記情報を算出することを特徴とする。
【発明の効果】
【0006】
本発明により、複数の視点から撮像した画像に基づいて、より広範囲における任意の被写体の位置情報を取得することができる。
【図面の簡単な説明】
【0007】
【図1】画像処理装置の構成図
【図2】被写体位置情報算出処理の概要図
【図3】被写体位置情報算出処理のフローチャートを示す図
【図4】被写体位置情報算出処理の概要図
【図5】特徴点の3次元座標算出処理のフローチャート
【図6】被写体モデル座標系の概要図
【図7】被写体モデル算出方法の説明図
【図8】特徴点の3次元座標推定処理のフローチャート
【図9】特徴点の3次元座標算出処理のフローチャート
【図10】被写体モデル精度算出方法の説明図
【図11】特徴点の3次元座標推定処理のフローチャート
【発明を実施するための形態】
【0008】
以下、添付図面を参照して、本発明を好適な実施例に従って詳細に説明する。なお、以下の実施例において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
【0009】
<実施例1>
本実施例では、被写体が撮像された画像の視点数が2以上の場合、複数に画像に基づき被写体の位置情報を算出するとともに、被写体モデルを生成する。一方、被写体が撮像された画像の視点数が1つの場合は、記憶された被写体モデルを用いて被写体の位置情報を推定する。
【0010】
図1は、本実施例に適用可能な画像処理装置の構成を示す図である。
図1において、CPU101は、RAM102をワークメモリとして、ROM103及びハードディスクドライブ(HDD)105に格納されたプログラムを実行し、システムバス110を介して後述する各構成を制御する。これにより、後述する様々な処理が実行される。
【0011】
HDDインタフェイス(I/F)104は、HDD105や光ディスクドライブなどの二次記憶領域を接続する。例えばシリアルATA(SATA)等のインタフェイスである。CPU101は、HDDI/F104を介して、HDD105からのデータ読み出し、およびHDD105へのデータ書き込みが可能である。
【0012】
さらにCPU101は、HDD105に格納されたデータをRAM102に展開し、同様に、RAM102に展開されたデータをHDD105に保存することが可能である。そしてCPU101は、RAM102に展開したデータをプログラムとみなし、実行することができる。
【0013】
入力インタフェイス(I/F)106は、キーボードやマウス、デジタルカメラなどの2つの入力デバイス107_1、107_2を接続する。例えばUSBやIEEE1394等のシリアルバスインタフェイスである。CPU101は、入力I/F106を介して入力デバイス107_1、107_2からデータを読み込むことができる。
【0014】
出力インタフェイス(I/F)108は、画像表示装置などの出力デバイス109を接続する。例えばDVIやHDMI等の映像出力インタフェイスである。CPU101は、出力I/F108を介して出力デバイス109にデータを送り、表示を実行させることができる。本実施例では、出力デバイス109として3D映像を表示するディスプレイを例に説明する。この出力デバイスは、被写体がどの位置から視聴しているかに応じて適切な3D映像を提供する。
【0015】
図2は、2つの撮像装置および被写体の概要図を示す。図2(a)におけるデジタルカメラ107_1、107_2は入力デバイスの一例(以下、それぞれカメラ1、カメラ2と記す)である。被写体3は人を例として説明する。図2(b)が示す画像1、図2(c)が示す画像2はそれぞれカメラ1、カメラ2が撮像した画像である。コンピュータ6はこれらの画像から被写体3の位置情報を算出する。ディスプレイ109は出力デバイスの一例である。尚、本実施例においてカメラ1とカメラ2は、2台同時に被写体を撮像するものとし、得られる2つの画像のうち少なくとも1枚に被写体3の両目と両鼻孔が写っているものとする。
【0016】
図2において3次元座標系7は、基準点Oを原点、水平方向右向きをx軸、鉛直方向上向きをy軸、奥行き方向をz軸とする。基準点Oは、カメラ1のカメラ位置とカメラ2のカメラ位置の中点である。以下、この座標系を基準座標系と呼ぶ。
【0017】
また、3次元座標系8は、被写体3の両目の中点FOを原点とし、直線Mx,My,Mzを座標軸とする。以下、この座標系を被写体モデル座標系と呼ぶ。
【0018】
図3は、本実施例に適用可能な処理のフローチャートである。詳細には、図3のフローチャートに示す手順を記述したコンピュータ実行可能なプログラムをROM103あるいはHDD105からRAM102上に読み込んだ後に、CPU101によって該プログラムを実行することによって当該処理が実施される。
【0019】
以下、図3に示す各処理について説明する。
【0020】
まずステップS301において、カメラ1とカメラ2から被写体を同時に撮像した画像をそれぞれ取得する。取得した画像はRAM102や容量が大きい場合にはHDD105などに記憶される。
【0021】
ステップS302において、ステップS301において取得した画像1と画像2とから被写体の特徴点の2次元座標をそれぞれ取得する。ここでは特徴点とは、顔の4つの器官、右目、左目、右鼻孔、左鼻孔それぞれの中心点である。以下これらの特徴点をFA,FB,FC,FDと表す。図2に特徴点FA〜FDの例を示す。この図では特徴点FA,FB,FC,FDが各々右目、左目、右鼻孔、左鼻孔の中心に相当する。
【0022】
以下では、これらの各特徴点の2次元座標の取得方法について説明する。ここでは図2が示すように、被写体3が2台のカメラ1、カメラ2の共通視野範囲に存在する場合の例を説明する。
【0023】
まず、既存の顔認識技術を画像1及び画像2に適用することにより、各画像における前述した4つの顔器官を含む領域(RkA,RkB,RkC,RkD)(k=1,2)を抽出する。次に、抽出したそれぞれの領域において、中心となる2次元座標(PkA,PkB,PkC,PkD)(k=1,2)を取得する。そして、これらの2次元座標をそれぞれ特徴点FA,FB,FC,FDの2次元座標として、RAM102などに記憶する。
【0024】
ところで、被写体3は常に2台のカメラの共通視野範囲に存在するとは限らない。図4は被写体3がカメラ2の視野範囲から外れた場合を示している。図5(b)が示す画像1’はカメラ1が撮像した画像であり、図5(c)が示す画像2’はカメラ2が撮像した画像である。画像1’は、前述した処理により2次元座標(P1A,P1B,P1C,P1D)が取得可能であり、得られた2次元座標はRAM102などに記憶される。一方画像2’は、被写体3の右目が画像上に写っていないため、領域R2Aの抽出及びその中心の2次元座標P2Aの取得ができない。この場合、画像2’に関する特徴点FA〜FDの2次元座標を記憶せずに、ステップS303へ進む。
【0025】
ステップS303において、画像1及び画像2の両方に被写体の全ての特徴点が写っているか否かを判定する。画像1及び画像2それぞれにおける全ての特徴点の2次元座標がRAM102に記憶されていれば、両方の画像に各特徴点が写っていると判定し、ステップS304へ進む。画像1又は画像2のどちらか一方における特徴点の2次元座標しかRAM102に記憶されていない場合は、どちらから一方の画像にのみ被写体の全ての特徴点が写っていると判定し、ステップS305へ進む。
【0026】
ステップS304において、画像1および画像2それぞれにおける各特徴点の2次元座標(PkA,PkB,PkC,PkD)(k=1,2)から、特徴点FA〜FDの3次元座標(PA〜PD)を算出する。更に、算出した特徴点の3次元座標(PA〜PD)を用いて被写体モデルを生成し、これを記憶領域に記憶してステップS306へ進む。詳細は後述する。
【0027】
一方、ステップS305においては、まず所定の記憶領域から被写体モデルを読み込む。そして、取得した被写体モデルと、ステップS302において取得した全ての特徴点が撮像された一方の画像における特徴点の2次元座標(PkA,PkB,PkC,PkD)(k=1又は2)とから、特徴点の3次元座標(PA〜PD)を推定し、ステップS306へ進む。詳細は後述する。
【0028】
ステップS306において、ステップS304又はステップS305で求めた各特徴点の3次元座標から、被写体情報を算出する。ここでは図2で示すように、特徴点FAおよびFBの中点FOの3次元座標を、被写体の位置情報とする。基準座標系7の原点である基準点Oに対する中点FOの3次元座標POは、被写体3の特徴点の3次元座標PA,PBから算出する。また被写体の向きは、被写体モデル座標系8のMz軸の向きで、大きさを1に規格化したベクトル(zM0)の向きを被写体の向き情報とする。このベクトルzM0は、基準座標系7のz軸の向きで大きさが1に規格化されたベクトルz0と、3×3回転行列Rとを用いて算出する。被写体モデル座標系8と、回転行列Rについての詳細は後述する。
【0029】
ここで、zM0とz0との間に下記の式(1)の関係が成り立つ。
【0030】
【数1】
【0031】
したがって、ベクトルzM0はベクトルz0と回転行列Rとの積を求めることにより、算出することができる。算出した被写体の向き情報は、例えば基準点Oに対する3×1平行移動ベクトル及び3×1zM0ベクトルとしてRAM102などに記憶される。
【0032】
ステップS307において、予め記憶領域に記憶しておいた表示コンテンツを読み込む。表示コンテンツとは基準座標系における3次元画像データと、ディスプレイの表示領域サイズからなるデータである。但し記憶領域に表示コンテンツが無い場合は、被写体視点画像表示処理を終了する。
【0033】
ステップS308において、ステップS306で算出した被写体情報(ここでは、位置情報と向き情報)とステップS307で取得した表示コンテンツから、特開2001−216532号記載の方式を用いて被写体の位置に合わせた表示画像を生成する。生成した表示画像は、RAM102や容量が大きい場合にはHDD105などに記憶される。
【0034】
最後に、ステップS309において、生成した表示画像をディスプレイに表示し、処理を終了する。
【0035】
◆2つの画像に基づく特徴点の3次元座標算出処理
ステップS304における特徴点の3次元座標算出処理、及び被写体モデルの生成処理の詳細について説明する。図5は、ステップS304における3次元座標算出処理のフローチャートを用いて説明する。
【0036】
まずステップS501において、ステップS302で取得した2つの画像から取得した特徴点の各2次元座標から、特徴点の3次元座標を算出する。本実施例では、特徴点の各2次元座標と、2台のカメラそれぞれに関する内部行列及び外部パラメータを用いて、三角測量の原理により、4つの特徴点の3次元座標をそれぞれ算出する。内部行列とは、レンズの焦点距離や光軸ずれからなる3×3行列である。また、外部パラメータとは、カメラの3次元座標を表す3×1平行移動ベクトル及びカメラの向きを表す3×3回転行列である。これらの行列は、予め画像撮像時に記憶領域に記憶しておいたものを読み込むことにより取得する。
【0037】
以下、特徴点FAを例に、三角測量の原理に基づいた3次元座標の算出方法を説明する。
【0038】
基準座標系7の原点である基準点Oに対する特徴点FAの3次元座標をPA=(x,y,z)T、画像1、画像2における特徴点FAの2次元座標をそれぞれP1A=(u1A,v1A )T,P2A=(u2A,v2A )Tとすると、一般的に下記の式(2)の関係が成り立つ。
【0039】
【数2】
ここでMk,Rk,tk(k=1,2)は、それぞれ画像kを撮像した際のカメラの内部行列、回転行列、平行移動ベクトルである。上記の式(2)は、3次元座標PAについての連立方程式と見なすことができる。したがって、この連立方程式を解くことにより、特徴点FAの3次元座標PAを得ることができる。
【0040】
他の特徴点FB〜FDについても特徴点FAと同様に基準点に対する3次元座標PB,PC,PDを算出することができる。算出した各特徴点の3次元座標PA,PB,PC,PDは、RAM102に記憶される。
【0041】
ステップS502において、3次元座標PA,PB,PC,PDから被写体モデルを生成し、これを記憶領域に上書き記憶する。ここで被写体モデルとは、被写体モデル座標系で表された特徴点FA,FB,FC,FDの3次元座標の組(PMA,PMB,PMC,PMD)である。被写体モデル座標系の例を図6に示す。被写体モデル座標系は、前述したように2点FA,FBの中点FOを原点とし、直線Mx,My,Mzを座標軸とする3次元座標系である。軸Mxは、2点FA,FBを通る直線である。軸Myは、2点FC,FDの中点をQとしたときの3点FA,FB,Qを含む平面π上にあり、直線Mxと原点FOで直交する直線である。Mzは、Mx及びMyと直交する直線である。
【0042】
3次元座標PMAは、基準座標系7で表された特徴点FAの3次元座標PAを用いて、次式(3)に従い算出する。
【0043】
【数3】
ここで、Tは基準座標系7の原点Oを始点とした、被写体モデル座標系の原点FOへ向かう3×1平行移動ベクトルであり、基準座標系7で表された3次元座標PA及びPBから、式(4)に従い算出される。
【0044】
【数4】
【0045】
回転行列Rは、基準座標系’のx’,y’,z’軸を、被写体モデル座標系Mx,My,Mz軸と一致させる3×3回転行列である。但し基準座標系’とは、基準座標系をTだけ平行移動させることにより、その原点を被写体モデル座標系の原点FOと一致させた座標系である。以降、基準座標系’の各座標軸をそれぞれx’,y’,z’で表す。
回転行列Rは、基準座標系’における各座標軸周りの回転角度φ,ψ,θを用いて、一般に式(5)で表せる。
【0046】
【数5】
ここでR’x(φ),R’y(ψ),R’z(θ)は、それぞれ各座標軸周りの3×3回転行列である。したがって、基準座標系’を被写体モデル座標系と一致させる回転行列R’x(φ0)〜R’z(θ0)を求めることにより、回転行列Rを算出できる。
【0047】
以下、回転角φ0,ψ0,θ0の求め方について述べる。図7は、基本座標系’の回転を示す図である。
【0048】
・回転角θ0(図7(a))
基準座標系’において、点FAをz’軸周りに角度θだけ回転させた点の3次元座標をP’A=(x’,y’,z’)Tで表す。y’=0かつx’>0となるときのθを求め、これをθ0とする。
【0049】
・回転角ψ0(図7(b))
基準座標系’において、点FAをz’軸周りに角度θ0、y’軸周りに角度ψ回転させた点の3次元座標をP’’A=(x’’,y’’,z’’)Tで表す。z’’=0かつx’’>0となるときのψを求め、これをψ0とする。
【0050】
・回転角φ0(図7(c))
基準座標系’において、点Qをz’軸周りに角度θ0、y’軸周りに角度ψ0、x’軸周りに角度φ回転させた点の3次元座標をP’’’Q=(x’’’,y’’’,z’’’)Tで表す。z’’’=0かつy’’’<0となるときのφを求め、これをφ0とする。
【0051】
平行移動ベクトルTとR’x,R’y,R’zから算出した回転行列Rは、RAM102などに記憶される。また、算出した平行移動ベクトルTと回転行列Rから、式(3)により被写体モデル座標系における点FAの3次元座標PMAを求めることができる。他の特徴点FB〜FDについても、特徴点FAと同様に、被写体モデル座標系における3次元座標PMB,PMC,PMDを算出する。算出した(PMA,PMB,PMC,PMD)の組を被写体モデルとして、HDD105に上書き記憶する。
【0052】
◆被写体モデルと1枚の画像を用いた特徴点の3次元座標推定処理
ステップS305における被写体モデルの取得、及び各特徴点の3次元座標推定処理の詳細について説明する。図8は、ステップS305における3次元座標推定処理のフローチャートを示す。
【0053】
まず、ステップS801において、所定の記憶領域に記憶された被写体モデルを記憶領域から読み込む。但し、被写体モデルが記憶領域に無い場合は、被写体視点画像表示処理を終了する。
【0054】
ステップS802において、ステップS801で取得した被写体モデルとステップS302で算出した特徴点の2次元座標から、各特徴点の3次元座標を推定する。ここで本実施例では、例えば特開2008−232950号記載の方式を用いて特徴点の3次元座標PA,PB,PC,PDを推定する。推定した各特徴点の3次元座標PA,PB,PC,PDは、RAM102などに記憶される。
【0055】
このように、各特徴点が撮像された画像が複数ある場合は、それぞれの画像から得られる二次元座標から、各特徴点の3次元座標を算出する。それと同時に、被写体の特徴に基づく被写体モデルを生成しておく。被写体モデルは、各特徴点の全てが撮像された画像が1つしかない場合に用いられるものである。被写体モデルを参照して各特徴点の3次元座標を推定することにより、被写体が1台の撮像装置でしか検出されなかった場合でも、任意の被写体情報を算出することが可能となる。
【0056】
本実施例では、人を被写体とした例について説明したが、特徴点が検出されるものであれば良い。例えば正方形の板を被写体とし、板の4つの角にそれぞれ異なる色のマーカーをつけて、そのマーカーを特徴点としても良い。
【0057】
また、特徴点FAおよびFBの中点FOの3次元座標を被写体の位置情報として用いたが、これに限らない。4つの特徴点の各3次元座標をそのまま被写体の位置情報としてもよい。さらに、本実施例では、被写体の位置を示す位置情報と、被写体である人の向きを示す向き情報とを被写体情報として算出しているが、被写体情報とは、少なくとも被写体の位置がわかる情報であればよい。ただし、被写体の向き情報を必要とする場合は、被写体における特徴点は4つ以上検出する。
【0058】
また本実施例では、2台のカメラで被写体を撮像する例について説明したが、撮像装置の台数は2台以上であれば良い。例えば、3台の撮像装置で5つの特徴点を検出する場合、ある2台の撮像装置で撮像した画像から共通する所定の特徴点が検出されているかどうかを判定すれば良い。または、停止した被写体であれば、1つの撮像装置が複数の視点から撮像した画像を用いてもよい。
【0059】
尚、撮像した画像から算出する特徴点の2次元座標の精度を向上させる為に、画像1及び画像2に対して光軸ずれの補正処理や歪曲補正処理を行った補正画像から、各特徴点の2次元座標を算出しても良い。
【0060】
更に、被写体モデル生成に用いる座標系は、ある点に対する4つの特徴点の相対的な3次元座標が算出できれば良く、他の点を原点としても良いし、極座標や斜交座標などの他の座標系を用いても良い。
【0061】
本実施例では、特徴点の推定をフレーム毎に完結した処理で実行しているが、直前フレームの情報を用いてトラッキング処理しても良いことは言うまでも無い。
【0062】
<実施例2>
実施例1では撮像した画像を取得し、視点数が2つ以上の時には常に被写体モデルを生成する方法について説明した。
【0063】
実施例2では、生成した被写体モデルを記憶する際に、被写体モデルの精度を評価した結果に応じて、記憶する被写体モデルを取捨選択する方法について説明する。記憶する被写体モデル取捨選択することにより、被写体モデルを用いた被写体情報をより精度良く推測することが可能となる。
【0064】
なお、本実施例における処理の流れは、ステップS304以外は実施例1で図4を用いて説明した内容と同じである。前述の実施例と同様の処理については、説明を省略する。本実施例ではステップS304において、実施例1の処理に加え、ステップS302において画像から検出した各特徴点の2次元座標の精度を評価する。以下、図9を用いて本実施例におけるステップS304の3次元座標算出処理を説明する。
【0065】
まず、ステップS501において特徴点の3次元座標を算出する。
【0066】
ステップS901において、ステップS302で取得した特徴点の2次元座標の精度を算出する。図10は、特徴点の精度を説明する図である。画像1の各特徴点(FA〜FD)が、エピポーラ線(LA〜LD)上にあるかどうかを評価することにより、取得した特徴点の2次元座標の精度を算出する。例えばエピポーラ線LAの方程式は、以下の式(6)から求めることができる。
【0067】
【数6】
HmAは、エピポーラ線LA上の点mA(図10)の2次元座標PmAに対応する2次元斉次座標HmA=(x,y,1)である。H2Aは、画像2から取得した特徴点FAの2次元座標P2A=(u2A,v2A)に対応する2次元斉次座標H2A=(u2A,v2A,1)である。Fはカメラ1、カメラ2の内部行列と外部パラメータから求まる3×3基礎行列である。本実施例では、基礎行列を予め記憶領域に記憶しておくことで、エピポーラ線LAの方程式を算出する。そして、算出したエピポーラ線LAと、画像1から取得した2次元座標P1Aとの距離dAを求める。
【0068】
特徴点FB〜FDについても特徴点FAと同様に、エピポーラ線LB〜LDの方程式と、エピポーラ線と特徴点の2次元座標との距離dB〜dDを算出する。2次元座標の算出の精度ρは、例えば以下の式(7)を用いる。この場合、精度ρは値が大きいほど精度が良いと判断できる。
【0069】
【数7】
算出した特徴点の2次元座標の精度ρは、RAM102などに記憶される。
【0070】
ステップS902において、ステップS901で算出した特徴点の2次元座標の精度ρが十分であるかどうかを判定する。精度ρが閾値ρ0より大きければ、ステップS502へ進む。ρがρ0以下であれば、3次元座標算出処理を終了し、ステップS306へ進む。本実施例ではρ0=0.25(pixel)−1とする。
【0071】
以上説明したように、被写体モデル生成に用いる特徴点の2次元座標を評価することにより、被写体モデルを用いて被写体情報をより精度良く算出することが可能となる。
【0072】
<実施例3>
前述の実施例では、被写体モデルが記憶領域に無い場合には、被写体視点画像表示処理を終了していた。実施例3では、視点数が1つで、かつ被写体モデルが記憶領域に無い場合でも、一般的な被写体モデルを取得することで、被写体位置情報を推定する方法について説明する。
【0073】
被写体は前述の実施例と同様、人を例に挙げる。一般的な人の被写体モデルを予め記憶領域に記憶しておくことにより、システム起動直後など、被写体が1度も複数台の撮像装置で撮像されたことが無い場合でも、被写体情報を算出することが可能となる。
【0074】
本実施例における処理の流れは、ステップS305以外は実施例1で図4を用いて説明した内容と同じである。前述の実施例と同様の処理については、説明を省略する。本実施例ではステップS305において、実施例1の処理に加え、被写体モデルが記憶領域に無い場合に、一般的な人の被写体モデルを読み込む処理を行う。図11は実施例3に適用可能な3次元座標推定処理のフローを示す図である。
【0075】
まずステップS1101において、被写体モデルが有るかどうかを判定する。HDD105などの記憶領域に被写体モデルが記憶されていれば、ステップS801へ進む。被写体モデルが記憶されていない場合は、ステップS1102へ進む。
【0076】
ステップS1102において、予め記憶領域に記憶しておいた一般的な人の被写体モデルを読み込む。本実施例では、例えばPA=(32.5,0,0)T,PB=(−32.5,0,0)T,PC=(8,−70,0)T,PD=(−8,−70,0)T(mm)を一般的な人の被写体モデルとする。読み込んだ被写体モデルは、RAM102などに記憶し、ステップS802へ進む。ステップS802については実施例1と同じである為、説明を省略する。
【0077】
以上で説明した処理を行うことにより、システム起動直後など、まだ被写体が1度も複数台の撮像装置で撮像した画像で検出されたことが無い場合でも、任意の被写体情報を算出することが可能となる。
【0078】
なお、上述した各実施例は、以下の処理を実行することによっても実現される。即ち、上記実施形態の各工程や機能を実現するソフトウェア(コンピュータプログラム)を、ネットワークや記憶媒体を介してシステムに供給し、そのシステムのコンピュータ(またはCPU等)が上記プログラムを読み込んで実行する処理である。上記コンピュータプログラムや、それを記憶したコンピュータ可読記憶媒体も本発明の範疇に含まれる。
【特許請求の範囲】
【請求項1】
第一の画像と、前記第一の画像とは異なる視点から撮像した第二の画像とを取得する取得手段と、
前記第一の画像および前記第二の画像それぞれにおける被写体の特徴点を検出する検出手段と、
前記第一の画像および前記第二の画像に基づいて、前記被写体の位置情報を算出する算出手段とを有し、
前記算出手段は、前記第一の画像および前記第二の画像の両方において前記特徴点が検出された場合、前記特徴点それぞれに基づいて、前記位置情報および前記被写体に対応する被写体モデルを算出し、前記第一の画像および前記第二の画像のいずれかのみにおいて前記特徴点が検出された場合は、前記被写体モデルを参照して、前記情報を算出することを特徴とする画像処理装置。
【請求項2】
前記算出手段は、前記被写体の向き情報も算出することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記検出手段は、前記第一の画像および前記第二の画像のそれぞれにおける、前記特徴点の二次元座標を算出することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記位置情報は、前記被写体の3次元座標を算出することを特徴とする請求項1乃至3の何れか一項に記載の画像処理装置。
【請求項5】
さらに、前記第一の画像および前記第二の画像のそれぞれに対して、前記特徴点が含まれているかどうかを判定する判定手段を有し、
前記算出手段は、前記判定結果に応じて、前記被写体モデルを参照するか否かを決定することを特徴とする請求項1乃至4の何れか一項に記載の画像処理装置。
【請求項6】
さらに、前記検出手段によって得られる前記特徴点の検出の精度を算出する精度算出手段と、
前記精度に応じて、前記算出手段が算出した被写体モデルを記憶する記憶手段とを備えることを特徴とする請求項1乃至5の何れか一項に記載の画像処理装置。
【請求項7】
前記記憶手段は、前記算出手段が算出した被写体モデルが記憶されていない時は、前記被写体の一般モデルを前記被写体モデルとして記憶しておくことを特徴とする請求項1乃至6の何れか一項に記載の画像処理装置。
【請求項8】
さらに、少なくとも前記位置情報に応じた画像を生成する生成手段と、
前記生成手段により生成された画像を表示する表示手段とを備えることを特徴とする請求項1乃至7の何れか一項に記載の画像処理装置。
【請求項9】
コンピュータ装置を制御して、請求項1から請求項8の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするコンピュータプログラム。
【請求項10】
取得手段、検出手段、算出手段を有する画像処理装置の制御方法であって、
前記取得手段は、第一の画像と、前記第一の画像とは異なる視点から撮像した第二の画像とを取得し、
前記検出手段は、前記第一の画像および前記第二の画像それぞれにおける被写体の特徴点を検出し、
前記算出手段は、前記第一の画像および前記第二の画像に基づいて、前記被写体の位置情報を算出し、
前記算出手段は、前記第一の画像および前記第二の画像両方において前記特徴点が検出された場合、前記特徴点それぞれに基づいて、前記位置情報および前記被写体に対応する被写体モデルを算出し、前記第一の画像および前記第二の画像いずれかのみにおいて前記特徴点が検出された場合は、前記被写体モデルを参照して、前記情報を算出することを特徴とする制御方法。
【請求項1】
第一の画像と、前記第一の画像とは異なる視点から撮像した第二の画像とを取得する取得手段と、
前記第一の画像および前記第二の画像それぞれにおける被写体の特徴点を検出する検出手段と、
前記第一の画像および前記第二の画像に基づいて、前記被写体の位置情報を算出する算出手段とを有し、
前記算出手段は、前記第一の画像および前記第二の画像の両方において前記特徴点が検出された場合、前記特徴点それぞれに基づいて、前記位置情報および前記被写体に対応する被写体モデルを算出し、前記第一の画像および前記第二の画像のいずれかのみにおいて前記特徴点が検出された場合は、前記被写体モデルを参照して、前記情報を算出することを特徴とする画像処理装置。
【請求項2】
前記算出手段は、前記被写体の向き情報も算出することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記検出手段は、前記第一の画像および前記第二の画像のそれぞれにおける、前記特徴点の二次元座標を算出することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記位置情報は、前記被写体の3次元座標を算出することを特徴とする請求項1乃至3の何れか一項に記載の画像処理装置。
【請求項5】
さらに、前記第一の画像および前記第二の画像のそれぞれに対して、前記特徴点が含まれているかどうかを判定する判定手段を有し、
前記算出手段は、前記判定結果に応じて、前記被写体モデルを参照するか否かを決定することを特徴とする請求項1乃至4の何れか一項に記載の画像処理装置。
【請求項6】
さらに、前記検出手段によって得られる前記特徴点の検出の精度を算出する精度算出手段と、
前記精度に応じて、前記算出手段が算出した被写体モデルを記憶する記憶手段とを備えることを特徴とする請求項1乃至5の何れか一項に記載の画像処理装置。
【請求項7】
前記記憶手段は、前記算出手段が算出した被写体モデルが記憶されていない時は、前記被写体の一般モデルを前記被写体モデルとして記憶しておくことを特徴とする請求項1乃至6の何れか一項に記載の画像処理装置。
【請求項8】
さらに、少なくとも前記位置情報に応じた画像を生成する生成手段と、
前記生成手段により生成された画像を表示する表示手段とを備えることを特徴とする請求項1乃至7の何れか一項に記載の画像処理装置。
【請求項9】
コンピュータ装置を制御して、請求項1から請求項8の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするコンピュータプログラム。
【請求項10】
取得手段、検出手段、算出手段を有する画像処理装置の制御方法であって、
前記取得手段は、第一の画像と、前記第一の画像とは異なる視点から撮像した第二の画像とを取得し、
前記検出手段は、前記第一の画像および前記第二の画像それぞれにおける被写体の特徴点を検出し、
前記算出手段は、前記第一の画像および前記第二の画像に基づいて、前記被写体の位置情報を算出し、
前記算出手段は、前記第一の画像および前記第二の画像両方において前記特徴点が検出された場合、前記特徴点それぞれに基づいて、前記位置情報および前記被写体に対応する被写体モデルを算出し、前記第一の画像および前記第二の画像いずれかのみにおいて前記特徴点が検出された場合は、前記被写体モデルを参照して、前記情報を算出することを特徴とする制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2013−50877(P2013−50877A)
【公開日】平成25年3月14日(2013.3.14)
【国際特許分類】
【出願番号】特願2011−189021(P2011−189021)
【出願日】平成23年8月31日(2011.8.31)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年3月14日(2013.3.14)
【国際特許分類】
【出願日】平成23年8月31日(2011.8.31)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]