以下、図面を参照して、本発明の一実施形態による画像処理装置を説明する。図1は同実施形態による仮想全天球画像を視聴するためのシステム構成を示すブロック図である。この図において、図9に示す従来の装置と同一の部分には同一の符号を付し、その説明を簡単に行う。仮想全天球画像を視聴するためのシステムは、画像処理システム1及び視聴システム9を備えている。
図1に示すように、画像処理システム1は、全天球カメラ2と、N台(N≧1)の複数のカメラ3−1、3−2、3−3、…、3−N(以下、カメラ群3とする。)と、画像処理装置30と、表示装置5とを備える。画像処理システム1は、フットサルのコート10内に仮想視点11を設定した場合に、コート10外に設置したカメラ群3からの画像の合成によって仮想視点11における仮想全天球画像を得る。なお、以下の説明においてはNは2以上の整数として説明するが、仮想全天球画像の作成のためには、仮想視点を含む方向を撮影するカメラ3が1台以上あればよい。
全天球カメラ2は、全天球画像を撮影するカメラである。全天球カメラ2は、競技が行われる前のタイミングでコート10内の仮想視点11の位置に設置される。全天球カメラ2は、予め、仮想視点11の位置から仮想全天球画像の背景となる背景画像20を撮影する。全天球カメラ2で撮影された背景画像20は、画像処理装置4に入力されて蓄積される。全天球カメラ2は、競技中も仮想視点11に設置したままだと競技の支障となるため、競技開始前に仮想視点11の位置から取り除かれる。
コート10の周囲には、カメラ群3が設置されている。カメラ群3の各カメラ3−1、3−2、3−3、…、3−Nは、背景画像20に対して合成する前景画像を含む部分画像を動画(映像)で撮影するカメラであり、それぞれ仮想視点11を含む画角となるようにコート10の周囲を取り囲むように設置されている。N台のカメラ3−1、3−2、3−3、…、3−Nのそれぞれで撮影される動画は、複数フレームの画像により構成される。図1においてNは、4以上の整数であり、同程度の画質の仮想全天球画像を得ようとするのであればコート10が大きいほど大きな値となり、コート10の大きさが同じであれば仮想全天球画像の画質を高いものにしようとするほど大きな値となる。
画像処理装置30は、N台のカメラ3−1、3−2、3−3、…、3−Nのそれぞれで撮影された動画から入力画像を事前に取得する。撮影されたそれぞれの動画は複数フレームの画像で構成されており、本実施形態における画像処理装置30は処理対象となるフレームの画像を入力画像として取得する。画像処理装置30は、カメラ群3のN台のカメラ3−1、3−2、3−3、…、3−Nからの入力画像に対して画像処理を施して、全天球カメラ2より取得した背景画像20に画像処理後の部分画像を合成する処理を行う。表示装置5は、画像処理装置30で生成した仮想全天球画像を表示する装置であり、液晶ディスプレイ、ヘッドマウントディスプレイ(HMD)等である。
視聴システム9は、画像サーバ6と、ネットワーク7と、複数の視聴装置8とを備える。画像サーバ6は、ネットワーク7を介して画像処理装置30が生成した仮想全天球画像を配信するサーバである。ネットワーク7は、例えばインターネット等の通信網である。視聴装置8は、ネットワーク7に接続可能なユーザ端末81と、ユーザ端末81に接続されたHMD82とから構成される装置である。ユーザ端末81は、ネットワーク7を介して画像サーバ6が配信する仮想全天球画像を受信する機能と、受信した仮想全天球画像をHMD82で視聴可能な映像信号に変換してHMD82へ出力する機能とを備える。
HMD82は、ユーザ端末81から映像信号等を受信する受信部と、受信部を介して受信した映像信号を表示する液晶ディスプレイ等で構成される画面と、視聴者の頭の動きを検出する検出部と、検出部が検出した結果をユーザ端末81に送信する送信部とを備える。HMD82の画面に表示される映像は、仮想全天球画像に基づいた仮想全天球映像の一部であり視野と呼ぶ。HMD82は、検出部が検出した視聴者の頭の動きに応じて表示する映像の範囲である視野を変更する機能を有する。
頭を上下左右に動かすことに応じて視聴している映像が変化するので、HMD82を頭に装着した視聴者は、仮想視点11の位置から競技を見ているかのような映像を視聴することができる。このように、HMD82を装着した視聴者は、あたかも仮想視点11に立って競技を観戦しているかのような臨場感のある映像を視聴することができる。
画像処理システム1において処理される画像は、図9に示した従来の画像処理システム1で処理される画像と同様であるので、図9を用いて画像処理システム1の動作について簡単に説明する。全天球カメラ2は、コート10内の仮想視点11に設置されて、図10(A)に示す背景画像20を競技開始前に撮影する。競技が開始されるとカメラ群3の各カメラが撮影を開始する。例えば、カメラ群3内のカメラ3−1、3−2、3−3は、図10(B)に示す部分画像21〜23を撮影する。
画像処理装置30は、撮影された部分画像21〜23のそれぞれから仮想視点11を含み、かつ、競技中の選手を含む領域211、221、231を切り出す。画像処理装置30は、切り出した領域211、221、231の画像に対して、画像処理を行うことで背景画像20に貼り付け可能な部分画像211a、221a、231aを生成する。画像処理装置30は、背景画像20に対して部分画像211a、221a、231aを合成することで、図10(C)に示すような仮想全天球画像24を生成する。
なお、視聴システム9は、図1に示す構成に限定されるものではない。視聴システム9は、画像処理装置30が生成した仮想全天球画像を編集してから画像サーバ6へ出力する編集装置を備える構成等、仮想全天球画像をネットワーク7経由で配信可能な構成であればよい。視聴装置8の構成は、ネットワーク7を介して受信した仮想全天球画像を利用者が視聴できる構成であれば、どのような構成であってもよい。
次に、図1に示す画像処理装置30の構成について説明する。図2は、画像処理装置30の基本構成例を示す図である。図2に示すように、画像処理装置30は、オブジェクト解析部31と、奥行取得部32と、合成情報取得部33と、画像入力部34と、画像切り出し部35と、画像合成部36と、表示処理部37と、キーボードやマウス等で構成され、奥行に関する情報を入力する入力部38と、カメラ群3の各カメラが撮影した前景画像を含む部分画像を格納する前景画像格納部301と、背景画像20を格納する背景画像格納部302と、オブジェクト情報格納部303と、合成情報テーブル304とを備える。
オブジェクト解析部31は、前景画像格納部301に格納されている部分画像を入力とし、部分画像に含まれるオブジェクトを抽出して、出力する。ここでオブジェクトとは、背景画像20に含まれていないが部分画像に含まれている人物、物体(例えばボール)等である。オブジェクト解析部31は、抽出したオブジェクトに対して当該オブジェクトを識別するための識別子であるIDを付与する。
カメラ群3の各カメラで撮影される部分画像は、所定のフレーム周期を有する動画像であり、各フレームには撮影時間が関連付けられている。オブジェクト解析部31は、時間方向に一連のフレームから抽出した同一オブジェクトに対して同じIDを付与する。オブジェクト情報格納部303は、オブジェクトを抽出する対象とした部分画像のフレーム毎の撮影時刻に関連付けてオブジェクト解析部31が付与したIDを含むオブジェクトに関する情報を格納する。
例えば、オブジェクト解析部31は、カメラ3−1が撮影した撮影時刻t、t+1、t+2、…の一連のフレームである部分画像21から抽出したオブジェクトには、ID1の識別子を付与する。同様に、オブジェクト解析部31は、カメラ3−2が撮影した撮影時刻t、t+1、t+2、…の一連のフレームである部分画像22から抽出したオブジェクトには、ID2の識別子を付与し、カメラ3−3が撮影した撮影時刻t、t+1、t+2、…の一連のフレームである部分画像23から抽出したオブジェクトには、ID3の識別子を付与する。
オブジェクト解析部31は、部分画像を解析してオブジェクトを抽出する際に、オブジェクトの属性を示すラベルと、オブジェクトのコート10上の空間における3次元的な位置情報である3次元位置情報とを取得する。ラベルの具体例としては、人物であることを示す「人」、ボールであることを示す「ボール」、物体Aであることを示す「物体A」、物体Bであることを示す「物体B」、…等のカメラ群3の撮影範囲を移動する可能性のある物体を識別する情報を用いる。
オブジェクト解析部31は、オブジェクトを抽出するために部分画像を解析処理することで、オブジェクトが「人」、「ボール」、「物体A」、「物体B」のいずれに該当するのかを解析・判定して、その判定結果をラベルとして出力する。なお、オブジェクトが「人」、「ボール」、「物体A」、「物体B」のいずれに該当するのかを解析・判定する手法としては、公知の画像解析技術を用いる。例えば、画像の解析により人を検出する技術を開示する文献として以下の公知文献1がある。
公知文献1:山内悠嗣、外2名、「[サーベイ論文] 統計的学習手法による人検出」、電子情報通信学会技術研究報告、vol.112、no.197、PRMU2012-43、pp.113-126、2012年9月
また、オブジェクト解析部31は、部分画像内におけるオブジェクトの位置、オブジェクトを撮影したカメラ群3内の複数のカメラの位置及びその複数のカメラの撮影範囲(撮影方向及び画角)等の情報に基づいて、コート10上の空間におけるオブジェクトの3次元位置を取得する。このオブジェクトの3次元位置を取得する手法としては、公知の技術を用いる。また、取得位置情報は、2次元位置の情報であってもよい。
オブジェクト情報格納部303は、オブジェクト解析部31が抽出したオブジェクトに関する情報であるオブジェクト情報を入力とし、オブジェクト情報をその撮影時刻に関連付けて格納する。オブジェクト情報は、オブジェクトを識別するIDと、オブジェクトの属性を示すラベルと、オブジェクトの3次元位置とを含む。
図3は、オブジェクト情報格納部303に格納するオブジェクト情報の一例を示す図である。図3に示すように、部分画像の各フレームの撮影時刻を示す時刻t、t+1、t+2、…に関連付けて複数のオブジェクト情報を格納している。時刻tにおいては、オブジェクト1のオブジェクト情報として、ID1、ラベル1、3次元位置情報1が格納され、オブジェクト2のオブジェクト情報として、ID2、ラベル2、3次元位置情報2が格納されている。時刻t+1、時刻t+2においても、同じ情報が格納されている。
奥行取得部32は、オブジェクト情報格納部303よりオブジェクト情報を読み出して、各撮影時刻において、複数のオブジェクトの中から重要なオブジェクトである主オブジェクトを特定して、出力する。奥行取得部32は、仮想視点11から特定した主オブジェクトまでの距離である奥行に関する奥行情報を取得する。重要なオブジェクトとは、例えば、仮想全天球画像の中で視聴者が注視する領域に存在するオブジェクトである。
奥行取得部32は、予め各撮影時刻における主オブジェクトを特定しておく。具体的には、仮想全天球画像を作成するコンテンツ作成者が、各撮影時刻において視聴者が注視すると推定される領域または視聴者が注視すると推定されるオブジェクトを特定する情報を入力部38から入力する。これにより、奥行取得部32は、入力された情報に基づいて各撮影時刻における主オブジェクトを特定する。奥行取得部32において、主オブジェクトを特定する方法は、上述した方法に限定されるものではなく、色々な方法を用いてよい。例えば、撮影した部分画像における視聴者の興味の度合いを領域別に表したマップであるSaliency Mapを求めて奥行取得部32に入力する。奥行取得部32では、入力されたSaliency Mapに基づいて視覚的に顕著な領域に存在するオブジェクトを主オブジェクトとして特定してもよい。また、予め被験者に部分画像である動画を視聴させ、各撮影時刻においてどの領域を見ていたかという視聴ログを獲得し、その視聴ログを奥行取得部32に入力し、入力された視聴ログに基づいて主オブジェクトを特定してもよい。
なお、Saliency Mapの求め方は公知の技術であり、例えば、以下の公知文献2に記載の技術を用いてもよい。
公知文献2:Laurent Itti, Christof Koch, and Ernst Niebur,"A Model of Saliency-Based Visual Attention for Rapid Scene Analysis",IEEE Transactions on Pattern Analysis and Machine Intelligence, 20(11):1254-1259 (1998)
合成情報テーブル304は、部分画像から仮想視点11を含む領域を切り出すための切り出し領域に関する情報である切出領域情報と、その切り出し領域に応じて切り出した画像を部分画像に変換するための情報である変換情報とを含む合成情報を格納する。合成情報とは、画像の視点(方向と距離)変換に関する情報(パラメータ)である。部分画像は、切り出した画像を背景画像20の対応領域に違和感なく貼り付けるために、切り出した画像に対して上記変換情報に応じて拡大、縮小、回転等の変形処理を行って生成される。この変形処理は、例えば、画像に対してアフィン変換を施すことによって行う。画像に対してアフィン変換を施す場合の変換情報は、アフィン変換行列である。以下、切り出した画像に対して行う変形処理をアフィン変換によって行う例で説明するが、変形処理はアフィン変換に限るものではない。合成情報テーブル304は、カメラ群3において処理対象となる部分画像を撮影したカメラを特定するカメラコードと、仮想視点11からの奥行と、その奥行に応じたアフィン変換行列である変換情報と、その奥行に応じた切出領域情報とを対応づけて格納するテーブルである。
アフィン変換行列は、以下に示す方法により予め取得して合成情報テーブル304に記憶しておく。例えば、仮想視点11から複数種類の距離(奥行)の位置に格子模様のチェスボードを設置して、仮想視点11に設置した全天球カメラ2で撮影したチェスボードを含む画像と、カメラ群3で撮影したチェスボードを含む画像とを比較する。そして両画像において、撮影したチェスボードの各格子が対応するように画像を変形するアフィン変換行列を求める。このようにして、チェスボードを設置した奥行に対応したアフィン変換行列を求める。
切出領域情報は、以下に示す方法により予め取得して合成情報テーブル304に記憶しておく。例えば、カメラ群3の内の隣接する2つのカメラで撮影された部分画像に同一の被写体(チェスボード)が存在する重複している領域がある場合は、一方の領域のみ残るように双方のカメラの画像に対する切り出し領域を設定する。切り出し領域は、仮想視点11から被写体(チェスボード)まで複数種類の距離(奥行)について、カメラ群3に含まれるカメラ毎に求める。なお、双方のカメラの画像において、数画素〜数十画素の幅の重複領域を残すように切り出し領域を設定してもよい。
合成情報取得部33は、奥行取得部32が取得した奥行を入力とし、奥行に基づいて、合成情報テーブル304から、カメラ群3の各カメラで撮影された部分画像に対応する切り出し領域及びアフィン変換行列を含む合成情報を取得して、出力する。なお、合成情報テーブル304に格納されている奥行は数種類〜数十種類なので、奥行取得部32が取得した奥行と同じ値の奥行のテーブルが無い場合が想定される。このような場合は、合成情報取得部33は、奥行取得部32が取得した奥行の前後の値となる合成情報テーブル304に記録済の2つの奥行の値に対応する合成情報(切出領域情報及び変換情報)を用いて、奥行取得部32が取得した奥行に対応する合成情報を算出する。具体的には、上記記録済の2つの奥行の値に対応する切出領域情報の切り出し領域の座標値を線形補間することにより、その中間に位置する切り出し領域を特定する。上記記録済の2つの奥行の値に対応するアフィン変換行列の各係数を線形補間することにより、その中間値となるアフィン変換行列を算出する。
前景画像格納部301は、各カメラを特定するカメラコードに関連付けてカメラ群3の各カメラで撮影した前景画像を含む部分画像を格納する。部分画像は、撮影時刻及び動画の画像データを含む。前景画像格納部301は、例えば、図10(B)に示す部分画像21を、カメラ3−1を特定するカメラコードに関連付けて格納し、部分画像22を、カメラ3−3を特定するカメラコードに関連付けて格納し、部分画像23を、カメラ3−3を特定するカメラコードに関連付けて格納する。
背景画像格納部302は、全天球カメラ2で撮影した全天球画像である背景画像20を格納する。背景画像格納部302は、例えば、コート10内の仮想視点11に設置した天球カメラ2で撮影した図10(A)に示す背景画像20を格納する。格納する背景画像20は、1フレーム分の画像データでも所定時間分の動画の画像データでもよい。例えば、所定時間分の画像データを格納する場合は、背景画像20において周期的に変化する部分(例えば電光掲示板が映っている部分があり、かつ、電光掲示板の表示内容が周期的に変化している部分。)があれば、その周期に応じた時間分の画像データを背景画像20として格納しておく。
画像処理装置30が全天球カメラ2から背景画像20を取得する構成はどのような構成であってもよい。例えば、画像処理装置30が全天球カメラ2と有線または無線で通信可能な通信部を備えて、その通信部を介して背景画像20を取得する構成であってもよい。また、全天球カメラ2に着脱可能な記録媒体を用いて当該記録媒体に背景画像20を記録して、記録後の記録媒体を画像処理装置30に接続して、画像処理装置30が記録媒体から背景画像20を読み出す構成により、背景画像20を取得する構成であってもよい。また、画像処理装置30が、カメラ群3から部分画像を取得する構成も全天球カメラ2の場合と同様にどのような構成であってもよい。
画像入力部34は、部分画像格納部301から部分画像を取得し、背景画像格納部302から背景画像20を取得して、部分画像を画像切り出し部35へ出力し、背景画像20を画像合成部36へ出力する。画像切り出し部35は、合成情報取得部33が取得した合成情報に含まれる切出領域情報に基づいて、カメラ群3の各カメラからの部分画像に対応する切り出し領域を特定し、部分画像から特定した切り出し領域を切り出して、切り出した画像を画像合成部36へ出力する。画像切り出し部35は、例えば、図10(B)に示す部分画像21〜23のそれぞれから切り出し領域211、221、231を切り出す処理を行う。
画像合成部36は、画像切り出し部35が切り出した画像と合成情報取得部33が取得した合成情報と、背景画像を入力とし、画像切り出し部35が切り出した画像に対して、合成情報取得部33が取得した合成情報に含まれる変換情報のアフィン変換行列に基づいて変形処理を行い、部分画像を生成する。画像合成部36は、生成した部分画像をアフィン変換行列に基づいて背景画像20に貼り付けて合成することで仮想全天球画像を生成し、出力する。なお、アフィン変換行列は、背景画像20において部分画像を貼り付ける領域を示す情報を含む。画像合成部36は、生成した仮想全天球画像を画像サーバ6へ送信する機能を有する。
画像合成部36は、例えば、図10(B)に示す部分画像21〜23のそれぞれから切り出し領域211、221、231を切り出した画像に対して、アフィン変換行列に基づいた変形処理を行うことで、部分画像211a、221a、231aを生成する。画像合成部36は、例えば、背景画像20に対して、部分画像211a、221a、231aを所定の領域に貼り付けて合成することで図10(C)に示す仮想全天球画像24を生成する。
部分画像を背景画像20に貼り付けて仮想全天球画像24を生成した際に、隣り合う部分画像間の境界領域において重複が発生する場合がある。図4は、隣り合う部分画像間の境界領域において重複が発生する場合の具体例を示す図である。図4に示すように、仮想全天球画像24に貼り付けた部分画像211bと部分画像221bとが境界領域25において重複している。なお、図4に示す部分画像211bと部分画像221bが、図10(C)に示した部分画像211a及び部分画像221aと比較して異なる点は、両画像に重複する領域がある点である。
図4に示すように、部分画像211bと部分画像221bとが境界領域25において重複している場合には、画像合成部36は、重複している境界領域25に対して以下に示すブレンディング(Blending)処理を行う。画像合成部36は、Blendingパラメータαを定め、(式1)に基づいて重複領域25の各ピクセルの値を算出する。
g(x、y)=αIi(x、y)+(1−α)Ii+1(x、y) … (式1)
(式1)において、x、yは、仮想全天球画像24上における水平方向、垂直方向の座標である。g(x、y)は、境界領域25内の座標(x、y)の画素値の値である。Ii(x、y)とIi+1(x、y)は、カメラ群3内のカメラ3−i及びカメラ3−(i+1)によって撮影された部分画像に基づいて生成された部分画像の座標(x、y)の画素値の値を表す。また、このαの値は重複領域25で一定であるが、以下の(式2)に示すように変化させてもよい。
α(x)=(x−xs)/(xe−xs) … (式2)
(式2)において、xs及びxeは、図4に示すように重複領域25の両端のx座標であり、xs<xeである。
表示処理部37は、画像合成部36が出力する仮想全天球画像を入力とし、仮想全天球画像を表示装置5において表示可能な映像信号に変換して出力する。仮想全天球画像24は、図10(C)に示す通り、歪みを含む画像であり、かつ、仮想視点11を中心とする360度の景色を含む画像であるので、表示処理部37は、仮想全天球画像から表示装置5に表示させる範囲の画像を切り出して、切り出した画像の歪みを補正する機能を有する。
画像処理装置30は、前景画像格納部301及び背景画像格納部302を備える構成としたが、これに限定されるものではない。例えば、前景画像格納部301及び背景画像格納部302を備える画像格納装置を別に設け、画像処理装置30は、画像格納装置から前景画像格納部301及び背景画像格納部302を取得する構成であってもよい。
次に、画像処理システム1において1フレームの仮想全天球画像を作成する動作について説明する。図5は、画像処理システム1において1フレームの仮想全天球画像を作成する動作を示すフロー図である。図5に示す動作は、各撮影時刻における仮想全天球画像を生成する処理の前に、予めオブジェクト情報、合成情報、背景画像20及び部分画像を取得する処理も含まれる。
仮想視点11に全天球カメラ2を設置し、仮想視点11から所定の距離(奥行)にチェスボードを設置した後に、全天球カメラ2は、チェスボードを含む全天球画像を撮影する(ステップS101)。全天球カメラ2を仮想視点11から取り去って、カメラ群3の各カメラで、仮想視点11及びチェスボードを含む撮影範囲を撮影し、全天球カメラ2で撮影された全天球画像に含まれるチェスボードと、カメラ群3内の一つのカメラで撮影された画像に含まれるチェスボードとを対応させるための合成情報を求める(ステップS102)。なお、ステップS101、102におけるチェスボードの撮影は、仮想視点11から複数種類の距離にチェスボードを設置して行われる。
仮想視点11に全天球カメラ2を設置した後に、全天球カメラ2は、背景画像20を撮影する(ステップS103)。撮影された背景画像20は、背景画像格納部302に格納される。全天球カメラ2を仮想視点11から取り去った後であって、例えば競技開始と共に、カメラ群3は撮影を開始する。これにより、画像処理装置30は、カメラ群3が撮影した部分画像を前景画像格納部301に格納する。オブジェクト解析部31は、前景画像格納部301から部分画像を読み出して解析処理し、解析結果をオブジェクト情報格納部303に格納する。奥行取得部32は、オブジェクト情報格納部303に格納されているオブジェクトの中から、入力部38から入力された情報に基づいて主オブジェクトを特定する。奥行取得部32は、仮想視点11から特定した主オブジェクトまでの奥行情報を取得する(ステップS104)。
合成情報取得部33は、奥行取得部32が取得した奥行を入力とし、奥行に基づいて、合成情報テーブル304から、各部分画像に対応する切り出し領域及びアフィン変換行列を含む合成情報を取得して、出力する(ステップS105)。ステップS105において、合成情報取得部33は、奥行取得部32が取得した奥行と同じ値の奥行のテーブルが無い場合は、奥行取得部32が取得した奥行の前後の値となる奥行に対応する合成情報に基づいて、奥行取得部32が取得した奥行に対応する合成情報を求める。
画像切り出し部35は、合成情報取得部33が取得した合成情報に含まれる切出領域情報を入力とし、切出領域情報に基づいて、カメラ群3の各カメラからの部分画像に対応する切り出し領域を特定し、部分画像から特定した切り出し領域を切り出して、切り出した画像を画像合成部36へ出力する。画像合成部36は、画像切り出し部35が切り出した画像と合成情報取得部33が取得した合成情報と背景画像を入力とし、画像切り出し部35が切り出した画像に対して、合成情報に含まれる変換情報のアフィン変換行列に基づいて変形処理を行い、部分画像を生成する。画像合成部36は、生成した部分画像をアフィン変換行列に基づいて背景画像20に貼り付けて合成することで仮想全天球画像を生成し、出力する(ステップS106)。
画像合成部36は、背景画像20に貼り付ける2つの部分画像間の境界領域において重複している場合には、重複している境界領域に対してブレンディング処理を行う(ステップS107)。
次に、画像処理装置30が動画の仮想全天球画像を作成する基本動作について説明する。図6は、画像処理装置30が動画の仮想全天球画像を作成する動作について説明する図である。図6の動作においては、図5に示したステップS101〜ステップS104における部分画像の撮影までの処理は既に終えているものとする。図6に示すように、画像処理装置30は、最初の撮影時刻のフレームに対する処理を開始する(ステップS201)。
画像入力部34は、前景画像格納部301から部分画像を取得し、背景画像格納部302から背景画像20を取得して、部分画像を画像切り出し部35へ出力し、背景画像20を画像合成部36へ出力する(ステップS202)。奥行取得部32は、オブジェクト情報格納部303に格納されているオブジェクトの中から、入力部38から入力された情報に基づいて主オブジェクトを特定して、特定した主オブジェクトまでの奥行を取得する(ステップS203)。
合成情報取得部33は、奥行取得部32が取得した奥行を入力とし、奥行に基づいて、合成情報テーブル304から、各部分画像に対応する合成情報を取得して、出力する(ステップS204)。画像切り出し部35は、合成情報取得部33が取得した合成情報を入力とし、合成情報に基づいて、部分画像から切り出し領域を切り出して、切り出した画像を画像合成部36へ出力する。画像合成部36は、画像切り出し部35が切り出した画像と合成情報取得部33が取得した合成情報と背景画像を入力とし、画像切り出し部35が切り出した画像に対して、合成情報に含まれるアフィン変換行列に基づいて変形処理を行い、部分画像を生成する。画像合成部36は、生成した部分画像をアフィン変換行列に基づいて背景画像20に貼り付けて合成して、仮想全天球画像を生成して出力する(ステップS205)。画像処理装置30は、次の撮影時刻の部分画像があればステップS201に戻りループを継続し、次の撮影時刻の部分画像がなければ、ループを終了する(ステップS206)。
以上に説明したように画像処理装置30は、視聴者が注目する主オブジェクトに対応した奥行を求めて、求めた奥行に対応した部分画像の生成し、生成した部分画像を背景画像20に貼り付けることで仮想全天球画像を生成することができる。これにより、画像処理装置30は、仮想全天球画像に含まれる主オブジェクトである被写体において分身が起こったり、消失が起こったりすることを抑制することができる。画像処理装置30は、視聴者の注目する被写体の奥行に応じた合成処理を行うことで、仮想全天球画像に含まれる視聴者の注目する被写体における分身の発生を抑制することができ、視聴品質の低下を抑制した仮想全天球画像を視聴者に提供することができる。
<第1の実施形態>
次に、本発明の第1の実施形態による画像処理装置を説明する。第1の実施形態は、前述した合成処理に用いる合成情報を求める処理について変形を加えたものである。ここで、図7を参照して仮想全天球画像の生成処理について簡単に説明する。図7は、仮想全天球画像の生成処理を示す模式図である。まず、カメラカメラCi−1、Ci、Ci+1によって入力画像を事前に獲得する。そして、得られた入力画像から前景となる切り出し画像Si−1、Si、Si+1を切り出す。ここで、iは、カメラが並んだ順に付与された順番号である。切り出し画像Sに付与されたiについてもiの値が同じカメラから切り出したことを示している。また、アフィン変換パラメータAについてもiの値が同じカメラの画像に用いるアフィン変換パラメータを示している。図7は、3枚の切り出し画像Si−1、Si、Si+1を合成する例を示している。切り出し画像の最低数は1枚である。
次に、切り出し画像Si−1、Si、Si+1に対して、予め求めてあるアフィン変換パラメータAi−1、Ai、Ai+1によって画像変換を行い、部分画像S’i−1、S’i、S’i+1を生成する。アフィン変換パラメータには、並進移動の項も含まれる。そして、予め撮影してあった全天球画像Bと合成処理を行う。そして、切り出し画像の合成時の境界領域処理を施す。このように合成するようにすることにより、仮想視点Pvからみた仮想全天球画像を生成することが可能となる。この仮想全天球画像をHDM82によって、ユーザが見たい場面の方向へ視線を向けることにより、あたかもコート10内の仮想視点11のからフットサルの試合を観戦することが可能となる。
合成情報は整合する面の奥行によって変化する。したがって、従来の合成情報の取得方法は、合成情報を取得したい各奥行について、以下の(1)、(2)の処理を繰り返すことによって行っていた。
(1)仮想視点に実際に置いたカメラと仮想視点より外側の位置に置かれたカメラの両方で、整合する面の奥行の位置に置かれたチェスボードを撮影する。
(2)対応点に基づいて切り出し位置と変換パラメータを取得する。
この方法で、合成情報を取得するためには、作業コストが大きくなるという問題を有している。そこで、本実施形態では、少数(例えば、最短位置と最長位置の最小2つ)の奥行で合成情報を従来の方法によって取得した後、その合成情報を基に、他の奥行(例えば、最短位置と最長位置の間の奥行)における合成情報を算出するようにした。第1の実施形態は、合成情報を直接算出する方法である。
合成情報は、カメラ群3のうちの1台のカメラ(例えば、カメラ3−3)Coの画像上の点(x,y)を、仮想視点11上の仮想視点カメラCvの画像上の点(x’,y’)に変換する式は、(式3)によって表される。(式3)において、a,b,c,d,e,fが合成情報である。
そして、第1の奥行における合成情報を(式4)とし、第2の奥行における合成情報(式5)とする。
合成情報取得部33は、この時の第1の奥行と第2の奥行との間の合成情報aq,bq,cq,dq,eq,fqを(式6)によって求める。(式6)は、内挿によって求める場合の算出式である。
(式6)によって、第1の奥行と第2の奥行との間の合成情報を補間係数αを指定することによって任意に求めることができるようになる。なお、前述した説明では内挿する方法を説明したが、外挿する場合でも補間係数αを適切に設定すれば同様の式によって合成情報を求めることができる。
<第2の実施形態>
次に、本発明の第2の実施形態による画像処理装置を説明する。合成における変換が(式7)のようにアフィン変換に限る場合、アフィン変換は、(式8)のように分解することができる。
(式8)において、右辺の左から第1の行列がxのせん断変形を、第2の行列が拡大・縮小を、第3の行列が回転を表している。したがって、合成情報取得部33は、(式7)を(式8)を用いて分解する。そして、合成情報取得部33は、それぞれの要素毎に(式9)によって各パラメータp’,r’,s’,θ’を算出する。
(式9)において、パラメータp1,r1,s1,θ1は第1の奥行のパラメータであり、パラメータp2,r2,s2,θ2は第2の奥行のパラメータである。合成情報取得部33は、(式9)によって得られる各パラメータp’,r’,s’,θ’から合成情報を算出する。このように、(式8)のように、分解することにより、簡単な演算(式9)によって各パラメータを求めることができるため、処理を高速にかつ低負荷にすることが可能となる。
また、第2の実施形態では、アフィン変換に限定される、せん断変形の向きが混在する場合には内挿精度が低下するという制限があるが、2点間(第1の奥行と第2の奥行の間)が広くても頑健であるという利点がある。
<第3の実施形態>
次に、本発明の第3の実施形態による画像処理装置を説明する。第3の実施形態は、対応点の場所を推定するものである。前述した第1、第2の実施形態と異なる点は、外側カメラ(カメラ群3の1つ)から仮想視点11までの距離、仮想視点11からチェスボードまでの距離、カメラの撮影可能角度のそれぞれが既知のとき、1つの奥行から求めた合成情報から他の奥行での合成情報を算出できる点である。
図8は、仮想視点とカメラの位置関係を示す説明図である。ここで、外側カメラと仮想視点にある仮想カメラが同一の方向を向いていることが前提条件である。今、奥行の合成情報が求まっていない点を(vh,vd)とすると、図8に示すθ1 (v)とθ1 (o)は、(式10)によって求まる。ここで、d(v),d(o)は、(式11)によって求まる。よって、(vh,vd)の投影点px (v)とPx (o)は、(式12)により求めることができる。
ただし、カメラの向き等を理論上の向きと一致させることは簡単ではなく、実際にカメラを設置する際には、理論上の向きと誤差が生じることになるため、 前述の前提条件を満たすことは一般的に困難である。そこで、以下の(1)、(2)の方法のいずれかを用いる。
(1)2つの奥行まで求めて、近い方からの推定値を用いる。
(2)2つの奥行まで求めて、重み付き平均にする。
具体的には、P1の他にP2を設ける。そして、P1とP2それぞれに基づいて、Px (v)とPx (o)を求める。vdの奥行は分かっているので、P1とP2に対して、vdの奥行に近い方を選択する、または、vdの奥行との距離で重み付き平均したPx (v)とPx (o)を採用する。
このようにすることにより、1つの奥行から求めた合成情報から他の奥行での合成情報を算出できるようになるため、処理を簡単にすることができるとともに、処理時間を短くすることができるようになる。
以上説明したように、予め求めておいた情報に基づいて、所望の合成情報を生成することができるようになるため、合成情報取得のための作業コストを大幅に削減することができる。
前述した実施形態における画像処理装置の全部または一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるものであってもよく、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されるものであってもよい。
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。