説明

画像処理装置および方法

【課題】 現実のカメラで撮影した画像に近い仮想視点の画像を生成する。
【解決手段】 仮想視点画像の注目画素の仮想視点画像における座標に対して、仮想カメラの歪曲特性に応じた歪曲補正を行うことにより、仮想視点画像における歪曲補正後の座標を算出し、仮想視点画像における歪曲補正後の座標から撮影画像における理想座標を算出し、撮像部の歪曲特性に応じて前記撮影画像における理想座標から撮影画像における実座標を算出し、仮想視点画像の画像データから、実座標に対応する画素値を算出し、撮像部の周辺光量落ち特性および仮想カメラの周辺光量落ち特性とに基づき実座標に対応する画素値を補正する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、歪曲特性および周辺光量落ち特性を有する撮像部の撮影画像から、仮想カメラの歪曲特性および周辺光落ち特性に応じた仮想視点の画像を生成するものに関する。
【背景技術】
【0002】
複数台のカメラで同一シーンを撮影し、移動する仮想視点から見た映像(自由視点画像)を表現するシステムが提案されている(例えば、特許文献1)。このようなシステムの最も単純な実現方法は、複数のカメラを設置し、各カメラの映像を切り替えながら連続再生する方法である。このような画像再生装置においては、特許文献1で提案されているように、異なるカメラ間の明るさや色味を調整し、滑らかな映像再生を行うことが考えられる。また、実際のカメラで撮影した映像だけでなく、カメラとカメラの間に仮想カメラを想定して仮想視点映像を生成し、この映像も用いて連続性を高める画像処理なども考えられる(例えば、特許文献2)。また任意視点映像を生成するために、複数のカメラの映像から、被写体の距離情報を取得してレンダリングする手法が広く知られている。仮想視点映像を生成する際、仮想視点映像と実カメラ映像に写る点の対応を幾何学的に計算するため、実カメラ映像に存在する歪曲収差などは補正される。そして、仮想視点映像は、ピンホールカメラのように幾何学的な射影変換により、歪曲の無い映像が作成される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−088247号公報
【特許文献2】特開2008−217243号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、ピンホールカメラを模した射影変換による歪曲の無い映像では、映像周辺部での物体の変形が、実カメラで撮影する映像よりも大きくなる。このため、違和感のある映像となってしまう。また、被写体の距離情報の取得に失敗すると、仮想視点映像の生成にも失敗するため、安定した映像を出すのは困難である。
【0005】
本発明は、現実のカメラで撮影した画像に近い仮想視点の画像を生成することを目的とする。
【課題を解決するための手段】
【0006】
本発明は、歪曲特性および周辺光量落ち特性を有する撮像部の撮影画像から、仮想カメラの歪曲特性および周辺光落ち特性に応じた仮想視点の画像を生成する画像処理装置であって、前記仮想視点画像の注目画素の該仮想視点画像における座標に対して、前記仮想カメラの歪曲特性に応じた歪曲補正を行うことにより、該仮想視点画像における歪曲補正後の座標を算出する第1算出手段と、前記仮想視点画像における歪曲補正後の座標から前記撮影画像における理想座標を算出する第2算出手段と、前記撮像部の歪曲特性に応じて前記撮影画像における理想座標から前記撮影画像における実座標を算出する第3算出手段と、前記仮想視点画像の画像データから、前記実座標に対応する画素値を算出する第4算出手段と、前記撮像部の周辺光量落ち特性および前記仮想カメラの周辺光量落ち特性とに基づき前記実座標に対応する画素値を補正する補正手段とを有することを特徴とする。
【発明の効果】
【0007】
本発明によれば、現実のカメラで撮影した画像に近い仮想視点の画像を生成することができる。
【図面の簡単な説明】
【0008】
【図1】実施例1による画像再生装置の概念図である。
【図2】実施例1のシステム構成を表す図である。
【図3】キャプチャPCでの処理の概要を示す図である。
【図4】キャプチャPCから画像処理PCへ送信する画像データのデータ形式を示す図である。
【図5】キャプチャPCの処理の流れを示すフローチャートである。
【図6】シナリオデータ、および上映コントロール情報の例である。
【図7】キャプチャPC上で実行される送信処理の流れを示すフローチャートである。
【図8】画像処理PCでの処理の概要を示す図である。
【図9】画像処理PCでの処理の流れを示すフローチャートである。
【図10】画像処理PCから画像表示PCへの送信データ形式を示す図である。
【図11】画像表示PCでの処理の概要を示す図である。
【図12】通常上映処理の流れを示すフローチャートである。
【図13】バックアップ上映処理の流れを示すフローチャートである。
【図14】カメラやPCの有効判定処理の流れを示すフローチャートである。
【図15】アラート表示ダイアログの例である。
【図16】仮想視点映像生成処理で用いるパラメータを説明する図である。
【図17】仮想視点映像生成処理の流れを示すフローチャートである。
【図18】カバー率を説明する図である。
【図19】カメラ選択処理の流れを示すフローチャートである。
【図20】カメラの選択処理1の流れを示すフローチャートである。
【図21】カメラの選択処理2の流れを示すフローチャートである。
【図22】カメラの再選択処理の流れを示すフローチャートである。
【図23】実施例2におけるキャプチャPCでの処理の概要を示す図である。
【図24】実施例2における送信領域を説明する図である。
【図25】実施例2におけるキャプチャPCから画像処理PCへ送信するデータのデータ形式を示す図である。
【発明を実施するための形態】
【0009】
〔実施例1〕
【0010】
本実施例は、固定された複数のカメラ(撮像部)を用いて予め定められたシナリオ(例えば、図6(a))に沿って移動する仮想視点映像を生成し、これをリアルタイム上映する画像再生装置である。図1は、本実施例の概念図である。図1(a)に示したように、本実施例における固定カメラは仮想視点の移動ルートに沿ってカメラの撮影領域が重複するように配置される。図1(a)において、101は撮影用カメラ、102は床面であり、カメラは図示しない金属製の枠によって宙吊りの状態で固定されている。
【0011】
仮想視点は、図1中に示したように、床102をx−y平面上に含み、高さ方向をz軸とする座標系上で設定される。
【0012】
本実施例におけるシナリオデータには、上映時間中の各フレームについて、仮想視点の位置、方向および姿勢を表現するための仮想視点座標、仮想視点方向および仮想視点上方向ベクトルが記述されている。仮想視点座標と仮想視点方向は、この座標系における仮想視点の位置と向きである。仮想視点上方向ベクトルとは、仮想視点の向きに対して視界がどの程度傾いているかを指定するためパラメータであり、仮想視点方向と仮想視点上方向ベクトルは直交する。これに画角を加えることで、仮想視点からの視界を表現することが出来る。
【0013】
本実施例では、さらにレンズ効果パラメータ(歪曲強度α、周辺光量落ち強度β)を加えることで、固定された複数のカメラの映像から、あたかも実際にカメラを移動しながら撮影したかのような自然な映像を生成する。また、仮想視点映像生成処理で用いるパラメータである、基準面の高さを保持する。基準面の高さ情報は、使用カメラの切り替え時の滑らかさに影響する。例えば本実施例において、ほぼ無人の状態の場合、基準面を床に取るのが望ましいが、撮影領域に多数の人が居る場合には、平均身長程度の高さに基準面を取った方が滑らかな映像になる。
【0014】
シナリオデータに基準面の高さ情報を保持することで、被写体の状態に応じて基準面の高さを変更することが可能になる。基準面の高さの変更は、各カメラによる撮影画像から自動生成しても良いし、マニュアル指定しても良い。
【0015】
また図1(b)は図1(a)を2次元平面に投影したものであり、シーンに複数の人がいる場合を想定したものである。図1(b)において、104は被写体となる人を表している。105は仮想的な視点を表している。
【0016】
図2は、本実施例を実現するためのシステム図である。本システムは、管理サーバPC201によってシステム全体を管理する。システム全体を管理サーバPC201が制御するので、このPCにのみコンソール画面とキーボード、マウスなどの操作デバイスが接続されている。各撮影用カメラ101はキャプチャ用PC202にHD−SDI(High Definition Serial Digital Interface)ケーブルで接続され、映像はキャプチャPC202を介して画像処理PCに送信される。例えば本実施例ではカメラの出力解像度はフルHD解像度(1920×1080画素、秒30コマ)であり、非常にデータ量が大きい。そのため、全てのカメラの映像を一斉に送信すると、通信経路の帯域を使い切ってしまうという問題が発生する。そこで、予め定められたシナリオを現在使用可能なカメラやPCを用いて再現するための上映コントロール情報(図6(b)および(c))を生成し、これに従って映像データの伝送を制御。上映コントロール情報には、上映開始時刻から終了時刻までの各フレームについて、カメラの映像と処理するPCの対応関係を記載する。例えば本実施例では、上映コントロール情報のうち、カメラ制御情報(図6(b))の値は、0は映像データの送信が不要、1は映像データの送信、2はヘッダ情報のみの送信を意味する。また、PC制御情報(図6(c))の値は、1が対応するPCを使用し、0は使用しないことを意味する。図6中に示したように、上映コントロール情報に含まれる時刻は、上映開始時刻を0:00:00.00fに対する相対時刻を示す。
【0017】
画像処理PC203はキャプチャPC202から送信された画像データを受信・加工して画像表示PC204へ送信する。画像表示PC204は、画像処理PC203から送信された映像を受信してバッファリングし、管理サーバPC201から指定されたタイミングでバッファリングした映像を表示するために出力する。各PCはネットワークHUB205によってLAN接続されており、データの送受信はTCP/IPを用いて行う。各PCの機能の詳細は後述する。また、撮影用カメラ101は全て、同期を取る必要があるので、同期信号(ジェネロック、GenLock)が供給されている。
【0018】
以下、フローチャートを用いて説明する機能は、各PCのROMなどの記録媒体に記録されているプログラムコードをコンピュータ(プロセッサー)が読み出すことにより実現する。なお、全ての機能をプログラムに基づきコンピュータが行わずに、特定の機能を回路を用いて実現しても構わない。
【0019】
<キャプチャPC>
キャプチャPC202は、カメラからの映像をキャプチャし、画像処理PC203へ伝送する。図3は、キャプチャPC202が実行する処理の概要を示す図である。送信経路の帯域の問題で受信したデータを遅延無く送ることができない場合があるので、予め指定された秒数分だけバッファリングする機能を有する。また、画像処理PC203で適用する仮想視点映像生成処理には、撮影時のレンズ特性データが必要となる。しかしながら、レンズ特性データはカメラの撮影時設定(例えば、f値、画角、撮影距離)によって変化することが知られているので、キャプチャPCは撮影時設定に応じたレンズ補正データをレンズ補正値データベースから取得する手段を備える。取得したレンズ補正データは、画像データに付加して送信する(図4)。レンズ補正データには、歪曲、周辺光量、倍率色収差などの様々な補正データが考えられるが、説明を簡単にするため本実施例では歪曲と周辺光量の補正データを格納するものとする。また、仮想視点映像を生成するためには、撮影用カメラ101の位置、方向、姿勢や画角などの情報が必要となる。そこで、画像データにこれらの情報も付加する。
【0020】
データの送信処理は前述のようにTCP/IPで行う。データを送信する度に画像処理PC203と再接続するのは効率が良くないので、送信処理を行うスレッドを画像処理PC台数分用意して対応する。図5は、送信処理のフローチャートである。送信処理スレッドの他に、カメラから映像を受け取りヘッダやレンズ補正データを付加して送信用データを作成する送信データ生成スレッド、および送信処理スレッドの管理を行う管理スレッドがある。送信データ生成スレッドはまず管理スレッドに対してどの送信処理スレッドを使用するかを確認する(ステップS501)。管理スレッドは、後述する管理サーバPCから受け取った上映コントロール情報に従って送信先の画像処理PC203を選択し、選択した画像処理PC203に接続された送信処理スレッドを送信データ生成スレッドに通知する(ステップS502)。
【0021】
送信データ生成スレッドは、まず管理スレッドから指示されたスレッドの送信バッファ内の送信データ領域を取得する(ステップS503)。次に、取得した送信データ領域にキャプチャした映像から生成した送信データを出力し(ステップS504)、管理スレッドにデータ出力完了を通知する(ステップS505)。管理スレッドはデータ出力完了通知を受け取ったデータを送信キューに追加して、図7に示す送信処理を実行する(ステップS506)。
【0022】
図7は、送信処理の流れを示すフローチャートである。まず、管理スレッドは自身が備える送信キューの先頭のデータを確認する(ステップS701)。送信キューが空の場合には、ステップS505で通知される送信データ生成スレッドからの通知が来るまで待機状態となる。送信キューが空でない場合には、そのデータが有効かどうかを判定する(ステップS702)。この判定は、対象データのヘッダ情報に保存されているキャプチャ時刻T0と、上映コントロール情報内の該対象データに対応する上映開始時間T1との差が予め定められた時間TLを超えていない場合は有効と判定し、超えた場合は有効で無いと判定する。有効で無いと判定された場合には送信処理をスキップしステップS701に戻る。一方、有効であると判定された場合は送信処理スレッドに送信指示を出し(ステップS703)、送信処理を実行する。送信指示を出す送信スレッドは、上映コントロール情報に含まれるPC制御情報に基づいて選択する。送信指示を受け取った送信処理スレッドは、管理スレッドに送信開始を通知し送信を開始する(ステップS704)。送信が終わったら、送信処理スレッドは管理スレッドに送信完了を通知して待機状態に戻る(ステップS705)。送信完了が通知された管理スレッドは、キャプチャ処理の終了指示が出ていない場合はステップS701に戻る。一方、キャプチャ処理の終了指示が出ている場合は送信処理を終了する(ステップS706)。
【0023】
送信する画像データは、設定ファイルによって圧縮するかどうかを指定できる。図4中の画像データタイプは、圧縮する場合には1、しない場合には0が指定される。また、ヘッダだけを送信する場合には2が指定される。映像データの圧縮はフレーム単位で行う必要がある。通常は圧縮形式にJPEG(Joint Photographic Experts Group)形式を用いることが多いが、本実施例では、DXTC(DirectX Texture Compression)を用いる。DXTCはGPUの利用により非常に高速に画像データを圧縮できるので、本実施例のようにリアルタイム性が重視される場合には有効な方式である。
【0024】
なお、送信データ生成スレッドはカメラからの映像をキャプチャする際、キャプチャエラーが発生した割合をカウントし、後述する管理サーバPCからの有効判定応答時に状態を返せるようにする。キャプチャエラーは、例えばカメラとキャプチャPCとの距離が長く(例えば、100m超)、映像が秒30コマ正しく取得できない、などで発生する可能性がある。例えば本実施例では、キャプチャエラーによって取得できなかったフレーム数が、キャプチャ対象フレーム数の10%を超えた時点で、「キャプチャエラーが多い」と判定する。
【0025】
<画像処理PC>
画像処理PC203は、キャプチャPC202から受信した映像を加工し、画像表示PC204へ送信する。図8は、画像処理PC内の処理の概要を示す図である。キャプチャPCと同様に、全てのキャプチャPCと接続した状態を維持するため、キャプチャPC台数分のデータ受信スレッドを起動する。
【0026】
図9は、画像処理PC203で行われる処理の流れを示すフローチャートである。まず、受信処理スレッドは、受信したデータに対して画像データタイプに応じた処理を適用し(ステップS901、ステップS902)、受信バッファに格納する(ステップS903)。本実施例では、画像データタイプに応じた処理として、画像データタイプが1の場合、圧縮データの解凍処理を適用して非圧縮データ(画像データタイプ=0)に変換する。受信処理スレッドは、受信したデータを受信バッファに格納した後、管理スレッドにデータ受信完了を通知する(ステップS904)。
【0027】
次に管理スレッドは、上映コントロール情報に従って画像を選択し(ステップS905)、仮想視点映像再生処理スレッドに映像生成指示を出す(ステップS906)。ただし、映像生成指示後、仮想視点映像生成スレッドからデータ出力完了通知を受け取っていない場合には、これを受信するまで映像生成指示をブロックする。これは、同時に複数の仮想視点映像生成処理を実行すると、既に実行中の映像生成処理のスループットが低下してしまい、リアルタイム再生が出来なくなる可能性が高くなるからである。
【0028】
映像生成指示を受けた仮想視点映像生成スレッドは、管理スレッドによって選択された映像と上映時刻を用いて、シナリオに沿った画像を生成する(ステップS907)。仮想視点映像生成処理の詳細については後述する。仮想視点映像生成スレッドは、生成した映像を送信バッファに出力した後(ステップS908)、管理スレッドと送信処理スレッドにデータ出力完了を通知する(ステップS909)。
【0029】
送信処理スレッドは、データ出力完了通知を受け、生成した仮想視点映像データを画像表示PC204へ送信する(ステップS910)。送信する映像データには、図10に示すようにキャプチャ時刻、および画像解像度をヘッダとして付加する。
【0030】
送信スレッドは、キャプチャ処理の終了指示が出ていない場合はステップS901に戻る。一方、キャプチャ処理の終了指示が出ている場合は送信処理を終了する(ステップS911)。
【0031】
<画像表示PC>
画像表示PC204は、次の機能を持つ。
【0032】
(a)画像処理PCから受信したデータの再生(通常上映)
(b)バックアップ映像の上映(バックアップ上映)
図11は、画像表示PC内204の処理の概要を示す図である。画像表示PC204は、画像処理PC203と同様に、各画像処理PC203に対応する受信スレッドを持ち、受信したデータをバッファリングする。本PCには大容量のメモリを搭載し、上映対象となる全ての映像をバッファリングできるようにする。これは、バックアップ映像を生成するために必要である。
【0033】
図12は、通常上映処理の流れを示すフローチャートである。まず、受信処理スレッドは、画像処理PC203から映像を受信し、受信バッファに格納する(ステップS1201)。映像1フレーム分の受信が完了する度に、管理スレッドにデータ受信完了通知を送信する(ステップS1202)。管理スレッドは、データ受信完了通知を受信したら受信映像管理領域内の受信映像管理情報を更新する(ステップS1203)。ここで受信映像管理情報は、受信した映像データのキャプチャ時刻および受信処理スレッドの識別IDである。管理スレッドは、上映開始時刻まで待機し(ステップS1204)、上映開始時刻から上映終了時刻までの間、上映管理処理を行う。上映管理処理では、再生対象となる映像(フレーム)データを受信バッファ内から選択し(ステップS1205)、画像表示スレッドに通知する(ステップS1206)。映像データの選択は、受信映像管理領域内の各映像データのキャプチャ時刻や受信処理スレッドの識別IDを利用して行う。ここで、上映コントロール情報は上映開始時刻を基準とした相対時刻で記述されているため、キャプチャ開始時刻を用いて再生対象となるキャプチャ時刻を計算し、この時刻に対応した画像を得る。
【0034】
画像表示スレッドは、指定された映像データを表示する(ステップS1207)。以後、全てのフレームについて再生処理を適用し(ステップS1208)、全てのフレーム画像の表示後、管理スレッドは終了処理を実行する。ここで、処理の遅延などで対応する映像データが存在しない場合には表示を更新せず、直前に表示した映像をそのまま表示した状態にする。このような処理により、フレームの欠落により上映時間が極端に短くなったり上映した映像が不自然になったりすることを回避できる。
【0035】
本実施例における終了処理は、全てのフレームデータをファイルに格納する処理である(ステップS1209)。このファイルは、バックアップ映像として使用する。複数回上映する場合には、上映した全ての映像を保存しても良いし、フレームの欠落が無い場合だけ保存しても良い。
【0036】
ここで、複数のカメラやPCの故障によって、正常に上映できない場合が考えられる。このような場合には、後述する管理サーバPC上での判定処理によりバックアップ上映への切り替えを行う。本実施例では、バックアップ上映する映像として、通常上映の結果保存されたファイルのうち最新のものを用いる。予め指定したファイルを上映しても良いことは言うまでも無い。バックアップ上映の流れを示すフローチャートを図13に示す。バックアップ上映では、受信処理を行う代わりにバックアップ映像データをメモリ上に読み込む(ステップS1301)。その後の処理(ステップS1302からS1308)は通常上映の処理(ステップS1202からS1208)と同様の処理を実行する。なお、バックアップ上映の場合には、上映データのファイル出力は行わない。
【0037】
<管理サーバPC>
管理サーバPC201は、システム全体を管理する。具体的には、次のような機能を持つ。
【0038】
(a)システムを構成するPCやカメラの有効判定
(b)各PCにおける映像バッファリング時間の変更
(c)a、bに基づいた上映コントロール情報の生成
(d)シナリオデータ、上映コントロール情報の配布
(e)キャプチャPC、画像処理PCの設定ファイルの配布
ここで、PCやカメラの有効判定処理について説明する。図14は、有効判定処理の流れを示すフローチャートである。まず、画像表示PCに対して問い合わせを行い(ステップS1401)、予め定めた時間TA以内に応答が返ってくるかどうかを確認する(ステップS1402)。ここで、画像表示PC、画像処理PCは、問い合わせに対して0を返す。キャプチャPCは、カメラが認識できない場合は1、カメラは認識できるがキャプチャエラーが多く発生した場合は2、それ以外は0を返す。
【0039】
画像表示PCから応答がない場合、上映できなくなるので、図15(a)に示すアラート表示を行い、機材の交換を促して処理を終了する(ステップS1403)。画像表示PCから応答があった場合は、画像表示PCには問題が無いので、続いて、各画像処理PCに対して問い合わせを行い(ステップS1404)、予め定めた時間TA以内に応答が返ってくるかどうかを確認する(ステップS1405)。ここで、1台でも応答が無い画像処理PCがあった場合には、図15(b)に示すアラート表示を行う(ステップS1410)。さらに、画像表示PCに対してバックアップ映像の上映を指示し(ステップS1411)、処理を終了する。画像処理PCにも問題が無い場合、続いて、キャプチャPCに対して問い合わせを行う(ステップS1406)。キャプチャPCが応答不能、あるいは返された値に0以外の値(1又は2)が存在する場合は、後述するカメラ選択処理を実行する(ステップS1408)。カメラ選択処理は、使用不能なカメラを除いたカメラを用いて、シナリオに沿った上映をするための上映コントロール情報を生成する処理である。カメラ選択処理の詳細については後述する。なお、画像処理PCで実行する仮想視点映像生成処理の処理時間が画像表示PCでフレームを再生する間隔(例えば、秒30コマ表示の場合、1/30秒)よりも長い場合、リアルタイム再生できなくなってしまう。そこで本実施形態では、画像処理PCを複数台用意してインターリーブすることで対応する。例えば画像処理PCを10台用意した場合、仮想視点映像生成処理は1/3秒未満で処理すれば良い。
【0040】
カメラ選択処理でエラーが発生した場合には、図15(c)のようなアラート表示(ステップS1410)を行った上で、画像表示PCに対してバックアップ映像の上映を指示し(ステップS1411)、処理を終了する。
【0041】
本実施例では、上映システムを構成する全てのPCで実行するアプリの設定ファイルは、各PC上に公開された共有フォルダに配置する。したがって、管理サーバから各PCの共有フォルダにアクセスすることで、設定を変更することができる。例えば、各PCにおける映像バッファリング時間や、画像表示PCでのバックアップ上映指示などは、このような手段によって行う。
【0042】
<仮想視点映像生成処理>
本実施例における仮想視点映像生成処理では、ある高さ一定の面を基準面として、この基準面にある物体が、カメラ切り替え時にスムーズに接続されるように映像を生成する。この仮想視点映像生成処理では、以下に挙げる映像補正、変換、映像効果付加を一貫して行う。
【0043】
(1)カメラ映像の歪曲、および、倍率色収差補正
(2)周辺光量落ち補正
(3)仮想視点映像とカメラ映像の間に生ずるパース変換
(4)仮想視点映像に対する周辺光量落ち効果の付加
(5)歪曲効果の付加
本実施例では、歪曲特性および周辺光量落ち特性を有するカメラの撮影画像から、仮想カメラの歪曲特性および周辺光落ち特性に応じた仮想視点の画像を生成する。本実施例の仮想視点映像生成処理は、上記操作を一貫して行うため効率が良く、リアルタイム性が求められる本実施例の画像処理装置に適している。
【0044】
図17は仮想視点映像生成処理を示すフローチャートである。以下、仮想視点映像生成処理の詳細について説明する。
【0045】
まず、仮想カメラの物理的な位置を
【0046】
【数1】

