図1は、本実施例に係る、複数の撮像部を備えた多眼方式による撮像装置の一例を示した図である。
撮像装置100の筐体には、カラー画像データを取得する9個の撮像部101〜109及び撮像ボタン110を備えている。9個の撮像部101〜109は、すべて同一の焦点距離を有し、正方格子上に均等に配置されている。
ユーザが撮像ボタン110を押下すると、撮像部101〜109が被写体の光情報をセンサ(撮像素子)で受光し、受光した信号がA/D変換されて、複数のカラー画像(デジタルデータ)が同時に取得される。
このような多眼方式の撮像装置により、同一の被写体を複数の視点位置から撮像したカラー画像群(多視点画像データ)を得ることができる。
なお、ここでは撮像部の数を9個としたが撮像部の数は9個に限定されない。撮像装置が複数の撮像部を有する限りにおいて本発明は適用可能である。また、ここでは9個の撮像部が正方格子上に均等に配置される例について説明したが、撮像部の配置は任意である。例えば、放射状や直線状に配置してもよいし、まったくランダムに配置してもよい。
図2は、撮像装置100の内部構成を示すブロック図である。
中央処理装置(CPU)201は、以下に述べる各部を統括的に制御する。
RAM202は、CPU201の主メモリ、ワークエリア等として機能する。
ROM203は、CPU201で実行される制御プログラム等を格納している。
バス204は、各種データの転送経路であり、例えば、撮像部101〜109によって取得されたデジタルデータはこのバス204を介して所定の処理部に送られる。
操作部205は、ボタンやモードダイヤルなどが該当し、これらを介してユーザ指示が入力される。
表示部206は、撮影画像や文字の表示を行う。表示部206には一般的に液晶ディスプレイが広く用いられる。また、タッチスクリーン機能を有していても良く、その場合はタッチスクリーンを用いたユーザ指示を操作部205の入力として扱うことも可能である。
表示制御部207は、表示部206に表示される画像や文字の表示制御を行う。
撮像部制御部208は、フォーカスを合わせる、シャッターを開く・閉じる、絞りを調節するなどの、CPU201からの指示に基づいた撮像系の制御を行う。
デジタル信号処理部209は、バス204を介して受け取ったデジタルデータに対し、ホワイトバランス処理、ガンマ処理、ノイズ低減処理などの各種処理を行う。
エンコーダ部210は、デジタルデータを所定のファイルフォーマットに変換する処理を行う。外部メモリ制御部211は、PCやその他のメディア(例えば、ハードディスク、メモリーカード、CFカード、SDカード、USBメモリ)に繋ぐためのインターフェースである。
画像処理部212は、撮像部101〜109で取得された多視点画像データ或いは、デジタル信号処理部209から出力される多視点画像データから、距離情報を算出し、自由視点合成画像データを生成する。画像処理部212の詳細については後述する。
なお、撮像装置の構成要素は上記以外にも存在するが、本件発明の主眼ではないので、説明を省略する。
図3は、撮像部101〜109の内部構成を示す図である。
撮像部101〜109は、レンズ301〜303、絞り304、シャッター305、光学ローパスフィルタ306、iRカットフィルタ307、カラーフィルタ308、センサ309及びA/D変換部310で構成される。レンズ301〜303は夫々、ズームレンズ301、フォーカスレンズ302、ぶれ補正レンズ303である。センサ309は、例えばCMOSやCCDなどのセンサである。
センサ309で被写体の光量を検知すると、検知された光量がA/D変換部310によってデジタル値に変換され、デジタルデータとなってバス204に出力される。
なお、本実施例では、撮像部101〜109で撮像される画像がすべてカラー画像であることを前提に各部の構成や処理を説明するが、撮像部101〜109で撮像される画像の一部或いは全部をモノクロ画像に変更しても構わない。その場合には、カラーフィルタ308は省略される。
図4は、画像処理部212の内部構成を示す機能ブロック図である。
画像処理部212は、距離情報推定部401、分離情報生成部402、自由視点画像生成部403を有している。本実施例において画像処理部212は、撮像装置内の一構成要素として説明しているが、この画像処理部212の機能をPC等の外部装置で実現してもよい。すなわち、本実施例における画像処理部212は、撮像装置の一機能としても、又は独立した画像処理装置としても実現し得るものである。
以下、画像処理部212の各構成要素について説明する。
撮像部101〜109で取得されたカラーの多視点画像データ或いは、デジタル信号処理部209から出力されるカラーの多視点画像データ(本実施例ではいずれも9視点)が画像処理部212に入力されると、まず、距離情報推定部401に送られる。
距離情報推定部401は、入力された多視点画像データ内の各視点の画像それぞれについて、撮像部から被写体までの距離を表す情報(以下、「距離情報」と呼ぶ。)を推定する。距離情報推定の詳細については後述する。なお、距離情報推定部401を設ける代わりに、同等の距離情報を外部から入力するように構成してもよい。
分離情報生成部402は、多視点画像データを構成する各視点画像を、3つの層(被写体の境界の前景部分である境界前景層、背景部分である境界背景層、被写体の境界でない主層)に分離するための基礎となる情報(分離情報)を生成する。具体的には、各視点画像内の各画素を、被写体の境界(以下、「オブジェクト境界」と呼ぶ。)に隣接する前景画素/背景画素、及び前景画素/背景画素以外の通常画素の3種類に分類し、各画素がいずれの種類に該当するのかを特定可能な情報を生成する。分離情報生成の詳細については後述する。
自由視点画像生成部403は、主層、境界前景層、境界背景層の各3次元モデルをレンダリングして任意の視点位置における画像データ(自由視点画像データ)を生成する。自由視点画像生成の詳細については後述する。
(距離情報推定処理)
距離情報推定部401における距離情報の推定方法について説明する。図5は、本実施例に係る距離情報推定処理の流れを示すフローチャートである。以下では、入力される多視点画像データは、図1に示した9個の撮像部101〜109を有する撮像装置100によって撮像された9視点の画像データであるものとして説明を行う。
ステップ501において、距離情報推定部401は、入力された9視点画像データ内の1の視点画像(対象視点画像)に対し、エッジ保持型の平滑化フィルタをかける。
ステップ502において、距離情報推定部401は、対象視点画像を所定のサイズの領域(以下、「小領域」と呼ぶ。)に分割する。具体的には、色差が閾値以下の隣接する画素(画素群)同士を順次統合していき、最終的に所定の画素数からなる小領域(例えば、100〜1600画素の領域)に対象視点画像を分割する。閾値は、比較される色同士が同程度の色であると判断するのにふさわしい値、例えばRGBをそれぞれ8ビット(256色)で量子化した場合であれば「6」といった値に設定される。初めは、隣り合う画素同士を比較して色差が上記閾値以下であれば、両画素を統合する。そして、次に、統合された画素群について平均色をそれぞれ求め、隣接する画素群の平均色と比較し、色差が上記閾値以下となった画素群同士を統合していく。このような処理を、画素群の大きさ(画素数)が、上述の一定の画素数で構成される小領域に達するまで繰り返す。
ステップ503において、距離情報推定部401は、9視点画像データに含まれる9つの視点画像のすべてに対して、小領域への分割が完了したかどうかを判定する。小領域への分割が完了している場合には、ステップ504に進む。一方、領域分割が完了していない場合にはステップ501に戻り、次の視点画像を対象視点画像として、平滑化フィルタをかける処理及び小領域への分割処理を行う。
ステップ504において、距離情報推定部401は、すべての視点画像について、それぞれ周囲の視点画像(ここでは、上下左右に位置する視点画像)を参照して、分割された小領域毎に初期視差量を算出する。例えば、中央の撮像部105に係る視点画像の初期視差量を算出するときは、撮像部102・104・106・108の各視点画像が参照される。端部の撮像部に係る視点画像の場合、例えば撮像部107の視点画像は撮像部104・108の各視点画像が参照され、撮像部108の視点画像の場合は撮像部105・107・109の各視点画像が参照されて、初期視差量が算出される。初期視差量の算出は以下のようにして行う。
まず、初期視差量を求める視点画像の各小領域と、参照する視点画像(参照視点画像)における対応する小領域との比較を行う。ここで、対応する小領域とは、初期視差量を求める視点画像の各小領域の位置に対して視差量分シフトした参照視点画像における小領域である。
次に、初期視差量を求める視点画像の各画素と視差量分シフトした参照視点画像における対応する画素との色差を、小領域内の全ての画素について算出し、ヒストグラムを作成する。
そして、視差量を変化させて、それぞれヒストグラムを作成する。
こうして得られたヒストグラムにおいて、ピークが高い視差量が求める初期視差量となる。なお、参照する視点画像における対応する領域は、縦方向と横方向で視差量を調整して設定する。縦方向の1ピクセルの視差量と横方向の1ピクセルの視差量が同じ距離を示さないためである。
ここまでの処理について、具体例を用いて説明する。
図6の(a)は、撮像部105の視点画像の例を示す図であり、オブジェクト601が写っている。図6の(b)は、撮像部105の視点画像にエッジ保持型のフィルタをかけ、小領域に分割した状態を示す図である。ここで、小領域の一つを小領域602、小領域602の中心座標を603とする。図6の(c)は、撮像部104の視点画像の例を示す図である。撮像部104の場合、同じオブジェクトを撮像部105の右側から撮像することになるため、撮像部104の視点画像におけるオブジェクト604は、撮像部105の視点画像におけるオブジェクト601よりも左側に写っている。
いま、対象視点画像を撮像部105の視点画像、参照する視点画像を撮像部104の視点画像として、小領域602を対象とした対応領域の比較を行う。図6の(d)は撮像部104の視点画像に、撮像部105の視点画像における小領域602を重ねた状態であり、対応領域においてずれがある。そして、撮像部105の視点画像における小領域602の画素値(エッジ保持型のフィルタをかけたもの)と撮像部104の視点画像における画素値(エッジ保持型のフィルタをかけたもの)との比較を行い、ヒストグラムを作成する。具体的には、対応する小領域の各画素の色差を取得し、横軸に色差、縦軸にマッチングした画素数を取る。そのようにして、視差量を変化させて(例えば、小領域を1画素ずつ移動させて)、視差量毎のヒストグラムを順次作成する。図7は、ヒストグラムの一例を示しており、図7の(a)のように高いピークを持つヒストグラム分布は視差量の信頼度が高く、図7の(b)のようにピークの低いヒストグラム分布は視差量の信頼度が低いと判断する。ここでは、高いピークを持つヒストグラムの視差量を、初期視差量として設定する。図6の(e)は、図6の(d)で生じているずれが解消された状態であり、撮像部105の視点画像における小領域602が撮像部104の視点画像における対応領域にずれなく重なっている。この図6の(e)における矢印605で示される視差量が、求める初期視差量に相当する。なお、ここでは小領域を1画素ずつ移動させてヒストグラムを生成したが、0.5画素ずつ移動させるなど移動量は任意に設定して構わない。
図5のフローチャートの説明に戻る。
ステップ505において、距離情報推定部401は、小領域間の色差、初期視差量の差などを用いて反復的に初期視差量を調整する。具体的には、色差が近い近隣の小領域は似た視差量を持ち、所期視差量の差が近い近隣の小領域は似た視差量を持つ可能性が高いとの考えに基づいて初期視差量の調整を行う。
図8は、初期視差量の調整を説明する図である。図8の(a)は、図6の(b)の小領域毎に初期視差量を算出した結果(調整前の状態)を示す図であり、図8の(b)は調整を行った後の状態を示す図である。図8の(a)では、オブジェクト領域800(太線の内側の領域)における3つの小領域の視差量をそれぞれ斜線801、斜線802、斜線803で表している。ここで、斜線801/803は左上から右下に向かう斜線であり、斜線802は右上から左下に向かう斜線であるが、これは両者の視差量が異なっていることを示す。この場合において、背景領域(太線の外側の領域)については右上から左下に向かう斜線が正解の視差量であり、オブジェクト領域については左上から右下に向かう斜線が正解の視差量であるとする。図8の(a)では、視差量801及び803に関しては、オブジェクト領域の視差量として正しい視差量が算出できているが、視差量802に関しては、背景領域の視差量を算出してしまっており正しい視差量ができていないことが分かる。視差量の調整では、このような小領域単位に視差量を推定したときに生じた誤りが、周囲の小領域との関係を利用して正される。例えば、図8の(a)の場合、背景領域の視差量になってしまっていた視差量802が、隣接する小領域の視差量801及び視差量803を利用して調整された結果、図8の(b)に示すとおり、左上から右下に向かう正しい視差量804となる。
ステップ506において、距離情報推定部401は、初期視差量の調整によって得られた視差量を距離に変換する処理を行って距離情報を得る。距離情報は、(カメラ間隔×焦点距離)/(視差量×1ピクセルの長さ)で算出されるが、1ピクセルの長さは縦と横とでは異なるため、縦と横の視差量が同一距離を示すように必要な変換が施される。
さらに、変換された距離情報は、例えば8ビット(256階調)に量子化される。そして8ビットに量子化された距離情報は、8ビットのグレイスケール(256階調)の画像データとして保存される。距離情報のグレイスケール画像では、オブジェクトの色は、カメラからの距離が近い程、白(値:255)に近い色、カメラからの距離が遠い程、黒(値:0)に近い色で表現される。例えば、図8におけるオブジェクト領域800は白で表現され、背景領域は黒で表現される。もちろん、距離情報は10ビット、12ビットなど他のビット数で量子化しても良いし、量子化せずバイナリファイルとして保存しても構わない。
このようにして、各視点画像の各画素に対応した距離情報が算出される。本実施例では、画像を所定の画素数からなる小領域に分割して距離を算出しているが、多視点画像間の視差を基に距離を得るのであれば他の推定方法を用いても構わない。
上記の処理で得られた各視点画像に対応する距離情報と多視点画像データは、後続の分離情報生成部402および自由視点画像生成部403に送られる。なお、各視点画像に対応する距離情報と多視点画像データを分離情報生成部402のみに送り、分離情報生成部402からこれらのデータを自由視点画像生成部403に送るようにしてもよい。
(分離情報生成処理)
次に、分離情報生成部402における、各視点画像を3つの層に分離する処理について説明する。図9は、本実施例に係る画像分離処理の流れを示すフローチャートである。
ステップ901において、分離情報生成部402は、多視点画像データ、及び、距離情報推定処理によって得られた距離情報を取得する。
ステップ902において、分離情報生成部402は、視点画像内のオブジェクト境界を抽出する。本実施例では、対象画素の距離情報と近隣画素の距離情報との差分(以下、「距離情報の差分」と呼ぶ。)が閾値以上の箇所をオブジェクトの境界として特定している。具体的には、以下のとおりである。
まず、縦方向に走査し、距離情報の差分を閾値と比較して、閾値以上となる画素を特定する。次に、横方向に走査し、同様に距離情報の差分を閾値と比較して、閾値以上となる画素を特定する。そして、縦方向と横方向でそれぞれ特定された画素の和集合をとり、オブジェクト境界として特定する。なお、閾値としては、距離情報が8ビットで量子化(0〜255)されている場合においては、例えば「10」のような値に設定される。
ここでは、オブジェクト境界を距離情報に基づいて得ているが、画像を領域分割してオブジェクト境界にするなど他の方法を用いても構わない。ただ、画像の領域分割により得られるオブジェクト境界と、距離情報から得られるオブジェクト境界とは、出来る限り一致していることが望ましい。画像の領域分割によってオブジェクト境界を得たときは、得られたオブジェクト境界に合わせて距離情報を補正すると良い。
ステップ903において、分離情報生成部402は、視点画像内の各画素を、前景画素、背景画素、通常画素の3種類に分類する。具体的には、ステップ901で取得した距離情報を参照して、ステップ902で特定されたオブジェクト境界に隣接する画素について、距離が手前の方の画素を前景画素、距離が奥の方の画素を背景画素にそれぞれ決定する。図10は、視点画像内の各画素が、前景画素、背景画素、通常画素の3つに分類される様子を説明する図である。オブジェクト境界1001を跨ぐ隣接画素に対して、距離が近い方の画素が前景画素1002、距離が遠い方の画素が背景画素1003に、残りの画素が通常画素1004にそれぞれ分類されている。
ステップ904において、分離情報生成部402は、入力された多視点画像データに含まれるすべての視点画像について画素の分類が完了したかどうかを判定する。未処理の視点画像がある場合にはステップ902に戻り、次の視点画像に対しステップ902及びステップ903の処理を行う。一方、すべての視点画像について画素の分類が完了していた場合には、ステップ905に進む。
ステップ905において、分離情報生成部402は、前景画素、背景画素、通常画素を特定可能な分離情報を自由視点画像生成部403に送る。前景画素と背景画素が分かれば、その余の画素は通常画素であると判明するので、分離情報としては、前景画素及び背景画素が特定可能な情報であればよい。すなわち、分離情報としては、例えば前景画素と判定された画素について“0”、背景画素と判定された画素について“1”といったフラグを別途付加すること等が考えられる。後述の自由視点画像生成処理では、このような分離情報を用いて、所定の視点画像が3つの層(すなわち、前景画素で構成される境界前景層、背景画素で構成される境界背景層、通常画素で構成される主層)に分離されることになる。
(自由視点画像生成処理)
続いて、自由視点画像生成部403における、自由視点画像の生成処理について説明する。図11は、本実施例に係る自由視点画像生成処理の流れを示すフローチャートである。
ステップ1101において、自由視点画像生成部403は、出力される自由視点画像における任意の視点(以下、「自由視点」と呼ぶ。)の位置情報を取得する。自由視点の位置情報は、例えば以下のような座標によって与えられる。本実施例では、撮像部105の位置を基準となる座標位置(0.0,0.0)とした場合における、自由視点の位置を示す座標情報を与えるものとする。この場合、撮像部101は(1.0,1.0)、撮像部102は(0.0,1.0)、撮像部103は(−1.0,1.0)、撮像部104は(1.0,0.0)の座標でそれぞれ表される。同様に、撮像部106は(−1.0,0.0)、撮像部107は(1.0,−1.0)、撮像部108は(0.0,−1.0)、撮像部109は(−1.0,−1.0)の座標で表される。ここで、例えば、4つの撮像部101、102、104、105の中間位置を自由視点とした画像を合成したいと考えたとき、ユーザは、座標(0.5,0.5)を入力すればよいことになる。当然のことながら、座標定義の方法は上記に限るものではなく、撮像部105以外の撮像部の位置を基準となる座標位置としてもよい。また、自由視点の位置情報の入力方法は上述した座標を直接入力する方法に限られるものではなく、例えば、撮像部の配置を示すUI画面(不図示)を表示部206に表示し、タッチ操作等によって所望の自由視点を指定するようにしてもよい。
なお、本ステップにおける取得対象としては説明していないが、上述のとおり各視点画像に対応する距離情報と多視点画像データも、距離情報推定部401或いは分離情報生成部402から取得される。
ステップ1102において、自由視点画像生成部403は、指定された自由視点の位置における自由視点画像データの生成で参照する、複数の視点画像(以下、「参照画像群」と呼ぶ。)を設定する。本実施例では、指定された自由視点の位置に近い4つの撮像部で撮像された視点画像を参照画像群として設定する。上記のように、自由視点の位置として座標(0.5,0.5)が指定されたときの参照画像群は、撮像部101、102、104、105で撮像された4つの視点画像によって構成されることになる。もちろん、参照画像群を構成する視点画像の数は4つに限定されるものではなく、指定された自由視点の周囲の3つでも構わない。さらに、指定された自由視点の位置を内包するものであれば足り、例えば指定された自由始点位置の直近ではない4つの撮像部(例えば、撮像部101、103、107、109)で撮像された視点画像を参照画像群に設定してもよい。
ステップ1103において、自由視点画像生成部403は、設定された参照画像群に含まれる各視点画像を主層、境界前景層、境界背景層の3つの層に分離して3次元モデルを生成する処理を行う。3つの層のうち、境界前景層と境界背景層とで構成される領域は、画像中のオブジェクトの境界領域と言い換えることもできる。そして、後述のとおり、この境界領域の画素値を生成する際には、境界領域以外の領域(主層)の画素値を生成する際のレンダリングの単位よりも小さいレンダリング単位が用いられる。図12は、視点画像を上記3つの層に分離する様子を説明する図である。以下、詳しく説明する。
まず、主層の3次元モデルの生成について説明する。
主層の場合は、オブジェクト境界に掛かっていない4つの画素を相互に接続して四辺形メッシュを構築することにより3次元モデルを生成する。図12において、例えば、いずれもオブジェクト境界1001に掛かっていない4つの画素(2つの通常画素1004、1201及び2つの前景画素1202、1203)を接続して四辺形メッシュ1204が構築される。このような処理を繰り返し行い、主層の3次元モデルとなるすべての四辺形メッシュが構築される。このときの四辺形メッシュの大きさは最小で1画素×1画素である。本実施例では、主層は全て1画素×1画素の大きさの四辺形メッシュで構築しているが、より大きな四辺形メッシュとしてもよい。または、四辺形以外の形状、例えば三角形のメッシュを構築するようにしても構わない。
上記のようにして構築される、1画素単位の四辺形メッシュのX座標とY座標は撮像装置100のカメラパラメータから算出されたグローバル座標が相当し、Z座標は距離情報から得られる各画素における被写体までの距離が相当する。そして、各画素の色情報を四辺形メッシュにテクスチャマッピングして、主層の3次元モデルを生成する。
次に、境界前景層と境界背景層の3次元モデルの生成について説明する。
オブジェクト境界に接する境界前景層と境界背景層では、主層の場合よりも詳細な3次元モデルの生成を行う。具体的には、オブジェクト境界に掛かっている4つの画素を相互に接続して四辺形メッシュを構築し、当該構築された四辺形メッシュをサブ画素に細分割することにより、3次元モデルを生成する。図12において、例えば、いずれもオブジェクト境界に掛かっている4つの画素(背景画素1003、1205、1206及び前景画素1002)で構築される四辺形メッシュをサブ画素に細分割して、0.5画素×0.5画素サイズの四辺形メッシュが構築される。このような処理を繰り返し行い、境界前景層及び境界背景層の3次元モデルとなるすべての四辺形メッシュが構築される。そして、サブ画素単位の各四辺形メッシュは、対応する画素の特徴から、境界前景層と境界背景層とに分類される。例えば、オブジェクト境界の前景部分である前景画素1002に対応するサブ画素単位の四辺形メッシュ1207は境界前景層となる。また、オブジェクト境界の背景部分である背景画素1003、1205、1206に対応するサブ画素単位の四辺形メッシュ1208、1209、1210は境界背景層となる。
上記のようにして構築される、サブ画素単位の四辺形メッシュのX座標とY座標は、近隣画素のX座標、Y座標から内挿されて算出されたグローバル座標が相当し、Z座標は距離情報から得られる対応する画素における被写体までの距離が相当する。そして、対応する画素の色情報を四辺形メッシュにそれぞれテクスチャマッピングして、境界前景層と境界背景層の3次元モデルを生成する。例えば、サブ画素単位の四辺形メッシュ1207は前景画素1002の色、同様に、1208は背景画素1003の色、1209は背景画素1205の色、1210は背景画素1206の色をそれぞれ用いて、境界前景層或いは境界背景層の3次元モデルが生成される。
図11のフローチャートの説明に戻る。
ステップ1104において、自由視点画像生成部403は、主層のレンダリングを行う。図13は、主層のレンダリングの様子を説明する図である。横軸にX座標、縦軸にZ座標を取っている。図13において、線分1301及び1302は、白塗りの逆三角1303で示す参照視点から3次元モデル生成した場合における主層の四辺形メッシュをそれぞれ示している。ここでは、前景画素1304と背景画素1305との間にオブジェクト境界(不図示)が存在するものとする。主層として、通常画素1306と前景画素1304とを接続した四辺形メッシュ1301、及び、通常画素1307と背景画素1305とを接続した四辺形メッシュ1302が3次元モデル生成されている。このような四辺形メッシュ1301及び1302を、ステップ1101で指定された自由視点の位置(図13では、黒塗りの逆三角1308)でレンダリングした画像が主層のレンダリング画像となる。レンダリング処理において、色が存在しない画素部分は、穴として残ることになる。そして、上記のようなレンダリング処理を、参照画像群の全てについて行い、主層のレンダリング画像群を得る。図13において、矢印1309/1310は、四辺形メッシュ1302が、視点1303/視点1308でどの位置から見えるかを示している。視点1303より左側にある視点1308では、四辺形メッシュ1302は、視点1303より右側に位置する。矢印1311/1312も同様に、四辺形メッシュ1301が、視点1303/視点1308でどの位置から見えるかを示している。
図14は、主層のレンダリング結果の一例を示す図である。ここでは、説明の簡易化のために、図6で示した2つの視点画像(撮像部105の視点画像と撮像部104の視点画像)を参照画像群とし、撮像部105と撮像部104との中間視点を任意の視点位置とした場合のレンダリング結果を示す。この場合、撮像部105の視点画像と撮像部104の視点画像との中間視点の画像が生成される。図14の(a)は撮像部105の視点画像における主層のレンダリング結果、同(b)は撮像部104の視点画像における主層のレンダリング結果である。この場合において、オブジェクト1401は、中間視点におけるオブジェクトであり、撮像部105のオブジェクト601(図6の(a)を参照)より左側に、撮像部104のオブジェクト604(図6の(c)を参照)より右側に位置している。そして、図14の(a)ではオブジェクト1401の右側にオクルージョン領域1402が、同(b)ではオブジェクト1401の左側にオクルージョン領域1403が穴として残っていることが分かる。
図11のフローチャートの説明に戻る。
ステップ1105において、自由視点画像生成部403は、得られた主層のレンダリング画像群を統合して、主層の統合画像データを得る。本実施例の場合、参照画像としての4つの視点画像から生成された主層のレンダリング画像(4つ)が統合されることになる。統合処理は、画素毎に行われ、統合後の色は各レンダリング画像の重み付き平均、具体的には、指定された自由視点の位置と参照画像との距離に基づく重み付き平均を用いる。例えば、指定された自由始点位置が各参照画像に対応する4つの撮像部から等距離だけ離れた位置であった場合には0.25ずつの等しい重みとなる。一方、指定された自由始点位置が、いずれかの撮像部に近寄った位置であった場合には、その距離が近いほど大きい重みとなる。もちろん平均色の求め方は、これに限定されるものではない。各レンダリング画像で穴が空いている箇所は、統合の色計算には用いない。つまり穴が空いていないレンダリング画像からの重み付き平均によって統合後の色は計算される。全てのレンダリング画像で穴が空いている箇所は穴として残る。前述の図14の(a)及び(b)で示した主層のレンダリング画像の統合の場合、図14の(a)における穴部分(オクルージョン領域1402)は図14の(b)で、図14の(b)における穴部分(オクルージョン領域1403)は図14の(a)で埋められる。すなわち、2つの参照画像での中間視点画像を生成しているため、色計算の重みはそれぞれ0.5となり、統合された画像の各画素の色は、共に穴が空いていない場合は、図14の(a)と同(b)の平均色となる。そして、一方は穴が空いていて他方は穴が空いていない場合は、穴が空いていない画素の色が採用されることになる。説明の簡易化のために2つのレンダリング画像を統合する場合の説明をしたが、4つのレンダリング画像の統合処理も考え方は同じである。なお、ここでの統合処理で穴が埋まらない部分は、後述する境界前景層及び境界背景層のレンダリング結果の統合処理により埋めていく。
このようにして、主層の統合画像データが生成される。
ステップ1106において、自由視点画像生成部403は、境界前景層のレンダリングを行う。図15は、境界前景層のレンダリングの様子を説明する図である。図13と同様、横軸にX座標、縦軸にZ座標を取っており、前景画素1304と背景画素1305との間にオブジェクト境界(不図示)が存在するものとする。図15において、線分1501は、白塗りの逆三角で示される参照視点1303から3次元モデル生成した場合における境界前景層の四辺形メッシュを示している。この境界前景層1501は、前景画素1304の距離情報と色情報を持つサブ画素単位の四辺形メッシュである。このようなサブ画素単位の四辺形メッシュ1501を、ステップ1101で指定された自由視点の位置(図15中の黒塗りの逆三角1308)でレンダリングした画像が境界前景層のレンダリング画像となる。なお、境界前景層のレンダリングの場合も、色が存在しない画素部分は、穴として残ることになる。そして、上記のようなレンダリング処理を、参照画像群の全てについて行い、境界前景層のレンダリング画像群を得る。図15において、矢印1502/1503は、四辺形メッシュ1501が、視点1303/視点1308でどの位置から見えるかを示している。視点1303より左側にある視点1308では、四辺形メッシュ1501は、視点1303より右側に位置する。
ステップ1107において、自由視点画像生成部403は、境界前景層のレンダリング画像群を統合して、境界前景層の統合画像データを得る。ステップ1105と同様の統合処理によって、参照画像としての4つの視点画像から生成された境界前景層のレンダリング画像(4つ)が統合される。
ステップ1108において、自由視点画像生成部403は、主層の統合画像データと境界前景層の統合画像データとを統合し、2層(主層+境界前景層)統合画像データを得る。ここでの統合処理も画素毎に行われる。この際、主層と境界前景層では主層の方が安定的に精度の高い画像が得られるため、主層の統合画像を優先して利用する。よって、主層の統合画像に穴が空いていて、境界前景層の統合画像に穴が空いていないという場合にのみ、境界前景層の色で補完がなされる。主層の統合画像と境界前景層の統合画像との双方に穴が空いているときは、穴として残ることになる。以上の処理により、2層統合画像データを得る。
ステップ1109において、自由視点画像生成部403は、境界背景層のレンダリングを行う。図16は、境界背景層のレンダリングの様子を説明する図である。図13と同様、横軸にX座標、縦軸にZ座標を取っており、前景画素1304と背景画素1305との間にオブジェクト境界(不図示)が存在するものとする。図16において、破線の線分1601は、白塗りの逆三角で示される参照視点1303から3次元モデル生成した場合における境界背景層の四辺形メッシュを示している。この境界背景層1601は、背景画素1305の距離情報と色情報を持つサブ画素単位の四辺形メッシュである。このようなサブ画素単位の四辺形メッシュ1601を、ステップ1101で指定された自由視点の位置(図16中の黒塗りの逆三角1308)でレンダリングした画像が境界背景層のレンダリング画像となる。なお、境界背景層のレンダリングの場合も、色が存在しない画素部分は、穴として残ることになる。そして、上記のようなレンダリング処理を、参照画像群の全てについて行い、境界背景層のレンダリング画像群を得る。図16において、矢印1602/1603は、四辺形メッシュ1601が、視点1303/視点1308でどの位置から見えるかを示している。視点1303より左側にある視点1308では、四辺形メッシュ1601は、視点1303より右側に位置する。
ステップ1110において、自由視点画像生成部403は、境界背景層のレンダリング画像群を統合して、境界背景層の統合画像データを得る。ステップ1105と同様の統合処理によって、参照画像としての4つの視点画像から生成された境界背景層のレンダリング画像(4つ)が統合される。
ステップ1111において、自由視点画像生成部403は、ステップ1108で得た2層統合画像データと、境界背景層の統合画像データとを統合して、3層(主層+境界前景層+境界背景層)統合画像データを得る。ここでの統合処理も画素毎に行われる、この際、2層(主層+境界前景層)統合画像と境界背景層の統合画像とでは2層統合画像の方が安定的に精度の高い画像が得られるため、2層統合画像を優先して利用する。よって、2層(主層+境界前景層)統合画像に穴が空いていて、境界背景層の統合画像に穴が空いていないという場合にのみ、境界背景層の色で補完がなされる。2層統合画像と境界背景層の統合画像との双方に穴が空いているときは、穴として残ることになる。以上の処理により、3層統合画像データを得る。
なお、本実施例において、主層、境界前景層、境界背景層の順にレンダリング処理を行うのは、オブジェクト境界付近の画質劣化を抑えるためである。
ステップ1112において、自由視点画像生成部403は、穴埋め処理を行う。具体的には、ステップ1111で得た3層統合画像データにおいて穴として残っている部分を周囲の色を用いて補完する。本実施例では、穴埋め対象画素の周囲画素から距離情報が奥にある画素を選択して穴埋め処理を行っている。もちろん穴埋めの方法は他の方法を用いても構わない。
ステップ1113において、自由視点画像生成部403は、穴埋め処理の終わった自由視点画像データを、エンコーダ部210に出力する。エンコーダ部210では、任意の符号化方式(例えばJPEG方式)で符号化して画像出力される。
本実施例によれば、多視点画像データにおける各視点間の撮像画像を高精度に合成することが可能となり、撮像した画像とは視点数の異なるディスプレイにおける違和感のない表示、リフォーカス処理など画像処理の高画質化、などを実現できる。
実施例1では、オブジェクト境界付近の三次元モデル生成を詳細に行い、3層に分離してレンダリングすることで自由視点画像合成の画質向上を図った。次に、オブジェクト境界付近の3次元モデル生成にアルファ値(透明度)を導入することで、より高い画質を実現する態様について、実施例2として説明する。なお、実施例1と共通する部分(距離情報推定部401における処理)については説明を簡略化ないしは省略し、ここでは差異点である分離情報生成部402及び自由視点画像生成部403における処理を中心に説明することとする。
図17は、本実施例に係る画像分離処理の流れを示すフローチャートである。
ステップ1701において、分離情報生成部402は、多視点画像データ、及び、距離情報推定処理によって得られた距離情報を取得する。
ステップ1702において、分離情報生成部402は、視点画像内のオブジェクト境界を抽出する。
ステップ1703において、分離情報生成部402は、視点画像内の各画素を、前景画素、背景画素、通常画素の3種類に分類する。
ここまでは、実施例1の図9のフローチャートのステップ901〜ステップ903と同じである。
ステップ1704において、分離情報生成部402は、ステップ1703で特定された前景画素及び背景画素のアルファ値の推定を行う。
図18は、本実施例に係るアルファ推定処理の様子を説明する図である。
まず、前景画素(1804、1805、1811、1817)と背景画素(1803、1809、1810、1816)とを、アルファ推定の未定領域とする。そして、オブジェクト境界1801を挟んで前景画素がある側の通常画素(1806、1807、1812、1813、1818、1819)を、アルファ推定の前景領域とする。同様に、オブジェクト境界1801を挟んで背景画素がある側の通常画素(1802、1808、1814、1815)を、アルファ推定の背景領域とする。ここでは、オブジェクト境界1801からそれぞれ2画素幅の領域を前景領域/背景領域に設定しているが、この画素幅は任意に設定可能である。そして、未定領域としいて設定された前景画素及び背景画素のアルファ値を、前景領域/背景領域として設定された通常画素の情報を基に推定する。推定には公知のアルファ推定方法(例えば、ベイズ推定)を適用可能である。アルファ推定の具体的な内容については本発明の特徴ではないため、説明を省略する。このようにして、前景画素及び背景画素にアルファ値が付加される。
ステップ1705において、分離情報生成部402は、入力された多視点画像データに含まれるすべての視点画像について、画素の分類およびアルファ値の推定が完了したかどうかを判定する。未処理の視点画像がある場合にはステップ1702に戻り、次の視点画像に対しステップ1702〜ステップ1704の処理を行う。一方、すべての視点画像について画素の分類およびアルファ値の推定が完了していた場合には、ステップ1706に進む。
ステップ1706において、分離情報生成部402は、ステップ1703で得た前景画素、背景画素、通常画素を特定可能な分離情報、及びステップ1704で得たアルファ情報を自由視点画像合成部404に送る。
続いて、本実施例における自由視点画像の生成処理について説明する。前景画素と背景画素にアルファ値が付加されている点が異なるのみで、基本的な処理の内容は実施例1における自由視点画像の生成処理と同じであるので、前述の図11のフローチャートに沿って本実施例に特有な点を中心に説明する。
ステップ1101における自由視点の位置情報の取得、及びステップ1102における参照画像群の設定は、実施例1と同様である。但し、上述のとおり、分離情報生成部402からは分離情報に加えアルファ情報も取得される(ステップ1101)。
ステップ1103における主層、境界前景層、境界背景層の3次元モデル生成も実施例1と同様である。但し、本実施例では、境界前景層、境界背景層の3次元モデル生成の際、サブ画素単位の四辺形メッシュには対応する画素のアルファ値が付加される。
ステップ1104〜ステップ1110における、各層のレンダリング処理及びレンダリング結果の統合処理も、実施例1と同様である。但し、主層と境界前景層を統合した2層統合画像において境界前景層でレンダリングされた画素はアルファ値を有している。また、境界背景層でレンダリングされた画素も、アルファ値を有している。
ステップ1111における3層統合画像データの生成では、画素毎に統合処理を行い、2層統合画像(主層と境界前景層の統合画像)で穴が空いている場合は、境界背景層の色で補完する。また、穴は空いていないが、境界前景層によってレンダリングされアルファ値を有している画素に関しては、境界前景層と境界背景層の色をアルファ値に応じて重み付き平均により求める。例えば、境界前景層の画素が持つアルファ値が大きい(透明度が低い)場合は、境界前景層の画素値がより多く反映されるような重み付き平均を行う。逆に、境界前景層の画素が持つアルファ値が小さい(透明度が高い)場合は、境界背景層の画素値がより多く反映されるような重み付き平均を行う。このような処理により、境界部分の色の曖昧性に対応することができ、画質の向上が図られる。
ステップ1112における穴埋め処理およびステップ1113における自由視点画像データの出力処理は、実施例1と同様である。
本実施例によれば、オブジェクト境界付近の3次元モデル生成にアルファ値(透明度)を導入することで、より高い画質を実現することが可能となる。
(その他の実施形態)
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。