(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
(実施例1)
図2は、本発明の基本となる実施例に係る画像編集システム500の構成を示す図である。本実施例に係る画像編集システム500は、画像処理装置100及びコンソール端末装置200を備える。
【0015】
コンソール端末装置200は画像製作者(以下、ユーザという)が画像を製作、編集するために使用する端末装置である。コンソール端末装置200は操作部60および表示部70を備える。操作部60はキーボード、マウス等の入力デバイスであり、表示部70はディスプレイ等の出力デバイスである。なお入出力が一体となったデバイスであるタッチパネルディスプレイが用いられてもよい。またコンソール端末装置200はプリンタ、スキャナ等の印刷物を媒体として用いるユーザインタフェースを含んでもよい。操作部60はユーザ操作を受け付け、そのユーザ操作に起因した信号を生成し、画像処理装置100に出力する。表示部70は画像処理装置100により生成された画像を表示する。
【0016】
画像処理装置100はデプスマップ生成部10、デプスマップ加工部20、3D画像生成部30、操作受付部40、表示制御部50を含む。これらの構成はハードウエア的には、任意のプロセッサ、メモリ、その他のLSIで実現でき、ソフトウエア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。例えばデプスマップ生成部10、デプスマップ加工部20、3D画像生成部30について、その機能を全てソフトウエアで実現してもよいし、デプスマップ生成部10および3D画像生成部30の機能を専用のロジック回路で構成し、デプスマップ加工部20の機能をソフトウエアで実現してもよい。
【0017】
デプスマップ生成部10は、入力される2D画像とデプスモデルをもとに当該2D画像のデプスマップを生成する。デプスマップは、デプス値(奥行き値ともいう)を輝度値で表したグレースケール画像である。デプスマップ生成部10はシーン構造を推定して、そのシーン構造に適合的なデプスモデルを使用してデプスマップを生成する。本実施例ではデプスマップ生成部10は複数の基本デプスモデルを合成してデプスマップ生成に使用する。その際、当該2D画像のシーン構造に応じて複数の基本デプスモデルの合成比率を変化させる。
【0018】
図3は、本発明の実施例に係るデプスマップ生成部10の構成例を示す図である。デプスマップ生成部10は、画面上部高域成分評価部11、画面下部高域成分評価部12、合成比率決定部13、第1基本デプスモデル用フレームメモリ14、第2基本デプスモデル用フレームメモリ15、第3基本デプスモデル用フレームメモリ16、合成部17、加算部18を含む。
【0019】
画面上部高域成分評価部11は、処理すべき2D画像の画面上部において高域成分を有する画素の割合を算出する。その割合を画面上部の高域成分評価値とする。なお画面全体に対する画面上部の割合は略20%に設定するとよい。画面下部高域成分評価部12は当該2D画像の画面下部において高域成分を有する画素の割合を算出する。その割合を画面下部の高域成分評価値とする。なお画面全体に対する画面下部の割合は略20%に設定するとよい。
【0020】
第1基本デプスモデル用フレームメモリ14は第1基本デプスモデルを保持し、第2基本デプスモデル用フレームメモリ15は第2基本デプスモデルを保持し、第3基本デプスモデル用フレームメモリ16は第3デプスモデルを保持する。第1基本デプスモデルは画面上部及び画面下部をそれぞれ凹状の球面とするモデルである。第2基本デプスモデルは画面上部を縦方向に軸線を有する円筒面、画面下部を凹状の球面とするモデルである。第3基本デプスモデルは画面上部を平面、画面下部を横方向に軸線を有する円筒面とするモデルである。
【0021】
合成比率決定部13は、画面上部高域成分評価部11および画面下部高域成分評価部12によりそれぞれ算出された、画面上部および画面下部の高域成分評価値をもとに第1基本デプスモデル、第2基本デプスモデル、第3基本デプスモデルの合成比率k1,k2,k3(ただし、k1+k2+k3=1)を決定する。合成部17はこれらの合成比率k1,k2,k3と、第1基本デプスモデル、第2基本デプスモデル、第3基本デプスモデルをそれぞれ乗算し、それぞれの乗算結果を加算する。この演算結果が合成基本デプスモデルとなる。
【0022】
例えば合成比率決定部13は、画面上部の高域成分評価値が小さい場合は画面上部に空もしくは平坦な壁が存在するシーンと認識して、画面上部の奥行きを深くした第2基本デプスモデルの比率を増加させる。また画面下部の高域成分評価値が小さい場合は画面下部に平坦な地面もしくは水面が手前に連続的に広がるシーンと認識して、第3基本デプスモデルの比率を増加させる。第3基本デプスモデルでは、画面上部は遠景として平面近似し、画面下部は下に行くほど奥行きを小さくしている。
【0023】
加算部18は、合成部17により生成された合成基本デプスモデルに上記2D画像の赤成分(R)信号を重畳してデプスマップを生成する。R信号を使用する理由は、R信号の大きさが順光に近い環境で、かつテクスチャの明度が大きく異ならないような条件において、被写体の凹凸と一致する確率が高いという経験則によるものである。また赤色および暖色は色彩学における前進色であり、寒色系よりも奥行きが手前に認識され、立体感が強調されるためである。
【0024】
図2に戻る。デプスマップ加工部20は、デプスマップ生成部10により生成されたデプスマップを加工する。本実施例ではデプスマップ加工部20は、外部設定される複数のマスクパターン(以下、単にマスクという)により指定される画面内の複数の領域ごとに、デプスマップ生成部10により生成されたデプスマップを個別または独立に加工する。例えばゲイン調整、オフセット調整、グラデーション処理などの加工を行う。デプスマップ加工部20による処理の詳細は後述する。
【0025】
3D画像生成部30は、上述の2D画像およびデプスマップ加工部20により加工されたデプスマップをもとに別視点の2D画像を生成する。3D画像生成部30は、オリジナル視点の2D画像と別視点の2D画像を右眼画像と左眼画像として出力する。
【0026】
以下、オリジナル視点の2D画像とデプスマップを用いて当該2D画像と視差を持つ別視点の2D画像を生成する具体例を説明する。この具体例ではオリジナル視点の2D画像を画面表示させた場合の視点を基準にして、左に視点移動した別視点の2D画像を生成する。その場合、観察者に対してテクスチャを近景として表示させるときは画面に向かって右側へオリジナル視点の2D画像のテクスチャを所定量移動させ、テクスチャを観察者に遠景として表示させるときは画面に向かって左側へテクスチャを所定量移動させる。
【0027】
デプスマップの各画素の輝度値を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に設定される。
【0028】
なお、デプスマップ生成部10によるデプスマップ生成、および3D画像生成部30による3D画像生成のより詳細な説明は、本出願人が先に出願した特開2005−151534号公報、特開2009−44722号公報に開示されている。
【0029】
操作受付部40は、コンソール端末装置200の操作部60から入力される信号を受け付ける。操作受付部40は、入力される信号をその内容に応じてデプスマップ加工部20または3D画像生成部30に出力する。表示制御部50はコンソール端末装置200の表示部70を制御する。具体的には表示制御部50は、2D入力画像、デプスマップ生成部10により生成されたデプスマップ、デプスマップ加工部20により加工されたデプスマップ、3D画像生成部30により生成された3D画像を表示できる。
【0030】
図4は、本発明の基本となる実施例に係る画像編集システム500の全体処理プロセスを説明するための図である。一般的に2D画像には複数のオブジェクトが含まれる。
図4の2D入力画像は3つのオブジェクトを含む。具体的には人物、木、背景のオブジェクトを含む。まずデプスマップ生成部10は、2D入力画像からデプスマップを生成する(ステップS10)。デプスマップは白に近いほど輝度が高く観察者との距離が近いことを示し、黒に近いほど輝度が低く観察者との距離が遠いことを示す。3D画像を生成する場合、デプスマップの白に近い領域ほど飛び出し量が大きくなり、黒に近い領域ほど引っ込み量が大きくなる。
【0031】
本実施例では画像内の複数のオブジェクトに対して個別に奥行き感を調整するために、デプスマップ内の個々のオブジェクト領域に対して独立にエフェクト調整する。具体的には、画像中の個々のオブジェクト領域を表す複数のマスクを用いて、デプスマップ内に、個々のオブジェクト領域を特定する。そして特定されたオブジェクト領域ごとに個別にエフェクト調整し、エフェクト調整された複数のデプスマップを得る。そして、この複数のデプスマップを合成して一つのデプスマップを生成する。このデプスマップは、オリジナル視点の2D画像から別視点の2D画像を生成する際に使用される。
【0032】
デプスマップ生成部10は2D入力画像のデプスマップを自動的に生成する(S10)。生成されたデプスマップは、デプスマップ加工部20に入力される。デプスマップ加工部20には、2D入力画像内の複数のオブジェクト領域をそれぞれ表す複数のマスクも入力される。これらのマスクはユーザによりトレースされたオブジェクト領域の輪郭をもとに生成される。例えば、表示制御部50は表示部70に2D入力画像を表示させ、ユーザはその2D入力画像内においてオブジェクト領域とすべき領域の輪郭を、操作部60を使用してトレースする。操作受付部40は操作部60からの信号により、個々のオブジェクト領域の輪郭情報を生成し、マスクとしてデプスマップ加工部20に出力する。なおユーザが印刷物上に描いた輪郭をスキャナにより読み取ることによりマスクを画像処理装置100に読み込ませてもよい。
【0033】
図4では各マスクの有効領域を白で無効領域を黒で描いている。人物のマスクは人物の領域のみを有効とし、他の領域を無効とするパターンである。木のマスクは木の領域のみを有効とし、他の領域を無効とするパターンである。背景のマスクは背景のみを有効とし、他の領域を無効とするパターンである。
【0034】
1画面あたりのマスクの数に制約はなく、ユーザが任意に設定できる。またオブジェクト領域はユーザが1つのオブジェクト領域にすべきと決定した領域に設定できる。例えば、
図4に示すように1人の人物に1つのオブジェクト領域を設定してもよいし、人物の部位ごと、さらに各部位の部分ごとにオブジェクト領域を設定してもよい。特に高品質な3D画像を生成する際には、1人の人物に対しても多数のオブジェクト領域を設定し、部位ごと、さらに各部位の部分ごとに厚みや奥行き方向の位置を調整することもある。
【0035】
デプスマップ加工部20は、デプスマップ生成部10から入力されるデプスマップ(以下、入力デプスマップという)を、ユーザインタフェースを介して入力される複数のマスクを用いて加工する(S20)。デプスマップ加工部20は各マスクで特定される領域ごとに、個別にデプスマップを加工する。以下、この領域別のデプスマップの加工をデプスマップのレイヤ処理と呼ぶ。またレイヤ処理されたデプスマップをレイヤデプスマップと呼ぶ。本明細書ではレイヤを、マスクの有効領域に対する処理の単位を示す概念として使用している。
【0036】
図4では、一例としてデプスマップ加工部20は入力デプスマップから、人物のマスク(レイヤ1のマスク)を用いて人物の領域を特定してレイヤ処理している(S21a)。同様に入力デプスマップから、木のマスク(レイヤ2のマスク)を用いて木の領域を特定してレイヤ処理している(S21b)。同様に入力デプスマップから、背景のマスク(レイヤ3のマスク)を用いて背景の領域を特定してレイヤ処理している(S21c)。
【0037】
デプスマップ加工部20は、レイヤ1〜3のレイヤデプスマップの各オブジェクト領域のデプスマップを合成する(S22)。この合成されたデプスマップを合成デプスマップと呼ぶ。3D画像生成部30は、この合成デプスマップを用いて2D入力画像の画素をシフトし、2D入力画像に対して視差を持つ画像を生成する(S30)。3D画像生成部30は2D入力画像を3D出力画像の右眼画像(R)とし、生成した画像を左眼画像(L)として出力する。
【0038】
まず、デプスマップ加工部20によるレイヤ処理としてゲイン調整する例を説明する。ゲイン調整はオブジェクトの奥行き方向の厚みを調整する処理である。ゲインを上げるとオブジェクトが厚くなり、ゲインを下げるとオブジェクトが薄くなる。
【0039】
図5は、入力デプスマップのゲイン調整プロセスを説明するための図である。デプスマップ加工部20は、加工前のデプスマップである入力デプスマップに対して、人物のマスクの有効領域だけにゲインを乗算して、入力デプスマップ内の人物の部分のみデプス値の振幅を大きくする(S21a)。
図5において加工後のデプスマップであるレイヤデプスマップは人物の部分の振幅が大きくなっている(符号a参照)。
【0040】
次に、デプスマップ加工部20によるレイヤ処理としてオフセット調整する例を説明する。オフセット調整はオブジェクトの奥行き方向の位置を調整する処理である。正のオフセット値を加算するとオブジェクトが飛び出し方向に移動し、負のオフセット値を加算すると引っ込み方向に移動する。
【0041】
図6は、入力デプスマップのオフセット調整プロセスを説明するための図である。デプスマップ加工部20は、加工前のデプスマップである入力デプスマップに対して、木のマスクの有効領域だけにオフセットを加算して、入力デプスマップ内の木の部分のみデプス値のレベルを高くする(S21b)。
図6において加工後のデプスマップであるレイヤデプスマップは木の部分のレベルが高くなっている(符号b参照)。
【0042】
図7は、レイヤデプスマップの合成処理プロセスを説明するための図である。デプスマップ加工部20は、レイヤ1のレイヤデプスマップ(人物のデプスマップ)のうち、レイヤ1のマスク(人物のマスク)の有効領域のみを切り出す。同様にレイヤ2のレイヤデプスマップ(木のデプスマップ)のうち、レイヤ2のマスク(木のマスク)の有効領域のみを切り出す。同様にレイヤ3のレイヤデプスマップ(背景のデプスマップ)のうち、レイヤ3のマスク(背景のマスク)の有効領域のみを切り出す。デプスマップ加工部20は、切り出した3つのデプスマップを組み合わせて合成デプスマップを生成する。
【0043】
図8は、マスクを使用しない入力デプスマップのゲイン調整プロセスを説明するための図である。レイヤデプスマップの合成の際、各レイヤデプスマップのマスクの有効領域のみを用いて合成するのであれば、各レイヤデプスマップのマスクの無効領域は合成デプスマップに反映されないことになる。よって、デプスマップ加工部20は入力デプスマップ全体にゲインを乗算して、入力デプスマップ全体のデプス値の振幅を大きくする(S21a)。
図8においてレイヤデプスマップは全体の振幅が大きくなっている(符号c参照)。
【0044】
図9は、マスクを使用しない入力デプスマップのオフセット調整プロセスを説明するための図である。レイヤデプスマップの合成の際、各レイヤデプスマップのマスクの有効領域のみを用いて合成するのであれば、各レイヤデプスマップのマスクの無効領域は合成デプスマップに反映されないことになる。よって、デプスマップ加工部20は入力デプスマップ全体にオフセットを加算して、入力デプスマップ全体のデプス値のレベルを高くする(S21b)。
図9においてレイヤデプスマップは全体のレベルが高くなっている(符号d参照)。
【0045】
図10は、画素シフトと画素補間を説明するための図である。3D画像生成部30は合成デプスマップをもとに2D入力画像の画素をシフトし、2D入力画像に対して視差を持つ画像を生成する(S30)。
図10では2D入力画像内の人物領域の画素を左にシフトする例を示している。
図10のデプスマップは人物領域のデプス値にオフセット値が加算されて人物領域のデプス値が大きくなっている。人物領域のデプス値が大きくなると、3D画像の人物領域の飛び出し量が大きくなる。
【0046】
人物領域の周囲の背景領域を画素シフトせずに人物領域のみを画素シフトすると、画素が存在しない欠落画素領域が発生する(補正前の画素シフト画像の符号e参照)。3D画像生成部30は、この欠落画素領域をその周辺画素から生成した画素で補間して欠落画素領域を補正する。画素補間には様々な方法があるが、例えば人物領域の境界の画素で補間する(補正後の画素シフト画像の符号f参照)。
【0047】
図11は、オブジェクト境界のデプスの段差が大きい場合における、画素シフトと画素補間を説明するための図である。オブジェクト境界でのデプスの段差が大きい場合、画素シフト量も大きくなるため、欠落画素領域の面積も大きくなる。この欠落画素領域を周辺画素から生成した画素で補間する場合、その補間する領域の面積も大きくなるため、オブジェクト境界での画像の不自然、不整合、不適合が目立つようになる。
【0048】
図11では
図10と比較して人物領域の画素シフト量が大きくなっている。
図11の補正前の画素シフト画像の欠落画素領域の面積は、
図10のその面積より大きくなっている(符号g参照)。
図11の補正後の画素シフト画像でも
図10の補正後の画素シフト画像と同様に、欠落画素領域に人物領域の境界の画素を補間している。その欠落画素領域は本来は背景とすべき領域であり、その領域が大きくなると人物の形状が崩れてしまう(符号h参照)。
【0049】
また画像内のオブジェクトには、その境界が鮮明なものばかりではなく不鮮明なものも存在する。オブジェクト境界の不鮮明は、例えば撮影時のピンぼけ、手ぶれ、モーションブラーなどにより発生する。オブジェクト境界が不鮮明であいまいな場合、オブジェクト境界に合わせた適切なマスクを作成するのが困難である。不正確な輪郭で作成されたマスクを用いて、デプスマップの加工、画素シフト、画素補間を行った場合、生成される3D画像のオブジェクトの輪郭が不自然になりやすくなる。
【0050】
図12は、オブジェクト境界のデプスの段差が大きい場合でも不自然さが発生しない、画素シフトと画素補間を説明するための図である。オブジェクト境界における欠落画素領域の面積が大きい場合でも、人物と背景がなだらかに切り替わるように補間することで、オブジェクト境界の不自然を目立ちにくくできる。
【0051】
図12の補正前の画素シフト画像の欠落画素領域の面積も、
図11と同様に
図10のその面積より大きくなっている(符号i参照)。
図12の補正後の画素シフト画像では
図11の補正後の画素シフト画像と異なり、人物と背景の境界における不自然が目立ちにくくなっている(符号j参照)。
【0052】
図13は、本発明の実施例1に係る画像編集システム500の構成を示す図である。実施例1に係る画像編集システム500では、
図2の基本となる実施例に係る画像編集システム500の画像処理装置100にマスク補正部80が追加される。以下、
図13の実施例1に係る画像編集システム500と、
図2の基本となる実施例に係る画像編集システム500との相違点を説明する。
【0053】
マスク補正部80は、操作受付部40を介してコンソール端末装置200から設定されるマスクを補正してデプスマップ加工部20に出力する。具体的にはマスク補正部80はマスクのオブジェクト境界に、ぼかし処理を施す。デプスマップ加工部20は、マスク補正部80により補正されたマスクをもとに生成される、複数のオブジェクト領域の各デプスマップをアルファブレンドする。即ちデプスマップ加工部20は、複数のレイヤデプスマップを、各マスクで規定された係数(α値)にしたがい合成する。
【0054】
図14は、本発明の実施例1に係る画像編集システム500の全体処理プロセスを説明するための図である。
図14の処理プロセスは
図4の処理プロセスに、マスクぼかし処理が追加された構成である。以下、相違点について説明する。なお以下の説明では、マスクの有効領域(図では白で描いている)内の画素値を1、無効領域(図面では黒で描いている)内の画素値を0とする。
【0055】
実施例1では操作受付部40から出力されるレイヤ1のマスク(人物のマスク)、レイヤ2のマスク(木のマスク)及びレイヤ3のマスク(背景のマスク)は、デプスマップ加工部20に入力される前にマスク補正部80に入力される。マスク補正部80は各マスクのオブジェクト境界部分にぼかし処理を施す(S15a〜S15c)。具体的にはマスク補正部80は、マスク信号のエッジ(即ち、0と1の境界)及びその近傍領域(以下、両者を総称してエッジ領域という)の値を、0と1の間の値(0と1を除く)に補正する(符号k参照)。
【0056】
デプスマップ加工部20は、補正されたマスクのレベルに応じて、レイヤデプスマップを合成する(S22)。これによりマスクのエッジ領域では、なだらかにデプス値が変化する合成デプスマップを生成できる。3D画像生成部30は、この合成デプスマップを用いて画素シフト、画素補間を行う。これによりオブジェクト境界がなだらかに変化し、オブジェクト境界の不自然が目立たなくなる。
【0057】
図15は、レイヤデプスマップのアルファブレンドを説明するための図である。デプスマップ加工部20は、マスク補正部80により補正された各マスク信号の値をもとに、各レイヤデプスマップ内のデプス値のブレンド比率を決定する。各レイヤデプスマップは指定された順番に重ね合わされる。重ね合わせの順番はユーザが操作部60から入力し、操作受付部40を介してデプスマップ加工部20に設定される。本明細書の例では背景のレイヤデプスマップ、木のレイヤデプスマップ、人物のデプスマップの順番で重ね合わされる。
【0058】
図15においてレイヤn(nは自然数)のマスク信号のエッジ領域は、0%から50%への垂直な立ち上がりと、50%から100%へのなだらかな傾斜から構成される。各パーセンテージの数値は合成比率を示している。このレイヤnのマスク信号を用いて、レイヤnのデプス信号(以下、レイヤnデプスという)と、レイヤΣ(n−1)の合成デプス信号(以下、レイヤΣ(n−1)デプスという)をブレンドする。レイヤΣ(n−1)デプスは、レイヤ1からレイヤ(n−1)までの各デプス信号をブレンドした合成デプス信号である。即ち、レイヤnデプスがブレンドされる時点までに生成された合成デプス信号である。
【0059】
レイヤnのマスク信号の合成比率が0%の期間(符号l参照)では、レイヤnデプスが0%、レイヤΣ(n−1)デプスが100%でブレンドされる。即ち、レイヤΣ(n−1)デプスはレイヤnデプスにより全く上書きされず、レイヤΣ(n−1)デプスがそのまま出力される(符号o参照)。レイヤnのマスク信号の合成比率が50%の時点(符号p参照)では、レイヤnデプスが50%、レイヤΣ(n−1)デプスが50%の比率でブレンドされる。
【0060】
レイヤ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までの各デプス信号をブレンドした合成デプス信号である。
【0061】
なおレイヤデプスのブレンドの際に、レイヤΣ(n−1)デプスのマスク信号は使用されない。レイヤΣnデプスのマスク信号のみにより、レイヤΣnデプスとレイヤΣ(n−1)デプスとの合成比率が決定される。したがってレイヤデプスの重なりが多い領域では、下のレイヤデプスのデプス値はレイヤデプスが重ねられるにつれ薄まっていく。
【0062】
以下、マスク信号のエッジをぼかす処理について具体的に説明する。このぼかし処理は以下の3つの基本ステップからなる。まずオリジナルのマスク信号のエッジを、対象となるオブジェクトの輪郭に対して適切な位置になるように移動させる。これによりマスクのオブジェクト領域の面積が拡大または縮小する。次に当該マスクのエッジに傾斜をつける。最後に傾斜をつけたマスクのエッジ領域を制限する。
【0063】
以下、上述のぼかし処理をローパスフィルタを用いて行う方法を説明する。まず黒い部分のレベルが0、白い部分のレベルが1であるマスクにローパスフィルタをかける。これにより、平坦部分のレベルは変化させずに、エッジ領域に0と1の中間のレベルの傾斜が付加されたマスクを生成できる。
【0064】
さらにマスクのエッジ領域のうち、マスクの有効領域に対して外側にのみ傾斜を付け、内側は加工前のレベルを保持したい場合がある。またその逆に、マスクのエッジ領域のうち、マスクの有効領域に対して内側にのみ傾斜を付け、外側は加工前のレベルを保持したい場合もある。これらの場合を考慮して、マスクの有効領域を拡大または縮小して、マスク信号のエッジの位置を任意に移動させる処理を、ぼかしマスク生成用のローパスフィルタの前段に挿入する。
【0065】
さらに、ぼかし処理によりマスクのエッジが意図した量より大きく拡大することを防ぐために、ぼかされたエッジ領域を制限する処理を、ぼかしマスク生成用のローパスフィルタの後段に挿入する。以下、このローパスフィルタを用いたぼかし処理について、より具体的に説明する。
【0066】
図16は、マスク補正部80の構成例を示す図である。マスク補正部80は第1ローパスフィルタ81、二値化部82、第2ローパスフィルタ83、クリッピング部84を含む。これらの構成もハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。
【0067】
1段目の第1ローパスフィルタ81は、オリジナルのマスク信号にローパスフィルタをかける。二値化部82は第1ローパスフィルタ81から出力される、エッジに傾斜がついたマスク信号を第1閾値を用いて二値化する。第1ローパスフィルタ81および二値化部82の作用により、オリジナルのマスク信号のエッジの位置が移動される。
【0068】
2段目の第2ローパスフィルタ83は、二値化部82から出力されるエッジの位置が移動されたマスク信号にローパスフィルタをかける。これによりマスク信号のエッジに傾斜がつけられる。クリッピング部84は第2ローパスフィルタ83から出力される、エッジに傾斜がついたマスク信号を第2閾値を用いて、第2閾値以下の信号を0にクリッピングする。
【0069】
図17は、
図16のマスク補正部80によるマスクぼかし処理を説明するための図である。
図17の左に処理フローを、中央にマスクの信号波形を、右にマスクの画像を示す。
図17の説明ではマスクの各画素値が8ビットで規定され、マスクの画像において黒が0(0b00000000)、白が255(0b11111111)であるとする。通常、オリジナルのマスク信号は0または255のみを持つ二値信号である。
【0070】
オリジナルのマスク信号は、第1ローパスフィルタ81に入力される。第1ローパスフィルタ81はマスク信号のエッジの位置をかえる前処理として、オリジナルのマスク信号にローパスフィルタをかける(S81)。具体的には第1ローパスフィルタ81はオリジナルのマスク信号を、エッジ領域が傾斜を持つマスク信号に加工する。傾斜部分の値は0と255の間の値(0と255を除く)に加工される。
【0071】
次に二値化部82はマスク信号のエッジの位置をかえる前処理として、加工されたマスク信号の値と第1閾値を比較してマスク信号を二値化する(S82)。具体的にはマスク信号の値が第1閾値よりも大きい場合はマスク信号の値を255に設定し、小さい場合は0に設定する。これにより再び、マスク信号は0または255のみを持つ二値信号となる。
【0072】
第1閾値が0と255の中間値である127より小さく設定される場合、二値化されたマスク信号のエッジは、オリジナルのマスク信号のエッジよりも外側に移動される。この場合、マスクの画像内において白の面積が拡大する。一方、第1閾値が中間値である127より大きく設定される場合、二値化されたマスク信号のエッジは、オリジナルのマスク信号のエッジよりも内側に移動される。この場合、マスクの画像内において白の面積が縮小する。なお第1閾値が中間値である127に設定される場合、二値化されたマスク信号のエッジは、オリジナルのマスク信号におけるエッジの位置と同じになる。
【0073】
図17ではマスク信号のエッジの位置を外側に移動させる例を示している。第1ローパスフィルタ81のタップ数や係数などのフィルタ特性および二値化部82の第1閾値を可変することにより、マスク信号のエッジの位置を任意に調整できる。
【0074】
図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を簡素化できる。
【0075】
図17に戻る。エッジの位置が移動されたマスク信号は第2ローパスフィルタ83に入力される。第2ローパスフィルタ83は、エッジの位置が移動されたマスク信号にローパスフィルタをかける(S83)。これにより、再びエッジ領域に傾斜が付加されたぼかしマスクが生成される。
【0076】
次にクリッピング部84は、第2ローパスフィルタ83により生成されたエッジ領域に傾斜を持つマスク信号の値と第2閾値を比較して、当該マスク信号の値が第2閾値以下のときマスク信号の値を0に設定する(S84)。即ちエッジ領域において白側の傾斜は残し、黒側の傾斜は急峻に落とす。これにより第2閾値より大きい領域では白からグレーに変化する傾斜がつき、第2閾値以下の領域では黒のマスクを生成できる。このクリッピング処理により、マスク内のぼかしをかけた領域を制限し、マスクのエッジ領域が意図した大きさより、大きくなることを抑制できる。
【0077】
図17では、ぼかし処理を水平方向にかける例を示しているが、二次元ローパスフィルタを用いることにより、ぼかし処理を水平方向と垂直方向の両方にかけることもできる。その際、水平方向と垂直方向で係数が異なるフィルタを用いてもよい。その場合、水平方向と垂直方向とで個別にマスク信号のエッジの位置、傾斜の度合い、ぼかし幅を調整できる。
【0078】
また水平方向と垂直方向で係数が異なり、かつ斜め方向は縦横の係数の中間値を持つ楕円状の二次元ローパスフィルタを用いてもよい。楕円状の二次元ローパスフィルタを用いれば、水平方向と垂直方向とで個別にマスク信号のエッジの位置および傾斜の度合い、ぼかし幅を調整でき、その調整を斜め方向に作用させることもできる。例えば、正方形のオリジナルマスクを、縦横が任意の長さで、かつ角が丸くなった長方形に加工することができる。また正方形のオリジナルマスクを、縦横の傾斜の度合いが個別かつ任意で、角においては縦横の傾斜の度合いと連続性を持ちつつなだらかに変化する傾斜を持つ全方位に任意のなだらかな傾斜がついた長方形に加工することもできる。
【0079】
図19は、第1ローパスフィルタ81により付加される傾斜と、第2ローパスフィルタ83により付加される傾斜を比較するための図である。第1ローパスフィルタ81により付加される傾斜(符号t参照)は、二値化境界位置を調整するために使用される仮の傾斜であり、二値化後には消える。したがって傾斜は一定の角度で線形に変化する傾斜でよい。第2ローパスフィルタ83により付加される傾斜(符号t参照)は、残る傾斜であるため、ユーザがその傾斜の形状も調整するとよい。例えば傾斜の上部では上が凸の、下部では下が凸の形状に調整してもよい。この形状に調整すると、クリッピングされる幅を大きくできる。
【0080】
このように、第1ローパスフィルタ81、第2ローパスフィルタ83のタップ数や係数などのフィルタ特性、二値化部82の第1閾値、クリッピング部84の第2閾値を調整することにより、マスク信号のエッジの位置、マスクの有効領域の面積、ぼかし幅をそれぞれ自由に調整できる。また全てのレイヤのマスク信号に同一のぼかし処理をかける必要はなく、各レイヤのマスク信号ごとに個別にぼかし処理をかけてもよい。
【0081】
以上のぼかし処理により、マスク信号のエッジを任意の位置に移動させ、マスクの有効領域の面積を変化させることができる。またエッジ領域に任意の傾きの傾斜をつけることができる。さらにマスクのぼかし領域を任意に制限することができる。
【0082】
ぼかしマスクは、後段のデプスマップの合成で使用される。デプスマップ加工部20は、ぼかしマスクのレベルに応じて、複数のレイヤデプスマップをアルファブレンドする。その際、ぼかしマスクのレベルに応じて、各レイヤデプスマップの合成比率が決定される。
【0083】
以上説明したように実施例1によれば、レイヤデプスマップを合成する際、ぼかしマスクを使用することにより、合成デプスマップのオブジェクト境界部分に連続性を持たせることができる。即ちオブジェクト境界部分に大きな段差がある場合、その段差をなだらかにすることができる。したがって、この合成デプスマップをもとに生成される別視点の画像のオブジェクト境界部分を自然な境界に仕上げることができる。
【0084】
また境界があいまいなオブジェクトに対して、不正確な輪郭で作成されたマスクを用いた場合でも、その輪郭の位置を調整することにより、生成される3D画像のオブジェクトの輪郭が不自然な輪郭となることを回避できる。
【0085】
(実施例2)
次に実施例2について説明する。実施例1では、デプスマップを加工する際の基準となるマスクに対して以下の処理を施した。マスクの有効エリアの面積を可変する。マスクのエッジ部分に傾斜をつける(具体的には、0または1ではなく 0.5などの中間値を作る)。マスクにつけた傾斜(中間値)の値に応じて、デプスマップをαブレンド合成する。合成されたデプスマップにローパスフィルタをかけて、急峻な変化を抑圧する。
【0086】
実施例1では、これらの処理により、合成デプスマップのオブジェクトの境界部分に連続性を持たせ、この合成デプスマップを基に生成された画像(3D画像)のオブジェクトの境界部分の不自然を目立たなくすることを示した。
【0087】
マスクぼかし処理は、デジタルフィルタによる積和演算処理を伴うが、一般に積和演算処理は1画素あたりの演算量がフィルタのタップ数に応じて増加するうえ、特に二次元フィルタを用いた処理を行う場合は、演算量はフィルタの水平と垂直のタップ数の積に依存するため、膨大な演算量となる。このため、マスクぼかし処理には多くの時間がかかる。実施例1に係る方法では、マスクぼかし処理を対象のマスクに対して一律に適用するため、本来マスクぼかし処理の必要がない部分にまでマスクぼかし処理が行われ、その補正の副作用により画像が不自然に変化してしまう場合がある。また、本来必要の無い演算処理を行い、余計な時間がかかってしまうことがある。実施例2では、マスクぼかし処理の特殊性を考慮したうえで、マスクの補正処理度合いを局所的に変える手段を講じる。
【0088】
マスクぼかしの目的は、生成された画像(3D画像)のオブジェクトの境界部分の破綻を目立たなくすることである。また、オブジェクトの境界部分の破綻とは、画素シフトによる抜け画素部分を、周辺画素で補完する際に、オブジェクト近傍の背景部分のテクスチャ画像に歪みが生じることで発生する。よって、オブジェクトの境界部分の破綻は、オブジェクト近傍の背景部分のテクスチャが存在するかどうかに依存する。言い換えれば、オブジェクト近傍の背景部分にテクスチャが存在せず、特徴の無い平坦な画像であった場合には、オブジェクトの境界部分の破綻は発生しないため、マスクぼかしは不要である。
【0089】
実施例2では、マスクぼかしの処理適応の最適化の指標として、オブジェクト近傍の背景部分のテクスチャ量を用いることを特徴とする。すなわち、入力画像に対して解析処理を行うことで、画像中の各々の部分におけるテクスチャ量を算出し、これをもって、マスクぼかし処理の強度を画素毎に適応的に制御することで、マスクぼかし処理適応の最適化を図る。たとえば、背景テクスチャが多く存在する箇所においては、マスクぼかし処理が強めにかかるようにし、逆に、背景テクスチャ量が少ないか、または存在しない箇所においては、テクスチャ量に応じてマスクぼかしの強度を抑圧し、必要以上に強いマスクぼかし処理が適用されないように制御する。
【0090】
以下、
図20と
図21を用いて、実施例2について説明する。図中で実施例1と同じ、または同様の機能を持つ部分には同じ記号を付し、説明を省略する。
図20に示す様に、実施例2に係る画像編集システム500は、
図13に示す実施例1に係る画像編集システム500に対し、テクスチャ解析部90が追加され、また、マスク補正部80の動作が一部異なる。
【0091】
図21のステップS51で、テクスチャ解析部90は入力画像の背景テクスチャを検出する。具体的には、入力画像の隣接画素間の輝度値を微分し、絶対値を取る。これにより隣接画素間での輝度値の変化量を求めることができる。結果が大きい箇所は、画像の輝度変化が大きい部分、すなわち、よりコントラストの高いテクスチャが存在する場所であると判断できる。
【0092】
以下で、具体的な処理の一例を説明する。入力画像の水平方向の位置をx、垂直方向の位置をyとし、画像内の位置(x, y)における輝度値をf(x, y)であらわすこととする。水平一画素間の差分を取る処理を画素の微分と定義すると、その画素ポジションにおける入力画像の輝度の微分値D(x, y) は、以下の式で表される。
D(x, y)= f(x+1, y)−f(x, y)
D(x, y)は、隣接画素 f(x+1, y)、f(x, y) 間の輝度の差が大きくなるほど、絶対値が大きな値をとる。このため、上記の微分処理は、入力画像の画素値の変化、すなわち画像のテクスチャ量を抽出していることに相当する。なお、上記ではx方向、すなわち入力画像の水平方向に微分を行う場合について示したが、垂直方向の微分、または水平、垂直の微分結果を合算してもよい。
【0093】
また微分式は上記に限らず、2画素間の差分など、隣接画素間での輝度値の変化量を求める式とすることができる、他のいかなる計算方法を用いても良いことはもちろんである。上記の微分結果D(x, y)の絶対値を入力画像の背景テクスチャ量F(x, y)とし、マスク補正部80に入力する。
F(x, y)=|D(x, y)|
なお、ここでは輝度に着目して説明したが、色相、明度、彩度など画像に関する他の尺度を用いてもよいし、これらを組み合わせて、入力画像の背景テクスチャ量を算出してもよい。
【0094】
ステップS52で、マスク補正部80はテクスチャ解析部90から受け取った信号に基づき、マスクぼかし処理の強度を設定する。マスクぼかし処理の強度を制御することは、マスクぼかしフィルタのタップ数を制御することと等価である。
【0095】
図22、
図23を用いて、フィルタのタップ数の多さと、フィルタ処理したマスク形状との関係を説明する。
図22(a)はタップ数の少ないローパスフィルタの一例を示す。
図22(b)で、M1は加工前のマスクを、M2は(a)のフィルタでフィルタ処理したマスクを示す。
図23(a)はタップ数の多いローパスフィルタの一例を示す。
図22(b)で、M1は加工前のマスクを、M2は(a)のフィルタでフィルタ処理したマスクを示す。
【0096】
図22(b)のM2と
図23(b)のM2を比較するとわかるように、処理するフィルタのタップ数が多いほどマスクエッジの傾斜が緩やかになり、広がりが大きくなる。これをマスク補正部80の1段目のLPFに当てはめると、マスクの有効エリアの面積を拡大するフィルタのタップ数を多くするほど、マスクぼかしの効果はマスクエッジからより遠い範囲にまで及ぶようになる。また、マスク補正部80の2段目のLPFに当てはめると、マスクのエッジ部分に傾斜をつけるフィルタのタップ数を多くするほど、マスクのエッジのぼけ量、すなわちエッジの傾斜は緩やかになり、背景と前景のデプスのαブレンド合成を行う範囲が広くなり、マスクぼかの強度が高まることになる。
【0097】
次に、ステップS52のマスクぼかし処理の強度設定についての一例を具体的に説明する。入力画像が8bitデータである場合には、入力画像の背景テクスチャ量F(x, y)の最大値は255を超えることは無いため、入力画像の背景テクスチャ量は、0〜255のレンジで正規化されている。
0〜255のレンジで正規化された入力画像の背景テクスチャ量を用いて、以下の式によりフィルタのタップ数Tを算出する。
T=Tmax × F(x, y)/ 255
Tmaxは、フィルタの最大タップ数である。フィルタの最大タップ数に、入力画像の背景テクスチャ量を基にして算出される係数を掛けることで、フィルタのタップ数を設定し、マスクぼかし処理の強度を変更する。
フィルタのタップ数は整数である必要があるが、上記の計算結果のタップ数が整数でなくなった場合の扱い(四捨五入、切捨て、切り上げなど)については任意で選択できる。また、ここでは、入力画像の背景テクスチャ量が0〜255のレンジの場合について説明したが、これ以外のレンジの背景テクスチャ量を用いることも可能である。
ステップS53からS56については、実施例1で説明した、
図17におけるステップS81からS84と同様である。
【0098】
以上のように実施例2では実施例1による効果に加え、背景のテクスチャの解析結果により、マスクの補正処理度合いを局所的に変えるため、本来補正の必要ない部分にマスク処理をすることが無くなり、演算量が削減されるという効果がある。また、マスク補正の必要が無い部分にまで補正処理が行われ、その補正の副作用により画像が不自然に変化してしまうことを避けることができるという効果がある。
【0099】
以上の説明では、入力画像のビット数に対応するレンジで正規化した背景テクスチャ量F(x, y)に対し、線形演算にてフィルタのタップ数Tを算出したが、背景テクスチャ量F(x, y)からフィルタのタップ数Tを導出する方法はこれに限らず様々な応用が可能である。以下、背景テクスチャ量F(x, y)からフィルタのタップ数Tを導出する変形例について説明する。
【0100】
(変形例1)
変形例1では、入力画像の背景テクスチャ量F(x, y)に閾値を設け、閾値より小さい場合フィルタをかけない、、またはフィルタのタップ数を最小とする。入力画像の背景テクスチャ量F(x, y)が著しく小さい場合は、画像のテクスチャ量ではなくノイズ成分を検出している可能性がある。フレームごとにランダムに変化するノイズ成分に基づいてマスクぼかしの強度を制御した場合、フレーム単位でマスクぼかしの効果が意図せずに変化してしまい、不都合が生じる。また、入力画像の背景テクスチャ量F(x, y)が著しく小さい場合は、本来テクスチャが存在しない平坦部分に重畳されているノイズ成分を検出している可能性が高い。すなわちこの部分は、本来マスクぼかし処理の必要がない部分である可能性が高い。従って、背景テクスチャ量F(x, y)がある一定の閾値以下となった場合はフィルタをかけないこととしてもよく、むしろこの方が良好な処理結果を得られる可能性が高いといえる。
【0101】
図24に、変形例1における背景テクスチャ量F(x, y)とフィルタのタップ数Tの関係を図示する。
図24(a)は、背景テクスチャ量F(x, y)の増加に対し、フィルタのタップ数が増加する条件で、背景テクスチャ量が閾値F1より小さい場合にフィルタのタップ数をゼロ、即ちフィルタをかけないとした状態を示す。
図22(a)では閾値F1前後でフィルタのタップ数Tが不連続になる。この場合、ぼかしによる画像変化が不連続となることが想定される。そこで、
図22(b)に示すように、オフセットをかけて、閾値の前後におけるフィルタのタップ数が連続な値をとるように制御することにより、フィルタをかけない部分とかける部分の画像変化を緩やかにしても良い。
【0102】
以上のように変形例1では本来マスクぼかしの必要の無い、入力画像の背景テクスチャ量F(x, y)が著しく小さい部分にマスクぼかしを行わないことで、より有効なマスクぼかし処理を実現できる。
【0103】
(変形例2)
変形例2では、入力画像の背景テクスチャ量を再正規化する。入力画像が8bitデータである場合は、背景テクスチャ量が0〜255のレンジで正規化されるが、この背景テクスチャ量のレンジを任意のダイナミックレンジで再正規化する。以下、具体例を示す。
【0104】
次式により、背景テクスチャ量の再正規化を行う。
F’(x, y) =0 (F(x, y)<F2)
F’(x, y) =(F(x, y)−F2)/(F3−F2)×255 (F2≦F(x, y)<F3)
F’(x, y) =255 (F3≦F(x, y))
ここで、F2は入力画像の背景テクスチャ量の最小値閾値、F3は入力画像の背景テクスチャ量の最大値閾値であり、それぞれ0〜255間で任意に設定可能である(但し、F2<F3)。F’(x, y)は正規化後の背景テクスチャ量である。上記計算式を用いた処理を行うことにより、背景テクスチャ量は、閾値F2とF3の間でリニアに増加し、閾値F2とF3の範囲外では一定の値をとる物理量に変換することができる。
図25に、背景テクスチャ量F(x, y)と、再正規化後の背景テクスチャ量F’(x, y)の関係を図示する。
【0105】
変形例2では、背景テクスチャ量を再正規化し、再正規化したテクスチャ量に基づいてフィルタのタップ数を決めることにより、入力画像の背景テクスチャ量F(x, y)のうち、任意のテクスチャ量の範囲に対して、フィルタのタップ数の制御ゲインを有効に配分することが可能となる。また、入力画像の最小閾値F2を、ノイズ成分に影響されない値に設定することで、変形例1と同様に本来マスクぼかしの必要の無い、入力画像の背景テクスチャ量F(x, y)が著しく小さい部分にマスクぼかしを行わないことで、より有効なマスクぼかし処理を実現できる。
【0106】
ここでのダイナミックレンジの再正規化方法は一例であり、他の方法で行うことはもちろん可能である。また、ここでは0〜255のレンジの場合について説明したが、もちろんこのレンジ以外で再正規化することも可能である。さらに閾値として最大閾値と最小閾値を用いたが、どちらか一方でも構わない。
【0107】
(変形例3)
変形例3では背景テクスチャ量に対して任意の変換テーブルを使用することでタップ数を設定する。変換テーブルを使用することで背景テクスチャ量に応じたタップ数を任意に設定することができ、所望の特性を実現することができる。このため、例えばタップ数が必要以上に多く、所望のマスクぼかしを得られなかった場所でも、タップ数を任意に少なくすることでマスクぼかしを弱くすることができる。反対に、タップ数が必要な数より少なく所望のマスクぼかしを得られなかった場所に、タップ数を任意に多くしてぼかしを強くするということもできる。
【0108】
図26に変換テーブルを使用した一例を示す。変換テーブルを使用した場合の背景テクスチャ量F(x, y)とフィルタタップ数Tの関係を実線で示す。一点斜線で示した直線は比較のために図示した特性であり、背景テクスチャ量F(x, y)に対してフィルタタップ数Tを線形演算によって求めた場合の特性である。
【0109】
同様の変換を、演算式により実現するためには、複雑な演算が必要となるが、変換テーブルを用いることで、ユーザが望む任意の変換特性を複雑な計算式を用いることなく実現することができる。ここでは、背景テクスチャ量F(x, y)が0〜255のレンジの場合について説明したが、これ以外のレンジとなった場合も任意で変換テーブルを設定可能である。
【0110】
(変形例4)
変形例4では、背景テクスチャ量F(x, y)に任意のローパスフィルタをかけて、テクスチャ量を分散させることで、ぼかしのかかり方を均一化する。これにより均一なぼかしをかけたマスクを生成でき、自然な3D画像が生成できる。ローパスフィルタの一例を以下に示す。
輝度の微分値D(x, y)に対してローパスフィルタをかけるとD’(x, y)は、
D’(x, y)= (D(x, y) + D(x−1, y)×0.5 + D(x+1, y)×0.5) / 2
となる。
上記はローパスフィルタの一例であり、タップ数含めて、他の形式のローパスフィルタでももちろんよい。またここでは水平にローパスフィルタをかけることを示したが、垂直にかけたり、二次元ローパスフィルタを用いて水平と垂直の両方にかけたりしても良いことはもちろんである。
【0111】
ローパスフィルタを使用することで、マスクぼかしが不自然にかかることを防ぐことができる。例えば背景テクスチャが縞模様状であった場合、縞模様の間隔によっては、縞と縞のエッジ部分にはマスクぼかしが強くかかるが、縞の中心付近ではあまりぼかしがかからない場合がある。そのためマスクぼかしのかかり方が場所ごとに極端になり、その結果、生成された3D画像も不自然になってしまう。背景テクスチャ量F(x, y)に任意のローパスフィルタをかけることで、縞模様のエリア全体に一様に、そのエリアのテクスチャ量の総量に応じたマスクぼかしをかけることができる。