【0047】
仮想カメラの方向を
【0048】
【数2】

【0049】
仮想カメラの画面上方向を指すベクトルを
【0050】
【数3】

【0051】
仮想カメラの画面右方向を指すベクトルを
【0052】
【数4】

【0053】
とする(図16(a)、図16(b)に図示する)。
【0054】
【数5】

【0055】
【数6】

【0056】
【数7】

【0057】
は方向を表すだけのベクトルであるため、長さは1とする。これらのベクトルを表す座標系には、前述の、床面をx−y平面として、高さ方向をz軸とする座標系を用いる。仮想カメラの水平半画角、および、垂直半画角をそれぞれθh,out、θv,outとする。
仮想視点映像生成処理は、仮想視点映像の画素毎に処理を進めていく。ここで、画素値を決定しようとしている注目画素の座標を
【0058】
【数8】

【0059】
とする。まず、仮想視点映像に仮想カメラに対して設定された歪曲特性(歪曲効果)を反映させるため、ステップS1701において注目画素の座標に対して歪曲効果の逆変換(歪曲補正)を行い、仮想視点映像の歪曲補正後の画素座標
【0060】
【数9】

【0061】
を計算する。逆変換の具体的な数式は、どのような歪曲効果を持たせるかに依存するが、例えば、以下の式(1)を用いればよい。
【0062】
【数10】

