図2は、本発明の実施の形態に係る画像編集システム500の構成を示す図である。実施の形態に係る画像編集システム500は、画像処理装置100及びコンソール端末装置200を備える。
コンソール端末装置200は画像製作者(以下、ユーザという)が画像を製作、編集するために使用する端末装置である。コンソール端末装置200は操作部60および表示部70を備える。操作部60はキーボード、マウス等の入力デバイスであり、表示部70はディスプレイ等の出力デバイスである。なお入出力が一体となったデバイスであるタッチパネルディスプレイが用いられてもよい。またコンソール端末装置200はプリンタ、スキャナ等の印刷物を媒体として用いるユーザインタフェースを含んでよい。操作部60はユーザ操作を受け付け、そのユーザ操作に起因した信号を生成し、画像処理装置100に出力する。表示部70は画像処理装置100により生成された画像を表示する。
画像処理装置100はデプスマップ生成部10、デプスマップ加工部20、3D画像生成部30、操作受付部40、表示制御部50を含む。これらの構成はハードウエア的には、任意のプロセッサ、メモリ、その他のLSIで実現でき、ソフトウエア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。例えばデプスマップ生成部10、デプスマップ加工部20、3D画像生成部30について、その機能を全てソフトウェアで実現してもよいし、デプスマップ生成部10および3D画像生成部30の機能を専用のロジック回路で構成しデプスマップ加工部20をソフトウェアで実現してもよい。
デプスマップ生成部10は、入力される2D画像とデプスモデルをもとに当該2D画像のデプスマップを生成する。デプスマップは、デプス値(奥行き値ともいう)を輝度値で表したグレースケール画像である。デプスマップ生成部10はシーン構造を推定して、そのシーン構造に適合的なデプスモデルを使用してデプスマップを生成する。本実施の形態ではデプスマップ生成部10は複数の基本デプスモデルを合成してデプスマップ生成に使用する。その際、当該2D画像のシーン構造に応じて複数の基本デプスモデルの合成比率を変化させる。
図3は、本発明の実施の形態に係るデプスマップ生成部10の構成例を示す図である。デプスマップ生成部10は、画面上部高域成分評価部11、画面下部高域成分評価部12、合成比率決定部13、第1基本デプスモデル用フレームメモリ14、第2基本デプスモデル用フレームメモリ15、第3基本デプスモデル用フレームメモリ16、合成部17、加算部18を含む。
画面上部高域成分評価部11は、処理すべき2D画像の画面上部において高域成分を有する画素の割合を算出する。その割合を画面上部の高域成分評価値とする。なお画面全体に対する画面上部の割合は略20%に設定するとよい。画面下部高域成分評価部12は当該2D画像の画面下部において高域成分を有する画素の割合を算出する。その割合を画面下部の高域成分評価値とする。なお画面全体に対する画面下部の割合は略20%に設定するとよい。
第1基本デプスモデル用フレームメモリ14は第1基本デプスモデルを保持し、第2基本デプスモデル用フレームメモリ15は第2基本デプスモデルを保持し、第3基本デプスモデル用フレームメモリ16は第3デプスモデルを保持する。第1基本デプスモデルは画面上部及び画面下部をそれぞれ凹状の球面とするモデルである。第2基本デプスモデルは画面上部を縦方向に軸線を有する円筒面、画面下部を凹状の球面とするモデルである。第3基本デプスモデルは画面上部を平面、画面下部を横方向に軸線を有する円筒面とするモデルである。
合成比率決定部13は、画面上部高域成分評価部11および画面下部高域成分評価部12によりそれぞれ算出された、画面上部および画面下部の高域成分評価値をもとに第1基本デプスモデル、第2基本デプスモデル、第3基本デプスモデルの合成比率k1,k2,k3(ただし、k1+k2+k3=1)を決定する。合成部17はこれらの合成比率k1,k2,k3と、第1基本デプスモデル、第2基本デプスモデル、第3基本デプスモデルをそれぞれ乗算し、それぞれの乗算結果を加算する。この演算結果が合成基本デプスモデルとなる。
例えば合成比率決定部13は、画面上部の高域成分評価値が小さい場合は画面上部に空もしくは平坦な壁が存在するシーンと認識して、画面上部の奥行きを深くした第2基本デプスモデルの比率を増加させる。また画面下部の高域成分評価値が小さい場合は画面下部に平坦な地面もしくは水面が手前に連続的に広がるシーンと認識して、第3基本デプスモデルの比率を増加させる。第3基本デプスモデルでは、画面上部は遠景として平面近似し、画面下部は下に行くほど奥行きを小さくしている。
加算部18は、合成部17により生成された合成基本デプスモデルに上記2D画像の赤成分(R)信号を重畳してデプスマップを生成する。R信号を使用する理由は、R信号の大きさが順光に近い環境で、かつテクスチャの明度が大きく異ならないような条件において、被写体の凹凸と一致する確率が高いという経験則によるものである。また赤色および暖色は色彩学における前進色であり、寒色系よりも奥行きが手前に認識され、立体感が強調されるためである。
図2に戻る。デプスマップ加工部20は、デプスマップ生成部10により生成されたデプスマップを加工する。本実施の形態ではデプスマップ加工部20は、外部設定される複数のマスクパターン(以下、単にマスクという)により指定される画面内の複数の領域ごとに、デプスマップ生成部10により生成されたデプスマップを個別または独立に加工する。例えばゲイン調整、オフセット調整、グラデーション処理などの加工を行う。デプスマップ加工部20による処理の詳細は後述する。
3D画像生成部30は、上述の2D画像およびデプスマップ加工部20により加工されたデプスマップをもとに別視点の2D画像を生成する。3D画像生成部30は、オリジナル視点の2D画像と別視点の2D画像を右眼画像と左眼画像として出力する。
以下、オリジナル視点の2D画像とデプスマップを用いて当該2D画像と視差を持つ別視点の2D画像を生成する具体例を説明する。この具体例ではオリジナル視点の2D画像を画面表示させた場合の視点を基準にして、左に視点移動した別視点の2D画像を生成する。その場合、観察者に対してテクスチャを近景として表示させるときは画面に向かって左側へオリジナル視点の2D画像のテクスチャを所定量移動させ、テクスチャを観察者に遠景として表示させるときは画面に向かって右側へテクスチャを所定量移動させる。
デプスマップの各画素の輝度値をYd、飛び出し感を表す輻輳値をm、立体感を表す奥行き値をnとする。3D画像生成部30は輝度値Ydの小さい値から順に、その輝度値Ydに対応するオリジナル視点の2D画像のテクスチャを画素ごとに(Yd−m)/n画素分左にシフトする。(Yd−m)/nの値が負の場合、(m−Yd)/n画素分右にシフトする。なお観察者には、デプスマップの輝度値Ydの小さいテクスチャは画面奥側に見え、輝度値Ydの大きいテクスチャは画面手前に見える。輝度値Yd、輻輳値m、奥行き値nは0〜255の範囲の値であり、例えば、輻輳値m=200、奥行き値n=20に設定される。
なお、デプスマップ生成部10によるデプスマップ生成、および3D画像生成部30による3D画像生成のより詳細な説明は、本出願人が先に出願した特開2005−151534号公報、特開2009−44722号公報に開示されている。
操作受付部40は、コンソール端末装置200の操作部60から入力される信号を受け付ける。表示制御部50はコンソール端末装置200の表示部70を制御する。なお本明細書ではデプスマップ加工部20の処理に注目するため、図2では操作受付部40および表示制御部50のそれぞれと、デプスマップ加工部20との間のみを線で結んでいるが、操作受付部40および表示制御部50がデプスマップ加工部20の処理への使用に限定されるものではない。
図4は、本発明の実施の形態に係る画像編集システム500の全体処理プロセスを説明するための図である。一般的に2D画像には複数のオブジェクトが含まれる。図4の2D入力画像は3つのオブジェクトを含む。具体的には人物、木、背景のオブジェクトを含む。まずデプスマップ生成部10は、2D入力画像からデプスマップを生成する(ステップS10)。デプスマップは白に近いほど輝度が高く観察者との距離が近いことを示し、黒に近いほど輝度が低く観察者との距離が遠いことを示す。3D画像を生成する場合、デプスマップの白に近い領域ほど飛び出し量が大きくなり、黒に近い領域ほど引っ込み量が大きくなる。
本実施の形態では画像内の複数のオブジェクトに対して個別に奥行き感を調整するために、デプスマップ内の個々のオブジェクト領域に対して独立にエフェクト調整する。具体的には、画像中の個々のオブジェクト領域を表す複数のマスクを用いて、デプスマップ内に、個々のオブジェクト領域を特定する。そして特定されたオブジェクト領域ごとに個別にエフェクト調整し、エフェクト調整された複数のデプスマップを得る。そして、この複数のデプスマップを合成して一つのデプスマップを生成する。このデプスマップは、オリジナル視点の2D画像から別視点の2D画像を生成する際に使用される。
デプスマップ生成部10は2D入力画像のデプスマップを自動的に生成する(S10)。生成されたデプスマップは、デプスマップ加工部20に入力される。デプスマップ加工部20には、2D入力画像内の複数のオブジェクト領域をそれぞれ表す複数のマスクも入力される。これらのマスクはユーザによりトレースされたオブジェクト領域の輪郭をもとに生成される。例えば、表示制御部50は表示部70に2D入力画像を表示させ、ユーザはその2D入力画像内においてオブジェクト領域とすべき領域の輪郭を、操作部60を使用してトレースする。操作受付部40は操作部60からの信号により、個々のオブジェクト領域の輪郭情報を生成し、マスクとしてデプスマップ加工部20に出力する。なおユーザが印刷物上に描いた輪郭をスキャナにより読み取ることによりマスクを画像処理装置100に読み込ませてもよい。
図4では各マスクの有効領域を白で無効領域を黒で描いている。人物のマスクは人物の領域のみを有効とし、他の領域を無効とするパターンである。木のマスクは木の領域のみを有効とし、他の領域を無効とするパターンである。背景のマスクは背景のみを有効とし、他の領域を無効とするパターンである。
1画面あたりのマスクの数に制約はなく、ユーザが任意に設定できる。またオブジェクト領域はユーザが1つのオブジェクト領域にすべきと決定した領域に設定できる。例えば、図4に示すように1人の人物に1つのオブジェクト領域を設定しもよいし、人物の部位ごと、さらに各部位の部分ごとにオブジェクト領域を設定してもよい。特に高品質な3D画像を生成する際には、1人の人物に対しても多数のオブジェクト領域を設定し、部位ごと、さらに各部位の部分ごとに厚みや奥行き方向の位置を調整することもある。
デプスマップ加工部20は、デプスマップ生成部10から入力されるデプスマップ(以下、入力デプスマップという)を、ユーザインタフェースを介して入力される複数のマスクを用いて加工する(S20)。デプスマップ加工部20は各マスクで特定される領域ごとに、個別にデプスマップを加工する。以下、この領域別のデプスマップの加工をデプスマップのレイヤ処理と呼ぶ。またレイヤ処理されたデプスマップをレイヤデプスマップと呼ぶ。本明細書ではレイヤを、マスクの有効領域に対する処理の単位を示す概念として使用している。
図4では、一例としてデプスマップ加工部20は入力デプスマップから、人物のマスク(レイヤ1のマスク)を用いて人物の領域を特定してレイヤ処理している(S21a)。同様に入力デプスマップから、木のマスク(レイヤ2のマスク)を用いて木の領域を特定してレイヤ処理している(S21b)。同様に入力デプスマップから、背景のマスク(レイヤ3のマスク)を用いて背景の領域を特定してレイヤ処理している(S21c)。
デプスマップ加工部20は、レイヤ1〜3のレイヤデプスマップの各オブジェクト領域のデプスマップを合成する(S22)。この合成されたデプスマップを合成デプスマップと呼ぶ。3D画像生成部30は、この合成デプスマップを用いて2D入力画像の画素をシフトし、2D入力画像に対して視差を持つ画像を生成する(S30)。3D画像生成部30は2D入力画像を3D出力画像の右眼画像(R)とし、生成した画像を左眼画像(L)として出力する。
(ゲイン調整)
まず、デプスマップ加工部20によるレイヤ処理としてゲイン調整する例を説明する。ゲイン調整はオブジェクトの奥行き方向の厚みを調整する処理である。ゲインを上げるとオブジェクトが厚くなり、ゲインを下げるとオブジェクトが薄くなる。
図5は、入力デプスマップのゲイン調整プロセスを説明するための図である。デプスマップ加工部20は、加工前のデプスマップである入力デプスマップに対して、人物のマスクの有効領域だけにゲインを乗算して、入力デプスマップ内の人物の部分のみデプス値の振幅を大きくする(S21a)。図5において加工後のデプスマップであるレイヤデプスマップは人物の部分の振幅が大きくなっている(符号a参照)。
図6は、レイヤデプスマップの合成処理プロセスを説明するための図である。デプスマップ加工部20は、レイヤ1のレイヤデプスマップ(人物のデプスマップ)のうち、レイヤ1のマスク(人物のマスク)の有効領域のみを切り出す。同様にレイヤ2のレイヤデプスマップ(木のデプスマップ)のうち、レイヤ2のマスク(木のマスク)の有効領域のみを切り出す。同様にレイヤ3のレイヤデプスマップ(背景のデプスマップ)のうち、レイヤ3のマスク(背景のマスク)の有効領域のみを切り出す。デプスマップ加工部20は、切り出した3つのデプスマップを組み合わせて合成デプスマップを生成する。
図7は、マスクを使用しない入力デプスマップのゲイン調整プロセスを説明するための図である。レイヤデプスマップの合成の際、各レイヤデプスマップのマスクの有効領域のみを用いて合成するのであれば、各レイヤデプスマップのマスクの無効領域は合成デプスマップに反映されないことになる。よって、デプスマップ加工部20は入力デプスマップ全体にゲインを乗算して、入力デプスマップ全体のデプス値の振幅を大きくする(S21a)。図7においてレイヤデプスマップは全体の振幅が大きくなっている(符号b参照)。
図8は、3D画像生成部30による3D画像生成プロセスを説明するための図である。3D画像生成部30は合成デプスマップをもとに2D入力画像の画素をシフトし、2D入力画像に対して視差を持つ画像を生成する(S30)。図8では2D入力画像内の人物部分の画素を左にシフトする例を示している。3D画像生成部30は合成デプスマップの人物部分のデプス値にオフセット値を加算してデプス値を大きくする。なおオフセット調整の詳細は後述する。人物部分のデプス値が大きくなると、3D画像の人物部分の飛び出し量が大きくなる。
人物部分の周囲の背景部分を画素シフトせずに人物部分のみを画素シフトすると、画素が存在しない欠落画素部分が発生する(補正前の画素シフト画像の符号c参照)。3D画像生成部30は、この欠落画素部分をその周辺画素から生成した画素で補間して欠落画素部分を補正する。画素補間には様々な方法があるが、例えば人物部分の境界の画素で補間する(補正後の画素シフト画像の符号d参照)。
デプスマップ内のデプス値にゲインを掛けて、デプス値の振幅を伸張または圧縮する目的は、生成する3D画像における奥行き感の振幅を調整することにある。従って、デプス値にゲインを掛ける際の中心レベルは適切に設定される必要がある。
図9は、任意レベルを中心にゲイン調整する例を示す図である。図9ではデプスマップのオブジェクト領域内におけるデプス値の平均値より低い値に任意レベルを設定している。上述したようにデプスマップのオブジェクト領域は、マスクの有効領域により指定される。当該任意レベルを中心にゲイン調整すると、デプス値の平均値が変動してデプスマップに意図しないオフセットが発生する。このオフセットにより、生成する3D画像の奥行き感の振幅だけでなく奥行きの重心も変化する。この重心の変化はユーザにとって意図しない調整である。図9ではゲイン調整後に、デプス値の平均値が高くなり奥行きの重心が手前にずれてしまう。
図10は、デプス値の平均値を中心にゲイン調整する例を示す図である。デプスマップ加工部20は、ゲイン調整する際の中心レベルを、デプスマップのオブジェクト領域内におけるデプス値の平均値に設定する。なおゲイン調整する際に使用するゲイン値は外部から設定される。ユーザは操作部60を使用して所望のゲイン値を入力し、操作受付部40は操作部60から入力されるゲイン値を受け付けてデプスマップ加工部20に設定する。
図10に示すようにデプス値の平均値を中心レベルとしてゲイン調整すると、調整前後でデプス値の平均値が変動しないためデプスマップに意図しないオフセットが発生することがない。従って、生成する3D画像の奥行き感の振幅だけが変化し奥行きの重心は変化しないため、ユーザにとって意図した調整となる。
デプス値の平均値は、以下の手順で求めることができる。まずデプスマップのオブジェクト領域内におけるデプス値の総和を算出する。次にオブジェクト領域内の面積、即ち画素数をカウントする。最後にオブジェクト領域内におけるデプス値の総和を、オブジェクト領域内の画素数で除算する。これにより、オブジェクト領域内におけるデプス値の平均値が算出される。
デプスマップ内のデプス値にゲインを掛けて、デプス値の振幅を伸張または圧縮する場合において、飛び出し側と引っ込み側で独立してゲイン調整したい場合がある。
図11は、デプス値の平均値を中心に上下で異なる値のゲインを掛ける例を示す図である。デプスマップ加工部20は、中心レベルの上下で独立にゲイン調整する。より具体的には、デプスマップのオブジェクト領域内におけるデプス値の平均値を中心レベルとして、当該平均値よりも大きいデプス値に乗算する第1ゲイン値と、当該平均値よりも小さいデプス値に乗算する第2ゲイン値を独立に設定する。図11では第1ゲイン値を第2ゲイン値より大きく設定している(符号e、f参照)。
デプスマップ加工部20は対象画素のデプス値が当該平均値よりも大きい場合、当該デプス値に第1ゲイン値を乗算し、対象画素のデプス値が当該平均値よりも小さい場合、当該デプス値に第2ゲイン値を乗算する。これにより、飛び出し側と奥行き側で、独立してゲイン調整できる。図11では飛び出し側の厚みが大きくなる。
図10、図11では演算により求めたデプス値の平均値を中心レベルとして、ゲイン調整する例を示した。この点、ゲイン調整する際の中心レベルを外部から与えてもよい。
図12は、外部設定された値を中心にゲイン調整する例を示す図である。デプスマップ加工部20はゲイン調整する際の中心レベルを、外部から入力される指定基準レベルに設定する。ユーザは操作部60を使用して指定基準レベルを入力し、操作受付部40は操作部60から入力される指定基準レベルを受け付けてデプスマップ加工部20に出力する。これにより、ユーザはゲイン調整する際の中心レベルを任意に指定できる。
なお図10〜図12に示した方法を、デプスマップのオブジェクト領域ごとに選択可能である。即ちゲイン調整する際の中心レベルの設定方法、中心レベルの上下でゲイン値を変える方法を、デプスマップのオブジェクト領域ごとに選択可能である。また図10〜図12ではデプスマップのオブジェクト領域にそれらの方法を適用する例を説明したが、合成デプスマップにそれらの方法を適用してもよい。
(オフセット調整)
次に、デプスマップ加工部20によるレイヤ処理としてオフセット調整する例を説明する。オフセット調整はオブジェクトの奥行き方向の位置を調整する処理である。正のオフセット値を加算するとオブジェクトが飛び出し方向に移動し、負のオフセット値を加算すると引っ込み方向に移動する。
図13は、入力デプスマップのオフセット調整プロセスを説明するための図である。デプスマップ加工部20は、加工前のデプスマップである入力デプスマップに対して、木のマスクの有効領域だけにオフセットを加算して、入力デプスマップ内の木の部分のみデプス値のレベルを高くする(S21b)。図13において加工後のデプスマップであるレイヤデプスマップは木の部分のレベルが高くなっている(符号g参照)。
図14は、マスクを使用しない入力デプスマップのオフセット調整プロセスを説明するための図である。レイヤデプスマップの合成の際、各レイヤデプスマップのマスクの有効領域のみを用いて合成するのであれば、各レイヤデプスマップのマスクの無効領域は合成デプスマップに反映されないことになる。よって、デプスマップ加工部20は入力デプスマップ全体にオフセットを加算して、入力デプスマップ全体のデプス値のレベルを高くする(S21b)。図14においてレイヤデプスマップは全体のレベルが高くなっている(符号h参照)。
オフセット調整する際に使用するオフセット値は外部から設定される。ユーザは操作部60を使用して所望のオフセット値を入力し、操作受付部40は操作部60から入力されるオフセット値を受け付けてデプスマップ加工部20に設定する。以上の説明ではデプスマップのオブジェクト領域にオフセット値を加算する例を示したが、合成デプスマップにオフセット値を加算してもよい。
デプスマップのオフセット領域ではなく合成デプスマップをゲイン調整すると、意図どおりのゲイン調整ができない場合がある。以下、デプスマップのデプス値のダイナミックレンジを拡大または縮小し、画面全体の奥行き感を強めたり弱めたりする場合を想定する。以下の説明では、奥行き感を強める場合について説明するが、逆に奥行き感を弱める場合についても同様である。
画面全体の奥行き感を強めるための方法として、合成デプスマップに対して均一にゲインを掛ける方法が考えられる。しかしながら、この方法ではデプス値のダイナミックレンジが拡大されると同時に、個々のオブジェクトの凹凸感の振幅も拡大される。後者の拡大も調整の意図に適っていればよいが、そうでない場合もある。
以下、デプス値のダイナミックレンジは拡大するが、個々のオブジェクトの凹凸感の振幅は変化しない調整方法について説明する。デプスマップ加工部20は、デプスマップ全体のデプス値の平均値と、デプスマップ内の各オブジェクト領域内におけるデプス値の平均値との各差分に、デプスマップ全体のダイナミックレンジを調整するための共通の係数を掛ける。各演算結果は各オブジェクト領域内におけるデプス値のオフセット値となる。デプスマップ加工部20は、各オブジェクト領域内におけるデプス値に、対応する各オフセット値を加算する。
以下、具体例を挙げて説明する。合成デプスマップのデプス値が−X〜+Xに分布しているとし、このデプス値の分布−X〜+Xをデプス値のダイナミックレンジとする。以下デプス値のダイナミックレンジを拡大する例を考える。例えばデプス値のダイナミックレンジを1.5倍にして、デプス値の分布を−X〜+Xから−1.5X〜+1.5Xに変更する。個々のオブジェクトの凹凸感の振幅を変化させずに、デプス値のダイナミックレンジを拡大させるために以下の処理を実行する。
まずデプスマップ加工部20はデプスマップ全体におけるデプス値の最小値、最大値、平均値をそれぞれ算出する。当該最小値と当該最大値の差が、デプス値のダイナミックレンジである。次にデプスマップ加工部20はデプスマップの各オブジェクト領域内におけるデプス値の平均値を算出する。次にデプスマップ加工部20は各オブジェクト領域内におけるデプス値の平均値から、デプスマップ全体におけるデプス値の平均値を減算する。この減算結果をレイヤデプスの平均差分と呼ぶ。
以下、デプス値のダイナミックレンジをa倍に拡大したい場合を考える。デプスマップ加工部20は、各レイヤデプスの平均差分をa倍する。次にa倍した各レイヤデプスの平均差分から、各レイヤデプスの平均差分を減算する。この減算結果を、各レイヤデプスの平均差分のオフセット値と呼ぶ。最後にデプスマップ加工部20は、各レイヤデプスの平均差分のオフセット値を、デプスマップの各オブジェクト領域内におけるデプス値に加算する。
これにより、各レイヤデプスマップではデプス値のオフセット値だけが変化し、デプス値の振幅値は変化しない。従って個々のオブジェクトの凹凸感の振幅を変化させずに、デプス値のダイナミックレンジを拡大できる。
図15(a)−(c)は、デプスマップ全体のダイナミックレンジ調整を説明するための図である。ここまで2D入力画像内のレイヤ数が3の例を説明してきたが、図15(a)−(c)ではレイヤ数が5(レイヤ0〜レイヤ4)の例を示している。観察者から見てレイヤ0のオブジェクトが最も引っ込んで見え、レイヤ4のオブジェクトが最も飛び出して見える。
図15(a)は、ダイナミックレンジ調整前の各レイヤのデプスの一例を示す。各レイヤにおいて矢印(符号l参照)は、各レイヤのオブジェクト領域におけるデプス値の最小値(符号j参照)と、最大値(符号k参照)により規定される。即ち矢印(符号l参照)は各レイヤのダイナミックレンジを示している。各矢印を結ぶ線は、各レイヤのオブジェクト領域におけるデプス値の平均値(符号i参照)を結んだ線である。
図15(b)は、図15(a)の各レイヤのデプスに、均一に2倍のゲイン調整を適用した後の各レイヤのデプスを示す。デプスマップ全体のダイナミックレンジが2倍に拡大されると同時に、各レイヤのオブジェクト領域のダイナミックレンジ、即ち各レイヤの凹凸感の振幅も2倍に拡大されている。
図15(c)は、図15(a)の各レイヤのデプスに、上述したオフセット調整を適用した後の各レイヤのデプスを示す。デプスマップ全体のダイナミックレンジは2倍に拡大されるが、各レイヤのオブジェクト領域のダイナミックレンジ、即ち各レイヤの凹凸感の振幅は変化しない。例えばオブジェクトとして複数の人物が画面に存在する場合において、各人物の厚みは変化させずに各人物間の距離を調整することにより、奥行き感を強めることができる。
(グラデーション付加)
次に、デプスマップ加工部20によるレイヤ処理としてグラデーションを付加する例を説明する。グラデーションの付加は、個々のオブジェクトの奥行きに傾斜を付ける処理である。
図16は、入力デプスマップのグラデーション付加プロセスを説明するための図である。デプスマップ加工部20は、加工前のデプスマップである入力デプスマップに対して、背景のマスクの有効領域だけ(図16では地面だけ)に、グラデーションを付加して背景の部分のみデプス値に傾斜を付けている(S21c)。図16において加工後のデプスマップであるレイヤデプスマップは地面の奥行きに傾斜がついている(符号m参照)。
以下より具体的に説明する。図示しないグラデーションパターン保持部はあらかじめ生成された少なくとも一つのグラデーションパターンを保持している。グラデーションパターン保持部は、図16に示すように平面のグラデーションパターンだけでなく、球面、円筒など様々な形状のグラデーションパターンを保持してもよい。また同じ形状のグラデーションパターンであっても、傾斜角度および/または傾斜方向が異なる複数のグラデーションパターンを保持してもよい。
ユーザは操作部60を使用して、当該グラデーションパターン保持部に保持される複数のグラデーションパターンを表示部70に表示させ、その中から1つを選択できる。操作受付部40は操作部60からの入力を受け付けて、その入力に対応するグラデーションパターンを取得してデプスマップ加工部20に出力する。
デプスマップ加工部20には、デプスマップ生成部10から入力デプスマップ、外部からマスク、グラデーションパターン保持部からグラデーションパラメータがそれぞれ入力される。デプスマップ加工部20は入力デプスマップ内のマスクの有効領域に、グラデーションパターンを加算する。
図17は、マスクを使用しない入力デプスマップのグラデーション付加プロセスを説明するための図である。レイヤデプスマップの合成の際、各レイヤデプスマップのマスクの有効領域のみを用いて合成するのであれば、各レイヤデプスマップのマスクの無効領域は合成デプスマップに反映されないことになる。よって、デプスマップ加工部20は入力デプスマップ全体にグラデーションを付加して、入力デプスマップ全体のデプス値に傾斜をつける(S21c)。図17においてレイヤデプスマップは全体に傾斜がついている(符号n参照)。
上記の説明では、デプスマップに付加すべきグラデーションパターンを、あらかじめ生成された典型的なグラデーションパターンから選択する例を説明した。以下、デプスマップに付加すべきグラデーションパターンを、制御パラメータにより指定する例を説明する。デプスマップ加工部20は、外部設定される、それぞれ独立に調整可能なグラデーションの傾斜パラメータ及び方向パラメータをもとに、デプスマップのオブジェクト領域にグラデーションを付加する。さらに外部設定されるオフセットパラメータをもとに、デプスマップの指定領域をオフセット調整しつつグラデーションを付加することもできる。
ユーザは操作部60を使用して、当該グラデーションの傾斜パラメータ、方向パラメータ、オフセットパラメータを入力できる。操作受付部40は操作部60からの入力を受け付けてデプスマップ加工部20に出力する。
デプスマップにグラデーションを付加する処理は、デプスマップの各画素に対してグラデーションの角度と傾斜に応じた、グラデーションデプス値を加算することで実現できる。この処理を行うための制御パラメータとして、Slope、Angleを使用する。Slopeは1画素あたりのデプス値の変化値で規定される。以下、説明を単純化するためデプス値が比例関数的に変化する傾斜モデルを考える。なおデプス値が指数関数的に変化する等、傾斜モデルには他にも様々な種類がある。
Slope:グラデーションの傾斜 [デプス値/画素]
Angle:グラデーションの画像に対する角度 [degree]
グラデーションは、画面の中心を基準に付加するとし、画面の中心の座標を(x,y)=(0,0)とする。これを基準とした、画像上の任意の画素の座標を(x,y)=(x_base,y_base)とする。X軸方向、Y軸方向それぞれのグラデーションの傾斜値をslope_x、slope_yとすると、slope_x、slope_yは下記式(1)、式(2)で表される。
slope_x=slope*cosθ=slope*cos(2π*(Angle/360)) …式(1)
slope_y=slope*sinθ=slope*sin(2π*(Angle/360)) …式(2)
ある座標における、X軸方向、Y軸方向それぞれのグラデーションデプス値をgrad_depth_x、grad_depth_yとすると、grad_depth_x、grad_depth_yは下記式(3)、式(4)で表される。
grad_depth_x=Slope_x*x_base …式(3)
grad_depth_y=Slope_y*y_base …式(4)
デプスマップにグラデーションを付加するために、各画素のデプス値に加算するグラデーションデプス値をgrad_depthとすると、grad_depthは下記式(5)で表される。
grad_depth=grad_depth_x+grad_depth_y …式(5)
上記式(5)により求めたグラデーションデプス値を、デプスマップの各画素に加算することにより、デプスマップにグラデーションを付加することができる。グラデーションの傾斜は上記Slopeの値を、グラデーションの画像に対する角度は上記Angleの値を変化させることにより自在に設定できる。
以上、式(1)〜式(5)を用いてデプスマップにグラデーションを付加する方法について説明した。この方法ではグラデーションデプス値は画面の中心を基準に付加されるため、画面中心ではデプスマップのデプス値は変化しない。以下、デプスマップにグラデーションを付加すると同時にオフセットも加算し、任意ポジションにおいて任意レベルのグラデーションを付加する方法について説明する。
加算するオフセット値を制御するパラメータとしてOffsetを使用する。
Offset:グラデーションのオフセット
デプスマップにグラデーションを付加する際に各画素に加算する、オフセット値も含むグラデーションデプス値をgrad_offset_depthとすると、grad_offset_depthは下記式(6)で表される。
grad_offset_depth=grad_depth_x+grad_depth_y+Offset …式(6)
これにより、画面の任意ポジションにおいて任意レベルのグラデーションを付加することができる。以上の説明では、デプスマップのオブジェクト領域にグラデーションを付加する例を場合を示したが、合成デプスマップにグラデーションを付加してもよい。
(ユーザインタフェース)
3D画像を生成する作業を行う際には、生成する3D画像のオブジェクトの前後関係が正しくなるように、生成する3D画像に正しい視差を与える必要がある。そのためには、視差生成の基準となる視差情報を保持するデプスマップを正しく加工する必要がある。ユーザは、ディスプレイにデプスマップを表示させて画像のどの部分がどの程度の視差量を持つかを確認しながら作業している。
この場合、デプスマップ上で隣り合う部分または近接する部分の視差量の差を確認することは比較的容易である。これに対し離れた部分について視差量の差を確認することは困難なことが多い。視差量を数値で表示してこれを読み取ることも考えられるが、画像のデータ量は非常に多いため画像上で視差量を確認する場合に比べて、確認作業の効率が低下する懸念がある。
また合成デプスマップだけを観測したのでは、デプスマップのどのエリアがどのレイヤに相当するのかを判別することはできない。各レイヤのマスクを同時に観測する必要がある。レイヤのマスクは複数あるため、複数のレイヤのマスクと合成デプスマップを同時に観測する必要がある。ただしこの観測によっても離れた部分についての視差量の差を明確に確認することは困難である。このように事実上、合成デプスマップのどのエリアがどのレイヤに相当するのかを明確に把握することは困難な状況にある。
本発明者は、全てのレイヤのデプス値を把握したり他のレイヤとの差異を把握したりするのに適したユーザインタフェースを開発した。このユーザインタフェースは、合成デプスマップを表示するユーザインタフェースに代えて、または加えて使用することができる。
表示制御部50は、デプスマップ加工部20によりそれぞれ加工された、デプスマップ内における複数のオブジェクト領域内のデプスの状態を表すデータを表示部70にグラフで表示させる。その際、デプスマップ内のオブジェクト間の位置関係が直感的に認識可能な態様で当該データを表示させる。
具体的には表示制御部50は、デプスマップ内の各オブジェクト領域内のデプス値の平均値、最小値、最大値をレイヤ毎のグラフで一覧表示させる。また表示制御部50は各オブジェクト領域内のデプス値をヒストグラムで表示させてもよい。
図18は、レイヤ毎のデプスの状態を表示するグラフの一例を示す図である。図18のグラフの縦軸はレイヤの番号を表し、横軸はデプス値のスケールを表す。この例では2D入力画像内のレイヤ数が16(レイヤ0〜レイヤ15)である。図18では観察者から見てレイヤ0のオブジェクトが最も引っ込んで見え、レイヤ12のオブジェクトが最も飛び出して見える。
各レイヤにおいて矢印(符号r参照)の両端は、各レイヤのオブジェクト領域におけるデプス値の最小値(符号p参照)と、最大値(符号q参照)を示している。即ち矢印(符号r参照)は各レイヤのオブジェクト領域におけるデプス値の振幅およびダイナミックレンジを示している。各矢印を結ぶ線は、各レイヤのオブジェクト領域におけるデプス値の平均値(符号o参照)を結んだ線である。
ユーザは、表示部70に表示される全レイヤのデプスの状態を示すグラフを観察して、レイヤ毎に個別にデプスマップを編集または加工する。なおユーザはキーボードからゲイン値、オフセット値などを数値で入力してもよいし、表示されるグラフを直接操作してもよい。表示制御部50はデプスマップ加工部20により加工されるデプスマップの状態が変化すると、その変化を表示部70に反映させる。
表示制御部50は各レイヤの識別記号(図18では数字)の近傍に、そのレイヤのオブジェクトのサムネイル画像を表示させてもよい。これにより、各レイヤのデプスの状態を示すデータとオブジェクトの画像を直感的に関連づけできる。また表示制御部50は表示部70に、全レイヤのデプスの状態を示すグラフ、合成デプスマップ、2D入力画像、3D入力画像の4種類の画像を表示させてもよい。
図19は、レイヤのデプスの状態をヒストグラムで表示する例を示す図である。このヒストグラムは図18の矢印一つを置き換えたものである。図18の矢印表示ではユーザは、各レイヤのオブジェクト領域内におけるデプス値の分布までは認識できないが、ヒストグラム表示ではその分布も認識できる。また図18の矢印表示と同様にヒストグラム表示でも、レイヤのオブジェクト領域におけるデプス値の最小値(符号t参照)、最大値(符号u参照)、平均値(符号s参照)を表示できる。また、図19に示すようなヒストグラムを、レイヤ毎に並べて表示させてもよい。
以下、各レイヤのオブジェクト領域内におけるデプス値の平均値、最大値、及び最小値の算出方法について説明する。まずオブジェクト領域内におけるデプス値の平均値の算出方法について説明する。まずデプスマップ加工部20はオブジェクト領域内の全画素数をカウントする。次にオブジェクト領域内における全画素分のデプス値の総和を算出する。最後に算出した総和をカウントした全画素数で除算する。
次にオブジェクト領域内におけるデプス値の最小値の算出方法について説明する。まずデプスマップ加工部20は、当該デプス値の最小値を格納するためのワークエリアに、初期値としてワークエリアに格納可能な最大値を書き込む。次にオブジェクト領域内の全画素分のデプス値を順に参照する。参照した画素のデプス値と、その時点におけるワークエリア内の値を比較する。前者の値が後者の値より小さければ、前者の値をワークエリアに上書きする。前者の値が後者の値以上であれば、この上書きをスキップする。この処理をオブジェクト領域内の全画素分について繰り返す。全画素分について終了した時点でワークエリア内に格納されている値を、オブジェクト領域内におけるデプス値の最小値に決定する。
最後にオブジェクト領域内におけるデプス値の最大値の算出方法について説明する。まずデプスマップ加工部20は、当該デプス値の最大値を格納するためのワークエリアに、初期値としてワークエリアに格納可能な最小値を書き込む。次にオブジェクト領域内の全画素分のデプス値を順に参照する。参照した画素のデプス値と、その時点におけるワークエリア内の値を比較する。前者の値が後者の値より大きければ、前者の値をワークエリアに上書きする。前者の値が後者の値以下であれば、この上書きをスキップする。この処理をオブジェクト領域内の全画素分について繰り返す。全画素分について終了した時点でワークエリア内に格納されている値を、オブジェクト領域内におけるデプス値の最大値に決定する。
以上説明したように本実施の形態によれば、2D画像から3D画像を生成する際に、ユーザの手間を軽減しつつ高品質な3D画像を生成できる。即ちデプスマップ生成部10によりシーン構造を推定して複数の基本デプスモデルの合成比率を変化させることにより、自動処理によりシーン構造を反映させたデプスマップを生成できる。さらに、ユーザの指示を反映させたデプスマップ加工部20により、当該デプスマップ内のオブジェクト毎に個別にデプスマップを加工する。これにより高品質な3D画像を生成できるとともに、同様の品質の3D画像を2D画像からユーザが一から生成する場合と比較し、大幅に作業量を削減できる。
図1に示す2D3D変換で使用されるデプスマップは、画面全体に対するデプス値を保持する。このデプスマップに対してゲイン調整またはオフセット調整することにより、画面全体の奥行き感を自在に調整できる。またこのデプスマップに対してグラデーションを付加することにより、画面全体の奥行き度合いの傾斜を自在に調整できる。
しかしながら、一般に画像中には複数のオブジェクトが存在する。本明細書の例では人物、木、背景が存在する。仮に人物部分の奥行き感を調整するために、デプスマップをゲイン調整して人物部分の奥行き感を強調したとすると、これに伴い人物以外の木や背景の奥行き感も同時に変化してしまう。従って人物部分の奥行き感だけを独立して調整することは困難である。また仮に、木の部分の奥行き感を調整するために、デプスマップをオフセット調整して木の部分の奥行き感を強調したとすると、これに伴い木以外の人物や背景の奥行き感も同時に変化してしまう。従って木の部分の奥行き感だけを独立して調整することは困難である。また仮に、背景部分の奥行きに傾斜をつけるために、デプスマップにグラデーションを付加すると、これに伴い背景以外の人物や木の部分の奥行きにも同時に傾斜がついてしまう。従って背景部分の奥行きだけに傾斜をつけることは困難である。
これに対して実施の形態に係る画像編集システム500によれば、画像中の個々のオブジェクトの凹凸度合い及びその傾斜を自由に独立に可変できる。従ってユーザは、実施の形態に係る2D3D変換で使用されるデプスマップをもとに生成される3D画像の遠近感を、画像中の個々のオブジェクト毎に自由に独立して制御できる。よって高品質な3D画像を生成できる。
またデプスマップ内における複数のオブジェクト領域内のデプスの状態を表すデータをグラフで表示することにより、複数のレイヤ間の奥行きの関係が容易に把握でき、デプスのレイヤ処理の作業効率を大幅に改善できる。即ち視差生成の基準となる視差情報を保持するデプスマップを加工する際の基準が把握しやすくなるため、生成する画像に適切な視差を与えることができ、生成する3D画像のオブジェクトの前後関係を適切に調整できる。また本来困難な、デプスマップとレイヤの同時観測による、デプスマップのオブジェクト領域の把握等を行うことなく、レイヤ毎のデプス値を把握できる。またレイヤ毎のデプス値の目安が、エンボスやグラデーションによる局所的な濃淡に惑わされることなく、明確に識別できる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。