図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〜S15b)。具体的にはマスク補正部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は、本発明の実施例1の変形例に係る画像編集システム500の全体処理プロセスを説明するための図である。図20の処理プロセスは図4の処理プロセスに、ローパスフィルタ処理が追加された構成である。以下、相違点について説明する。なお図14の処理プロセスと異なりマスクぼかし処理が追加されない。
デプスマップ加工部20は、合成デプスマップにローパスフィルタをかける(S85)。これにより、デプスマップ内のオブジェクト境界におけるデプス値の変化がなだらかになる。ただし、ぼかしマスクを使用する方法と比較し、そのデプス値の変化をオブジェクト毎に任意に調整することはできない。また、ぼかしマスクを使用する方法では、オブジェクト境界におけるデプス値の変化だけをなだらかに加工できる。これに対して、合成デプスマップにローパスフィルタをかける方法では、オブジェクト境界だけでなくオブジェクト内部の平坦部分についても、細かなディテール(凹凸)が失われる。
ぼかしマスクを使用する方法と、合成デプスマップにローパスフィルタをかける処理は、各々独立で使用することもできるし、両方の処理を同時に使用することもできる。また、各々の処理の順番を入れ替えることもできる。レイヤ合成する前のデプスマップにローパスフィルタをかけて、ぼかし処理されたレイヤデプスマップを生成し、それらレイヤデプスマップをぼかしマスクを用いて合成し、さらに合成デプスマップにローパスフィルタをかけてもよい。
次に実施例2について説明する。実施例1ではオブジェクト境界をぼかすことにより、オブジェクト境界の不自然を目立ちにくくする方法を説明した。実施例2ではオブジェクト境界における不自然な箇所の画素をユーザの手作業によるペイント処理で修正する方法を説明する。このペイント処理は、以下の3つのプロセスからなる。まず不自然な箇所の画素を特定する。次に不自然な箇所の画素を消去する。最後に消去した箇所の画素をペイントにより再構成する。
上記プロセスにおいて、画素シフトと同時に画素補間する場合、不自然な箇所の特定が困難である。また画素補間しない場合でも、シフトされた画素が欠落画素の周辺にまばらに存在する状態が発生し得る。その場合、まばらに存在するシフトされた画素を消去してから、あらためてペイントによる画素の再描画を行う必要がある。これらは、ペイント作業の工数を増やす要因となっている。
図21は、本発明の実施例2に係る画像編集システム500によるフィルオフ機能を説明するための図である。フィルオフ機能は、以下の3つの機能を含む。広い欠落画素領域が生じるのは画素シフト量が大きいときである。第1機能は、画素シフト量が大きいときには画素補間を停止することにより意図的に欠落画素を残す機能である。第2機能は欠落画素がまばらでなくカタマリで生じる状態を作り出す機能である。具体的には、注目画素だけでなくその周辺画素についても画素シフト量を監視し、周辺画素を含めたいずれかの画素で、画素シフト量が大きいときに画素補間を停止する。第3機能は、発生した欠落画素を補間する代わりに特定色の画素を埋めることにより、欠落画素領域をユーザに認識しやすくする。
図21において図11及び図12と同様に、画素シフトにより発生する欠落画素領域の面積は、図10のその面積より大きくなっている(符号v参照)。図21では欠落画素をカタマリで発生させ、欠落画素領域を特定色の画素で埋めている(符号w参照)。ユーザはペイント作業により、その特定色の欠落画素領域を描画して修正する(符号x参照)。
図22は、本発明の実施例2に係る3D画像生成部30の構成を示す図である。実施例2に係る3D画像生成部30は、画素シフト部31、監視領域設定部32、画素補間部33を含む。これらの構成もハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。
画素シフト部31は、デプスマップ加工部20により加工されたデプスマップをもとに2D入力画像を画素シフトする。画素補間部33は、画素シフト部31による画素シフトにより発生する欠落画素を補間する。基本的に欠落画素をその周辺画素で補間する。画素補間部33は、欠落画素を補間する際、隣接画素とのデプス値の変化量(以下、デプスの微分値という)が設定値より大きい画素の補間をスキップする。当該設定値はユーザが操作部60から調整可能であり、当該設定値を調整することにより補間スキップ処理の感度を調整できる。
画素補間部33は、対象画素およびその周辺画素のうち、デプスの微分値が当該設定値より大きい画素が少なくとも一つ存在する場合、対象画素を欠落させる。この欠落された画素も補間をスキップさせる。監視領域設定部32は対象画素およびその周辺画素で規定される監視領域を設定する。当該監視領域の面積および/または形状は、固定であってもよいし可変であってもよい。
監視領域設定部32は、外部設定されるパラメータにしたがい当該監視領域を設定できる。当該パラメータはユーザが操作部60から調整可能である。例えば、対象画素を基準として上方向画素数、下方向画素数、左方向画素数、右方向画素数、膨張率の5つのパラメータにより規定される監視領域を設定できる。したがって対象画素を中心として左右非対称な監視領域を設定することもできる。例えば、監視領域設定部32は、画素シフト部31により2D入力画像が左にシフトされる場合は対象画素の左側より右側の面積が広い監視領域を設定し、2D入力画像が右にシフトされる場合は対象画素の右側より左側の面積が広い監視領域を設定することもできる。
画素補間部33は、欠落画素に周辺画素を補間する代わりに、特定色の画素を埋め込んでもよい。例えば赤などの目立ちやすい色の画素を埋め込んでもよい。
以下、具体例を挙げながら上述の3つの機能についてより詳細に説明する。まず第1機能について説明する。上述したように画素シフト量が大きいときは、画素シフト量の基準となるデプス値の変化量も大きくなる。デプスの微分値が設定値より大きい場合には、画素補間によるオブジェクト境界の不自然が顕著になると判断して画素補間を停止する。デプスの微分値は、対象画素のデプス値から、水平方向に1画素ずれた画素のデプス値を減算することにより求められる。
入力画像を左に画素シフトして別の画像を生成する場合、オブジェクト境界の不自然はシフトされた画素の右側で発生する。よってこの場合、対象画素のデプスの変化を右側だけで監視して対象画素の左側に影響を与えないようにするとよい。同様に入力画像を右に画素シフトして別の画像を生成する場合、対象画素のデプスの変化を左側だけで監視して対象画素の右側に影響を与えないようにするとよい。
次に第2機能について説明する。欠落画素をカタマリで発生させるために、注目画素だけでなくその周辺画素についても、画素シフト量に対応するデプスの微分値を監視する。周辺の監視領域が広いほど、発生する欠落画素のカタマリの面積が大きくなるが、あまり広すぎると、正常にシフトされ修正の必要のない画素まで欠落させてしまうことになる。よって適切な監視領域の設定が必要となる。
図23(a)−(e)は、監視領域の複数の例を示す。図23(a)は十字型、図23(b)は手裏剣型、図23(c)はダイヤ型、図23(d)は八角形型、図23(e)は長方形型の監視領域である。これらの形状は膨張率により設定可能である。十字型は膨張率を0%、手裏剣型は膨張率を25%、ダイヤ型は膨張率を50%、八角形型は膨張率を75%、長方形型は膨張率を100%に設定することにより生成される。
この例では膨張率は、十字線とその十字線を内接する長方形との関係により定義される。具体的には当該長方形の中心と頂点とを結ぶ線分の長さを100%とした場合における、その線分の伸縮率で膨張率は定義される。即ち監視領域は、十字線の4つの端点と、それぞれ伸縮された線分の4つの端点とを結んで形成される。膨張率が0%のときは当該線分は存在しなくなるため十字線の4つの端点を結んで形成される。これら十字型から長方形型まで形状の異なる監視領域を自由に設定できることにより、ユーザの意図に沿った形状の、欠落画素のカタマリを生成できる。
以下、5つの設定パラメータを用いて監視領域を設定する方法を具体例を挙げながら説明する。使用する5つの設定パラメータは、上方向の画素数、下方向の画素数、左方向の画素数、右方向の画素数、膨張率である。膨張率は図23(a)−(e)で説明した膨張率である。
図24は、5つの設定パラメータにより生成される監視領域の具体例を説明するための図である(その1)。この具体例では上方向の画素数Tが2、下方向の画素数Bが6、左方向の画素数Lが4、右方向の画素数Rが6に設定される。
図25は、5つの設定パラメータにより生成される監視領域の具体例を説明するための図である(その2)。図25のグラフには図24の設定値を前提に、膨張率Pが25%、膨張率Pが50%、膨張率Pが75%、膨張率Pが100%の場合の監視領域が描かれている。このように上記5つの設定パラメータをそれぞれ独立に自由に設定することにより、上下左右非対称な形状の監視領域を任意に設定できる。
図26は、デプス信号の微分値の監視およびフィルオフを説明するための図である(右眼画像)。右眼画像は、入力画像を左に画素シフトして生成される。画素シフト部31は、デプス信号をもとに入力画像を画素シフトする。図26では画素f−kが左に3画素分、シフトされる。そのシフトの結果、画素f−kの右側に3画素の欠落画素領域が発生する。
画素補間部33は、フィルオフするか否かを判定するためにデプス信号の微分値を生成する。左に画素シフトする場合、注目画素のデプス値と左隣画素のデプス値の差分を、デプス信号の微分値(X(n)-X(n-1))とする。欠落画素はシフトされた画素の右側に発生するため、デプス信号の微分値の負側を抽出することにより、欠落画素の位置を特定できる。負側が抽出されたデプス信号の微分値が設定値を超える場合、画素補間部33はその画素をフィルオフする。フィルオフされる画素は欠落画素領域の右端の画素だけであるため、その左側の2画素は原則として、フィルオフされない。
図26では、デプス信号の微分値の監視領域を左に3画素、右に0画素、拡張している。したがって画素補間部33は対象画素とその左隣の2画素の合計3画素の、デプス信号の微分値を監視することになる。その3画素のいずれかのデプス信号の微分値が設定値を超えた場合、画素補間部33は対象画素をフィルオフする。これにより図26の一番下に示すような適切なフィルオフ領域を得ることができる。よって欠落画素領域について適切にフィルオフすることができる。また、監視領域の右側の拡張は0画素であるため、フィルオフする必要がない領域はフィルオフされない設定となっている。
図27は、デプス信号の微分値の監視およびフィルオフを説明するための図である(左眼画像)。左眼画像は、入力画像を右に画素シフトして生成される。画素シフト部31は、デプス信号をもとに入力画像を画素シフトする。図27では画素f−hが右に3画素分、シフトされる。そのシフトの結果、画素f−hの左側に3画素の欠落画素領域が発生する。
画素補間部33は、フィルオフするか否かを判定するためにデプス信号の微分値を生成する。右に画素シフトする場合、注目画素のデプス値と右隣画素のデプス値の差分を、デプス信号の微分値(X(n+1)-X(n))とする。欠落画素はシフトされた画素の左側に発生するため、デプス信号の微分値の正側を抽出することにより、欠落画素の位置を特定できる。正側が抽出されたデプス信号の微分値が設定値を超える場合、画素補間部33はその画素をフィルオフする。フィルオフされる画素は欠落画素領域の左端の画素だけであるため、その右側の2画素分は原則として、フィルオフされない。
図27では、デプス信号の微分値の監視領域を右に3画素、左に0画素、拡張している。したがって画素補間部33は対象画素とその右隣の2画素の合計3画素の、デプス信号の微分値を監視することになる。その3画素のいずれかのデプス信号の微分値が設定値を超えた場合、画素補間部33は対象画素をフィルオフする。これにより、図27の一番下に示すような適切なフィルオフ領域を得ることができる。よって欠落画素領域について適切にフィルオフすることができる。また、監視領域の左側の拡張は0画素であるため、フィルオフする必要がない領域はフィルオフされない設定となっている。
このように、監視領域を左右で非対称に設定する機能を有することにより、画素シフトによって生じる欠落画素領域を、画素シフトの特性と方向に従って適切に特定することができる。そして特定した欠落画素領域のフィルオフを適切に行うことができる。
次に第3機能について説明する。画素補間部33は、フィルオフにより補間されない欠落画素に対して周辺画素と異なる、赤色等の画素を書き込む。これにより、欠落画素の位置を特定しやすくなる。書き込む画素は赤色に限らず他の色でもよい。例えば原画に存在する色と異なる任意の色の画素を書き込むことにより、欠落画素の位置を認識しやすくさせることができる。また、書き込む画素の色を黒や白にすれば、ペイント作業時に画素を消す作業を省略させることができる。書き込む画素の画素値を任意に変更可能に設計することにより、目的に応じて書き込む画素の色を任意に選択できる。
以上説明したように実施例2によれば、画素シフトにより発生する欠落画素に対する画素補間をスキップする機能を備えたことにより、画素補間によりオブジェクト境界が不自然になることを回避できる。また対象画素のデプスの微分値だけでなく、対象画素の周辺画素のデプスの微分値も監視することにより、欠落画素がまばらに発生することを回避できる。ユーザがペイント作業する際、欠落画素周辺の欠落していない画素を消去する作業が必要となるが、欠落画素をブロックで発生させることにより、ペイント作業を簡略化させることができる。また画素補間しない欠落画素に特定色の画素を埋め込むことにより、ペイント作業により編集されるべき欠落画素領域をユーザに認識しやすくできる。
以上説明した実施例1もしくは実施例2に係る画像編集システム500を単独で使用することにより、または実施例1と実施例2の組み合わせに係る画像編集システム500を使用することにより、2D画像から3D画像を生成する際に、オブジェクト境界部分の画像品質を向上させることができる。
次に実施例3について説明する。実施例1では、デプスマップを加工する際の基準となるマスクに対して以下の処理を施した。マスクの有効エリアの面積を可変する。マスクのエッジ部分に傾斜をつける(具体的には、0または1ではなく、0.5などの中間値を作る)。マスクにつけた傾斜(中間値)の値に応じて、デプスマップをαブレンド合成する。合成されたデプスマップにローパスフィルタをかけて、急峻な変化を抑圧する。
実施例1では、これらの処理により、合成デプスマップのオブジェクトの境界部分に連続性を持たせ、この合成デプスマップを基に生成された画像(3D画像)のオブジェクトの境界部分の不自然を目立たなくすることを示した。
この実施例1に係る方法では、マスクの有効エリアの面積を可変する、マスクのエッジ部分に傾斜をつける、の各々の処理のためにマスクにフィルタ演算を施す必要がある。つまり上述したように、マスクエッジの加工には以下の2つのフィルタを用いる。マスクのエッジポジションを移動させ、マスクの有効エリアの面積を可変するために用いるフィルタと、マスクに応じたデプスマップのブレンド比率を制御するために、マスクエッジに傾斜を付けるためのフィルタを用いる。
しかしながら、フィルタ演算は1つの画素に対して、フィルタのタップ数に相当する回数だけ積和演算する必要がある。フィルタのタップ数が多い場合、処理にかかる演算量も増加する。
さらに、二次元フィルタを用いて水平と垂直の両方にフィルタ処理する場合、演算量はフィルタの面積に比例して増加する。例えば、フィルタのタップ数がnであったとすると、水平または垂直のどちらか一方にだけ一次元フィルタ処理する場合の積和演算回数はn回である。これに対して、水平と垂直の両方に二次元フィルタ処理する場合、フィルタの形状が円形であると仮定すると積和演算回数はπ/4*n2回となる。即ち二次元フィルタ処理の積和演算回数は、フィルタのタップ数nの二乗に比例して増加する。この演算量の多さは処理時間の増大を招く。
実施例3では実施例1と同等の目的を達するためのフィルタ演算を、実施例1の方法よりも少ない演算量で行うことを目的とする。演算量の増加を抑圧し、処理時間を短縮する。
実施例3でも合成デプスマップのオブジェクトの境界部分に連続性を持たせ、この合成デプスマップを基に生成された画像(3D画像)のオブジェクトの境界部分の不自然を目立たなくする。そのためにデプスマップを加工する際の基準となるマスクに対して、エッジを移動させたりエッジに傾斜をつけたりする処理を行う。その際、この処理の一部をなすフィルタ演算を実施例1の方法よりも少ない演算量で行うことにより演算量の増加を抑圧し処理時間を短縮する。
具体的には当該フィルタ演算の過程において、フィルタ処理する前のマスクの有効エリアまたは無効エリアの一方に対するフィルタ演算処理をスキップする。詳細は後述するが、マスクの有効エリアまたは無効エリアの一方に対するフィルタ演算処理をスキップしても、実施例1の処理と等価の効果を得ることができる。またマスクの全画素に対してフィルタ演算する必要がなくなるため、演算量の増加を抑圧し処理時間を短縮できる。
図28は、実施例3に係るマスク補正部80の構成例を示す図である。実施例3に係るマスク補正部80は図16のマスク補正部80に第1レベル判定部86及び第2レベル判定部87が追加された構成である。以下、図16のマスク補正部80との相違点について説明する。
第1レベル判定部86は、第1ローパスフィルタ81に入力されるマスク信号のレベルを判定し、その判定結果に応じて、第1ローパスフィルタ81による、マスク信号におけるフィルタ処理の対象エリアを制限する。第2レベル判定部87は、第2ローパスフィルタ83に入力されるマスク信号のレベルを判定し、その判定結果に応じて、第2ローパスフィルタ83による、マスク信号におけるフィルタ処理の対象エリアを制限する。以下、具体的に説明する。
図29は、実施例3に係る第1レベル判定部86による第1ローパスフィルタ81のフィルタ対象エリアの制限処理を説明するためのフローチャートである。第1レベル判定部86は、マスクエッジの移動方向が外側であるか内側であるか特定する(S861)。マスクエッジの位置を外側に移動させるとマスク信号の有効エリアが広がり、内側に移動させるとマスク信号の有効エリアが狭まる。
外側に移動させる場合にて(S861の外)、第1レベル判定部86は、第1ローパスフィルタ81に入力されるマスク信号の画素レベルを判定する(S862)。当該画素レベルがローレベル(本実施例では無効画素に相当する)の場合(S862のL)、第1ローパスフィルタ81は当該画素をフィルタ処理する(S863)。当該画素レベルがハイレベル(本実施例では有効画素に相当する)の場合(S862のH)、当該画素のフィルタ処理をスキップする。当該マスク信号の全画素の処理が終了するまで(S864のY)、ステップS862、S863の処理を繰り返す(S864のN)。このようにマスク信号の有効エリアを広げる場合、第1レベル判定部86は、マスク信号の有効エリアに対する第1ローパスフィルタ81によるフィルタ処理をスキップさせる。
マスクエッジの位置を内側に移動させる場合にて(S861の内)、第1レベル判定部86は、第1ローパスフィルタ81に入力されるマスク信号の画素レベルを判定する(S865)。当該画素レベルがハイレベルの場合(S865のH)、第1ローパスフィルタ81は当該画素をフィルタ処理する(S866)。当該画素レベルがローレベルの場合(S865のL)、当該画素のフィルタ処理をスキップする。当該マスク信号の全画素の処理が終了するまで(S867のY)、ステップS865、S866の処理を繰り返す(S867のN)。このようにマスク信号の有効エリアを狭める場合、第1レベル判定部86は、マスク信号の無効エリアに対する第1ローパスフィルタ81によるフィルタ処理をスキップさせる。
図30は、実施例3に係る第2レベル判定部87による第2ローパスフィルタ83のフィルタ対象エリアの制限処理を説明するためのフローチャートである。第2レベル判定部87は、二値化部82による二値化によりエッジの位置が移動された第2ローパスフィルタ83に入力されるマスク信号の画素レベルを判定する(S868)。当該画素レベルがハイレベルの場合(S868のH)、第2ローパスフィルタ83は当該画素をフィルタ処理する(S869)。当該画素レベルがローレベルの場合(S868のL)、当該画素のフィルタ処理をスキップする。当該マスク信号の全画素の処理が終了するまで(S870のY)、ステップS868、S869の処理を繰り返す(S870のN)。このようにマスク信号のエッジに傾斜を付ける場合、第2レベル判定部87は、マスク信号の無効エリアに対する第2ローパスフィルタ83によるフィルタ処理をスキップさせる。以下、具体例を挙げながらより詳細に説明する。
まず、マスクのエッジポジションを移動させ、マスクの有効エリアの面積を可変するために用いる第1ローパスフィルタ81の処理について説明する。最初に第1ローパスフィルタ81を用いてマスクエッジ幅を広げる場合について説明する。
図31(a)−(c)は全画素に対してフィルタ演算してマスクエッジ幅を広げる処理を説明するための図である。図32(a)−(c)はマスクの無効画素に対してのみフィルタ演算してマスクエッジ幅を広げる処理を説明するための図である。図31(a)に示す第1ローパスフィルタ81も図32(a)に示す第1ローパスフィルタ81も同じ形状である。
図31(b)は、フィルタリング対象となるマスクM31(点線)の全画素に対して図31(a)に示す第1ローパスフィルタ81を用いてフィルタ演算した結果を示す。図32(b)は、フィルタリング対象となるマスクM34(点線)の無効画素に対して図32(a)に示す第1ローパスフィルタ81を用いてフィルタ演算した結果を示す。フィルタ演算の結果、マスクM32(実線)、マスクM35(実線)ともフィルタ演算した部分だけに傾斜が付き、フィルタ演算しなかった部分はフィルタ演算前のマスク波形のままである。図31(b)ではフィルタリング後のマスクM32(実線)はマスクエッジの内外に傾斜が付されるが、図32(b)ではフィルタリング後のマスクM35(実線)はマスクエッジの外に傾斜が付されるが内には傾斜が付されない。
図31(c)は、図31(b)に示すフィルタリング後のマスクM32(実線)を第1閾値で二値化した結果を示す。図32(c)は、図32(b)に示すフィルタリング後のマスクM35(実線)を第1閾値で二値化した結果を示す。マスクエッジ幅を広げる場合、第1閾値をゼロ付近に設定する。マスクエッジ幅を広げる場合、二値化前のマスクのエッジの傾斜は第1閾値付近(即ち、マスクのレベルが低い部分)にのみ付されていればよい。マスクのレベルが高い部分の傾斜は、その有無が二値化の結果に影響を与えない。エッジ幅が広がった、図31(c)の二値化後のマスクM33(太実線)と図32(c)の二値化後のマスクM36(太実線)の形状は同じである。
しかしながら、図31(a)−(c)のようにマスクの全画素に対してフィルタ演算する場合と比較して、図32(a)−(c)のようにマスクの無効画素に対してのみフィルタ演算する場合の演算量は少ない。その差は、マスクの有効画素エリアが広ければ広いほど顕著になる。マスクの無効画素に対してのみフィルタ演算することにより、マスクエッジ幅を好適に広げつつ、演算量の増加を抑圧し処理時間を短縮できる。
次に第1ローパスフィルタ81を用いてマスクエッジ幅を狭める場合について説明する。図33(a)−(c)は全画素に対してフィルタ演算してマスクエッジ幅を狭める処理を説明するための図である。図34(a)−(c)はマスクの有効画素に対してのみフィルタ演算してマスクエッジ幅を狭める処理を説明するための図である。図33(a)に示す第1ローパスフィルタ81も図34(a)に示す第1ローパスフィルタ81も同じ形状である。
図33(b)は、フィルタリング対象となるマスクM37(点線)の全画素に対して図33(a)に示す第1ローパスフィルタ81を用いてフィルタ演算した結果を示す。図34(b)は、フィルタリング対象となるマスクM40(点線)の有効画素に対して図34(a)に示す第1ローパスフィルタ81を用いてフィルタ演算した結果を示す。フィルタ演算の結果、マスクM38(実線)、マスクM41(実線)ともフィルタ演算した部分だけに傾斜が付き、フィルタ演算しなかった部分はフィルタ演算前のマスク波形のままである。図33(b)ではフィルタリング後のマスクM38(実線)はマスクエッジの内外に傾斜が付されるが、図34(b)ではフィルタリング後のマスクM41(実線)はマスクエッジの内に傾斜が付されるが外には傾斜が付されない。
図33(c)は、図33(b)に示すフィルタリング後のマスクM38(実線)を第1閾値で二値化した結果を示す。図34(c)は、図34(b)に示すフィルタリング後のマスクM41(実線)を第1閾値で二値化した結果を示す。マスクエッジ幅を狭める場合、第1閾値を最大値付近に設定する。マスクエッジ幅を狭める場合、二値化前のマスクのエッジの傾斜は第1閾値付近(即ち、マスクのレベルが高い部分)にのみ付されていればよい。マスクのレベルが低い部分の傾斜は、その有無が二値化の結果に影響を与えない。エッジ幅が狭まった、図33(c)の二値化後のマスクM39(太実線)と図34(c)の二値化後のマスクM42(太実線)の形状は同じである。
しかしながら、図33(a)−(c)のようにマスクの全画素に対してフィルタ演算する場合と比較して、図34(a)−(c)のようにマスクの有効画素に対してのみフィルタ演算する場合の演算量は少ない。その差は、マスクの無効エリアが広ければ広いほど顕著になる。マスクの有効画素に対してのみフィルタ演算することにより、マスクエッジ幅を好適に狭めつつ、演算量の増加を抑圧し処理時間を短縮できる。
次にマスクに応じたデプスマップのブレンド比率を制御するために、マスクエッジに傾斜を付けるための第2ローパスフィルタ83の処理について説明する。
図35(a)−(c)は全画素に対してフィルタ演算してマスクエッジに傾斜を付ける処理を説明するための図である。図36(a)−(c)はマスクの有効画素に対してのみフィルタ演算してマスクエッジに傾斜を付ける処理を説明するための図である。図35(a)に示す第2ローパスフィルタ83も図36(a)に示す第2ローパスフィルタ83も同じ形状である。
図35(b)は、フィルタリング対象となるマスクM43(点線)の全画素に対して図35(a)に示す第2ローパスフィルタ83を用いてフィルタ演算した結果を示す。図36(b)は、フィルタリング対象となるマスクM46(点線)の有効画素に対して図36(a)に示す第2ローパスフィルタ83を用いてフィルタ演算した結果を示す。フィルタ演算の結果、マスクM44(実線)、マスクM47(実線)ともフィルタ演算した部分だけに傾斜が付き、フィルタ演算しなかった部分はフィルタ演算前のマスク波形のままである。図35(b)ではフィルタリング後のマスクM44(実線)はマスクエッジの内外に傾斜が付されるが、図36(b)ではフィルタリング後のマスクM47(実線)はマスクエッジの内に傾斜が付されるが外には傾斜が付されない。
図35(c)は、図35(b)に示すフィルタリング後のマスクM44(実線)において、第2閾値より下のレベルの値をゼロにクリッピング処理した結果を示す。図36(c)は、図36(b)に示すフィルタリング後のマスクM47(実線)において、第2閾値より下のレベルの値をゼロにクリッピング処理した結果を示す。第2閾値はマスクレベルの中間付近のレベルに設定する。第2ローパスフィルタ83及びクリッピング部84による処理の目的は、マスクエッジの高レベル側に傾斜を付け、低レベル側の値をゼロにすることである。従って加工前のマスクエッジの傾斜は第2閾値より上(即ち、マスクのレベルが高い部分)にのみあればよい。第2閾値より下(即ち、マスクのレベルが低い部分)の傾斜は、その有無が加工の結果に影響を与えない。エッジに傾斜を付け第2閾値以下をゼロにクリッピングした、図35(c)の加工後のマスクM45(太実線)と図36(c)の加工後のマスクM48(太実線)の形状は同じである。
しかしながら、図35(a)−(c)のようにマスクの全画素に対してフィルタ演算する場合と比較して、図36(a)−(c)のようにマスクの有効画素に対してのみフィルタ演算する場合の演算量は少ない。その差は、マスクの無効エリアが広ければ広いほど顕著になる。マスクの無効画素に対してのみフィルタ演算することにより、マスクエッジに傾斜を付けつつ、演算量の増加を抑圧し処理時間を短縮できる。
上述のようにマスクエッジ幅を変更する処理と、マスクエッジに傾斜を付ける処理は組み合わせて使用できる。以下、組み合わせて使用する場合における、実施例1の手法と実施例3の手法の演算量の差について説明する。
まずマスクエッジ幅を広げる処理とマスクエッジに傾斜を付ける処理を組み合わせた場合を考える。実施例1の手法ではマスクの全画素に対してフィルタ処理する。これに対して実施例3の手法では、マスクエッジ幅を広げる処理についてはマスクの無効画素に対してのみフィルタ処理し、マスクエッジに傾斜を付ける処理についてはマスクの有効画素に対してのみフィルタ処理する。仮にマスクエッジ幅を広げる処理とマスクエッジに傾斜を付ける処理の演算量が等しい場合、マスクの有効画素の面積によらず、実施例3の手法は実施例1の手法に対して処理量を半分に削減できる。
次にマスクエッジ幅を狭める処理とマスクエッジに傾斜を付ける処理を組み合わせた場合を考える。実施例1の手法ではマスクの全画素に対してフィルタ処理する。これに対して実施例3の手法では、マスクエッジ幅を狭める処理とマスクエッジに傾斜を付ける処理の両方において、マスクの有効画素に対してのみフィルタ処理する。よって、マスクの有効画素が狭ければ狭いほど、実施例3の手法は実施例1の手法に対して処理量を大幅に削減できる。
以上説明したように実施例3によれば、合成デプスマップのオブジェクトの境界部分に連続性を持たせ、この合成デプスマップを基に生成された画像(3D画像)のオブジェクトの境界部分の不自然を目立たなくするために以下の処理を行う。デプスマップを加工する際の基準となるマスクに対して、エッジの位置を移動させたりエッジに傾斜を付けたりするためにフィルタ処理する。その際、フィルタ処理する前のマスクの有効エリアまたは無効エリアのフィルタ処理をスキップすることにより、実施例1の処理と等価の効果を得つつ、演算量を削減し処理時間を短縮できる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
実施例2に係る画像編集システム500では、デプスマップ加工部20による加工をスキップして、デプスマップ生成部10により生成されたデプスマップをそのまま使用してもよい。またオブジェクト領域ごとに分割せずに、一括で加工されたデプスマップを使用してもよい。またユーザの作業により一から生成されたデプスマップが使用されてもよい。
実施例3では第2レベル判定部87は、エッジの位置が調整された後のマスク信号の無効エリアに対する第2ローパスフィルタ83によるフィルタ処理をスキップさせる例を説明した。この処理はマスクエッジの内側部分に傾斜を付けるための処理である。マスクエッジの外側部分に傾斜を付ける場合、第2レベル判定部87はマスク信号の有効エリアに対する第2ローパスフィルタ83によるフィルタ処理をスキップさせる。