【0063】
ここで、
【0064】
【数11】

【0065】
は、任意視点映像の中心の画素位置である。αは歪曲効果の強さをコントロールするパラメータである。
【0066】
ステップS1702において、画素
【0067】
【数12】

【0068】
に写り、かつ前述の基準面上にある点の、3次元空間上の位置
【0069】
【数13】

【0070】
を求める。以下、基準面の高さを
Zbaseとする。位置
【0071】
【数14】

【0072】
は、以下の式(2)〜(5)で求められる。
【0073】
【数15】

【0074】
【数16】

【0075】
【数17】

【0076】
ここで、Xp,zおよびXpixel,zは、それぞれ
【0077】
【数18】

【0078】
および
【0079】
【数19】

【0080】
のz成分である。
【0081】
ステップS1703において、c番目のカメラ(以下、カメラcとする。)において、位置
【0082】
【数20】

【0083】
が写っている理想画素位置
【0084】
【数21】

【0085】
を求める。
【0086】
実際の被写体はそれぞれ異なる高さを有しているが、本実施例では被写体の高さを基準面の高さと仮定して処理を簡略化している。
【0087】
ここで言う理想画素位置(理想座標)とは、カメラcの映像に歪曲や倍率色収差などの収差が無い場合の画素位置である。理想画素位置
【0088】
【数22】

