図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から入力される信号を受け付ける。操作受付部40は、入力される信号をその内容に応じてデプスマップ加工部20または3D画像生成部30に出力する。表示制御部50はコンソール端末装置200の表示部70を制御する。具体的には表示制御部50は、2D入力画像、デプスマップ生成部10により生成されたデプスマップ、デプスマップ加工部20により加工されたデプスマップ、3D画像生成部30により生成された3D画像を表示できる。
図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参照)。
次に、デプスマップ加工部20によるレイヤ処理としてオフセット調整する例を説明する。オフセット調整はオブジェクトの奥行き方向の位置を調整する処理である。正のオフセット値を加算するとオブジェクトが飛び出し方向に移動し、負のオフセット値を加算すると引っ込み方向に移動する。
図6は、入力デプスマップのオフセット調整プロセスを説明するための図である。デプスマップ加工部20は、加工前のデプスマップである入力デプスマップに対して、木のマスクの有効領域だけにオフセットを加算して、入力デプスマップ内の木の部分のみデプス値のレベルを高くする(S21b)。図6において加工後のデプスマップであるレイヤデプスマップは木の部分のレベルが高くなっている(符号b参照)。
図7は、レイヤデプスマップの合成処理プロセスを説明するための図である。デプスマップ加工部20は、レイヤ1のレイヤデプスマップ(人物のデプスマップ)のうち、レイヤ1のマスク(人物のマスク)の有効領域のみを切り出す。同様にレイヤ2のレイヤデプスマップ(木のデプスマップ)のうち、レイヤ2のマスク(木のマスク)の有効領域のみを切り出す。同様にレイヤ3のレイヤデプスマップ(背景のデプスマップ)のうち、レイヤ3のマスク(背景のマスク)の有効領域のみを切り出す。デプスマップ加工部20は、切り出した3つのデプスマップを組み合わせて合成デプスマップを生成する。
図8は、マスクを使用しない入力デプスマップのゲイン調整プロセスを説明するための図である。レイヤデプスマップの合成の際、各レイヤデプスマップのマスクの有効領域のみを用いて合成するのであれば、各レイヤデプスマップのマスクの無効領域は合成デプスマップに反映されないことになる。よって、デプスマップ加工部20は入力デプスマップ全体にゲインを乗算して、入力デプスマップ全体のデプス値の振幅を大きくする(S21a)。図8においてレイヤデプスマップは全体の振幅が大きくなっている(符号c参照)。
図9は、マスクを使用しない入力デプスマップのオフセット調整プロセスを説明するための図である。レイヤデプスマップの合成の際、各レイヤデプスマップのマスクの有効領域のみを用いて合成するのであれば、各レイヤデプスマップのマスクの無効領域は合成デプスマップに反映されないことになる。よって、デプスマップ加工部20は入力デプスマップ全体にオフセットを加算して、入力デプスマップ全体のデプス値のレベルを高くする(S21b)。図9においてレイヤデプスマップは全体のレベルが高くなっている(符号d参照)。
図10は、画素シフトと画素補間を説明するための図である。3D画像生成部30は合成デプスマップをもとに2D入力画像の画素をシフトし、2D入力画像に対して視差を持つ画像を生成する(S30)。図10では2D入力画像内の人物領域の画素を左にシフトする例を示している。図10のデプスマップは人物領域のデプス値にオフセット値が加算されて人物領域のデプス値が大きくなっている。人物領域のデプス値が大きくなると、3D画像の人物領域の飛び出し量が大きくなる。
人物領域の周囲の背景領域を画素シフトせずに人物領域のみを画素シフトすると、画素が存在しない欠落画素領域が発生する(補正前の画素シフト画像の符号e参照)。3D画像生成部30は、この欠落画素領域をその周辺画素から生成した画素で補間して欠落画素領域を補正する。画素補間には様々な方法があるが、例えば人物領域の境界の画素で補間する(補正後の画素シフト画像の符号f参照)。
図11は、オブジェクト境界のデプスの段差が大きい場合における、画素シフトと画素補間を説明するための図である。オブジェクト境界でのデプスの段差が大きい場合、画素シフト量も大きくなるため、欠落画素領域の面積も大きくなる。この欠落画素領域を周辺画素から生成した画素で補間する場合、その補間する領域の面積も大きくなるため、オブジェクト境界での画像の不自然、不整合、不適合が目立つようになる。
図11では図10と比較して人物領域の画素シフト量が大きくなっている。図11の補正前の画素シフト画像の欠落画素領域の面積は、図10のその面積より大きくなっている(符号g参照)。図11の補正後の画素シフト画像でも図10の補正後の画素シフト画像と同様に、欠落画素領域に人物領域の境界の画素を補間している。その欠落画素領域は本来は背景とすべき領域であり、その領域が大きくなると人物の形状が崩れてしまう(符号h参照)。
また画像内のオブジェクトには、その境界が鮮明なものばかりではなく不鮮明なものも存在する。オブジェクト境界の不鮮明は、例えば撮影時のピンぼけ、手ぶれ、モーションブラーなどにより発生する。オブジェクト境界が不鮮明であいまいな場合、オブジェクト境界に合わせた適切なマスクを作成するのが困難である。不正確な輪郭で作成されたマスクを用いて、デプスマップの加工、画素シフト、画素補間を行った場合、生成される3D画像のオブジェクトの輪郭が不自然になりやすくなる。
図12は、オブジェクト境界のデプスの段差が大きい場合でも不自然さが発生しない、画素シフトと画素補間を説明するための図である。オブジェクト境界における欠落画素領域の面積が大きい場合でも、人物と背景がなだらかに切り替わるように補間することで、オブジェクト境界の不自然を目立ちにくくできる。
図12の補正前の画素シフト画像の欠落画素領域の面積も、図11と同様に図10のその面積より大きくなっている(符号i参照)。図12の補正後の画素シフト画像では図11の補正後の画素シフト画像と異なり、人物と背景の境界における不自然が目立ちにくくなっている(符号j参照)。
図13は、本発明の実施例1に係る画像編集システム500の構成を示す図である。実施例1に係る画像編集システム500では、図2の基本となる実施例に係る画像編集システム500の画像処理装置100にマスク補正部80が追加される。以下、図13の実施例1に係る画像編集システム500と、図2の基本となる実施例に係る画像編集システム500との相違点を説明する。
マスク補正部80は、操作受付部40を介してコンソール端末装置200から設定されるマスクを補正してデプスマップ加工部20に出力する。具体的にはマスク補正部80はマスクのオブジェクト境界に、ぼかし処理を施す。デプスマップ加工部20は、マスク補正部80により補正されたマスクをもとに生成される、複数のオブジェクト領域の各デプスマップをアルファブレンドする。即ちデプスマップ加工部20は、複数のレイヤデプスマップを、各マスクで規定された係数(α値)にしたがい合成する。
図14は、本発明の実施例1に係る画像編集システム500の全体処理プロセスを説明するための図である。図14の処理プロセスは図4の処理プロセスに、マスクぼかし処理が追加された構成である。以下、相違点について説明する。なお以下の説明では、マスクの有効領域(図では白で描いている)内の画素値を1、無効領域(図面では黒で描いている)内の画素値を0とする。
実施例1では操作受付部40から出力されるレイヤ1のマスク(人物のマスク)、レイヤ2のマスク(木のマスク)及びレイヤ3のマスク(背景のマスク)は、デプスマップ加工部20に入力される前にマスク補正部80に入力される。マスク補正部80は各マスクのオブジェクト境界部分にぼかし処理を施す(S15a〜S15c)。具体的にはマスク補正部80は、マスク信号のエッジ(即ち、0と1の境界)及びその近傍領域(以下、両者を総称してエッジ領域という)の値を、0と1の間の値(0と1を除く)に補正する(符号k参照)。
デプスマップ加工部20は、補正されたマスクのレベルに応じて、レイヤデプスマップを合成する(S22)。これによりマスクのエッジ領域では、なだらかにデプス値が変化する合成デプスマップを生成できる。3D画像生成部30は、この合成デプスマップを用いて画素シフト、画素補間を行う。これによりオブジェクト境界がなだらかに変化し、オブジェクト境界の不自然が目立たなくなる。
図15は、レイヤデプスマップのアルファブレンドを説明するための図である。デプスマップ加工部20は、マスク補正部80により補正された各マスク信号の値をもとに、各レイヤデプスマップ内のデプス値のブレンド比率を決定する。各レイヤデプスマップは指定された順番に重ね合わされる。重ね合わせの順番はユーザが操作部60から入力し、操作受付部40を介してデプスマップ加工部20に設定される。本明細書の例では背景のレイヤデプスマップ、木のレイヤデプスマップ、人物のデプスマップの順番で重ね合わされる。
図15においてレイヤn(nは自然数)のマスク信号のエッジ領域は、0%から50%への垂直な立ち上がりと、50%から100%へのなだらかな傾斜から構成される。各パーセンテージの数値は合成比率を示している。このレイヤnのマスク信号を用いて、レイヤnのデプス信号(以下、レイヤnデプスという)と、レイヤΣ(n−1)の合成デプス信号(以下、レイヤΣ(n−1)デプスという)をブレンドする。レイヤΣ(n−1)デプスは、レイヤ1からレイヤ(n−1)までの各デプス信号をブレンドした合成デプス信号である。即ち、レイヤnデプスがブレンドされる時点までに生成された合成デプス信号である。
レイヤnのマスク信号の合成比率が0%の期間(符号l参照)では、レイヤnデプスが0%、レイヤΣ(n−1)デプスが100%でブレンドされる。即ち、レイヤΣ(n−1)デプスはレイヤnデプスにより全く上書きされず、レイヤΣ(n−1)デプスがそのまま出力される(符号o参照)。レイヤnのマスク信号の合成比率が50%の時点(符号p参照)では、レイヤnデプスが50%、レイヤΣ(n−1)デプスが50%の比率でブレンドされる。
レイヤnのマスク信号の合成比率が50%〜100%の期間(符号m参照)では、合成比率が変化しながらレイヤnデプスとレイヤΣ(n−1)デプスがブレンドされる。例えばレイヤnのマスク信号の合成比率が75%の時点(符号q参照)では、レイヤnデプスが75%、レイヤΣ(n−1)デプスが25%の比率でブレンドされる。レイヤnのマスク信号の合成比率が100%に到達した時点(符号r参照)から、レイヤnデプスが100%、レイヤΣ(n−1)デプスが0%の比率でブレンドされる。レイヤnのマスク信号の合成比率が100%の期間(符号n参照)では、レイヤΣ(n−1)デプスはレイヤnデプスにより完全上書きされ、結果としてレイヤnデプスがそのまま出力される(符号s参照)。これによりレイヤΣnデプスが生成される。レイヤΣnデプスは、レイヤ1からレイヤnまでの各デプス信号をブレンドした合成デプス信号である。
なおレイヤデプスのブレンドの際に、レイヤΣ(n−1)デプスのマスク信号は使用されない。レイヤΣnデプスのマスク信号のみにより、レイヤΣnデプスとレイヤΣ(n−1)デプスとの合成比率が決定される。したがってレイヤデプスの重なりが多い領域では、下のレイヤデプスのデプス値はレイヤデプスが重ねられるにつれ薄まっていく。
以下、マスク信号のエッジをぼかす処理について具体的に説明する。このぼかし処理は以下の3つの基本ステップからなる。まずオリジナルのマスク信号のエッジを、対象となるオブジェクトの輪郭に対して適切な位置になるように移動させる。これによりマスクのオブジェクト領域の面積が拡大または縮小する。次に当該マスクのエッジに傾斜をつける。最後に傾斜をつけたマスクのエッジ領域を制限する。
以下、上述のぼかし処理をローパスフィルタを用いて行う方法を説明する。まず黒い部分のレベルが0、白い部分のレベルが1であるマスクにローパスフィルタをかける。これにより、平坦部分のレベルは変化させずに、エッジ領域に0と1の中間のレベルの傾斜が付加されたマスクを生成できる。
さらにマスクのエッジ領域のうち、マスクの有効領域に対して外側にのみ傾斜を付け、内側は加工前のレベルを保持したい場合がある。またその逆に、マスクのエッジ領域のうち、マスクの有効領域に対して内側にのみ傾斜を付け、外側は加工前のレベルを保持したい場合もある。これらの場合を考慮して、マスクの有効領域を拡大または縮小して、マスク信号のエッジの位置を任意に移動させる処理を、ぼかしマスク生成用のローパスフィルタの前段に挿入する。
さらに、ぼかし処理によりマスクのエッジが意図した量より大きく拡大することを防ぐために、ぼかされたエッジ領域を制限する処理を、ぼかしマスク生成用のローパスフィルタの後段に挿入する。以下、このローパスフィルタを用いたぼかし処理について、より具体的に説明する。
図16は、マスク補正部80の構成例を示す図である。マスク補正部80は第1ローパスフィルタ81、二値化部82、第2ローパスフィルタ83、クリッピング部84を含む。これらの構成もハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。
1段目の第1ローパスフィルタ81は、オリジナルのマスク信号にローパスフィルタをかける。二値化部82は第1ローパスフィルタ81から出力される、エッジに傾斜がついたマスク信号を第1閾値を用いて二値化する。第1ローパスフィルタ81および二値化部82の作用により、オリジナルのマスク信号のエッジの位置が移動される。
2段目の第2ローパスフィルタ83は、二値化部82から出力されるエッジの位置が移動されたマスク信号にローパスフィルタをかける。これによりマスク信号のエッジに傾斜がつけられる。クリッピング部84は第2ローパスフィルタ83から出力される、エッジに傾斜がついたマスク信号を第2閾値を用いて、第2閾値以下の信号を0にクリッピングする。
図17は、図16のマスク補正部80によるマスクぼかし処理を説明するための図である。図17の左に処理フローを、中央にマスクの信号波形を、右にマスクの画像を示す。図17の説明ではマスクの各画素値が8ビットで規定され、マスクの画像において黒が0(0b00000000)、白が255(0b11111111)であるとする。通常、オリジナルのマスク信号は0または255のみを持つ二値信号である。
オリジナルのマスク信号は、第1ローパスフィルタ81に入力される。第1ローパスフィルタ81はマスク信号のエッジの位置をかえる前処理として、オリジナルのマスク信号にローパスフィルタをかける(S81)。具体的には第1ローパスフィルタ81はオリジナルのマスク信号を、エッジ領域が傾斜を持つマスク信号に加工する。傾斜部分の値は0と255の間の値(0と255を除く)に加工される。
次に二値化部82はマスク信号のエッジの位置をかえる前処理として、加工されたマスク信号の値と第1閾値を比較してマスク信号を二値化する(S82)。具体的にはマスク信号の値が第1閾値よりも大きい場合はマスク信号の値を255に設定し、小さい場合は0に設定する。これにより再び、マスク信号は0または255のみを持つ二値信号となる。
第1閾値が0と255の中間値である127より小さく設定される場合、二値化されたマスク信号のエッジは、オリジナルのマスク信号のエッジよりも外側に移動される。この場合、マスクの画像内において白の面積が拡大する。一方、第1閾値が中間値である127より大きく設定される場合、二値化されたマスク信号のエッジは、オリジナルのマスク信号のエッジよりも内側に移動される。この場合、マスクの画像内において白の面積が縮小する。なお第1閾値が中間値である127に設定される場合、二値化されたマスク信号のエッジは、オリジナルのマスク信号におけるエッジの位置と同じになる。
図17ではマスク信号のエッジの位置を外側に移動させる例を示している。第1ローパスフィルタ81のタップ数や係数などのフィルタ特性および二値化部82の第1閾値を可変することにより、マスク信号のエッジの位置を任意に調整できる。
図18は、第1ローパスフィルタ81によりマスク信号に形成される傾斜と、二値化部82に設定される第1閾値の関係を説明するための図である。同じエッジの位置のマスク信号を生成する場合において、傾斜が緩くて長い場合は第1閾値が高くなり、傾斜が短く急な場合は第1閾値が低くなる関係にある。ユーザが操作部60から第1ローパスフィルタ81のフィルタ特性および二値化部82の第1閾値を入力することにより、操作受付部40を介して第1ローパスフィルタ81および二値化部82に設定される。ユーザは操作部60から、第1ローパスフィルタ81のフィルタ特性および二値化部82の第1閾値の少なくとも一方を調整することにより、マスク信号のエッジの位置を任意に調整できる。なお第1閾値を低く設定したほうが傾斜を短くできるため、第1ローパスフィルタ81のタップ数を減らすことができ、第1ローパスフィルタ81を簡素化できる。
図17に戻る。エッジの位置が移動されたマスク信号は第2ローパスフィルタ83に入力される。第2ローパスフィルタ83は、エッジの位置が移動されたマスク信号にローパスフィルタをかける(S83)。これにより、再びエッジ領域に傾斜が付加されたぼかしマスクが生成される。
次にクリッピング部84は、第2ローパスフィルタ83により生成されたエッジ領域に傾斜を持つマスク信号の値と第2閾値を比較して、当該マスク信号の値が第2閾値以下のときマスク信号の値を0に設定する(S84)。即ちエッジ領域において白側の傾斜は残し、黒側の傾斜は急峻に落とす。これにより第2閾値より大きい領域では白からグレーに変化する傾斜がつき、第2閾値以下の領域では黒のマスクを生成できる。このクリッピング処理により、マスク内のぼかしをかけた領域を制限し、マスクのエッジ領域が意図した大きさより、大きくなることを抑制できる。
図17では、ぼかし処理を水平方向にかける例を示しているが、二次元ローパスフィルタを用いることにより、ぼかし処理を水平方向と垂直方向の両方にかけることもできる。その際、水平方向と垂直方向で係数が異なるフィルタを用いてもよい。その場合、水平方向と垂直方向とで個別にマスク信号のエッジの位置、傾斜の度合い、ぼかし幅を調整できる。
また水平方向と垂直方向で係数が異なり、かつ斜め方向は縦横の係数の中間値を持つ楕円状の二次元ローパスフィルタを用いてもよい。楕円状の二次元ローパスフィルタを用いれば、水平方向と垂直方向とで個別にマスク信号のエッジの位置および傾斜の度合い、ぼかし幅を調整でき、その調整を斜め方向に作用させることもできる。例えば、正方形のオリジナルマスクを、縦横が任意の長さで、かつ角が丸くなった長方形に加工することができる。また正方形のオリジナルマスクを、縦横の傾斜の度合いが個別かつ任意で、角においては縦横の傾斜の度合いと連続性を持ちつつなだらかに変化する傾斜を持つ全方位に任意のなだらかな傾斜がついた長方形に加工することもできる。
図19は、第1ローパスフィルタ81により付加される傾斜と、第2ローパスフィルタ83により付加される傾斜を比較するための図である。第1ローパスフィルタ81により付加される傾斜(符号t参照)は、二値化境界位置を調整するために使用される仮の傾斜であり、二値化後には消える。したがって傾斜は一定の角度で線形に変化する傾斜でよい。第2ローパスフィルタ83により付加される傾斜(符号t参照)は、残る傾斜であるため、ユーザがその傾斜の形状も調整するとよい。例えば傾斜の上部では上が凸の、下部では下が凸の形状に調整してもよい。この形状に調整すると、クリッピングされる幅を大きくできる。
このように、第1ローパスフィルタ81、第2ローパスフィルタ83のタップ数や係数などのフィルタ特性、二値化部82の第1閾値、クリッピング部84の第2閾値を調整することにより、マスク信号のエッジの位置、マスクの有効領域の面積、ぼかし幅をそれぞれ自由に調整できる。また全てのレイヤのマスク信号に同一のぼかし処理をかける必要はなく、各レイヤのマスク信号ごとに個別にぼかし処理をかけてもよい。
以上のぼかし処理により、マスク信号のエッジを任意の位置に移動させ、マスクの有効領域の面積を変化させることができる。またエッジ領域に任意の傾きの傾斜をつけることができる。さらにマスクのぼかし領域を任意に制限することができる。
ぼかしマスクは、後段のデプスマップの合成で使用される。デプスマップ加工部20は、ぼかしマスクのレベルに応じて、複数のレイヤデプスマップをアルファブレンドする。その際、ぼかしマスクのレベルに応じて、各レイヤデプスマップの合成比率が決定される。
以上説明したように実施例1によれば、レイヤデプスマップを合成する際、ぼかしマスクを使用することにより、合成デプスマップのオブジェクト境界部分に連続性を持たせることができる。即ちオブジェクト境界部分に大きな段差がある場合、その段差をなだらかにすることができる。したがって、この合成デプスマップをもとに生成される別視点の画像のオブジェクト境界部分を自然な境界に仕上げることができる。
また境界があいまいなオブジェクトに対して、不正確な輪郭で作成されたマスクを用いた場合でも、その輪郭の位置を調整することにより、生成される3D画像のオブジェクトの輪郭が不自然な輪郭となることを回避できる。
以下、ぼかしマスクを用いずにオブジェクト境界の不自然を目立ちにくくする方法について説明する。
図20は、本発明の実施例2に係る画像編集システム500の全体処理プロセスを説明するための図である。図20の処理プロセスは図4の処理プロセスに、ローパスフィルタ処理が追加された構成である。以下、相違点について説明する。なお図14の処理プロセスと異なりマスクぼかし処理が追加されない。
デプスマップ加工部20は、合成デプスマップにローパスフィルタをかける(S85)。これにより、デプスマップ内のオブジェクト境界におけるデプス値の変化がなだらかになる。ただし、ぼかしマスクを使用する方法と比較し、そのデプス値の変化をオブジェクト毎に任意に調整することはできない。また、ぼかしマスクを使用する方法では、オブジェクト境界におけるデプス値の変化だけをなだらかに加工できる。これに対して、合成デプスマップにローパスフィルタをかける方法では、オブジェクト境界だけでなくオブジェクト内部の平坦部分についても、細かなディテール(凹凸)が失われる。
ぼかしマスクを使用する方法と、合成デプスマップにローパスフィルタをかける処理は、各々独立で使用することもできるし、両方の処理を同時に使用することもできる。また、各々の処理の順番を入れ替えることもできる。レイヤ合成する前のデプスマップにローパスフィルタをかけて、ぼかし処理されたレイヤデプスマップを生成し、それらレイヤデプスマップをぼかしマスクを用いて合成し、さらに合成デプスマップにローパスフィルタをかけてもよい。
次に実施例3について説明する。実施例1、2では、デプスマップを加工する際の基準となるマスクに対して以下の処理を施した。マスクの有効エリアの面積を可変する。マスクのエッジ部分に傾斜をつける(具体的には、0または1ではなく 0.5などの中間値を作る)。マスクにつけた傾斜(中間値)の値に応じて、デプスマップをαブレンド合成する。合成されたデプスマップにローパスフィルタをかけて、急峻な変化を抑圧する。
実施例1、2では、これらの処理により、合成デプスマップのオブジェクトの境界部分に連続性を持たせ、この合成デプスマップを基に生成された画像(3D画像)のオブジェクトの境界部分の不自然を目立たなくすることを示した。
この実施例1、2に係る方法では、本来補正の必要が無い部分にまで補正処理が行われる場合が発生する。その補正の副作用により画像が不自然に変化してしまう場合がある。また、その補正の副作用を回避または軽減するために補正の効果を弱めた場合、オブジェクトの境界部分の不自然さを完全に解消できないことがある。
実施例3では、マスクぼかし処理の特殊性を考慮したうえで、マスクの補正処理を局所的に非対称に効果せしめる手段を講じる。これにより、狙いとする部分のみに排他的に補正処理を施すことができ、上記の副作用を回避または軽減できる。即ち、マスクのエッジ部分の処理を非対称に行い、その非対称なエッジを備えるマスクの加工を行う。これにより補正処理の副作用を抑えつつ、生成される3D画像におけるオブジェクトの境界部分の不自然さを目立ちにくくできる。
マスクぼかし処理の特殊性に鑑み、まずマスクの加工を非対称に行うことで狙いとする効果が得られる理由を説明し、次にマスクの加工を非対称に行うための具体的手段について説明する。
まずマスクの加工を非対称に行うことで狙いとする効果が得られる理由を説明する。上述したように本明細書では、デプスマップで表現されているデプス値に基づいて入力画像の一部の画素を水平にシフトすることにより、入力画像に対してオブジェクト毎に視差を持つ3D画像を生成する。一般に、入力画像を左眼画像とし、右眼画像を画素シフトで生成する場合において、飛び出し方向の視差を与えるには画素を左側にシフトする。この場合、シフトしたオブジェクトの右側には画素シフトにより画素抜けのエリアが生じる。一方、シフトしたオブジェクトの左側は、シフト画素が背景画素上に被さることになる。オブジェクトの左側には抜け画素が発生しない。
即ち画素シフトによる画素抜けは、オブジェクトの片側にだけ発生する。画素抜けが発生する方向は、生成すべき画像を右眼画像とするか左眼画像にするか、及びオブジェクトに飛び出し方向の視差を与えるか奥行き方向の視差を与えるかの二つに依存する。
上述の例において、オブジェクトの左右両側に均等なマスクエッジの加工処理を施した場合、オブジェクトの右側はその境界部分の不自然さを目立たなくできる。一方、オブジェクトの左側にあたる背景部分に何らかのテクスチャが存在する場合、上記のマスクエッジの加工処理の影響を受けた画素シフトが背景部分にも及ぶことになる。この場合、背景テクスチャが歪む可能性がある。例えば、その背景テクスチャに道路の白線が含まれる場合、白線が歪む可能性がある。
そこで、上述のマスクエッジの加工をオブジェクトの右側だけに作用させ、左側には作用させないようにする。これにより、オブジェクトの左側の背景テクスチャを歪まないようにできる。
次にマスクの加工を非対称に行うための具体的手段について説明する。実施例1で説明したようにマスクエッジの加工には、以下の2つのフィルタを用いる。1つは、マスクのエッジポジションを移動させ、マスクの有効エリアの面積を可変するために用いるフィルタである。もう1つは、マスクに応じたデプスマップのブレンド比率を制御するために、マスクエッジに傾斜を付けるためのフィルタである。前者は図16の第1ローパスフィルタ81に相当し、後者は第2ローパスフィルタ83に相当する。
これらのフィルタは、一般に左右または上下対称な係数で構成される。実施例3では中心に対して非対称な係数を設定したフィルタを意図的に用いる。これにより上記のマスクエッジの加工を左右非対称に行うことができ、上述の補正処理による副作用を回避または軽減できる。
図21は、実施例3に係るマスク補正部80の構成例を示す図である。実施例3に係るマスク補正部80は図16のマスク補正部80にフィルタ形状設定部85が追加された構成である。以下、図16のマスク補正部80との相違点について説明する。
実施例3に係るマスク補正部80は、少なくとも左右が非対称な第2ローパスフィルタ83を用いて、マスクのオブジェクト境界部分に、ぼかし処理を施す。フィルタ形状設定部85は、第2ローパスフィルタ83のフィルタ形状を決定する。ユーザは操作部60から、第2ローパスフィルタ83のフィルタ形状を特定するための情報をフィルタ形状設定部85に設定できる。ユーザは、第2ローパスフィルタ83のタップ数および/または係数の値を左右非対称に設定することにより、左右非対称なフィルタ形状の第2ローパスフィルタ83を設定できる。
また上述したように、ぼかし処理を水平方向だけでなく垂直方向にもかけるため、二次元ローパスフィルタを用いることもできる。この場合、ユーザは左右だけでなく上下にも非対称なフィルタ形状の第2ローパスフィルタ83を設定できる。また上述したように楕円状の二次元ローパスフィルタを用いれば、斜め方向にも自然なぼかし処理をかけることができる。
このようにユーザは、水平方向、垂直方向、斜め方向に個別の係数を持ち、かつ中心に対して非対称な係数を持つ第2ローパスフィルタ83を設定できる。即ち、上下左右斜め全方位に渡って非対称な形状の第2ローパスフィルタ83を設定できる。このようにユーザは、ぼかし処理の効果を、対象とするオブジェクトの縦横斜めのいかなる部分に対しても、任意に作用せしめることができる。
以下、第2ローパスフィルタ83を左右非対称にした場合の効果について考察する。この考察では説明を分かりやすくするため、水平方向にぼかし処理を施す一次元のローパスフィルタを想定する。
図22(a)−(c)は左右対称な第2ローパスフィルタ83sを用いたマスクエッジの加工処理を説明するための図である。図23(a)−(c)は左右非対称な第2ローパスフィルタ83aを用いたマスクエッジの加工処理を説明するための図である。図22(a)は、左右対称な第2ローパスフィルタ83sの一例を示す。図23(a)は、左右非対称な第2ローパスフィルタ83aの一例を示す。
図22(b)は、図22(a)の左右対称な第2ローパスフィルタ83sを用いて、マスクM1(点線)をフィルタリングする処理を示す。フィルタリング後のマスクM2(実線)は左右のエッジが等しく緩やかになる。図23(b)は、図23(a)の左右非対称な第2ローパスフィルタ83aを用いて、マスクM4(点線)をフィルタリングする処理を示す。フィルタリング後のマスクM5(実線)はエッジ形状が左右で異なる。左のエッジの高レベル領域は緩やかになまる。右側のエッジの低レベル領域は緩やかに外側に広がる。
図17に示したように、第2ローパスフィルタ83によるフィルタリング後のマスクは、第2閾値を用いてクリッピング処理される。当該クリッピング処理では第2閾値より下のレベルのマスク値をゼロにする。第2閾値は、マスクレベルの中間付近のレベルに設定される。
図22(c)は、図22(b)のフィルタリング後のマスク(細い実線)を第2閾値でクリッピングする処理を示す。クリッピング後のマスクM3(太い実線)は、左右のエッジの低レベル領域が垂直になる。図23(c)は、図23(b)のフィルタリング後のマスク(細い実線)を第2閾値でクリッピングする処理を示す。クリッピング後のマスクM6も、左右のエッジの低レベル領域が垂直になる。
マスクM3とマスクM6を比較すると、前者は左右のエッジに均等な傾斜がついている。後者は左右のエッジの傾斜が異なる。図23(a)に示すように中心に対して左側だけに係数を持つ第2ローパスフィルタ83aを用いた場合、左側のエッジには傾斜がつくが、右側のエッジには殆ど傾斜がつかない。右側のエッジは、加工前の状態とほぼ同様な、急峻な状態のエッジが維持される。
図23(b)に示すように非対称な第2ローパスフィルタ83aでフィルタリングされたマスクM5の右側のエッジには、その低レベル領域に緩やかな傾斜が付いている。その後、図23(c)に示すようにマスクM5と第2閾値を比較して、第2閾値より下のレベルのマスク値をゼロにクリッピングする。これにより、クリッピング後のマスクM6の右側のエッジにおける低レベル領域の傾斜は除去される。
仮に上記のクリッピング処理をしない場合、マスクのエッジ形状を左右非対称にすることはできても、マスクレベルの低レベル領域の傾斜が残ってしまう。実施例3に係るマスクエッジ加工処理の目的を果たせなくなる。即ち、レイヤデプスの左右非対称ブレンド、更には3D画像生成の際の画素シフトが及ぼす範囲を制限して、テクスチャのある背景部分にマスクエッジ加工処理の影響が及ばないようにする効果が果たせなくなる。
これに対して上記のクリッピング処理を追加することにより、マスクの片側のエッジにだけ傾斜をつけ、もう片側のエッジには傾斜をつけないという加工が可能になる。よって、実施例3に係るクリッピング処理は、マスクエッジの形状を非対称にする単純な加工処理から容易に類推できない有利な効果を奏している。
上述したようにユーザは、第2ローパスフィルタ83のフィルタ形状を任意に設定することができる。したがってオブジェクトの全方位ではなく任意の方向に偏りを持つぼかし処理が可能である。例えば、オブジェクトの周囲のテクスチャの状況に応じて、その偏りを調整できる。以下の説明では第2ローパスフィルタ83のフィルタ形状を手動ではなく自動で設定する処理を説明する。これにより、ユーザの負担を軽減できる。
図21に戻る。フィルタ形状設定部85は、生成すべき画像が右眼画像であるか左眼画像であるか、及びマスクのオブジェクト境界部分における境界の内側のデプス値と外側のデプス値の比較結果から得られるオブジェクトと周囲との前後関係に応じて、第2ローパスフィルタ83のフィルタ形状を設定する。
生成すべき画像が左眼画像であり、かつオブジェクトが周囲より手前(即ち、飛び出し方向)に位置する場合、3D画像生成部30はオブジェクトを右側に画素シフトする。生成すべき画像が左眼画像であり、かつオブジェクトが周囲より奥(即ち、奥行き方向)に位置する場合、3D画像生成部30はオブジェクトを左側に画素シフトする。生成すべき画像が右眼画像であり、かつオブジェクトが周囲より手前(即ち、飛び出し方向)に位置する場合、3D画像生成部30はオブジェクトを左側に画素シフトする。生成すべき画像が右眼画像であり、かつオブジェクトが周囲より奥(即ち、奥行き方向)に位置する場合、3D画像生成部30はオブジェクトを右側に画素シフトする。
オブジェクトが右側に画素シフトされる場合、フィルタ形状設定部85は、第2ローパスフィルタ83の左側のエッジが右側のエッジより緩やかなフィルタ形状に設定する。右側のエッジには傾斜をつかないか、またはごく小さな傾斜しかつかないフィルタ形状に設定する。オブジェクトが左側に画素シフトされる場合、フィルタ形状設定部85は、第2ローパスフィルタ83の右側のエッジが右側のエッジより緩やかなフィルタ形状に設定する。
以下より具体的に説明する。本明細書における画像編集システム500において、3D画像を構成する右眼画像と左眼画像のうち、一方にオリジナルの入力画像を割り当て、他方に、画素シフトにより生成される画像を割り当てる。この割り当ては、ユーザの設定により決定される。フィルタ形状設定部85には、決定された割り当てが設定される。
次に、マスクが指し示すオブジェクトが、その周囲に対して飛び出す方向に存在するか、反対に奥行き方向に存在するか判断する。飛び出し方向に存在する場合、右眼画像内のオブジェクトと左眼画像内のオブジェクトの間の距離を長くする必要がある。反対に奥行き方向に存在する場合、当該距離を短くする必要がある。オブジェクトが周囲に対して飛び出す方向に存在するか奥行き方向に存在するかの判断には、デプスマップを使用する。
フィルタ形状設定部85は、デプスマップを解析することにより、マスクが指し示すオブジェクトのエリアのデプス値と、その周辺のデプス値の相対差を求める。例えば、当該オブジェクトのエリア内のデプス値の平均値と、その周辺における設定された範囲内のデプス値の平均値との差分を求める。
本明細書では白に近いほどデプス値が高く、黒に近いほどデプス値が低くなる。したがって、オブジェクトのエリアのデプス値のほうが、その周辺のデプス値より大きい場合、オブジェクトが周辺より観察者に近いと判定できる。反対にオブジェクトのエリアのデプス値のほうが、その周辺のデプス値より小さい場合、オブジェクトがその周辺より観察者から遠いと判定できる。
マスクが指し示すオブジェクトのエリアのデプス値が、その周辺のデプス値より大きい場合、即ちオブジェクトが飛び出し方向に位置すると判定される場合について考える。この前提において右眼画像に画素シフトにより生成される画像を割り当てる場合、画素シフトの方向は左と判定できる。この場合、画素シフトによってオブジェクトの右側に画素抜け領域が発生する。したがってオブジェクトの右側に、より広く、より傾斜が付くように加工され、オブジェクトの左側が加工されない補正処理が望まれる。フィルタ形状設定部85はこのよう補正処理を実現するため、右側のエッジがより緩やかなフィルタ形状の第2ローパスフィルタ83を設定する。
このようにフィルタ形状設定部85は、画素シフトにより生成される画像が右眼画像である左眼画像であるか、及びオブジェクトのエリアとその周辺のデプスの相対差の2つのパラメータにより、第2ローパスフィルタ83のフィルタ形状を偏らせるべき方向を決定する。
図24は、実施例3に係るフィルタ形状設定部85によるフィルタ形状の決定処理を説明するためのフローチャートである。まずフィルタ形状設定部85は、生成される画像が左眼画像であるか右眼画像であるか判定する(S10)。次にオブジェクトが周辺より飛び出しているか奥まっているか判定する(S20、S22)。
左眼画像であり(S10の左眼)、かつオブジェクトが周辺より奥まっている場合(S20の奥まり)、フィルタ形状設定部85は画素シフトの方向が左と判定し、第2ローパスフィルタ83のフィルタ形状を、右側のエッジに傾斜が付加されたフィルタ形状に設定する(S31)。左眼画像であり(S10の左眼)、かつオブジェクトが周辺より飛び出している場合(S20の飛び出し)、フィルタ形状設定部85は画素シフトの方向が右と判定し、第2ローパスフィルタ83のフィルタ形状を、左側のエッジに傾斜が付加されたフィルタ形状に設定する(S32)。
右眼画像であり(S10の右眼)、かつオブジェクトが周辺より飛び出している場合(S22の飛び出し)、フィルタ形状設定部85は画素シフトの方向が左と判定し、第2ローパスフィルタ83のフィルタ形状を、右側のエッジに傾斜が付加されたフィルタ形状に設定する(S31)。右眼画像であり(S10の右眼)、かつオブジェクトが周辺より奥まっている場合(S22の奥まり)、フィルタ形状設定部85は画素シフトの方向が右と判定し、第2ローパスフィルタ83のフィルタ形状を、左側のエッジに傾斜が付加されたフィルタ形状に設定する(S32)。
またフィルタ形状設定部85は、オブジェクト境界の内側のデプス値と外側のデプス値との差分に応じて、より緩やかにすべき側(即ち、傾斜を付加すべき側)のエッジにおける傾斜の程度を決定できる。当該差分が大きいほど、オブジェクト境界の段差が大きく、画素シフト量が大きくなることを示す。フィルタ形状設定部85は、当該差分が大きいほど傾斜の程度を大きくする。即ち、当該差分が大きいほど、エッジに付加すべき傾斜をより緩やかに設定する。
これまで第2ローパスフィルタ83を左右非対称にする例を説明した。実施例3では第2ローパスフィルタ83だけでなく第1ローパスフィルタ81も左右非対称にすることができる。
図25(a)−(c)は左右対称な第1ローパスフィルタ81sを用いたマスクエッジの加工処理を説明するための図である。図26(a)−(c)は左右非対称な第1ローパスフィルタ81aを用いたマスクエッジの加工処理を説明するための図である。図25(a)は、左右対称な第1ローパスフィルタ81sの一例を示す。図26(a)は、左右非対称な第1ローパスフィルタ81aの一例を示す。
図25(b)は、図25(a)の左右対称な第1ローパスフィルタ81sを用いて、マスクM7(点線)をフィルタリングする処理を示す。フィルタリング後のマスクM8(実線)は左右のエッジが等しく緩やかになる。図26(b)は、図26(a)の左右非対称な第1ローパスフィルタ81aを用いて、マスクM10(点線)をフィルタリングする処理を示す。フィルタリング後のマスクM11(実線)はエッジ形状が左右で異なる。左側のエッジの高レベル領域が緩やかになまる。右側のエッジの低レベル領域は緩やかに外側に広がる。
図25(c)は、図25(b)のフィルタリング後のマスク(細い実線)を第1閾値(図17参照)で二値化することにより、マスクのエッジ幅を広げる加工処理を示す。エッジ幅を広げる場合、第1閾値をゼロ付近に設定する。図26(c)は、図26(b)のフィルタリング後のマスク(細い実線)を第1閾値で二値化することにより、マスクのエッジ幅を広げる加工処理を示す。
図25(c)に示すように加工後のマスクM9は、左右が均等に広がっている。一方、図26(c)に示すように加工後のマスクM12は、左右のエッジの移動量が異なる。中心に対して左側だけに係数を持つ第1ローパスフィルタ81aを用い場合、図26(c)に示すように右側のエッジポジションは右に移動するが、左側のエッジポジションは元の位置のままである。このようにマスクの左右を不均等に広げることができる。
マスクのエッジに傾斜をつける場合、オブジェクトの境界部分が広くなる。この場合においてマスクのエッジポジションをそのままにしておくと、オブジェクト境界部分がオブジェクトの内側に侵食してくる。したがってエッジに傾斜をつける場合、通常、そのエッジポジションを外側に移動させる。傾斜の程度が大きいほど、よりエッジポジションを外側に移動させる。このように傾斜の程度とエッジポジションの移動量は比例関係にある。
図23(a)−(c)及び図26(a)−(c)に示すように、左側に係数を持つフィルタ形状のローパスフィルタでは、左側のエッジに傾斜がつき、右側のエッジポジションが外側に移動する。したがって第1ローパスフィルタ81と第2ローパスフィルタ83では左右反対のフィルタ形状に設定する必要がある。オブジェクトの左側をぼかしたい場合、左側に係数を持つ第2ローパスフィルタ83を設定し、右側に係数を持つ第1ローパスフィルタ81を設定する。反対にオブジェクトの右側をぼかしたい場合、右側に係数を持つ第2ローパスフィルタ83を設定し、左側に係数を持つ第1ローパスフィルタ81を設定する。
図26(a)−(c)に示した例は、第1ローパスフィルタ81を用いてマスクのエッジポジションを外側に移動させる(即ち、マスクの幅を広げる)場合の例である。マスクの幅を広げる場合、外側に移動させるエッジの側と逆側に係数を持つフィルタ形状の第1ローパスフィルタ81を用いる。反対にマスクのエッジポジションを内側に移動させる(即ち、マスクの幅を狭める)場合、内側に移動させるエッジの側と同じ側に係数を持つフィルタ形状の第1ローパスフィルタ81を用いる。
図26(a)では左側にのみ係数を持つフィルタ形状の第1ローパスフィルタ81aが示されている。図26(b)では、この第1ローパスフィルタ81aによりフィルタリングされた後のマスクM11が示されている。このマスクM11の左側では内側に傾斜が付き、右側では外側に傾斜が付いている。
オリジナルマスクM10の幅を広げる場合、第1閾値のレベルを低く設定する。フィルタリング後のマスクM11を第1閾値で二値化すると、オリジナルマスクM10の外側に傾斜が付いている右側のエッジが外側に移動され、オリジナルマスクM10の幅が右側に伸びる(図26(c)参照)。左側は変化しない。反対にオリジナルマスクM10の幅を狭める場合、第1閾値のレベルを高く設定する。フィルタリング後のマスクM11を第1閾値で二値化すると、オリジナルマスクM10の内側に傾斜が付いている左側のエッジが内側に移動され、オリジナルマスクM10の左側が縮む。右側は変化しない。このようにマスクの幅を広げる場合、第1ローパスフィルタ81の係数を持つ側と反対側が広がり、マスクの幅を狭める場合、第1ローパスフィルタ81の係数を持つ側と同じ側が狭まる。
これまでの説明では、エッジの加工を行う際に、一意の係数で定義された1つのフィルタを用いて、マスク全体を一律に処理する手法を示した。この点、これまでに述べてきたマスクエッジの加工を非対称に行う効果を得るためには、必ずしも1つのフィルタを用いる処理に限定されない。それぞれフィルタ形状が異なる複数のフィルタを用いて、マスクエッジのエリア毎に個別にフィルタ処理してもよい。即ち、マスクの加工を幅広く行いたいエリアには、幅の広い形状を持つフィルタを用いる。反対に、マスクの加工度合いを少なくしたいエリアには、幅の狭い形状を持つフィルタを用いるか、または全くフィルタ処理しない。このように複数種類のローパスフィルタをマスクエッジのエリア毎に切り替えて使用してもよい。
以上説明したように実施例3によれば、マスクエッジの加工を、オブジェクトの上下左右斜め全方向に渡って非対称に行うことができる。このようなマスクを用いてオブジェクトの境界部分を補正することにより、正常な背景テクスチャに影響を及ぼすことなく、歪みが生じている部分のみを排他的に補正できる。したがって高品位な3D画像を生成できる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
実施例3では、マスクのエッジポジションを左右非対称に移動させるために、第1ローパスフィルタ81のフィルタ形状を左右非対称に設定する例を説明した。この点、左右対称な第1ローパスフィルタ81を使用しつつ、第1閾値を右側のエッジ部分と左側のエッジ部分で異なる値に設定することによっても、マスクのエッジポジションを左右非対称に移動させることができる。マスクのエッジポジションを外側に移動させる場合は第1閾値を低く設定し、内側に移動させる場合は高く設定する。