(57)【要約】【課題】一部のカメラで観測されるオブジェクトの３次元形状を復元すること。【解決手段】画像処理装置１は、視点が異なる複数のカメラにより撮像された多視点画像を取得する取得部と、多視点画像に含まれる複数の画像から前景と背景を分離する分離部と、３次元形状を復元する対象とする３次元空間に含まれる要素がカメラ毎に視野外、または、視野内の背景あるいは視野内の前景に含まれるかを分類する分類部と、分類部で要素が視野内に分類されたカメラの視点を設定する設定部と、視体積交差法により設定部で設定された視点のカメラの画像の要素から３次元空間のオブジェクトの形状を推定する推定部と、を有する。【選択図】図１
2018194985.tif 000002
【特許請求の範囲】
【請求項１】
視点が異なる複数のカメラにより撮像された多視点画像を取得する取得部と、
前記多視点画像に含まれる複数の画像から前景と背景を分離する分離部と、
３次元形状を復元する対象とする３次元空間に含まれる要素がカメラ毎に視野外、または、視野内の背景あるいは視野内の前景に含まれるかを分類する分類部と、
前記分類部で要素が視野内に分類されたカメラの視点を設定する設定部と、
視体積交差法により前記設定部で設定された視点のカメラの画像の要素から前記３次元空間のオブジェクトの形状を推定する推定部と、
を有する画像処理装置。
【請求項２】
前記設定部は、前記分類部で要素が視野内に分類されたカメラの視点数から、視点数の閾値を設定し、
前記推定部は、前記視体積交差法により前記前景と特定されるカメラの視点数が、前記設定部で設定された前記視点数の閾値以上となる要素から前記３次元空間のオブジェクトの形状を推定する請求項１に記載の画像処理装置。
【請求項３】
前記推定部は、前記視体積交差法により前記設定部で設定された視点のカメラの画像のボクセルから前記３次元空間のオブジェクトの形状を推定する請求項１に記載の画像処理装置。
【請求項４】
前記推定部は、前記視体積交差法により前記設定部で設定された視点のカメラの画像の前記前景に対応する画素の奥行き情報から、前記３次元空間のオブジェクトの形状を推定する請求項１に記載の画像処理装置。
【請求項５】
視点が異なる複数のカメラにより撮像された多視点画像を取得し、
前記多視点画像に含まれる複数の画像から前景と背景を分離し、
３次元形状を復元する対象とする３次元空間に含まれる要素がカメラ毎に視野外、または、視野内の背景あるいは視野内の前景に含まれるかを分類し、
前記分類する処理で要素が視野内に分類されたカメラの視点を設定し、
視体積交差法により前記設定する処理で設定された視点のカメラの画像の要素から前記３次元空間のオブジェクトの形状を推定する、
処理をコンピュータが実行する画像処理方法。
【請求項６】
視点が異なる複数のカメラにより撮像された多視点画像を取得し、
前記多視点画像に含まれる複数の画像から前景と背景を分離し、
３次元形状を復元する対象とする３次元空間に含まれる要素がカメラ毎に視野外、または、視野内の背景あるいは視野内の前景に含まれるかを分類し、
前記分類する処理で要素が視野内に分類されたカメラの視点を設定し、
視体積交差法により前記設定する処理で設定された視点のカメラの画像の要素から前記３次元空間のオブジェクトの形状を推定する、
処理をコンピュータに実行させる画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及び画像処理プログラムに関する。
【背景技術】
【０００２】
自由視点映像という技術が知られている。例えば、視点が異なる複数のカメラが撮像する多視点画像から３次元形状を復元する。このような３次元形状を用いることにより、実際にはカメラが存在しない仮想的な視点から３次元モデルが観測される自由視点映像を生成できる。
【０００３】
例えば、多視点画像から３次元形状を復元する場合、多視点画像に含まれる各画像で前景と背景が分離されたシルエット画像を用いるＶｉｓｕａｌ−Ｈｕｌｌという技術が用いられることがある。Ｖｉｓｕａｌ−Ｈｕｌｌでは、複数の画像それぞれから背景を取り除いて、シルエット画像が生成される。カメラの焦点とシルエット画像とを結んでできるＣｏｎｅ（視体積）が生成され、Ｃｏｎｅ同士が重なる３次元空間の要素をオブジェクトの３次元形状とみなす。このように３次元形状の復元にＶｉｓｕａｌ−Ｈｕｌｌを用いる場合、被写体となるオブジェクトを視野に収めるカメラの台数が多いほど形状推定の精度が向上する。なお、Ｖｉｓｕａｌ−Ｈｕｌｌは、視体積交差法とも呼ばれることがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１０９１７２号公報
【特許文献２】特開２００９−７４８３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の技術では、３次元形状を復元する対象とするオブジェクトが全てのカメラにより観測されることが前提とされる。それ故、一部のカメラにしか観測されないオブジェクトの３次元形状を復元することが困難である。
【０００６】
１つの側面では、本発明は、一部のカメラで観測されるオブジェクトの３次元形状を復元できる画像処理装置、画像処理方法及び画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
一態様では、画像処理装置は、視点が異なる複数のカメラにより撮像された多視点画像を取得する取得部と、前記多視点画像に含まれる複数の画像から前景と背景を分離する分離部と、３次元形状を復元する対象とする３次元空間に含まれる要素がカメラ毎に視野外、または、視野内の背景あるいは視野内の前景に含まれるかを分類する分類部と、前記分類部で要素が視野内に分類されたカメラの視点を設定する設定部と、視体積交差法により前記設定部で設定された視点のカメラの画像の要素から前記３次元空間のオブジェクトの形状を推定する推定部と、を有する。
【発明の効果】
【０００８】
一部のカメラで観測されるオブジェクトの３次元形状を復元できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例１に係る画像処理装置の機能的構成を示すブロック図である。
【図２】図２は、カメラ配置の一例を示す図である。
【図３】図３は、実施例２に係る３次元形状の復元システムの構成例を示す図である。
【図４】図４は、実施例２に係るサーバ装置の機能的構成を示すブロック図である。
【図５】図５は、ボクセルの一例を示す図である。
【図６】図６は、投影前後のボクセルの一例を示す図である。
【図７】図７は、実施例２に係る画像処理の手順を示すフローチャートである。
【図８】図８は、カメラ配置の一例を示す図である。
【図９】図９は、カメラ配置の一例を示す図である。
【図１０】図１０は、カメラ配置の一例を示す図である。
【図１１】図１１は、実施例３に係るサーバ装置の機能的構成を示すブロック図である。
【図１２】図１２は、Ｒａｙ上の重複部分の一例を示す図である。
【図１３】図１３は、実施例３に係る画像処理の手順を示すフローチャートである。
【図１４】図１４は、実施例１〜実施例３に係る画像処理プログラムを実行するコンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して本願に係る画像処理装置、画像処理方法及び画像処理プログラムについて説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１１】
図１は、実施例１に係る画像処理装置の機能的構成を示すブロック図である。図１に示すように、画像処理装置１は、取得部１Ａと、分離部１Ｂと、分類部１Ｃと、設定部１Ｄと、推定部１Ｅとを有する。
【００１２】
取得部１Ａは、視点が異なる複数のカメラにより撮像された多視点画像を取得する。分離部１Ｂは、多視点画像に含まれる複数の画像から前景と背景を分離する。分類部１Ｃは、３次元形状を復元する対象とする３次元空間に含まれる要素がカメラ毎に視野、例えば水平及び垂直の画角の外、視野内の背景または視野内の前景に含まれるかを分類する。設定部１Ｄは、分類部１Ｃで要素が視野内に分類されたカメラの視点を設定する。推定部１Ｅは、視体積交差法により設定部１Ｄで設定された視点のカメラの画像の要素から３次元空間のオブジェクトの形状を推定する。以下、視野内に分類されたカメラの視点数のことを「視野内視点数」と記載する場合がある。また、Ｖｉｓｕａｌ−Ｈｕｌｌによりカメラの光学中心と前景となるシルエットとが結ばれて生成された視体積が重なるカメラの視点数のことを「シルエット内視点数」と記載する場合がある。
【００１３】
このように、本実施例に係る画像処理装置１では、３次元形状を復元する対象とする要素が全てのカメラにより観測されないからと言って直ちに３次元形状の復元を放棄しない。すなわち、全てのカメラの視点の中でも前景にある要素が視野内に入っている視点を利用して３次元空間のオブジェクトの形状を推定する。したがって、本実施例に係る画像処理装置１によれば、一部のカメラで観測されるオブジェクトの３次元形状を復元できる。
【００１４】
さらに、本実施例に係る画像処理装置１では、設定部１Ｄは、分類部１Ｃで要素が視野内に分類されたカメラの視点数から、視点数の閾値を設定し、推定部Ｅは、Ｖｉｓｕａｌ−Ｈｕｌｌにより前景と特定されるカメラの視点数が、設定部１Ｄで設定された視点数の閾値以上となる要素から３次元空間のオブジェクトの形状を推定する。
【００１５】
すなわち、本実施例に係る画像処理装置１は、前景にある要素が視野内に入っている視点を利用する。ただし、本実施例に係る画像処理装置１は、視点数の閾値を設定し、前景と背景を間違った場合は、間違って前景と背景を判断している視点のデータを使わないようにする為に、閾値を使って視野内と判断されている領域でも使わない視点を許容するように制御する。
【００１６】
このとき、本実施例に係る画像処理装置１は、Ｖｉｓｕａｌ−Ｈｕｌｌによりカメラの光学中心と前景となるシルエットとが結ばれて生成された視体積が重なるカメラの視点数と比較する視点数の閾値を固定しない。例えば、カメラの総数に近付けて閾値を固定すると、カメラの視点数が閾値を下回る事態が多発する。この結果、３次元形状を復元する機会が損なわれる。また、閾値をゼロに近付けて固定すると、あるカメラでシルエット外と判定された３次元領域も推定結果として出力されることとなる。この結果、３次元空間上のオブジェクトが歪な形状で復元されてしまう。
【００１７】
図２は、カメラ配置の一例を示す図である。図２には、３次元空間上でカメラＣ１〜カメラＣｎのｎ台のカメラの視野が交差する様子が模式化されている。さらに、図２には、多視点画像のうちカメラＣ１、Ｃ５及びＣｎにより撮像された画像から前景および背景が分離されたシルエット画像ｃ１、ｃ５及びｃｎが抜粋して示されている。
【００１８】
図２に示すように、３次元空間上に存在するオブジェクトは、必ずしも全てのカメラＣ１〜Ｃｎにより観測されるとは限らない。すなわち、３次元空間には、オブジェクトＯｂ１、Ｏｂ２及びＯｂ３の３つのオブジェクトが存在する。ところが、シルエット画像ｃ１では、オブジェクトＯｂ１に対応するシルエットＣＬ１１及びオブジェクトＯｂ２に対応するシルエットＣＬ１２の２つのオブジェクトしか観測できない。また、シルエット画像ｃｎでは、オブジェクトＯｂ１に対応するシルエットＣＬｎ１及びオブジェクトＯｂ３に対応するシルエットＣＬｎ３の２つのオブジェクトしか観測できない。一方、シルエット画像ｃ５では、オブジェクトＯｂ１に対応するシルエットＣＬ５１、オブジェクトＯｂ２に対応するシルエットＣＬ５２及びオブジェクトＯｂ３に対応するシルエットＣＬ５３の３つのオブジェクトが全て観測される。
【００１９】
このようなカメラ配置においても、本実施例に係る画像処理装置１は、オブジェクトＯｂ１、Ｏｂ２及びＯｂ３の３つのオブジェクトの３次元形状の復元を実現する。例えば、図２に黒の塗り潰しで示された領域における視野内視点数を１５とし、図２に網点の塗り潰しで示された領域における視野内視点数を１０としたとき、各領域で用いる視点数の閾値は、一例として、視野内視点数に所定の重みｗ、例えば「０．９」を付与することにより設定される。すなわち、図２に黒の塗り潰しで示された領域では、視野内視点数が１５であるので、１５×０．９の計算により、視点数の閾値が１３．５に設定される。また、図２に網点の塗り潰しで示された領域では、視野内視点数が１０であるので、１０×０．９の計算により、視点数の閾値が９に設定される。なお、ここでは、一例として、視野内視点数に付与する重みを０．９とする場合を例示したが、これはあくまで一例であり、重みには任意の値を設定することができる。例えば、前景の対象があると判断できる割合で少なくとも０．５以上を上記の重みに設定するのが好ましい。
【００２０】
このように、本実施例に係る画像処理装置１では、３次元空間上に存在するオブジェクトが一部のカメラにしか観測されない場合でも、カメラの光学中心と前景とが重なるカメラの視点数と比較する視点数の閾値を適切に設定できる。したがって、本実施例に係る画像処理装置１によれば、一部のカメラで観測されるオブジェクトの３次元形状を復元できる。また、視野内視点数に応じて視点数の閾値を適切に変更できる。それ故、互いの距離が小さいカメラ間や互いの光軸が略平行であるカメラ間でしか観測されない要素まで３次元形状と推定されるのを抑制できる結果、３次元空間上のオブジェクトが歪な形状で復元されることも抑制できる。
【００２１】
以下の実施例２では、Ｖｉｓｕａｌ−Ｈｕｌｌの実装として、ボクセルを用いる場合を例示して３次元形状の復元を実現する画像処理装置１の実装例について説明する。
【実施例２】
【００２２】
［システム構成］
図３は、実施例２に係る３次元形状の復元システムの構成例を示す図である。図３に示す３次元情報の復元システム２は、一側面として、視点が異なる複数のカメラ２００が撮像する多視点画像から３次元空間上に存在するオブジェクトの３次元形状を復元する画像処理サービスを提供するものである。
【００２３】
図３に示すように、３次元形状の復元システム２には、サーバ装置２０と、複数のカメラ２００Ａ〜２００Ｎとが含まれる。以下では、カメラ２００Ａ〜２００Ｎのことを「カメラ２００」と記載する場合がある。
【００２４】
これらサーバ装置２０及びカメラ２００の間は、所定のネットワークＮＷを介して接続される。このネットワークＮＷは、有線または無線を問わず、インターネット、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網により構築することができる。
【００２５】
このように、図３に示す３次元形状の復元システム２では、多視点画像がネットワークＮＷを介してカメラ２００からサーバ装置２０へ伝送される場合を例示するが、これはあくまで伝送形態の一例であり、サーバ装置２０及びカメラ２００の間で必ずしも双方向に通信が行われずともかまわない。例えば、ネットワークＮＷを経由せず、多視点画像が放送波を介してカメラ２００からサーバ装置２０へ伝送されることとしてもかまわない。
【００２６】
サーバ装置２０は、上記の画像処理サービスを提供するコンピュータである。サーバ装置２０は、画像処理装置の一例である。
【００２７】
一実施形態として、サーバ装置２０は、パッケージソフトウェア又はオンラインソフトウェアとして、上記の画像処理サービスの機能を実現する復元プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、サーバ装置２０は、上記の画像処理サービスを提供するＷｅｂサーバとして実装することとしてもよいし、アウトソーシングによって上記の復元サービスを提供するクラウドとして実装することとしてもかまわない。
【００２８】
カメラ２００は、ＣＣＤ（Charge  Coupled  Device）やＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）などの撮像素子を搭載する撮像装置である。
【００２９】
図３には、あくまで一例として、自由視点映像によるサッカー観戦を実現することを目的とするカメラ２００の配置が示されている。例えば、サッカーのフィールドＦ上の３次元空間がサッカー観戦における３次元のオブジェクト、例えばボールや選手、審判などの試合関係者等が復元される。この場合、複数のカメラ２００は、一例として、フィールドＦの周囲からフィールドＦの内部へ向けて配置される。このとき、複数のカメラ２００の撮影範囲が組み合わさることによりフィールドＦの全域が複数のカメラ２００の撮影範囲に収まる配置で各カメラ２００が設置されると共に、各カメラ２００は、他のカメラ２００との間で撮影範囲の一部が重複する状態で配置される。このような配置の下、複数のカメラ２００がフレームごとに同期して撮影することにより、異なる視点ごとに同一のタイミングで撮影された複数の画像がフレーム単位で得られる。以下では、カメラ２００Ａ〜２００Ｎにより同一のフレームで撮像された複数の画像のことを「多視点画像」と記載し、また、１つのカメラ２００により時系列に撮像される一連の画像のことを「動画像」と記載する場合がある。
【００３０】
［サーバ装置２０の構成］
次に、本実施例に係るサーバ装置２０の機能的構成について説明する。図４は、実施例２に係るサーバ装置２０の機能的構成を示すブロック図である。図４に示すように、サーバ装置２０は、通信Ｉ／Ｆ（InterFace）部２１と、記憶部２３と、制御部２５とを有する。なお、図４には、上記の画像処理サービスに関連するサーバ装置２０の機能部が抜粋して示されているに過ぎず、図示以外の機能部、例えば既存のコンピュータがデフォルトまたはオプションで装備する機能部がサーバ装置２０に備わることを妨げない。例えば、上記の多視点画像がカメラ２００からサーバ装置２０へ放送波や衛星波を介して伝搬される場合、放送波や衛星波の受信部をさらに有することとしてもかまわない。
【００３１】
通信Ｉ／Ｆ部２１は、他の装置との間で通信制御を行うインタフェースである。
【００３２】
一実施形態として、通信Ｉ／Ｆ部２１には、ＬＡＮカードなどのネットワークインタフェースカードが対応する。例えば、通信Ｉ／Ｆ部２１は、カメラ２００から多視点画像を受信したり、また、撮像制御に関する指示、例えば電源ＯＮ／電源ＯＦＦの他、パンやチルトなどの指示をカメラ２００へ送信したりする。
【００３３】
記憶部２３は、制御部２５で実行されるＯＳ（Operating  System）を始め、上記の画像処理サービスを実現する画像処理プログラムなどの各種プログラムに用いられるデータを記憶する記憶デバイスである。
【００３４】
一実施形態として、記憶部２３は、サーバ装置２０における補助記憶装置として実装される。例えば、補助記憶装置には、ＨＤＤ（Hard  Disk  Drive）、光ディスクやＳＳＤ（Solid  State  Drive）などが対応する。この他、ＥＰＲＯＭ（Erasable  Programmable  Read  Only  Memory)などのフラッシュメモリも補助記憶装置に対応する。
【００３５】
記憶部２３は、制御部２５で実行されるプログラムに用いられるデータの一例として、ボクセル２３ａと、カメラパラメータ２３ｂと、シルエット画像２３ｃと、有効ボクセル２３ｄとを記憶する。これらボクセル２３ａ、カメラパラメータ２３ｂ、シルエット画像２３ｃ及び有効ボクセル２３ｄ以外にも、他の電子データを記憶することもできる。例えば、記憶部２３には、カメラ２００から伝送される各視点の動画像データなどを記憶することができる。なお、ここでは、多視点画像の撮影前に準備することが可能なボクセル２３ａ及びカメラパラメータ２３ｂの説明を先行して行う一方で、多視点画像の撮影後に生成されるシルエット画像２３ｃ及び有効ボクセル２３ｄの説明は制御部２５の説明にあずける。
【００３６】
ボクセル２３ａは、いわゆるボクセルデータである。図５は、ボクセルの一例を示す図である。図５に示すボクセルは、一例として、画像処理プログラムの設計関係者、あるいは自由視点映像の提供者や閲覧者等の関係者などにより、ユーザインタフェース等を介して、サイズ、例えば５ｃｍ×５ｃｍや１ｃｍ×１ｃｍが指定される。このサイズの指定にしたがって３次元形状を復元する対象とする３次元空間、例えばフィールドＦにボクセルが定義される。このようにボクセルが定義されたデータがボクセルデータ２３ａとして記憶部２３に保存される。なお、図５には、各ボクセルのサイズが一定である例が示されているが、前景となるオブジェクトの境界部に位置するボクセルを対象に当該ボクセルを所定数に分割することにより、境界部のボクセルのサイズを細かく設定することができる。
【００３７】
カメラパラメータ２３ｂは、カメラ２００に関するパラメータが定義されたデータである。例えば、カメラパラメータ２３ｂは、カメラ２００ごとにキャリブレーションを行うことにより設定することができる。このカメラパラメータ２３ｂには、一例として、カメラ２００の位置や向きなどの外部パラメータ及びカメラ２００の画角やレンズの歪みなどの内部パラメータが含まれる。
【００３８】
制御部２５は、サーバ装置２０の全体制御を行う処理部である。
【００３９】
一実施形態として、制御部２５は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などのハードウェアプロセッサにより実装することができる。ここでは、プロセッサの一例として、ＣＰＵやＭＰＵを例示したが、汎用型および特化型を問わず、任意のプロセッサにより実装することができる。この他、制御部２５は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによって実現されることとしてもかまわない。
【００４０】
制御部２５は、図示しない主記憶装置として実装されるＤＲＡＭ（Dynamic  Random  Access  Memory）やＳＲＡＭ（Static  Random  Access  Memory）などのＲＡＭのワークエリア上に、上記の画像処理プログラムを展開することにより、下記の処理部を仮想的に実現する。
【００４１】
制御部２５は、図４に示すように、取得部２５ａと、分離部２５ｂと、投影部２５ｃと、視野判定部２５ｄと、シルエット判定部２５ｅと、設定部２５ｆと、判定部２５ｇとを有する。
【００４２】
取得部２５ａは、多視点画像を取得する処理部である。
【００４３】
一実施形態として、取得部２５ａは、カメラ２００から伝送される多視点画像をフレーム単位で取得することができる。ここで、取得部２５ａが多視点画像を取得するソースは任意であってよく、カメラ２００に限定されない。例えば、取得部２５ａは、多視点画像を蓄積するハードディスクや光ディスクなどの補助記憶装置またはメモリカードやＵＳＢ（Universal  Serial  Bus）メモリなどのリムーバブルメディアから読み出すことにより多視点画像を取得することもできる。この他、取得部２５ａは、外部装置からネットワークＮＷを介して受信することによって多視点画像を取得することもできる。
【００４４】
分離部２５ｂは、前景と背景を分離する処理部である。ここで言う「前景」とは、カメラ２００の視野内の３次元空間に存在するオブジェクトの中でも動体などのオブジェクトを指す一方で、「背景」とは、動体でないオブジェクトを指す。
【００４５】
一実施形態として、分離部２５ｂは、取得部２５ａにより動画像のフレームがカメラ２００ごとに取得される度に、当該フレームの画像から前景に対応するシルエットをカメラ２００ごとに抽出する。例えば、分離部２５ｂは、当該フレームの画像と、それよりも前に取得されたフレームの画像との間で画素値の差分を検出することにより、シルエットを抽出する。すなわち、分離部２５ｂは、画像内に動体が観測されない可能性が高い背景のフレームの画像と、最新のフレームの画像との間で画素値の差が所定の閾値以上である画素を検出する。ここで、上記の背景のフレームの画像には、一例として、所定のフレーム数にわたってフレーム間の差分が検出されなかったフレームの画像などを利用することができる。このように抽出された画素は、ラベリングが実行されることによりブロブとして抽出することができる。その上で、分離部２５ｂは、ラベリングにより抽出されたブロブに対応する画素の画素値を「１」に設定すると共に、それ以外の画素の画素値を「０」に設定する。これにより、前景に対応するシルエットが「白」で表現されると共に、背景に対応する領域が「黒」で表現されたシルエット画像を生成することができる。なお、ここでは、シルエット画像の一例として、２値化画像を生成する場合を例示したが、階調の数は「２」に限定されないのは言うまでもない。
【００４６】
このように生成されたシルエット画像が視点およびフレームごとにシルエット画像２３ｃとして記憶部２３に保存される。以下では、あくまで一例として、シルエット画像２３ｃが記憶部２３に保存されてから３次元形状の復元が実行される場合を例示するが、フレームごとに各視点のシルエット画像が生成される度に、当該フレームにおける３次元形状の復元が実行されることとしてもかまわない。
【００４７】
投影部２５ｃは、カメラパラメータ２３ｂを用いて、各種の投影処理を実行する処理部である。
【００４８】
一実施形態として、投影部２５ｃは、サーバ装置２０に対する外部指示、あるいはシルエット画像２３ｃの生成終了などの任意の契機で処理を起動する。そして、投影部２５ｃは、記憶部２３に記憶されたボクセルデータ２３ａに定義されたボクセルのうち１つを選択する。さらに、投影部２５ｃは、カメラ２００Ａ〜２００Ｎのうち１つを選択する。その上で、投影部２５ｃは、記憶部２３に記憶されたカメラパラメータ２３ｂを参照して、シルエット画像２３ｃのうち先に選択されたカメラ２００に対応するシルエット画像上に先に選択されたボクセルを投影する。
【００４９】
視野判定部２５ｄは、投影後のボクセルがカメラ２００の視野内であるか否かを判定する処理部である。
【００５０】
一実施形態として、視野判定部２５ｄは、投影部２５ｃにより投影されたボクセルが投影先のシルエット画像に含まれるか否かを判定する。例えば、視野判定部２５ｄは、ボクセルが持つ８つの頂点がシルエット画像のフレーム内に含まれるか否かを判定する。このとき、少なくとも１つの頂点がシルエット画像のフレーム内に含まれる場合、当該ボクセルはカメラ２００の視野内であると識別される。この場合、視野判定部２５ｄは、図示しない内部メモリのワークエリアに保存される視野内視点数を１つインクリメントする。一方、１つの頂点もシルエット画像に含まれない場合、当該ボクセルはカメラ２００の視野外であると識別される。
【００５１】
なお、ここでは、あくまで一例として、ボクセルの頂点を用いてカメラ２００の視野内であるか否かを判定する場合を例示したが、ボクセルの重心がシルエット画像のフレーム内に含まれるか否かにより、カメラ２００の視野内であるか否かを判定することもできる。また、ここでは、１つでも頂点がシルエット画像のフレーム内に含まれる場合に当該ボクセルがカメラ２００の視野内であると判定される例を説明したが、フレーム内外を判定する頂点の数は任意に変更できるのは言うまでもない。例えば、頂点の半数以上がシルエット画像のフレーム内に含まれる場合に視野内であると判定することもできるし、１つでも頂点がシルエット画像のフレーム外である場合に視野外と判定することもできる。
【００５２】
シルエット判定部２５ｅは、投影後のボクセルがシルエット画像のシルエット内であるか否かを判定する処理部である。
【００５３】
一実施形態として、シルエット判定部２５ｅは、視野判定部２５ｄによりボクセルがカメラ２００の視野内であると判定された場合、次のような処理を実行する。すなわち、シルエット判定部２５ｅは、ボクセルが持つ８つの頂点がシルエット画像上のシルエット内に含まれるか否かを判定する。このとき、少なくとも１つの頂点がシルエット画像上のシルエット内に含まれる場合、当該ボクセルはシルエット内であると識別される。この場合、シルエット判定部２５ｅは、内部メモリのワークエリアに保存されるシルエット内視点数を１つインクリメントする。一方、１つの頂点もシルエット画像上のシルエット内に含まれない場合、当該ボクセルはシルエット外であると識別される。
【００５４】
図６は、投影前後のボクセルの一例を示す図である。図６には、シルエット画像２３ｃのうちカメラ２００Ａのシルエット画像２１０Ａおよびカメラ２００Ｂのシルエット画像２１０Ｂが抜粋して示されている。これらシルエット画像２１０Ａ及びシルエット画像２１０Ｂには、背景に対応する領域が黒で示される一方で、前景となるシルエットに対応する領域が白で示されている。さらに、図６には、ボクセルＶ１〜ボクセルＶ３の３つのボクセルがシルエット画像２１０Ａ及びシルエット画像２１０Ｂに投影される場合が示されている。
【００５５】
例えば、ボクセルＶ１の場合、シルエット画像２１０Ａ上のシルエット内にボクセルＶ１Ａが投影されると共に、シルエット画像２１０Ｂ上のシルエット内にボクセルＶ１Ｂが投影される。このため、視野内視点数およびシルエット内視点数のいずれも「２」と識別される。また、ボクセルＶ２の場合、シルエット画像２１０Ａのフレーム内ではあるが、シルエット外にボクセルＶ２Ａが投影されると共に、シルエット画像２１０Ｂのシルエット内にボクセルＶ２Ｂが投影される。このため、視野内視点数が「２」と識別される一方で、シルエット内視点数が「１」と識別される。さらに、ボクセルＶ３の場合、シルエット画像２１０Ａのフレーム外にボクセルＶ３Ａが投影されると共に、シルエット画像２１０Ｂのフレーム内ではあるが、シルエット外にボクセルＶ３Ｂが投影される。このため、視野内視点数が「１」と識別されると共に、シルエット内視点数が「０」と識別される。
【００５６】
なお、ここでは、あくまで一例として、ボクセルの頂点を用いてシルエット内であるか否かを判定する場合を例示したが、ボクセルの重心がシルエット画像上のシルエット内に含まれるか否かにより、シルエット内であるか否かを判定することもできる。また、ここでは、１つでも頂点がシルエット画像のシルエット内に含まれる場合に当該ボクセルがシルエット内であると判定される例を説明したが、シルエット内外を判定する頂点の数は任意に変更できるのは言うまでもない。例えば、頂点の半数以上がシルエット画像のシルエット内に含まれる場合にシルエット内であると判定することもできるし、１つでも頂点がシルエット画像のシルエット外である場合にシルエット外と判定することもできる。
【００５７】
設定部２５ｆは、カメラ２００の光学中心およびシルエットが重なるカメラの視点数と比較する視点数の閾値を設定する処理部である。
【００５８】
一側面として、設定部２５ｆは、内部メモリのワークエリアに保存された視野内視点数に比例する視点数の閾値を設定することができる。例えば、設定部２５ｆは、下記の式（１）にしたがって視点数の閾値を設定することができる。下記の式（１）における「Ｔｈ」は、視点数の閾値を指す。また、「ＶａｌｉｄＣａｍ」は、視野内視点数を指す。また、「ｗ」は、視野内視点数に応じた視点数の閾値を定める比例定数を指す。また、「Ｍｉｎ−Ｔｈ」は、視点数の閾値の最小値を指す。例えば、カメラ２００の総数が「１８」、Ｍｉｎ−Ｔｈが「６」、ｗ＝０．９の環境下で視野内視点数が「１５」と計数された場合、０．９×１５および６のうち大きい方の値である１３．５を選択し、視点数の閾値Ｔｈが１３．５に設定される。
【００５９】
Ｔｈ＝ｍａｘ（ｗ＊（ＶａｌｉｄＣａｍ），Ｍｉｎ−Ｔｈ）・・・（１）
【００６０】
他の側面として、設定部２５ｆは、内部メモリのワークエリアに保存された視野内視点数から定数を減算することにより視点数の閾値を設定することもできる。例えば、設定部２５ｆは、下記の式（２）にしたがって視点数の閾値を設定することができる。下記の式（２）における「Ｔｈ」は、視点数の閾値を指す。また、「ＶａｌｉｄＣａｍ」は、視野内視点数を指す。また、「ｎ」は、視野内視点数に応じた視点数の閾値を定める定数を指す。また、「Ｍｉｎ−Ｔｈ」は、視点数の閾値の最小値を指す。例えば、カメラ２００の総数が「１８」、Ｍｉｎ−Ｔｈが「６」、ｎ＝３の環境下で視野内視点数が「７」と計数された場合、７−３および６のうち大きい方の値である６を選択し、視点数の閾値Ｔｈが最小値である６に設定される。
【００６１】
Ｔｈ＝ｍａｘ（（ＶａｌｉｄＣａｍ−ｎ），Ｍｉｎ−Ｔｈ）・・・（２）
【００６２】
更なる側面として、設定部２５ｆは、内部メモリのワークエリアに保存された視野内視点数から求まる最低限度のカメラ数を視点数の閾値として設定することができる。例えば、設定部２５ｆは、下記の式（３）にしたがって視点数の閾値を設定することができる。下記の式（３）における「Ｔｈ」は、視点数の閾値を指す。また、「ＶａｌｉｄＣａｍ」は、視野内視点数を指す。また、「ｗ」は、視野内視点数に応じた視点数の閾値を定める比例定数を指す。但し、下記の式（３）には、「ＶａｌｉｄＣａｍ＜Ｍｉｎ−ＶａｌｉｄＣａｍであるとき、Ｔｈ＝Ｍａｘ−Ｔｈ」とする拘束条件が設定される。この「Ｍａｘ−Ｔｈ」は、視点数の閾値の最大値、すなわちカメラ２００の総数を指す。
【００６３】
Ｔｈ＝ｗ＊（ＶａｌｉｄＣａｍ）・・・（３）
【００６４】
なお、上記の式（１）や上記の式（２）では、視野内視点数がＭｉｎ−Ｔｈを下回る場合、実際にボクセルがオブジェクトの一部に該当する場合に有効ボクセルと認識させない場合を例示したが、視野内視点数がＭｉｎ−Ｔｈを下回る場合、視点数の閾値Ｔｈを視野内視点数と同数に設定することもできる。これにより、３次元形状を復元する機会が損なわれるのを抑制することもできる。
【００６５】
判定部２５ｇは、ボクセルが有効ボクセルであるか否かを判定する処理部である。ここで言う「有効ボクセル」とは、ボクセルの中でも３次元のオブジェクトの一部であるという認識が有効にされたボクセルのことを指す。
【００６６】
一実施形態として、判定部２５ｇは、１つのボクセルにつき視野内外およびシルエット内外の判定がカメラ２００ごとに実行された場合、次のような処理を実行する。すなわち、判定部２５ｇは、内部メモリのワークエリアに保存されたシルエット内視点数が設定部２５ｆにより設定された視点数の閾値以上であるか否かを判定する。ここで、シルエット内視点数が視点数の閾値以上である場合、当該ボクセルが３次元のオブジェクトの一部である有効ボクセルと認識される。この場合、判定部２５ｇは、当該有効ボクセルを記憶部２３に登録する。例えば、有効ボクセルの識別情報がリスト化されたデータが有効ボクセル２３ｄとして記憶部２３に登録される場合、判定部２５ｇは、シルエット内視点数が視点数の閾値以上であるボクセルの識別情報を有効ボクセル２３ｄのリストへ追加登録する。
【００６７】
このように得られた有効ボクセル２３ｄを用いることにより、多視点画像から自由視点映像を生成することができる。この場合、有効ボクセルを映像面に投影し、多視点画像の対応画素の色を用いる「VoxelColoring」という手法を用いることができる。例えば、「VoxelColoring」については、「S.M.Seitz,  C.M.Dyer  ”Photorealistic  scene  reconstruction  by  voxel  Coloring”  Proc.」や「Computer  Vision  and  Pattern  Recognition  97,  pages  1067-1073,  1999.」などの文献にしたがって実現できる。
【００６８】
［処理の流れ］
図７は、実施例２に係る画像処理の手順を示すフローチャートである。この処理は、一例として、サーバ装置２０に対する外部指示、あるいはシルエット画像２３ｃの生成終了などの任意の契機に開始される。
【００６９】
図７に示すように、投影部２５ｃは、記憶部２３に記憶されたボクセルデータ２３ａに定義されたボクセルのうち１つを選択する（ステップＳ２０１）。さらに、投影部２５ｃは、カメラ２００Ａ〜２００Ｎのうち１つを選択する（ステップＳ２０２）。その上で、投影部２５ｃは、記憶部２３に記憶されたカメラパラメータ２３ｂを参照して、シルエット画像２３ｃのうちステップＳ２０２で選択されたカメラ２００に対応するシルエット画像上にステップＳ２０１で選択されたボクセルを投影する（ステップＳ２０３）。
【００７０】
続いて、視野判定部２５ｄは、ステップＳ２０３で投影されたボクセルが投影先のシルエット画像のフレーム内に含まれるか否かを判定する（ステップＳ２０４）。このとき、ボクセルがシルエット画像のフレーム内に含まれる場合（ステップＳ２０４Ｙｅｓ）、視野判定部２５ｄは、内部メモリのワークエリアに保存される視野内視点数を１つインクリメントする（ステップＳ２０５）。
【００７１】
そして、シルエット判定部２５ｅは、ステップＳ２０３で投影されたボクセルがシルエット画像上のシルエット内に含まれるか否かを判定する（ステップＳ２０６）。このとき、ボクセルがシルエット画像上のシルエット内に含まれる場合（ステップＳ２０６Ｙｅｓ）、シルエット判定部２５ｅは、内部メモリのワークエリアに保存されるシルエット内視点数を１つインクリメントする（ステップＳ２０７）。
【００７２】
また、ボクセルがシルエット画像のフレーム内に含まれない場合、あるいはボクセルがシルエット画像上のシルエット内に含まれない場合（ステップＳ２０４ＮｏまたはステップＳ２０６Ｎｏ）、ステップＳ２０８の処理へ移行する。その後、全てのカメラ２００が選択されるまで（ステップＳ２０８Ｎｏ）、上記のステップＳ２０２からステップＳ２０７までの処理を繰り返し実行する。
【００７３】
そして、全てのカメラ２００が選択された場合（ステップＳ２０８Ｙｅｓ）、設定部２５ｆは、内部メモリのワークエリアに保存された視野内視点数に基づいて視点数の閾値を設定する（ステップＳ２０９）。続いて、判定部２５ｇは、内部メモリのワークエリアに保存されたシルエット内視点数がステップＳ２０９で設定された視点数の閾値以上であるか否かを判定する（ステップＳ２１０）。
【００７４】
ここで、シルエット内視点数が視点数の閾値以上である場合（ステップＳ２１０Ｙｅｓ）、当該ボクセルが３次元のオブジェクトの一部である有効ボクセルと認識される。この場合、判定部２５ｇは、当該有効ボクセルを記憶部２３の有効ボクセル２３ｄに登録する（ステップＳ２１１）。一方、シルエット内視点数が視点数の閾値以上でない場合（ステップＳ２１０Ｎｏ）、当該ボクセルが有効ボクセルと認識されず、ステップＳ２１１の処理がスキップされる。
【００７５】
その後、全てのボクセルが選択されるまで（ステップＳ２１２Ｎｏ）、上記のステップＳ２０１からステップＳ２１１までの処理が繰り返し実行される。そして、全てのボクセルが選択された場合（ステップＳ２１２Ｙｅｓ）、処理を終了する。
【００７６】
なお、図７に示すステップＳ２０３からステップＳ２０７までの処理は、カメラ２００ごとに並行して実行することができる。この場合、一例として、取得部２５ａ、分離部２５ｂ、投影部２５ｃ、視野判定部２５ｄ及びシルエット判定部２５ｅなどの処理部の機能を有するサーバ装置２０をカメラ２００ごとに設け、各サーバ装置２０でステップＳ２０３からステップＳ２０７までの分散並列処理を実行させることができる。この場合、各サーバ装置で判定された視野内外およびシルエット内外の判定結果を取得し、視野内視点数およびシルエット内視点数を集計する処理部を設定部２５ｆ及び判定部２５ｇの前段に設けることにより、上記の分散並列処理を実現できる。なお、当然のことながら、上記の「サーバ装置」は、物理マシンであっても仮想マシンであってもかまわない。
【００７７】
［効果の一側面］
上述してきたように、本実施例に係るサーバ装置２０は、３次元空間上の要素がシルエット画像のフレーム内に含まれる視点数から視点数の閾値を設定し、シルエット画像上のシルエット内に含まれる視点数が視点数の閾値以上である要素から３次元空間のオブジェクトの形状を推定する。したがって、本実施例に係るサーバ装置２０によれば、一部のカメラで観測されるオブジェクトの３次元形状を復元できる。また、視野内視点数に応じて視点数の閾値を適切に変更できる。それ故、互いの距離が小さいカメラ間や互いの光軸が略平行であるカメラ間でしか観測されない要素まで３次元形状と推定されるのを抑制できる結果、３次元空間上のオブジェクトが歪な形状で復元されることも抑制できる。
【００７８】
このように一部のカメラで観測されるオブジェクトの３次元形状の復元を実現できる場合、カメラ配置の制約も緩和できる。
【００７９】
図８〜図１０は、カメラ配置の一例を示す図である。図８及び図９には、フィールドＦの２つのゴール前を関心領域Ｒとし、当該関心領域Ｒが全てのカメラで観測されるようにカメラが配置される例が示されている。この場合、従来では、図８に示すように、Ｖｉｓｕａｌ−Ｈｕｌｌで３次元形状が復元される対象が関心領域Ｒに限定される。一方、本実施例では、関心領域Ｒ外の領域でも、Ｖｉｓｕａｌ−Ｈｕｌｌで３次元形状を復元できる。したがって、本実施例では、既存と同様のカメラ配置においても、Ｖｉｓｕａｌ−Ｈｕｌｌで３次元形状が復元される領域を広げることができる。また、図８には、全てのカメラの画角が同一である場合を例示したが、本実施例では、全てのカメラで観測されるカメラ配置に拘束されない。このため、図９に示すように、ズームカメラなど特定の領域を照準とするカメラを導入しても、図７等に示す処理内容を変更せずとも、３次元形状を復元できる。さらに、図８及び図９には、既存のカメラ配置を示したが、本実施例では、全てのカメラで観測されるカメラ配置に拘束されないので、図１０に示すように、フィールドＦ上に関心領域Ｒを設定しないカメラ配置を自由にレイアウトできる。
【００８０】
以下の実施例３では、Ｖｉｓｕａｌ−Ｈｕｌｌの実装として、Ｒａｙを用いる場合を例示して３次元形状の復元を実現する画像処理装置１の他の実装例について説明する。
【実施例３】
【００８１】
図１１は、実施例３に係るサーバ装置３０の機能的構成を示すブロック図である。図１１には、図４に示すサーバ装置２０に比べて機能の一部が異なる機能部および図４に示すサーバ装置２０に記載がない機能部に異なる符号を付与する一方で、図４に示すサーバ装置２０と同様の機能を発揮する機能部には同一の符号を付与している。以下、図４に示すサーバ装置２０と同一の符号が付与された機能部については説明の重複を避ける観点からその説明を省略し、異なる符号が付与された機能部について説明を行う。
【００８２】
図１１に示すサーバ装置３０は、シルエット画像の中から選択された基準シルエット画像上のシルエットに対応する画素および基準シルエット画像に対応する視点のカメラ２００の光学中心を結ぶ線、すなわちＲａｙを基準シルエット画像以外の参照シルエット画像に投影することにより得られるエピポーラ線を用いて、各カメラ２００の視点ごとにデプス画像を生成する。それ故、図１１に示すサーバ装置３０は、図４に示すサーバ装置２０に比べて、３次元形状を表すデータとして、有効ボクセル２３ｄの代わりに、各カメラ２００の視点ごとのデプス画像３３ａが記憶部３３に保存される点が異なる。
【００８３】
さらに、図１１に示すサーバ装置３０は、図４に示すサーバ装置２０に比べて、制御部３５内にエピポーラ線算出部３５ａ、第１の視点数算出部３５ｂ、第２の視点数算出部３５ｃおよび生成部３５ｄを有する点が異なる。
【００８４】
エピポーラ線算出部３５ａは、エピポーラ線を算出する処理部である。
【００８５】
一実施形態として、エピポーラ線算出部３５ａは、カメラ２００Ａ〜２００Ｎのうち１つを基準カメラとして選択する。一方、基準カメラとして選択されなかったカメラ２００は以降で参照カメラと識別される。続いて、エピポーラ線算出部３５ａは、基準カメラの視点に対応する基準シルエット画像が持つ画素のうち前景となるシルエットを形成する画素を１つ選択する。さらに、エピポーラ線算出部３５ａは、参照カメラのうち１つを選択する。
【００８６】
その上で、エピポーラ線算出部３５ａは、基準カメラの光学中心および基準シルエット画像上のシルエットに対応する画素を結ぶ線を先に選択された参照シルエット画像に投影することにより、エピポーラ線を算出する。続いて、エピポーラ線算出部３５ａは、エピポーラ線の開始位置および終了位置を算出する。例えば、開始位置は、基準カメラの光学中心が参照シルエット画像に投影された点に対応する。また、終了位置は、３次元空間上で基準カメラの光学中心からシルエットに対応する画素へ通る直線を無限遠まで延伸した点に対応する。
【００８７】
そして、エピポーラ線算出部３５ａは、上記のエピポーラ線が参照シルエット画像のフレームの境界と交わる交点を算出する。このとき、エピポーラ線の開始位置が参照シルエット画像のフレーム外に存在する場合、エピポーラ線が参照シルエット画像と２回交わるので、２つの交点が算出される。以下、エピポーラ線が参照シルエット画像のフレームの境界と交わる交点のことを「フレーム境界の交点」と記載する場合がある。
【００８８】
その後、エピポーラ線算出部３５ａは、上記のエピポーラ線が参照シルエット画像上のシルエットの境界と交わる交点を算出する。このとき、参照シルエット画像上に複数のシルエットが存在する場合、エピポーラ線が複数のシルエットと交わるので、２つ以上の交点が算出される。以下、エピポーラ線が参照シルエット画像上のシルエットの境界と交わる交点のことを「シルエット境界の交点」と記載する場合がある。
【００８９】
その上で、エピポーラ線算出部３５ａは、フレーム境界の交点間を結ぶ線分およびシルエット境界の交点間を結ぶ線分を基準カメラの光学中心からの奥行き情報へ変換する。以下、フレーム境界の交点間を結ぶ線分のことを「フレーム内線分」と記載し、シルエット境界の交点間を結ぶ線分のことを「シルエット内線分」と記載する場合がある。
【００９０】
第１の視点数算出部３５ｂは、視野内視点数を算出する処理部である。
【００９１】
一実施形態として、第１の視点数算出部３５ｂは、参照カメラごとに、基準カメラの光学中心および基準シルエット画像上のシルエットに対応する画素を結ぶＲａｙ上にフレーム境界の交点間を結ぶフレーム内線分をプロットする。その上で、第１の視点数算出部３５ｂは、参照カメラの間でフレーム内線分が重なる重複部分を抽出した上で、参照カメラの間で重なる個数が最大となる重複部分における個数を視野内視点数として算出する。このように算出された視野内視点数により、設定部２５ｆは、上記の実施例２と同様に、視点数の閾値を設定することができる。
【００９２】
第２の視点数算出部３５ｃは、シルエット内視点数を算出する処理部である。
【００９３】
一実施形態として、第２の視点数算出部３５ｃは、参照カメラごとに、基準カメラの光学中心および基準シルエット画像上のシルエットに対応する画素を結ぶＲａｙ上にシルエット境界の交点間を結ぶシルエット内線分をプロットする。その上で、第２の視点数算出部３５ｃは、参照カメラの間でシルエット内線分が重なる重複部分を抽出した上で、参照カメラの間で重なる個数が最大となる重複部分における個数をシルエット内視点数として算出する。
【００９４】
生成部３５ｄは、デプス画像を生成する処理部である。
【００９５】
一実施形態として、生成部３５ｄは、基準シルエット画像のシルエットに対応する画素のうちシルエット内視点数が視点数の閾値以上である画素ごとに、参照カメラの間で最大の個数の重複部分の奥行き情報を抽出する。続いて、生成部３５ｄは、基準シルエット画像でシルエット内視点数が視点数の閾値以上である画素ごとに抽出された最大の個数の重複部分の奥行き情報にしたがって基準カメラに対応するデプス画像を生成する。その上で、生成部３５ｄは、カメラごとに生成されたデプス画像をデプス画像３５ａとして記憶部３３に保存する。
【００９６】
図１２は、Ｒａｙ上の重複部分の一例を示す図である。図１２には、カメラ２００のうちカメラ２００Ａを基準カメラとする場合の例が示されると共に、それ以外の参照カメラのうちカメラ２００Ｂ、カメラ２００Ｃ及びカメラ２００Ｎが抜粋して示されている。さらに、図１２には、基準シルエット画像２１０Ａ上のシルエット内の画素（ｕ１，ｖ１）および基準カメラ２００Ａの光学中心Ｏ１を結ぶＲａｙが示されている。なお、図１２には、説明の便宜上、各参照カメラごとにＲａｙ上にプロットされるフレーム内線分およびシルエット内線分を個別に抜粋して示す。
【００９７】
図１２に示すように、参照カメラ２００Ｂに対応するＲａｙには、参照シルエット画像２１０Ｂにおけるフレーム内線分が破線でプロットされると共に、参照シルエット画像２１０Ｂにおけるシルエット内線分が白の太線でプロットされている。さらに、参照カメラ２００Ｃに対応するＲａｙには、参照シルエット画像２１０Ｃにおけるフレーム内線分が破線でプロットされると共に、参照シルエット画像２１０Ｃにおけるシルエット内線分が白の太線でプロットされている。さらに、参照カメラ２００Ｎに対応するＲａｙには、参照シルエット画像２１０Ｎにおけるフレーム内線分が破線でプロットされると共に、参照シルエット画像２１０Ｎにおけるシルエット内線分が白の太線でプロットされている。
【００９８】
このように参照カメラごとにフレーム内線分およびシルエット内線分がプロットされている場合、参照カメラ２００Ｂ、参照カメラ２００Ｃ及び参照カメラ２００Ｎの間で互いのフレーム内線分が重なる重複部分を抽出することができる。この場合、フレーム内線分が重なる最大の個数は３個となる。このため、視野内視点数が「３」と算出される。同様に、参照カメラ２００Ｂ、参照カメラ２００Ｃ及び参照カメラ２００Ｎの間で互いのシルエット内線分が重なる重複部分を抽出することができる。この場合、シルエット内線分が重なる最大の個数は３個となる。このため、シルエット内視点数も「３」と算出される。そして、基準シルエット画像２１０Ａ上の画素（ｕ１，ｖ１）のシルエット内視点数が視点数の閾値以上である場合、最大の個数の重複部分Ｐの奥行き情報がデプス画像における画素（ｕ１，ｖ１）のデプスの算出に用いられる。
【００９９】
図１３は、実施例３に係る画像処理の手順を示すフローチャートである。この処理は、一例として、サーバ装置３０に対する外部指示、あるいはシルエット画像２３ｃの生成終了などの任意の契機に開始される。
【０１００】
図１３に示すように、エピポーラ線算出部３５ａは、カメラ２００Ａ〜２００Ｎのうち１つを基準カメラとして選択する（ステップＳ３０１）。ここで、基準カメラとして選択されなかったカメラ２００は以降で参照カメラと識別される。続いて、エピポーラ線算出部３５ａは、基準カメラの視点に対応する基準シルエット画像が持つ画素のうち前景となるシルエットを形成する画素を１つ選択する（ステップＳ３０２）。さらに、エピポーラ線算出部３５ａは、参照カメラのうち１つを選択する（ステップＳ３０３）。
【０１０１】
その上で、エピポーラ線算出部３５ａは、基準カメラの光学中心および基準シルエット画像上のシルエットに対応する画素を結ぶ線を先に選択された参照シルエット画像に投影することにより、エピポーラ線を算出する（ステップＳ３０４）。
【０１０２】
続いて、エピポーラ線算出部３５ａは、エピポーラ線の開始位置および終了位置からエピポーラ線が参照シルエット画像のフレームの境界と交わる交点を算出する（ステップＳ３０５）。さらに、エピポーラ線算出部３５ａは、エピポーラ線が参照シルエット画像上のシルエットの境界と交わる交点を算出する（ステップＳ３０６）。
【０１０３】
その上で、エピポーラ線算出部３５ａは、フレーム境界の交点間を結ぶフレーム内線分およびシルエット境界の交点間を結ぶシルエット内線分を基準カメラの光学中心からの奥行き情報へ変換する（ステップＳ３０７）。
【０１０４】
その後、全ての参照カメラが選択されるまで（ステップＳ３０８Ｎｏ）、上記のステップＳ３０３からステップＳ３０７までの処理が繰り返し実行される。そして、全ての参照カメラが選択されると（ステップＳ３０８Ｙｅｓ）、第１の視点数算出部３５ｂは、参照カメラごとに、基準カメラの光学中心および基準シルエット画像上のシルエットに対応する画素を結ぶＲａｙ上にフレーム内線分をプロットし、参照カメラの間で重なる個数が最大となる重複部分における個数を視野内視点数として算出する（ステップＳ３０９）。
【０１０５】
また、第２の視点数算出部３５ｃは、参照カメラごとに、基準カメラの光学中心および基準シルエット画像上のシルエットに対応する画素を結ぶＲａｙ上にシルエット内線分をプロットし、参照カメラの間で重なる個数が最大となる重複部分における個数をシルエット内視点数として算出する（ステップＳ３１０）。
【０１０６】
そして、設定部２５ｆは、ステップＳ３０９で算出された視野内視点数に基づいて視点数の閾値を設定する（ステップＳ３１１）。続いて、生成部３５ｄは、ステップＳ３１０で算出されたシルエット内視点数がステップＳ３１１で設定された視点数の閾値以上であるか否かを判定する（ステップＳ３１２）。
【０１０７】
ここで、シルエット内視点数が視点数の閾値以上である場合（ステップＳ３１２Ｙｅｓ）、基準シルエット画像上の画素が３次元のオブジェクトの一部であると推定できる。この場合、生成部３５ｄは、ステップＳ３０２で選択された画素をデプス画像の生成に用いる画素と識別する（ステップＳ３１３）。なお、シルエット内視点数が視点数の閾値以上でない場合（ステップＳ３１２Ｎｏ）、ステップＳ３１３の処理がスキップされる。
【０１０８】
その後、基準シルエット画像上でシルエットに対応する全ての画素が選択されるまで（ステップＳ３１４Ｎｏ）、上記のステップＳ３０２からステップＳ３１３までの処理が繰り返し実行される。そして、基準シルエット画像上でシルエットに対応する全ての画素が選択されると（ステップＳ３１４Ｙｅｓ）、生成部３５ｄは、基準シルエット画像でシルエット内視点数が視点数の閾値以上である画素ごとに抽出された最大の個数の重複部分の奥行き情報からデプス画像を生成する（ステップＳ３１５）。その後、全てのカメラが基準カメラとして選択されるまで（ステップＳ３１６Ｎｏ）、上記のステップＳ３０１からステップＳ３１５までの処理を繰り返し実行し、全てのカメラが基準カメラとして選択されると（ステップＳ３１６Ｙｅｓ）、処理を終了する。
【０１０９】
［効果の一側面］
上述してきたように、本実施例に係るサーバ装置３０によれば、上記の実施例２と同様に、一部のカメラで観測されるオブジェクトの３次元形状を復元できる。さらに、本実施例に係るサーバ装置３０によれば、上記の実施例２と同様に、３次元空間上のオブジェクトが歪な形状で復元されることも抑制できると共に、カメラ配置の制約も緩和できる。
【実施例４】
【０１１０】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１１１】
［スタンドアローン］
上記の実施例２及び上記の実施例３では、上記の画像処理サービスを提供するサーバ装置２０及び３０を例示することによりクライアントサーバシステムにより実装例を示したが、スタンドアローンで実装されることとしてもかまわない。この場合、スタンドアローンで動作するコンピュータに上記の画像処理プログラムをインストールすることとすればよい。
【０１１２】
［画像処理プログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１４を用いて、上記の実施例と同様の機能を有する画像処理プログラムを実行するコンピュータの一例について説明する。
【０１１３】
図１４は、実施例１〜実施例３に係る画像処理プログラムを実行するコンピュータのハードウェア構成例を示す図である。図１４に示すように、コンピュータ１００は、操作部１１０ａと、スピーカ１１０ｂと、カメラ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ１７０と、ＲＡＭ１８０とを有する。これら１１０〜１８０の各部はバス１４０を介して接続される。
【０１１４】
ＨＤＤ１７０には、図１４に示すように、上記の実施例１で示した機能部、上記の実施例２で示した機能部または上記の実施例３で示した機能部と同様の機能を発揮する画像処理プログラム１７０ａが記憶される。この画像処理プログラム１７０ａは、図１、図４または図１１に示した機能部の各構成要素と同様、統合又は分離してもかまわない。すなわち、ＨＤＤ１７０には、必ずしも上記の実施例１、上記の実施例２または上記の実施例３で示した全てのデータが格納されずともよく、処理に用いるデータがＨＤＤ１７０に格納されればよい。
【０１１５】
このような環境の下、ＣＰＵ１５０は、ＨＤＤ１７０から画像処理プログラム１７０ａを読み出した上でＲＡＭ１８０へ展開する。この結果、画像処理プログラム１７０ａは、図１４に示すように、画像処理プロセス１８０ａとして機能する。この画像処理プロセス１８０ａは、ＲＡＭ１８０が有する記憶領域のうち画像処理プロセス１８０ａに割り当てられた領域にＨＤＤ１７０から読み出した各種データを展開し、この展開した各種データを用いて各種の処理を実行する。例えば、画像処理プロセス１８０ａが実行する処理の一例として、図７や図１３に示す処理などが含まれる。なお、ＣＰＵ１５０では、必ずしも上記の実施例１で示した全ての処理部が動作せずともよく、実行対象とする処理に対応する処理部が仮想的に実現されればよい。
【０１１６】
なお、上記の画像処理プログラム１７０ａは、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶されておらずともかまわない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に画像処理プログラム１７０ａを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から画像処理プログラム１７０ａを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに画像処理プログラム１７０ａを記憶させておき、コンピュータ１００がこれらから画像処理プログラム１７０ａを取得して実行するようにしてもよい。
【符号の説明】
【０１１７】
１    画像処理装置
１Ａ  取得部
１Ｂ  分離部
１Ｃ  分類部
１Ｄ  設定部
１Ｆ  推定部
２    復元システム
２０    サーバ装置
２１    通信Ｉ／Ｆ部
２３    記憶部
２３ａ  ボクセル
２３ｂ  カメラパラメータ
２３ｃ  シルエット画像
２３ｄ  有効ボクセル
２５    制御部
２５ａ  取得部
２５ｂ  分離部
２５ｃ  投影部
２５ｄ  視野判定部
２５ｅ  シルエット判定部
２５ｆ  設定部
２５ｇ  判定部
【図１】
2018194985.tif 000003
【図２】
2018194985.tif 000004
【図３】
2018194985.tif 000005
【図４】
2018194985.tif 000006
【図５】
2018194985.tif 000007
【図６】
2018194985.tif 000008
【図７】
2018194985.tif 000009
【図８】
2018194985.tif 000010
【図９】
2018194985.tif 000011
【図１０】
2018194985.tif 000012
【図１１】
2018194985.tif 000013
【図１２】
2018194985.tif 000014
【図１３】
2018194985.tif 000015
【図１４】
2018194985.tif 000016