【0089】
は以下の式(6)〜(9)により求められる。
【0090】
【数23】

【0091】
【数24】

【0092】
【数25】

【0093】
【数26】

【0094】
ここで、式(6)のXp,c,x、Xp,c,y、Xp,c,zは、それぞれ
【0095】
【数27】

【0096】
のx、y、z成分であり、θh,c、θv,cはカメラcの水平半画角と垂直半画角である。式(8)の
【0097】
【数28】

【0098】
はカメラcの位置である。また、式(9)の
【0099】
【数29】

【0100】
【数30】

【0101】
【数31】

【0102】
は、それぞれカメラcの映像の上方向、右方向、および、カメラcの向きを表す方向ベクトルである。これらのベクトルの長さは1とする。これら一連の操作は、ビュー変換、射影変換、スクリーン変換と一般に呼ばれる、3つの変換操作をまとめた操作である。
【0103】
ステップS1704において、カメラcの歪曲および倍率色収差を考慮して、理想画素位置
【0104】
【数32】

【0105】
を、各色毎に、実際の画素位置(実座標)
【0106】
【数33】

【0107】
に変換する。ここで、iは、色のインデックスを表す。この操作は、形式上、以下の式(10)で表すことができる。
【0108】
【数34】

【0109】
この変換の具体的な形は、使用するカメラcの光学系に依存するもので、一般には、この変換は簡単な関数では表現できない。このため、実測値に基づいて、テーブル参照によってこの変換を行う。
【0110】
ステップS1705において、カメラcの、画素位置
【0111】
【数35】

【0112】
での画素値Ip,c,iを求める。画素位置
【0113】
【数36】

【0114】
は小数部を有するので、バイキュービック補間などを用いて、周辺画素から補間した画素値を取得する。
【0115】
ステップS1706において、カメラcの周辺光量落ちを補正しつつ、仮想視点映像に周辺光量落ちの効果を付加するためのファクターDp,c,iを計算する。このファクターは、以下の式(11)のように、仮想視点映像の光量落ち効果の量(仮想カメラの周辺光落ち特性に応じた補正量)Cpと、画素位置
【0116】
【数37】

【0117】
におけるカメラcの周辺光量落ちの補正量(カメラcの周辺光量落ち特性に応じた補正量)Cp,c,iの比として定義する。
【0118】
【数38】

【0119】
カメラcの周辺光量落ちの補正量Cp,c,iは、歪曲補正と同様、一般には簡単な関数では表現できない。このため、実測値に基づいて補正テーブルを作成して、テーブル参照によって補正を行う。これを形式的に以下の式(12)で表す。
【0120】
【数39】

【0121】
上式のように、周辺光量落ちの画素値依存性をも考慮した補正を行う。
【0122】
仮想視点映像に付加する周辺光量落ちの効果は、例えば、以下の式(13)を用いる。
【0123】
【数40】

【0124】
そして、仮想視点映像の画素値Iout,iを式(14)にて計算する。ここでβは、周辺光量落ちの強度をコントロールするパラメータである。
Iout,i=Dp,c,i・Ip,c,i
ステップS1706までの処理により、仮想視点映像の画素位置
【0125】
【数41】

【0126】
における、色iでの画素値Iout,iが決定される。仮想視点映像の全ての画素が処理されるまで、ステップS1701〜ステップS1707を繰り返す(ステップS1707)。
【0127】
ステップS1704で算出された画素位置が撮影画像の領域外の座標になる場合がある。これは、後述するカバー率が100%でない場合に生じる。そこで、ステップS1708において、算出された画素位置が撮影画像の領域外の部分については、所定画像を表示して対応する。本実施例では、予め用意した床面102の画像(テクスチャ画像)を仮想視点に応じてパース変換して合成する。撮影画像の外を参照した場合の画素値を、パース変換後のテクスチャ画像の画素値とすることで違和感の無い出力画像を得ることが可能になる。
【0128】
以上の処理により、仮想視点映像を生成することができる。
【0129】
なお、本実施例では、仮想視点画像をカメラにより撮影された画像らしくするために、仮想視点映像に対して仮想カメラに対して設定された歪曲特性および周辺光量落ち特性の両方を反映させた。しかしながら、仮想視点映像に対して仮想カメラに対して設定された歪曲特性に応じた処理および周辺光量落ち特性に応じた処理のそれぞれについて実行の可否をユーザ指示に応じて切り替えられるようにしても構わない。
【0130】
<カメラ選択処理>
カメラ選択処理は、正常に動作している撮影用カメラに関するカバー率に基づいて実行する。図18は、カバー率を示す図である。カバー率とは、仮想視点映像生成処理によって得る出力画像に対し、カメラによる撮影画像が含まれる割合である。したがって、カバー率の算出は、対象フレームの基準面の高さに基づいて行う。図18(a)は出力画像全ての画素が、撮影画像の画素により得られており、カバー率は100%となる。一方図18(b)は出力画像の一部の領域が撮影範囲の外を参照しており、カバー率は100%未満となる。
【0131】
図19は、カメラ選択処理の流れを示すフローチャートである。まず、撮影用カメラとキャプチャPCの組み合わせが正常に動作している、使用可能なカメラのリストである有効カメラリストを取得する(ステップS1901)。有効カメラリストは、図14を用いて説明したPCやカメラの有効判定処理の過程で得ることができる。次に、図6(a)に示すシナリオに記載されている上映開始時刻から上映終了時刻までの各フレームの仮想視点情報に基づき、有効カメラリストに登録されている各カメラのカバー率を算出する(ステップS1902)。このカバー率が100%のカメラについて、選択処理1を実行する(ステップS1903)。そして、選択処理1によりカメラが選択されたか否かを決定する(ステップS1904)。選択処理1によってカメラが選択されなかった場合、選択処理モード設定に応じて選択処理2を実行する(ステップS1905、ステップS1906)。選択処理モード設定とは、カバー率100%でないカメラを選択対象とするかどうかの設定で、選択対象とする場合には閾値Tx(%)を指定する。選択処理1、選択処理2の詳細については後述する。選択処理2でもカメラが選択されなかった場合には、エラーを通知して処理を終了する(ステップS1911)。
【0132】
全てのフレームに対してカメラが選択できた場合、各フレームと選択されたカメラの対応関係に基づきカメラの再選択処理を実行する(ステップS1909)。例えば、1フレーム分の映像データの送信処理が1/30秒以内に終わらない場合、特定のキャプチャPCからの送信処理が長時間連続するとリアルタイム上映できなくなってしまう。また、選択カメラが頻繁に切り替わるとフレーム間の画質も合わせて変化してしまい、上映する映像のちらつきとなって現れてしまう。したがって、できるだけカメラの切り替え頻度を少なくしながらも、その上で特定カメラにリクエストが長時間継続しないようにする必要がある。再選択処理の詳細については後述する。再選択処理でエラーが発生した場合には、エラーを通知して処理を終了する(ステップS1911)。なお、カメラ選択処理でエラーを通知した場合には通常上映では適切な画質が得られないと判断し、自動的にバックアップ上映に切り替わる(ステップS1411)。
【0133】
図20は、図19中の選択処理1の流れを示すフローチャートである。まず、注目フレームfにおける注視点Pfの物理座標と、図6(a)に示すシナリオに記載されている注目フレームfにおける仮想カメラの仮想視点から注視点PfまでのベクトルVfを算出する(ステップS2001、ステップS2002)。また、内積最大値Imaxを0に初期化しておく(ステップS2003)。
【0134】
次に、有効カメラリストに登録されているカメラのうち、カバー率が100%のカメラを検出し(ステップS2004)、カバー率が100%のカメラに対して以下の処理を実行する。まず、カメラcから注視点Pfまでの単位方向ベクトルVcを計算する(ステップS2005)。ベクトルVcとベクトルVfの内積を計算する(ステップS2006)。そして、内積が最大となるカメラcを選択する(ステップS2007〜S2009)。つまり、注目フレームfの仮想視点の位置姿勢と視点の位置姿勢が近いカメラを選択する。
【0135】
このように、選択処理1では、カバー率が所定の割合(本実施例では100%)より大きいカメラの中から、フレームの仮想視点情報と複数のカメラの視点情報との位置関係に基づき最適なカメラを選択する。
【0136】
図21は、図19中の選択処理2の流れを示すフローチャートである。図20のフローチャートと同一の処理については、同一の番号をつけ、説明を割愛する。選択処理2は、カバー率がTx(%)以上のカメラを検出し、検出されたカメラから、仮想カメラからの視点に最も近い位置のカメラを選択する。
【0137】
図22は、図19中の再選択処理(ステップS1909)の流れを示すフローチャートである。本実施例による上映システムでは、仮想視点の移動ルートに沿ってカメラを配置している。したがって、カメラを順次切り替えて使用しながら仮想視点映像を生成することになる。
【0138】
まず、注目フレームで選択されているカメラをc_selとする(ステップS2201)。次に、一つ前に選択されたカメラc_prevを取得する(ステップS2202)。一つ前に選択されたカメラとは、直前フレームで選択されたカメラのことではなく、注目フレームより前のフレームで選択されていたカメラであり、かつ、現在選択されているカメラよりも1つ前に選択されていたカメラのことを指す。同様に、二つ前に選択されたカメラc_prev2を取得する(ステップS2203)。注目フレームのカメラが、1つ前のフレーム(直前フレーム)と同じであるか否かをチェックする(ステップS2204)。直前フレームと同じカメラが選択されているかどうかで処理が異なる。
【0139】
(a)直前フレームと同じカメラが選択されている場合
この場合は、連続選択回数を考慮したカメラ選択処理を実行する。本実施例では、連続選択回数の上限をNとする。まず、連続選択回数がN回未満であれば、このカメラを選択したままとする(ステップS2205)。N回以上連続選択されている場合には、シナリオ上次に選択されることになるカメラc_nextで代用可能かどうかを確認する(ステップS2206)。ここで、代用可能かどうかは、カバー率に基づいて判断する。代用可能な場合、現在処理中のフレーム以降でカメラc_selが連続選択されているフレームについて、選択カメラをc_nextに変更する(ステップS2207〜S2210)。代用可能でない場合、エラーを通知して処理を終了する(ステップS2221)。
【0140】
(b)直前フレームと異なるカメラが選択されている場合
この場合は、カメラ切り替え頻度を考慮したカメラ選択処理を実行する。まず、選択されているカメラc_selが、2つ前に選択されたカメラc_prev2と同じかどうかを判定する(ステップS2212)。同じ場合、選択カメラがc_selとc_prevが交互に切り替わっている可能性があるので、これを回避する処理を実行する。
【0141】
まず、直前フレームの段階でカメラc_prevを連続M回以上使用しているかを確認する(ステップS2213)。連続M回以上使用していない場合、カメラ切り替え頻度が高くなっている可能性があるので、c_selの代わりにc_prevが使用可能かどうかを確認する(ステップS2214)。c_prevで代用可能な場合、選択カメラをc_prevに変更する(ステップS2215)。そうでない場合、直前のフレームに対し、c_prev2での代用を試みる(ステップS2216)。c_prev2で代用可能な場合、直前フレーム以前でc_prevを連続選択しているフレーム全ての選択カメラをc_prev2に変更する(ステップ2217〜S2220)。
【0142】
以上の処理を全てのフレームに対して処理するまで繰り返す(S2211)。
【0143】
一方、ステップS2216にて、代用できないと決定された場合、エラーを通知して処理を終了する(ステップS2221)。再選択処理においてエラーを通知した場合、自動的にバックアップ上映に切り替える(ステップS1910、ステップS1911)。
【0144】
本実施例で述べたカメラの再選択処理では、(b)の処理を適用した結果、連続選択回数がN回以上になる可能性がある。したがって、この処理の後で連続選択回数を確認し、(a)と同様の処理によってこの状態を回避しても良いことは言うまでもない。
【0145】
以上説明したカメラ選択処理により、撮影用カメラやキャプチャPCの一部に障害が発生した場合でも問題なく上映することが可能になる。特に、画質を考慮したカメラ選択処理を実行し、適切な画質が得られない場合には自動的にバックアップ上映に切り替えることで、長期間の上映に耐え得るシステムを構築することができる。
【0146】
本実施例の仮想視点映像生成処理では、被写体の高さを基準面の高さと仮定している。したがって、カメラが切り替わると、フレーム間にて被写体の位置が不連続に変化する可能性がある。再選択処理によれば、カメラの切り替えがすくなくなるように、注目フレームのカメラを再選択することができる。よって、滑らかな自由視点映像を生成することが可能になる。
【0147】
(実施例2)
実施例1では、撮影用カメラで得た画像データを全て送信していた。しかしながら、撮影用カメラの画角に対してシナリオで指定された画角が狭い場合には、画像データ全てを送信する必要は無い。そこで本実施例では、キャプチャPCから画像処理PCへ画像データを送信する前に、撮影画像中のどの部分が必要かを判断し、必要最低限の部分のみを送信する。本実施例におけるキャプチャPCの処理の概要を、図23に示す。実施例1の仮想視点映像生成処理で述べたように、シナリオデータの利用により、撮影画像データ中のどの領域が必要かを決定する(送信領域決定処理)。
【0148】
送信領域決定処理は、次のように実行する。仮想視点映像生成処理と同様に、撮影画像の参照画素位置を計算する。ただし、出力画像全ての画素について処理を適用するのではなく、出力画像の4辺に隣接する画素のみを対象として処理を実行する。その結果得られた参照画素のうち、水平方向の座標の最大値と最小値、垂直方向の最大値と最小値で図24のように定義される範囲を送信領域とする。
【0149】
実施例1で説明したように、仮想視点映像生成処理では、撮影画像中の中心位置(光軸中心位置)が必要となる。したがって、送信する画像データが、撮影画像中のどの部分なのか(画像送信範囲)を保持する必要がある。本実施例におけるデータ形式を図25に示す。本実施例における仮想視点映像生成処理では、この画像送信範囲を考慮して画素位置を計算するが、画素位置を画像送信範囲の左上座標分オフセットするだけで処理内容はほぼ同様なので説明を省略する。
【0150】
以上で説明したように、本実施例による画像再生装置を用いれば、データ送信量を適切に設定することが可能になる。その結果、ネットワークの負荷が軽減され、各PCで設定するバッファリング時間を短く設定することが可能になる。このように撮影から上映までのタイムラグを低減することで、ユーザ体験の品質を向上させることが可能になる。

【特許請求の範囲】
【請求項1】
歪曲特性および周辺光量落ち特性を有する撮像部の撮影画像から、仮想カメラの歪曲特性および周辺光落ち特性に応じた仮想視点の画像を生成する画像処理装置であって、
前記仮想視点画像の注目画素の該仮想視点画像における座標に対して、前記仮想カメラの歪曲特性に応じた歪曲補正を行うことにより、該仮想視点画像における歪曲補正後の座標を算出する第1算出手段と、
前記仮想視点画像における歪曲補正後の座標から前記撮影画像における理想座標を算出する第2算出手段と、
前記撮像部の歪曲特性に応じて前記撮影画像における理想座標から前記撮影画像における実座標を算出する第3算出手段と、
前記仮想視点画像の画像データから、前記実座標に対応する画素値を算出する第4算出手段と、
前記撮像部の周辺光量落ち特性および前記仮想カメラの周辺光量落ち特性とに基づき前記実座標に対応する画素値を補正する補正手段とを有することを特徴とする画像処理装置。
【請求項2】
前記第2算出手段は、
前記仮想視点画像における歪曲補正後の座標から基準面上の物理座標を算出する第4算出手段と、
前記撮像部の位置の情報を用いて、前記基準面上の物理座標から前記撮影画像における理想座標を算出する第5算出手段とを有することを特徴とする請求項1記載の画像処理装置。
【請求項3】
さらに、前記実座標が前記撮影画像の外である前記仮想視点画像の領域に、予め保持されているテクスチャ画像を合成することを特徴とする請求項1または2記載の画像処理装置。
【請求項4】
前記第3算出手段は、前記撮像部の歪曲特性および前記撮像部の収差に応じて、前記撮影画像における理想座標から前記撮影画像における実座標を算出することを特徴とする請求項1乃至3のいずれかに記載の画像処理装置。
【請求項5】
コンピュータ装置を制御して、請求項1から請求項4のいずれか一項に記載された画像処理装置の各手段として機能させることを特徴とするコンピュータが読み取り可能なプログラム。
【請求項6】
歪曲特性および周辺光量落ち特性を有する撮像部の撮影画像から、仮想カメラの歪曲特性および周辺光落ち特性に応じた仮想視点の画像を生成する画像処理方法であって、
前記仮想視点画像の注目画素の該仮想視点画像における座標に対して、前記仮想カメラの歪曲特性に応じた歪曲補正を行うことにより、該仮想視点画像における歪曲補正後の座標を算出する第1算出工程と、
前記仮想視点画像における歪曲補正後の座標から前記撮影画像における理想座標を算出する第2算出工程と、
前記撮像部の歪曲特性に応じて前記撮影画像における理想座標から前記撮影画像における実座標を算出する第3算出工程と、
前記仮想視点画像の画像データから、前記実座標に対応する画素値を算出する第4算出工程と、
前記撮像部の周辺光量落ち特性および前記仮想カメラの周辺光量落ち特性とに基づき前記実座標に対応する画素値を補正する補正手段とを有することを特徴とする画像処理方法。

【図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

【図24】
image rotate

【図25】
image rotate