画像処理装置およびその方法
【課題】 複雑領域を含む被写体領域の画像の切出精度を向上する。
【解決手段】 被写体画像を含む画像が記録された前景画像、および、画像から被写体画像を除いた画像が記録された背景画像を入力する。前景画像と背景画像の差分画像を生成し、差分画像から前景画像の領域を分割するための閾値を取得し、差分画像と閾値を用いて、前景画像を被写体領域と背景領域に分割するための領域画像を生成する(S401、S403)。前景画像と背景画像を用いて、被写体画像が含む複雑な形状の複雑領域を検出し、検出した複雑領域における領域画像の生成を繰り返して領域画像を更新する(S402)。
【解決手段】 被写体画像を含む画像が記録された前景画像、および、画像から被写体画像を除いた画像が記録された背景画像を入力する。前景画像と背景画像の差分画像を生成し、差分画像から前景画像の領域を分割するための閾値を取得し、差分画像と閾値を用いて、前景画像を被写体領域と背景領域に分割するための領域画像を生成する(S401、S403)。前景画像と背景画像を用いて、被写体画像が含む複雑な形状の複雑領域を検出し、検出した複雑領域における領域画像の生成を繰り返して領域画像を更新する(S402)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像から被写体領域の画像を切り出す画像処理に関する。
【背景技術】
【0002】
画像から被写体領域の画像を切り出す手法として、一般にクロマキーが知られている。クロマキーは、特定色(例えば青色や緑色)を背景として撮影した画像から被写体領域の画像を切り出す技術であり、例えば特許文献1に開示されている。
【0003】
クロマキーを利用するには、特定色の背景を用意する必要があり、撮影準備が大変である。そこで、近年、背景差分により被写体領域の画像を切り出す手法が用いられるようになった。この手法は、被写体と背景が映った前景画像と、背景のみが映った背景画像を用意し、前景画像と背景画像の差分から被写体領域の画像を切り出す。しかし、前景画像と背景画像の差分を単純にとるだけでは、被写体領域の画像を精度よく切り出すことが難しい。
【0004】
背景差分により被写体領域の画像を切り出す精度(以下、切出精度)を向上する方法として、例えば特許文献2は、一度背景差分により被写体領域を抽出し、被写体領域のエッジの細部を拡張して、正確なエッジ形状をもつ被写体領域を得る発明を開示する。
【0005】
しかし、背景差分による被写体領域の抽出は、画像の特徴によって精度が大きく左右され、画像全体を一様に処理すると、個々の画像によって切出精度に差が生じる。とくに毛髪のような複雑な形状の領域が背景に絡む被写体領域(以下、複雑領域)において、切出精度が著しく低下する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許第3581835号(特開2002-271812公報)
【特許文献2】特開平10-023452号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、複雑領域を含む被写体領域の画像の切出精度を向上することを目的とする。
【課題を解決するための手段】
【0008】
本発明にかかる画像処理は、被写体画像を含む画像が記録された前景画像、および、前記画像から前記被写体画像を除いた画像が記録された背景画像を入力し、前記前景画像と前記背景画像の差分画像を生成し、前記差分画像から前記前景画像の領域を分割するための閾値を取得し、前記差分画像と前記閾値を用いて、前記前景画像を被写体領域と背景領域に分割するための領域画像を生成し、前記前景画像と前記背景画像を用いて、前記被写体画像が含む複雑な形状の領域が背景に絡む複雑領域を検出し、前記生成手段に、前記検出した複雑領域における前記領域画像の生成を繰り返させて前記領域画像を更新することを特徴とする。
【発明の効果】
【0009】
本発明によれば、複雑領域を含む被写体領域の画像の切出精度を向上することができる。
【図面の簡単な説明】
【0010】
【図1】実施例の画像処理装置の構成例を説明するブロック図。
【図2】切出合成処理のUIの一例を説明する図。
【図3】切出合成のフローを説明するフローチャート。
【図4】切出合成処理を説明するフローチャート。
【図5】絶対背景領域画像の生成の詳細を説明するフローチャート。
【図6】絶対背景領域画像の更新の詳細を説明するフローチャート。
【図7】絶対前景領域画像の生成の詳細を説明するフローチャート。
【図8】三値マップの生成の詳細を説明するフローチャート。
【図9】各画像を説明する図。
【図10】絶対背景領域画像の生成の概要を説明する図。
【図11】実施例2の切出合成処理を説明するフローチャート。
【図12】実施例3の三値マップから複雑領域を検出する例を説明するフローチャート。
【発明を実施するための形態】
【0011】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。
【実施例1】
【0012】
[装置の構成]
図1のブロック図により実施例の画像処理装置の構成例を説明する。
【0013】
CPU101は、RAM102をワークメモリとして、ROM103やハードディスクドライブ(HDD)108などの不揮発性メモリに格納されたOSを含む各種プログラムを実行し、システムバス107を介して、後述する構成を制御する。
【0014】
汎用インタフェイス(I/F)104は、例えばUSBのようなシリアルバスインタフェイスで、マウスやキーボードなどの入力デバイス111、プリンタ112のような出力デバイスが接続される。ビデオカード(VC)105は、ビデオインタフェイスで、LCDなどのモニタ113が接続される。汎用I/F106は、例えばUSBやIEEE1394などのシリアルバスインタフェイスで、例えばディジタルスチルカメラやディジタルビデオカメラなどの撮像デバイス114が接続される。なお、汎用I/F104と106は一つにまとめることもできる。
【0015】
CPU101は、モニタ113にユーザインタフェイス(UI)を表示する。ユーザは、入力デバイス111を操作して、UIに対して指示やデータや入力する。CPU101は、入力デバイス111からユーザ指示やデータを入力し、それら入力に従いプログラムを実行して各種処理を行う。CPU101は、映像の読み込みが指示された場合、撮像デバイス114を制御して撮像デバイス114が出力する撮像データを入力し、撮像データが示す映像をモニタ113に表示したり、撮像データをRAM102やHDD108などの所定領域に格納する。
【0016】
[切出合成処理]
CPU101が実行するプログラムには、後述する、被写体領域の画像を切り出す処理(以下、切出処理)と、切り出した被写体領域の画像を任意の背景画像に合成する合成処理を行う切出合成処理プログラムが含まれる。
【0017】
切出処理は、被写体と背景が同時に記録された前景画像と、被写体を除いた背景のみが記録された背景画像から、前景画像の各画素に対する透明度を記録したアルファチャネルのマット(以下、アルファマット)を作成する。そして、アルファマットを用いて前景画像から被写体領域の画像を切り出す。また、合成処理は、アルファマットを用いて切り出された被写体領域を、任意の背景画像(以下、代替画像)に合成する。
【0018】
以下の説明において、前景画像、背景画像、アルファマット、代替画像、後述する差分画像の大きさは同一であり、それら画像の幅はW画素、高さはH画素である。また、前景画像、背景画像、代替画像はRGBチャネルの画像データであり、各チャネルは8ビットデータで表現される。また、アルファマット、差分画像は8ビットデータで表現される1チャネルの画像データである。また、画像データの各画素の位置は、画像の左上隅を原点として右方向にx値が増加し、下方向にy値が増加するxy座標系によって表される。
【0019】
●UIと切出合成のフロー
図2により切出合成処理のUIの一例を説明する。なお、このUIは、切出合成の実行が指示されると、CPU101がモニタ113に表示するUIである。また、図3のフローチャートにより切出合成のフローを説明する。また、図9により各画像を説明する。
【0020】
ユーザは、OSが提供するファイル管理システムを操作して前景画像(図9(a))を選択し、前景画像を前景画像表示部201にフィット表示させる。例えば、前景画像のデータファイルを示すアイコンを前景画像表示部201にドラッグアンドドロップすることで、前景画像を選択(指定)する(S301)。
【0021】
同様に、ユーザは、ファイル管理システムを操作して背景画像(図9(b))を選択し、背景画像を背景画像表示部202にフィット表示させる。例えば、背景画像のデータファイルを示すアイコンを背景画像表示部202にドラッグアンドドロップすることで、背景画像を選択(指定)する(S302)。
【0022】
同様に、ユーザは、ファイル管理システムを操作して代替画像を選択し、代替画像を代替画像表示部203にフィット表示させる。例えば、代替画像のデータファイルを示すアイコンを代替画像表示部203にドラッグアンドドロップすることで、代替画像を選択(指定)する(S303)。
【0023】
ユーザは、新たに、画像のデータファイルを各表示部にドラッグアンドドロップすることで、各画像の指定を任意のタイミングで変更することができる。また、各画像の指定順は任意である。CPU101は、三つの画像(前景画像、背景画像、代替画像)が指定されたか否かを判定し(S304)、三つの画像が指定されると合成処理実行ボタン204が有効にする(S305)。なお、CPU101は、三つの画像が指定されるまで、ステップS301からS303の処理を可能にする。
【0024】
ユーザが合成処理実行ボタン204がクリックすると(S306)、CPU101は、前景画像、背景画像、代替画像から合成画像を生成し(S307)、生成した合成画像を合成画像表示部205にフィット表示する(S308)。
【0025】
他方、ユーザが終了ボタン206をクリックすると(S309)、CPU101は、切出合成処理を終了する。ただし、合成画像を表示している場合は(S310)、合成画像を保存するための図示しない保存ダイアログを表示する(S311)。ユーザが合成画像の保存を望む場合(S312)、CPU101は、例えばRAM102の所定領域に生成した合成画像を、ユーザ指示に従い、例えばHDD108に格納する(S313)。また、合成画像の保存を望まない場合、ユーザは保存ダイアログのキャンセルボタンをクリックし、CPU101は合成画像を破棄する。
【0026】
●切出合成処理のフロー
図4のフローチャートにより切出合成処理(S307)を説明する。
【0027】
CPU101は、詳細は後述するが、前景画像(図9(a))と背景画像(図9(b))を用いて、前景画像を絶対背景領域とその他の領域に分割して絶対背景領域画像(図9(c))を生成する(S401)。絶対背景領域画像は、幅W、高さHの画像データであり、例えば、絶対背景領域に含まれる画素には0を、その他の領域に含まれる画素には255を設定する。
【0028】
次に、CPU101は、詳細は後述するが、絶対背景領域画像に基づき、例えば毛髪のような複雑な形状の領域が背景に絡む被写体領域(以下、複雑領域)において、追加の領域分割を行い、絶対背景領域画像を更新する(S402)。
【0029】
次に、CPU101は、詳細は後述するが、前景画像と背景画像を用いて、前景画像を絶対前景領域とその他の領域に分割して絶対前景領域画像(図9(d))を生成する(S403)。絶対前景領域画像は、幅W、高さHの画像データであり、例えば、絶対前景領域に含まれる画素には255を、その他の領域に含まれる画素には0を設定する。
【0030】
次に、CPU101は、詳細は後述するが、生成または更新した絶対背景領域画像と、絶対前景領域画像を用いて、前景画像を被写体領域、背景領域、不明領域の三つに分割したマップ(以下、三値マップ)(図9(e))を生成する(S404)。三値マップは、幅W、高さHの画像データであり、例えば、被写体領域に含まれる画素には255を、背景領域に含まれる画素には0を、不明領域に含まれる画素には例えば128を設定する。図9(e)において、白地は被写体領域を、黒べたは背景領域を、被写体領域と背景領域の間は不明瞭域を表す。
【0031】
次に、CPU101は、ベイズ法などを用いて、三値マップからアルファマットを生成する(S405)。アルファマットは、幅W、高さHの画像データであり、各画素には透明度を表すデータを設定する。
【0032】
次に、CPU101は、アルファマットを用いて、前景画像から被写体領域の画像(被写体画像)を切り出し(図9(f))、切り出した画像を代替画像に合成する(S406)。なお、被写体領域の画像と代替画像の合成には公知の任意の方法を用いればよい。また、ここで得られた合成画像が、合成画像表示部205に表示される。
【0033】
●絶対背景領域画像の生成(第一の生成)
図5のフローチャートにより絶対背景領域画像の生成(S401)の詳細を説明する。また、図10により絶対背景領域画像の生成の概要を説明する。なお、以下では、画素(i, j)における各画像の画素値を次のように表す。
前景画像:FG(c, i, j)、
絶対前景領域画像:aFG(i, j)、
背景画像:BG(c, i, j)、
絶対背景領域画像:aBG(i, j)、
差分画像:D(i, j)、
三値マップ:M(i, j)、
ここで、cはチャネルを表し、0、1、2はそれぞれR、G、Bチャンネルに対応する、
例えばFG(0, i, j)は、前景画像の画素(i, j)のRチャネルの値を表す。
【0034】
CPU101は、絶対背景領域画像を保存するためのバッファ領域をRAM102に割り当て(S601)、差分画像を保存するためのバッファ領域をRAM102に割り当てる(S602)。そして、画素ごとに、前景画像と背景画像の差分値を式(1)によって計算し、差分値D(i, j)を差分画像の画素値として保存する(S603)(図10(a)参照)。なお、式(1)は一例であり、他の式により差分値を計算してもよい。
D(i, j) = 1/3・√Σc=02{FG(c, i, j) - BG(c, i, j)}2 …(1)
【0035】
次に、CPU101は、差分画像の全画素から差分値のヒストグラムを作成し(S604)、ヒストグラムの形状を分析して、差分値を二つの集合に二分する閾値th1(第一の閾値)を取得する(S605)(図10(b)参照)。なお、本実施例において、例えば、大津の方法やモード法を用いて閾値th1を求める。
【0036】
次に、CPU101は、カウンタjを0に初期化し(S606)、カウンタiを0に初期化する(S607)。そして、差分画像の注目画素の値D(i, j)と閾値th1を比較する(S608)。D(i, j)>th1の場合は絶対背景領域画像の画素値aBG(i, j)に255(背景領域以外の領域を表す)を設定する(S609)。そして、D(i, j)≦th1の場合は絶対背景領域画像の画素値aBG(i, j)に0(背景領域を表す)を設定する(S610)(図10(c)参照)。
【0037】
次に、CPU101は、カウンタiをインクリメントして(S611)、カウンタiの値と幅Wを比較し(S612)、i≦Wの場合は処理をステップS607に戻す。また、i>Wの場合はカウンタjをインクリメントし(S613)、カウンタjの値と高さHを比較し(S614)、j≦Hの場合は処理をステップS606に戻す。つまり、j>HになるまでステップS606からS614の処理を繰り返す。
【0038】
●絶対背景領域画像の更新
図6のフローチャートにより絶対背景領域画像の更新(S402)の詳細を説明する。
【0039】
CPU101は、一時画像を保存するためのバッファ領域をRAM102に割り当て、絶対背景領域画像を一時画像としてコピーする(S801)。なお、一時画像は、幅W、高さの画像データであり、画素(i, j)における画素値はtBG(i, j)で表す。
【0040】
次に、CPU101は、カウンタjを1に初期化し(S802)、フラグFに‘0’を設定し、カウンタiを1に初期化する(S803)。そして、一時画像の注目画素の値tBG(i, j)と、注目画素の周囲画素の値を比較する(S804)。なお、周囲画素は、例えば(i-1, j)、(i+1, j)、(i, j-1)、(i, j+1)の四画素である。そして、式(2)を評価して、式(2)の評価結果が真‘1’の場合、つまり、注目画素の値tBG(i, j)が何れかの周囲画素の値より大きい場合は注目画素がエッジ部を構成するとして処理をステップS805に進める。また、式(2)の評価結果が偽‘0’の場合は処理をステップS811へ進める。
tBG(i, j)>tBG(i-1, j) || tBG(i, j)>tBG(i+1, j)
|| tBG(i, j)>tBG(i, j-1) || tBG(i, j)>tBG(i, j+1) …(2)
ここで、||は論理和(OR)演算子。
【0041】
式(2)の評価結果が真の場合、CPU101は、注目画素(i, j)を中心とする矩形領域Sを定義する(S805)。矩形領域Sの幅w、高さhは予め決められていて、例えばw=192、h=108である。矩形領域Sの左上座標(xt, yt)と、右下座標(xb, yb)は式(3)によって定義される。
xt = i - w/2;
if (xt < 0)
xt = 0;
;
yt = j - h/2;
if (yt < 0)
yt = 0;
;
xb = i + w/2;
if (xb > W-1)
xb = W - 1;
;
yb = j + h/2;
if (yb > H-1)
yb = H - 1; …(3)
【0042】
次に、CPU101は、矩形領域Sにおける前景画像と背景画像の画素値から、式(4)により、評価値EVを計算する(S806)。本実施例では、評価値EVとして、前景画像の矩形領域SにおけるGチャネル(c=1)の値の平均値と、背景画像の矩形領域SにおけるGチャネルの値の平均値の差分を用いる。
EV = 1/(wh)・{ΣvΣuFG(1, xt+u, yt+v) - ΣvΣuBG(1, xt+u, yt+v)} …(4)
ここで、Σvの積算範囲はv=0からh-1まで、
Σuの積算範囲はu=0からw-1まで。
【0043】
なお、評価値EVは、前景画像と背景画像のGチャネルの平均値の差分には限らない。例えば、画素ごとに前景画像と背景画像の輝度値を計算し、それら輝度値の平均値の差分を評価値EVに用いてもよい。
【0044】
次に、CPU101は、評価値EVと所定の閾値E0、E1を比較する(S807)。そして、E0<EV<E1の場合は矩形領域Sを複雑領域と判定して、処理をステップS808に進める。また、EV≦E0またはE1≦EVの場合は矩形領域Sを非複雑領域と判定して、処理をステップS810に進める。閾値E0、E1は、矩形領域Sを複雑領域と判定する評価値EVの範囲を表し、予め、様々な画像の複雑領域における評価値EVを測定して閾値E0、E1を決定すればよい。なお、複雑領域を構成する画像の種類(例えば人物の頭部(毛髪)、被服、広葉樹、針葉樹、草花などの植物など)ごとに閾値E0、E1を設定してもよい。
【0045】
E0<EV<E1の場合、CPU101は、複雑領域と判定した矩形領域Sを絶対背景領域とその他の領域に分割し、結果を絶対背景領域画像へ書き込んで、絶対背景領域画像を更新する(S808)。つまり、複雑領域と判定した矩形領域Sについて、図5に示す絶対背景領域画像の生成処理を実行する。そして、絶対背景領域画像を更新後、フラグFを反転(NOT F)する(S809)。
【0046】
次に、CPU101は、カウンタiにw/4を加算する(S810)。また、式(2)の評価結果が偽だった場合はカウンタiをインクリメントする(S811)。そして、カウンタiとW-1を比較して(S812)、i>W-1であれば処理をステップS813へ進め、i≦W-1であれば処理をステップS804に戻す。
【0047】
i>W-1の場合、CPU101は、フラグFをチェックし(S813)、F==‘1’であればカウンタjにh/4を加算し(S814)、F==‘0’であればカウンタjをインクリメントする(S815)。そして、カウンタjとH-1を比較して(S816)、j>H-1であれば処理を終了し、j≦H-1であれば処理をステップS803に戻す。
【0048】
●絶対前景領域画像の生成(第二の生成)
図7のフローチャートにより絶対前景領域画像の生成(S403)の詳細を説明する。
【0049】
CPU101は、絶対前景領域画像を保存するためのバッファ領域をRAM102に割り当て(S701)、差分画像を保存するためのバッファ領域をRAM102に割り当てる(S702)。そして、ステップS603と同様の方法により、画素ごとに、前景画像と背景画像の画素値の差分値を計算し、差分値を差分画像の画素値として保存する(S703)。なお、絶対背景領域画像の生成(S401)において生成した差分画像がバッファ領域に残っている場合は、それを利用すればよい。
【0050】
次に、CPU101は、ラプラシアンフィルタを用いる方法やキャニー法などを用いて、差分画像からエッジを検出する(S704)。そして、検出したエッジの近傍領域について、差分値のヒストグラムを作成する(S705)。例えば、エッジの近傍20画素の領域に含まれる画素の値(差分値)によってヒストグラムを作成する。その際、エッジの特徴に基づき、エッジの近傍領域を変化させてもよい。そして、ヒストグラムの形状を分析して、差分値を二つの集合に二分する閾値th2(第二の閾値)を取得する(S706)。なお、本実施例において、例えば、大津の方法やモード法を用いて閾値th2を求める。
【0051】
次に、CPU101は、カウンタjを0に初期化し(S707)、カウンタiを0に初期化する(S708)。そして、差分画像の注目画素の値D(i, j)と閾値th2を比較する(S709)。D(i, j)>th2の場合は絶対前景領域画像の画素値aFG(i, j)に255(前景領域を表す)を設定する(S710)。また、D(i, j)≦th2の場合は絶対前景領域画像の画素値aFG(i, j)に0(前景領域以外の領域を表す)を設定する(S711)。
【0052】
次に、CPU101は、カウンタiをインクリメントして(S712)、カウンタiの値と幅Wを比較し(S713)、i≦Wの場合は処理をステップS708に戻す。また、i>Wの場合はカウンタjをインクリメントし(S714)、カウンタjの値と高さHを比較し(S715)、j≦Hの場合は処理をステップS707に戻す。つまり、j>HになるまでステップS707からS715の処理を繰り返す。
【0053】
●三値マップの生成
図8のフローチャートにより三値マップの生成(S404)の詳細を説明する。
【0054】
CPU101は、三値マップを保存するためのバッファ領域をRAM102に割り当て(S901)、カウンタjを0に初期化し(S902)、カウンタiを0に初期化する(S903)。
【0055】
次に、CPU101は、絶対背景領域画像の注目画素の値aBG(i, j)と、絶対前景領域画像の注目画素の値aFG(i, j)が論理式BG「BG(i, j)==0 && FG(i, j)==0」を満すか否かを判定する(S904)。論理式BGを満たす場合は、三値マップの画素値M(i, j)に0(背景領域を表す)を設定する(S905)。なお、&&は論理積(AND)演算子である。
【0056】
論理式BGを満たさない場合、CPU101は、論理式FG「BG(i, j)==255 && FG(i, j)==255」を満たすか否かを判定する(S906)。論理式FGを満たす場合は、三値マップの画素値M(i, j)に255(被写体領域を表す)を設定する(S907)。また、論理式BG、FGの何れも満たさない場合は、三値マップの画素値M(i, j)に例えば128(不明領域を表す)を設定する(S908)。
【0057】
次に、CPU101は、カウンタiをインクリメントして(S909)、カウンタiの値と幅Wを比較し(S910)、i≦Wの場合は処理をステップS904に戻す。また、i>Wの場合はカウンタjをインクリメントし(S911)、カウンタjの値と高さHを比較し(S912)、j≦Hの場合は処理をステップS903に戻す。つまり、j>HになるまでステップS903からS912の処理を繰り返す。
【0058】
このように、絶対背景領域画像の更新(S402)において、複雑領域を検出し、複雑領域を絶対背景領域とその他の領域に分割して、絶対背景領域画像を更新する。これにより、絶対背景領域の分割精度を向上して、被写体領域の画像を切り出す精度を向上させることができる。言い換えれば、複雑領域をより詳細に切り出すことができる。
【0059】
[変形例]
上記では、絶対背景領域画像のエッジ部を検出し(S804)、エッジ部を構成する画素を中心とする矩形領域Sを定義した(S805)。しかし、エッジ部から絶対背景領域以外の領域へ所定画素数進入した点を矩形領域Sの中心としてもよい。
【0060】
また、複雑領域と判定した矩形領域Sに対して、図5に示す絶対背景領域画像の生成処理を実行すると説明した。しかし、全く同様な処理ではなくてもよい。差分画像の全画素から求めた差分値のヒストグラムを用いて取得した閾値th1の代わりに、例えば、複雑領域における差分値を二つの集合に二分する閾値th1'を取得して、領域分割を行ってもよい。さらに、閾値th1'を所定値だけ減少した後、領域分割を行ってもよい。
【0061】
また、複雑領域と判定した矩形領域Sを分割処理した結果を絶対背景領域画像に書き込む(S808)が、その際、出力画像を周囲と馴染ませるような処理を加えてもよい。
【0062】
また、アルファマットは、前景画像のデータとは別のデータとして扱うように説明したが、アルファマットを前景画像のアルファチャネルとして扱ってもよい。
【実施例2】
【0063】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【0064】
実施例1では、複雑領域において絶対背景領域の生成を繰り返すことで、複雑領域における被写体領域の切出精度を向上させる例を説明した。実施例2では、複雑領域において絶対前景領域の生成を繰り返す例を説明する。
【0065】
図11のフローチャートにより実施例2の切出合成処理(S307)を説明する。なお、ステップS410以外の処理は、図4に示した各処理と同様であるから、その詳細説明を省略する。CPU101は、絶対前景領域画像に基づき、複雑領域において追加の領域分割を行い、絶対前景領域画像を更新する(S410)。絶対前景領域画像の更新(S410)は、図6を用いて説明した絶対背景領域画像の更新(S402)処理における「絶対背景領域(画像)」を「絶対前景領域(画像)」に置き換えればよい。
【0066】
また、複雑領域と判定した矩形領域Sに対して、絶対前景領域画像の生成処理を実行する際、複雑領域における差分値を二つの集合に二分する閾値th2'を取得して、領域分割を行う。さらに、閾値th2'を所定値だけ減少した後、領域分割を行ってもよい。
【実施例3】
【0067】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【0068】
上記実施例では、絶対背景領域画像(または絶対前景領域画像)のエッジ部を検出し、エッジ部の周辺から複雑領域を検出し、複雑領域において絶対背景領域(または絶対前景領域)の生成を繰り返して、被写体領域の切出精度を向上させる例を説明した。実施例3では、三値マップの不明領域の周辺から複雑領域を検出する例を説明する。
【0069】
図12のフローチャートにより実施例3の三値マップから複雑領域を検出する例を説明する。
【0070】
CPU101は、カウンタjを1に初期化し(S201)、フラグFに‘0’を設定し、カウンタiを1に初期化する(S202)。そして、一時画像の注目画素の値tM(i, j)が式(5)を満たすか否かを判定する(S203)。式(5)の評価結果が真‘1’の場合、つまり、注目画素の値M(i, j)が、被写体領域または背景領域を示さず、不明瞭域(例えば128)を示す場合は処理をステップS204に進める。また、式(5)の評価結果が偽‘0’の場合は処理をステップS210へ進める。
tM(i, j)≠255 && tM(i, j)≠0 …(5)
【0071】
式(5)の評価結果が真の場合、CPU101は、注目画素(i, j)を中心とする矩形領域Sを定義する(S204)。矩形領域Sの幅w、高さhは予め決められていて、例えばw=192、h=108である。矩形領域Sの左上座標(xt, yt)と、右下座標(xb, yb)は前述した式(3)によって定義される。
【0072】
次に、CPU101は、矩形領域Sにおける前景画像と背景画像の画素値から、前述した式(4)により、評価値EVを計算し(S205)、評価値EVと前述した所定の閾値E0、E1を比較する(S206)。そして、E0<EV<E1の場合は矩形領域Sを複雑領域と判定して、処理をステップS207に進める。また、EV≦E0またはE1≦EVの場合は矩形領域Sを非複雑領域と判定して、処理をステップS209に進める。
【0073】
E0<EV<E1の場合、CPU101は、複雑領域と判定した矩形領域Sを絶対背景領域(または絶対前景領域)とその他の領域に分割する。そして、分割結果を絶対背景領域画像(または絶対前景領域画像)へ書き込んで、絶対背景領域画像(または絶対前景領域画像)を更新する(S207)。そして、絶対背景領域画像(または絶対前景領域画像)を更新後、フラグFを反転(NOT F)する(S208)。
【0074】
次に、CPU101は、カウンタiにw/4を加算する(S209)。また、式(5)の評価結果が偽だった場合はカウンタiをインクリメントする(S210)。そして、カウンタiとW-1を比較して(S211)、i>W-1であれば処理をステップS212へ進め、i≦W-1であれば処理をステップS203に戻す。
【0075】
i>W-1の場合、CPU101は、フラグFをチェックし(S212)、F==‘1’であればカウンタjにh/4を加算し(S213)、F==‘0’であればカウンタjをインクリメントする(S214)。そして、カウンタjとH-1を比較して(S215)、j>H-1であれば処理を終了し、j≦H-1であれば処理をステップS202に戻す。
【0076】
[その他の実施例]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、画像から被写体領域の画像を切り出す画像処理に関する。
【背景技術】
【0002】
画像から被写体領域の画像を切り出す手法として、一般にクロマキーが知られている。クロマキーは、特定色(例えば青色や緑色)を背景として撮影した画像から被写体領域の画像を切り出す技術であり、例えば特許文献1に開示されている。
【0003】
クロマキーを利用するには、特定色の背景を用意する必要があり、撮影準備が大変である。そこで、近年、背景差分により被写体領域の画像を切り出す手法が用いられるようになった。この手法は、被写体と背景が映った前景画像と、背景のみが映った背景画像を用意し、前景画像と背景画像の差分から被写体領域の画像を切り出す。しかし、前景画像と背景画像の差分を単純にとるだけでは、被写体領域の画像を精度よく切り出すことが難しい。
【0004】
背景差分により被写体領域の画像を切り出す精度(以下、切出精度)を向上する方法として、例えば特許文献2は、一度背景差分により被写体領域を抽出し、被写体領域のエッジの細部を拡張して、正確なエッジ形状をもつ被写体領域を得る発明を開示する。
【0005】
しかし、背景差分による被写体領域の抽出は、画像の特徴によって精度が大きく左右され、画像全体を一様に処理すると、個々の画像によって切出精度に差が生じる。とくに毛髪のような複雑な形状の領域が背景に絡む被写体領域(以下、複雑領域)において、切出精度が著しく低下する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許第3581835号(特開2002-271812公報)
【特許文献2】特開平10-023452号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、複雑領域を含む被写体領域の画像の切出精度を向上することを目的とする。
【課題を解決するための手段】
【0008】
本発明にかかる画像処理は、被写体画像を含む画像が記録された前景画像、および、前記画像から前記被写体画像を除いた画像が記録された背景画像を入力し、前記前景画像と前記背景画像の差分画像を生成し、前記差分画像から前記前景画像の領域を分割するための閾値を取得し、前記差分画像と前記閾値を用いて、前記前景画像を被写体領域と背景領域に分割するための領域画像を生成し、前記前景画像と前記背景画像を用いて、前記被写体画像が含む複雑な形状の領域が背景に絡む複雑領域を検出し、前記生成手段に、前記検出した複雑領域における前記領域画像の生成を繰り返させて前記領域画像を更新することを特徴とする。
【発明の効果】
【0009】
本発明によれば、複雑領域を含む被写体領域の画像の切出精度を向上することができる。
【図面の簡単な説明】
【0010】
【図1】実施例の画像処理装置の構成例を説明するブロック図。
【図2】切出合成処理のUIの一例を説明する図。
【図3】切出合成のフローを説明するフローチャート。
【図4】切出合成処理を説明するフローチャート。
【図5】絶対背景領域画像の生成の詳細を説明するフローチャート。
【図6】絶対背景領域画像の更新の詳細を説明するフローチャート。
【図7】絶対前景領域画像の生成の詳細を説明するフローチャート。
【図8】三値マップの生成の詳細を説明するフローチャート。
【図9】各画像を説明する図。
【図10】絶対背景領域画像の生成の概要を説明する図。
【図11】実施例2の切出合成処理を説明するフローチャート。
【図12】実施例3の三値マップから複雑領域を検出する例を説明するフローチャート。
【発明を実施するための形態】
【0011】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。
【実施例1】
【0012】
[装置の構成]
図1のブロック図により実施例の画像処理装置の構成例を説明する。
【0013】
CPU101は、RAM102をワークメモリとして、ROM103やハードディスクドライブ(HDD)108などの不揮発性メモリに格納されたOSを含む各種プログラムを実行し、システムバス107を介して、後述する構成を制御する。
【0014】
汎用インタフェイス(I/F)104は、例えばUSBのようなシリアルバスインタフェイスで、マウスやキーボードなどの入力デバイス111、プリンタ112のような出力デバイスが接続される。ビデオカード(VC)105は、ビデオインタフェイスで、LCDなどのモニタ113が接続される。汎用I/F106は、例えばUSBやIEEE1394などのシリアルバスインタフェイスで、例えばディジタルスチルカメラやディジタルビデオカメラなどの撮像デバイス114が接続される。なお、汎用I/F104と106は一つにまとめることもできる。
【0015】
CPU101は、モニタ113にユーザインタフェイス(UI)を表示する。ユーザは、入力デバイス111を操作して、UIに対して指示やデータや入力する。CPU101は、入力デバイス111からユーザ指示やデータを入力し、それら入力に従いプログラムを実行して各種処理を行う。CPU101は、映像の読み込みが指示された場合、撮像デバイス114を制御して撮像デバイス114が出力する撮像データを入力し、撮像データが示す映像をモニタ113に表示したり、撮像データをRAM102やHDD108などの所定領域に格納する。
【0016】
[切出合成処理]
CPU101が実行するプログラムには、後述する、被写体領域の画像を切り出す処理(以下、切出処理)と、切り出した被写体領域の画像を任意の背景画像に合成する合成処理を行う切出合成処理プログラムが含まれる。
【0017】
切出処理は、被写体と背景が同時に記録された前景画像と、被写体を除いた背景のみが記録された背景画像から、前景画像の各画素に対する透明度を記録したアルファチャネルのマット(以下、アルファマット)を作成する。そして、アルファマットを用いて前景画像から被写体領域の画像を切り出す。また、合成処理は、アルファマットを用いて切り出された被写体領域を、任意の背景画像(以下、代替画像)に合成する。
【0018】
以下の説明において、前景画像、背景画像、アルファマット、代替画像、後述する差分画像の大きさは同一であり、それら画像の幅はW画素、高さはH画素である。また、前景画像、背景画像、代替画像はRGBチャネルの画像データであり、各チャネルは8ビットデータで表現される。また、アルファマット、差分画像は8ビットデータで表現される1チャネルの画像データである。また、画像データの各画素の位置は、画像の左上隅を原点として右方向にx値が増加し、下方向にy値が増加するxy座標系によって表される。
【0019】
●UIと切出合成のフロー
図2により切出合成処理のUIの一例を説明する。なお、このUIは、切出合成の実行が指示されると、CPU101がモニタ113に表示するUIである。また、図3のフローチャートにより切出合成のフローを説明する。また、図9により各画像を説明する。
【0020】
ユーザは、OSが提供するファイル管理システムを操作して前景画像(図9(a))を選択し、前景画像を前景画像表示部201にフィット表示させる。例えば、前景画像のデータファイルを示すアイコンを前景画像表示部201にドラッグアンドドロップすることで、前景画像を選択(指定)する(S301)。
【0021】
同様に、ユーザは、ファイル管理システムを操作して背景画像(図9(b))を選択し、背景画像を背景画像表示部202にフィット表示させる。例えば、背景画像のデータファイルを示すアイコンを背景画像表示部202にドラッグアンドドロップすることで、背景画像を選択(指定)する(S302)。
【0022】
同様に、ユーザは、ファイル管理システムを操作して代替画像を選択し、代替画像を代替画像表示部203にフィット表示させる。例えば、代替画像のデータファイルを示すアイコンを代替画像表示部203にドラッグアンドドロップすることで、代替画像を選択(指定)する(S303)。
【0023】
ユーザは、新たに、画像のデータファイルを各表示部にドラッグアンドドロップすることで、各画像の指定を任意のタイミングで変更することができる。また、各画像の指定順は任意である。CPU101は、三つの画像(前景画像、背景画像、代替画像)が指定されたか否かを判定し(S304)、三つの画像が指定されると合成処理実行ボタン204が有効にする(S305)。なお、CPU101は、三つの画像が指定されるまで、ステップS301からS303の処理を可能にする。
【0024】
ユーザが合成処理実行ボタン204がクリックすると(S306)、CPU101は、前景画像、背景画像、代替画像から合成画像を生成し(S307)、生成した合成画像を合成画像表示部205にフィット表示する(S308)。
【0025】
他方、ユーザが終了ボタン206をクリックすると(S309)、CPU101は、切出合成処理を終了する。ただし、合成画像を表示している場合は(S310)、合成画像を保存するための図示しない保存ダイアログを表示する(S311)。ユーザが合成画像の保存を望む場合(S312)、CPU101は、例えばRAM102の所定領域に生成した合成画像を、ユーザ指示に従い、例えばHDD108に格納する(S313)。また、合成画像の保存を望まない場合、ユーザは保存ダイアログのキャンセルボタンをクリックし、CPU101は合成画像を破棄する。
【0026】
●切出合成処理のフロー
図4のフローチャートにより切出合成処理(S307)を説明する。
【0027】
CPU101は、詳細は後述するが、前景画像(図9(a))と背景画像(図9(b))を用いて、前景画像を絶対背景領域とその他の領域に分割して絶対背景領域画像(図9(c))を生成する(S401)。絶対背景領域画像は、幅W、高さHの画像データであり、例えば、絶対背景領域に含まれる画素には0を、その他の領域に含まれる画素には255を設定する。
【0028】
次に、CPU101は、詳細は後述するが、絶対背景領域画像に基づき、例えば毛髪のような複雑な形状の領域が背景に絡む被写体領域(以下、複雑領域)において、追加の領域分割を行い、絶対背景領域画像を更新する(S402)。
【0029】
次に、CPU101は、詳細は後述するが、前景画像と背景画像を用いて、前景画像を絶対前景領域とその他の領域に分割して絶対前景領域画像(図9(d))を生成する(S403)。絶対前景領域画像は、幅W、高さHの画像データであり、例えば、絶対前景領域に含まれる画素には255を、その他の領域に含まれる画素には0を設定する。
【0030】
次に、CPU101は、詳細は後述するが、生成または更新した絶対背景領域画像と、絶対前景領域画像を用いて、前景画像を被写体領域、背景領域、不明領域の三つに分割したマップ(以下、三値マップ)(図9(e))を生成する(S404)。三値マップは、幅W、高さHの画像データであり、例えば、被写体領域に含まれる画素には255を、背景領域に含まれる画素には0を、不明領域に含まれる画素には例えば128を設定する。図9(e)において、白地は被写体領域を、黒べたは背景領域を、被写体領域と背景領域の間は不明瞭域を表す。
【0031】
次に、CPU101は、ベイズ法などを用いて、三値マップからアルファマットを生成する(S405)。アルファマットは、幅W、高さHの画像データであり、各画素には透明度を表すデータを設定する。
【0032】
次に、CPU101は、アルファマットを用いて、前景画像から被写体領域の画像(被写体画像)を切り出し(図9(f))、切り出した画像を代替画像に合成する(S406)。なお、被写体領域の画像と代替画像の合成には公知の任意の方法を用いればよい。また、ここで得られた合成画像が、合成画像表示部205に表示される。
【0033】
●絶対背景領域画像の生成(第一の生成)
図5のフローチャートにより絶対背景領域画像の生成(S401)の詳細を説明する。また、図10により絶対背景領域画像の生成の概要を説明する。なお、以下では、画素(i, j)における各画像の画素値を次のように表す。
前景画像:FG(c, i, j)、
絶対前景領域画像:aFG(i, j)、
背景画像:BG(c, i, j)、
絶対背景領域画像:aBG(i, j)、
差分画像:D(i, j)、
三値マップ:M(i, j)、
ここで、cはチャネルを表し、0、1、2はそれぞれR、G、Bチャンネルに対応する、
例えばFG(0, i, j)は、前景画像の画素(i, j)のRチャネルの値を表す。
【0034】
CPU101は、絶対背景領域画像を保存するためのバッファ領域をRAM102に割り当て(S601)、差分画像を保存するためのバッファ領域をRAM102に割り当てる(S602)。そして、画素ごとに、前景画像と背景画像の差分値を式(1)によって計算し、差分値D(i, j)を差分画像の画素値として保存する(S603)(図10(a)参照)。なお、式(1)は一例であり、他の式により差分値を計算してもよい。
D(i, j) = 1/3・√Σc=02{FG(c, i, j) - BG(c, i, j)}2 …(1)
【0035】
次に、CPU101は、差分画像の全画素から差分値のヒストグラムを作成し(S604)、ヒストグラムの形状を分析して、差分値を二つの集合に二分する閾値th1(第一の閾値)を取得する(S605)(図10(b)参照)。なお、本実施例において、例えば、大津の方法やモード法を用いて閾値th1を求める。
【0036】
次に、CPU101は、カウンタjを0に初期化し(S606)、カウンタiを0に初期化する(S607)。そして、差分画像の注目画素の値D(i, j)と閾値th1を比較する(S608)。D(i, j)>th1の場合は絶対背景領域画像の画素値aBG(i, j)に255(背景領域以外の領域を表す)を設定する(S609)。そして、D(i, j)≦th1の場合は絶対背景領域画像の画素値aBG(i, j)に0(背景領域を表す)を設定する(S610)(図10(c)参照)。
【0037】
次に、CPU101は、カウンタiをインクリメントして(S611)、カウンタiの値と幅Wを比較し(S612)、i≦Wの場合は処理をステップS607に戻す。また、i>Wの場合はカウンタjをインクリメントし(S613)、カウンタjの値と高さHを比較し(S614)、j≦Hの場合は処理をステップS606に戻す。つまり、j>HになるまでステップS606からS614の処理を繰り返す。
【0038】
●絶対背景領域画像の更新
図6のフローチャートにより絶対背景領域画像の更新(S402)の詳細を説明する。
【0039】
CPU101は、一時画像を保存するためのバッファ領域をRAM102に割り当て、絶対背景領域画像を一時画像としてコピーする(S801)。なお、一時画像は、幅W、高さの画像データであり、画素(i, j)における画素値はtBG(i, j)で表す。
【0040】
次に、CPU101は、カウンタjを1に初期化し(S802)、フラグFに‘0’を設定し、カウンタiを1に初期化する(S803)。そして、一時画像の注目画素の値tBG(i, j)と、注目画素の周囲画素の値を比較する(S804)。なお、周囲画素は、例えば(i-1, j)、(i+1, j)、(i, j-1)、(i, j+1)の四画素である。そして、式(2)を評価して、式(2)の評価結果が真‘1’の場合、つまり、注目画素の値tBG(i, j)が何れかの周囲画素の値より大きい場合は注目画素がエッジ部を構成するとして処理をステップS805に進める。また、式(2)の評価結果が偽‘0’の場合は処理をステップS811へ進める。
tBG(i, j)>tBG(i-1, j) || tBG(i, j)>tBG(i+1, j)
|| tBG(i, j)>tBG(i, j-1) || tBG(i, j)>tBG(i, j+1) …(2)
ここで、||は論理和(OR)演算子。
【0041】
式(2)の評価結果が真の場合、CPU101は、注目画素(i, j)を中心とする矩形領域Sを定義する(S805)。矩形領域Sの幅w、高さhは予め決められていて、例えばw=192、h=108である。矩形領域Sの左上座標(xt, yt)と、右下座標(xb, yb)は式(3)によって定義される。
xt = i - w/2;
if (xt < 0)
xt = 0;
;
yt = j - h/2;
if (yt < 0)
yt = 0;
;
xb = i + w/2;
if (xb > W-1)
xb = W - 1;
;
yb = j + h/2;
if (yb > H-1)
yb = H - 1; …(3)
【0042】
次に、CPU101は、矩形領域Sにおける前景画像と背景画像の画素値から、式(4)により、評価値EVを計算する(S806)。本実施例では、評価値EVとして、前景画像の矩形領域SにおけるGチャネル(c=1)の値の平均値と、背景画像の矩形領域SにおけるGチャネルの値の平均値の差分を用いる。
EV = 1/(wh)・{ΣvΣuFG(1, xt+u, yt+v) - ΣvΣuBG(1, xt+u, yt+v)} …(4)
ここで、Σvの積算範囲はv=0からh-1まで、
Σuの積算範囲はu=0からw-1まで。
【0043】
なお、評価値EVは、前景画像と背景画像のGチャネルの平均値の差分には限らない。例えば、画素ごとに前景画像と背景画像の輝度値を計算し、それら輝度値の平均値の差分を評価値EVに用いてもよい。
【0044】
次に、CPU101は、評価値EVと所定の閾値E0、E1を比較する(S807)。そして、E0<EV<E1の場合は矩形領域Sを複雑領域と判定して、処理をステップS808に進める。また、EV≦E0またはE1≦EVの場合は矩形領域Sを非複雑領域と判定して、処理をステップS810に進める。閾値E0、E1は、矩形領域Sを複雑領域と判定する評価値EVの範囲を表し、予め、様々な画像の複雑領域における評価値EVを測定して閾値E0、E1を決定すればよい。なお、複雑領域を構成する画像の種類(例えば人物の頭部(毛髪)、被服、広葉樹、針葉樹、草花などの植物など)ごとに閾値E0、E1を設定してもよい。
【0045】
E0<EV<E1の場合、CPU101は、複雑領域と判定した矩形領域Sを絶対背景領域とその他の領域に分割し、結果を絶対背景領域画像へ書き込んで、絶対背景領域画像を更新する(S808)。つまり、複雑領域と判定した矩形領域Sについて、図5に示す絶対背景領域画像の生成処理を実行する。そして、絶対背景領域画像を更新後、フラグFを反転(NOT F)する(S809)。
【0046】
次に、CPU101は、カウンタiにw/4を加算する(S810)。また、式(2)の評価結果が偽だった場合はカウンタiをインクリメントする(S811)。そして、カウンタiとW-1を比較して(S812)、i>W-1であれば処理をステップS813へ進め、i≦W-1であれば処理をステップS804に戻す。
【0047】
i>W-1の場合、CPU101は、フラグFをチェックし(S813)、F==‘1’であればカウンタjにh/4を加算し(S814)、F==‘0’であればカウンタjをインクリメントする(S815)。そして、カウンタjとH-1を比較して(S816)、j>H-1であれば処理を終了し、j≦H-1であれば処理をステップS803に戻す。
【0048】
●絶対前景領域画像の生成(第二の生成)
図7のフローチャートにより絶対前景領域画像の生成(S403)の詳細を説明する。
【0049】
CPU101は、絶対前景領域画像を保存するためのバッファ領域をRAM102に割り当て(S701)、差分画像を保存するためのバッファ領域をRAM102に割り当てる(S702)。そして、ステップS603と同様の方法により、画素ごとに、前景画像と背景画像の画素値の差分値を計算し、差分値を差分画像の画素値として保存する(S703)。なお、絶対背景領域画像の生成(S401)において生成した差分画像がバッファ領域に残っている場合は、それを利用すればよい。
【0050】
次に、CPU101は、ラプラシアンフィルタを用いる方法やキャニー法などを用いて、差分画像からエッジを検出する(S704)。そして、検出したエッジの近傍領域について、差分値のヒストグラムを作成する(S705)。例えば、エッジの近傍20画素の領域に含まれる画素の値(差分値)によってヒストグラムを作成する。その際、エッジの特徴に基づき、エッジの近傍領域を変化させてもよい。そして、ヒストグラムの形状を分析して、差分値を二つの集合に二分する閾値th2(第二の閾値)を取得する(S706)。なお、本実施例において、例えば、大津の方法やモード法を用いて閾値th2を求める。
【0051】
次に、CPU101は、カウンタjを0に初期化し(S707)、カウンタiを0に初期化する(S708)。そして、差分画像の注目画素の値D(i, j)と閾値th2を比較する(S709)。D(i, j)>th2の場合は絶対前景領域画像の画素値aFG(i, j)に255(前景領域を表す)を設定する(S710)。また、D(i, j)≦th2の場合は絶対前景領域画像の画素値aFG(i, j)に0(前景領域以外の領域を表す)を設定する(S711)。
【0052】
次に、CPU101は、カウンタiをインクリメントして(S712)、カウンタiの値と幅Wを比較し(S713)、i≦Wの場合は処理をステップS708に戻す。また、i>Wの場合はカウンタjをインクリメントし(S714)、カウンタjの値と高さHを比較し(S715)、j≦Hの場合は処理をステップS707に戻す。つまり、j>HになるまでステップS707からS715の処理を繰り返す。
【0053】
●三値マップの生成
図8のフローチャートにより三値マップの生成(S404)の詳細を説明する。
【0054】
CPU101は、三値マップを保存するためのバッファ領域をRAM102に割り当て(S901)、カウンタjを0に初期化し(S902)、カウンタiを0に初期化する(S903)。
【0055】
次に、CPU101は、絶対背景領域画像の注目画素の値aBG(i, j)と、絶対前景領域画像の注目画素の値aFG(i, j)が論理式BG「BG(i, j)==0 && FG(i, j)==0」を満すか否かを判定する(S904)。論理式BGを満たす場合は、三値マップの画素値M(i, j)に0(背景領域を表す)を設定する(S905)。なお、&&は論理積(AND)演算子である。
【0056】
論理式BGを満たさない場合、CPU101は、論理式FG「BG(i, j)==255 && FG(i, j)==255」を満たすか否かを判定する(S906)。論理式FGを満たす場合は、三値マップの画素値M(i, j)に255(被写体領域を表す)を設定する(S907)。また、論理式BG、FGの何れも満たさない場合は、三値マップの画素値M(i, j)に例えば128(不明領域を表す)を設定する(S908)。
【0057】
次に、CPU101は、カウンタiをインクリメントして(S909)、カウンタiの値と幅Wを比較し(S910)、i≦Wの場合は処理をステップS904に戻す。また、i>Wの場合はカウンタjをインクリメントし(S911)、カウンタjの値と高さHを比較し(S912)、j≦Hの場合は処理をステップS903に戻す。つまり、j>HになるまでステップS903からS912の処理を繰り返す。
【0058】
このように、絶対背景領域画像の更新(S402)において、複雑領域を検出し、複雑領域を絶対背景領域とその他の領域に分割して、絶対背景領域画像を更新する。これにより、絶対背景領域の分割精度を向上して、被写体領域の画像を切り出す精度を向上させることができる。言い換えれば、複雑領域をより詳細に切り出すことができる。
【0059】
[変形例]
上記では、絶対背景領域画像のエッジ部を検出し(S804)、エッジ部を構成する画素を中心とする矩形領域Sを定義した(S805)。しかし、エッジ部から絶対背景領域以外の領域へ所定画素数進入した点を矩形領域Sの中心としてもよい。
【0060】
また、複雑領域と判定した矩形領域Sに対して、図5に示す絶対背景領域画像の生成処理を実行すると説明した。しかし、全く同様な処理ではなくてもよい。差分画像の全画素から求めた差分値のヒストグラムを用いて取得した閾値th1の代わりに、例えば、複雑領域における差分値を二つの集合に二分する閾値th1'を取得して、領域分割を行ってもよい。さらに、閾値th1'を所定値だけ減少した後、領域分割を行ってもよい。
【0061】
また、複雑領域と判定した矩形領域Sを分割処理した結果を絶対背景領域画像に書き込む(S808)が、その際、出力画像を周囲と馴染ませるような処理を加えてもよい。
【0062】
また、アルファマットは、前景画像のデータとは別のデータとして扱うように説明したが、アルファマットを前景画像のアルファチャネルとして扱ってもよい。
【実施例2】
【0063】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【0064】
実施例1では、複雑領域において絶対背景領域の生成を繰り返すことで、複雑領域における被写体領域の切出精度を向上させる例を説明した。実施例2では、複雑領域において絶対前景領域の生成を繰り返す例を説明する。
【0065】
図11のフローチャートにより実施例2の切出合成処理(S307)を説明する。なお、ステップS410以外の処理は、図4に示した各処理と同様であるから、その詳細説明を省略する。CPU101は、絶対前景領域画像に基づき、複雑領域において追加の領域分割を行い、絶対前景領域画像を更新する(S410)。絶対前景領域画像の更新(S410)は、図6を用いて説明した絶対背景領域画像の更新(S402)処理における「絶対背景領域(画像)」を「絶対前景領域(画像)」に置き換えればよい。
【0066】
また、複雑領域と判定した矩形領域Sに対して、絶対前景領域画像の生成処理を実行する際、複雑領域における差分値を二つの集合に二分する閾値th2'を取得して、領域分割を行う。さらに、閾値th2'を所定値だけ減少した後、領域分割を行ってもよい。
【実施例3】
【0067】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【0068】
上記実施例では、絶対背景領域画像(または絶対前景領域画像)のエッジ部を検出し、エッジ部の周辺から複雑領域を検出し、複雑領域において絶対背景領域(または絶対前景領域)の生成を繰り返して、被写体領域の切出精度を向上させる例を説明した。実施例3では、三値マップの不明領域の周辺から複雑領域を検出する例を説明する。
【0069】
図12のフローチャートにより実施例3の三値マップから複雑領域を検出する例を説明する。
【0070】
CPU101は、カウンタjを1に初期化し(S201)、フラグFに‘0’を設定し、カウンタiを1に初期化する(S202)。そして、一時画像の注目画素の値tM(i, j)が式(5)を満たすか否かを判定する(S203)。式(5)の評価結果が真‘1’の場合、つまり、注目画素の値M(i, j)が、被写体領域または背景領域を示さず、不明瞭域(例えば128)を示す場合は処理をステップS204に進める。また、式(5)の評価結果が偽‘0’の場合は処理をステップS210へ進める。
tM(i, j)≠255 && tM(i, j)≠0 …(5)
【0071】
式(5)の評価結果が真の場合、CPU101は、注目画素(i, j)を中心とする矩形領域Sを定義する(S204)。矩形領域Sの幅w、高さhは予め決められていて、例えばw=192、h=108である。矩形領域Sの左上座標(xt, yt)と、右下座標(xb, yb)は前述した式(3)によって定義される。
【0072】
次に、CPU101は、矩形領域Sにおける前景画像と背景画像の画素値から、前述した式(4)により、評価値EVを計算し(S205)、評価値EVと前述した所定の閾値E0、E1を比較する(S206)。そして、E0<EV<E1の場合は矩形領域Sを複雑領域と判定して、処理をステップS207に進める。また、EV≦E0またはE1≦EVの場合は矩形領域Sを非複雑領域と判定して、処理をステップS209に進める。
【0073】
E0<EV<E1の場合、CPU101は、複雑領域と判定した矩形領域Sを絶対背景領域(または絶対前景領域)とその他の領域に分割する。そして、分割結果を絶対背景領域画像(または絶対前景領域画像)へ書き込んで、絶対背景領域画像(または絶対前景領域画像)を更新する(S207)。そして、絶対背景領域画像(または絶対前景領域画像)を更新後、フラグFを反転(NOT F)する(S208)。
【0074】
次に、CPU101は、カウンタiにw/4を加算する(S209)。また、式(5)の評価結果が偽だった場合はカウンタiをインクリメントする(S210)。そして、カウンタiとW-1を比較して(S211)、i>W-1であれば処理をステップS212へ進め、i≦W-1であれば処理をステップS203に戻す。
【0075】
i>W-1の場合、CPU101は、フラグFをチェックし(S212)、F==‘1’であればカウンタjにh/4を加算し(S213)、F==‘0’であればカウンタjをインクリメントする(S214)。そして、カウンタjとH-1を比較して(S215)、j>H-1であれば処理を終了し、j≦H-1であれば処理をステップS202に戻す。
【0076】
[その他の実施例]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
被写体画像を含む画像が記録された前景画像、および、前記画像から前記被写体画像を除いた画像が記録された背景画像を入力する入力手段と、
前記前景画像と前記背景画像の差分画像を生成し、前記差分画像から前記前景画像の領域を分割するための閾値を取得し、前記差分画像と前記閾値を用いて、前記前景画像を被写体領域と背景領域に分割するための領域画像を生成する生成手段と、
前記前景画像と前記背景画像を用いて、前記被写体画像が含む複雑な形状の複雑領域を検出し、前記生成手段に、前記検出した複雑領域における前記領域画像の生成を繰り返させて前記領域画像を更新する更新手段とを有することを特徴とする画像処理装置。
【請求項2】
前記更新手段は、前記領域画像からエッジ部を検出し、前記エッジ部の近傍の所定領域における前記前景画像と前記背景画像の差から前記複雑領域を検出することを特徴とする請求項1に記載された画像処理装置。
【請求項3】
前記生成手段は、前記差分画像の画素値を二つの集合に二分する値を前記閾値として取得することを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項4】
前記生成手段は、前記複雑領域における前記領域画像の生成において、前記複雑領域に対応する前記差分画像の画素値を二つの集合に二分する値を前記閾値として取得することを特徴とする請求項3に記載された画像処理装置。
【請求項5】
前記生成手段は、前記差分画像の画素値のヒストグラムを用いて第一の閾値を取得し、前記差分画像の各画素値と前記第一の閾値の比較により、前記領域画像として絶対背景領域画像を生成する第一の生成手段と、
前記差分画像のエッジを検出し、前記エッジの近傍の領域に含まれる前記差分画像の画素値のヒストグラムを用いて第二の閾値を取得し、前記差分画像の各画素値と前記第二の閾値の比較により、前記領域画像として絶対前景領域画像を生成する第二の生成手段とを有し、
前記複雑領域における前記領域画像の生成は、前記第一の生成手段または前記第二の生成手段によって行われることを特徴とする請求項1に記載された画像処理装置。
【請求項6】
さらに、前記領域画像を用いてアルファマットを生成する手段と、
前記アルファマットを用いて前記前景画像から前記被写体領域の画像を切り出す手段とを有することを特徴とする請求項1から請求項5の何れか一項に記載された画像処理装置。
【請求項7】
入力手段、生成手段、更新手段を有する画像処理装置の画像処理方法であって、
前記入力手段が、被写体画像を含む画像が記録された前景画像、および、前記画像から前記被写体画像を除いた画像が記録された背景画像を入力し、
前記生成手段が、前記前景画像と前記背景画像の差分画像を生成し、前記差分画像から前記前景画像の領域を分割するための閾値を取得し、前記差分画像と前記閾値を用いて、前記前景画像を被写体領域と背景領域に分割するための領域画像を生成し、
前記更新手段が、前記前景画像と前記背景画像を用いて、前記被写体画像が含む複雑な形状の複雑領域を検出し、前記生成手段に、前記検出した複雑領域における前記領域画像の生成を繰り返させて前記領域画像を更新することを特徴とする画像処理方法。
【請求項8】
コンピュータを請求項1から請求項6の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【請求項1】
被写体画像を含む画像が記録された前景画像、および、前記画像から前記被写体画像を除いた画像が記録された背景画像を入力する入力手段と、
前記前景画像と前記背景画像の差分画像を生成し、前記差分画像から前記前景画像の領域を分割するための閾値を取得し、前記差分画像と前記閾値を用いて、前記前景画像を被写体領域と背景領域に分割するための領域画像を生成する生成手段と、
前記前景画像と前記背景画像を用いて、前記被写体画像が含む複雑な形状の複雑領域を検出し、前記生成手段に、前記検出した複雑領域における前記領域画像の生成を繰り返させて前記領域画像を更新する更新手段とを有することを特徴とする画像処理装置。
【請求項2】
前記更新手段は、前記領域画像からエッジ部を検出し、前記エッジ部の近傍の所定領域における前記前景画像と前記背景画像の差から前記複雑領域を検出することを特徴とする請求項1に記載された画像処理装置。
【請求項3】
前記生成手段は、前記差分画像の画素値を二つの集合に二分する値を前記閾値として取得することを特徴とする請求項1または請求項2に記載された画像処理装置。
【請求項4】
前記生成手段は、前記複雑領域における前記領域画像の生成において、前記複雑領域に対応する前記差分画像の画素値を二つの集合に二分する値を前記閾値として取得することを特徴とする請求項3に記載された画像処理装置。
【請求項5】
前記生成手段は、前記差分画像の画素値のヒストグラムを用いて第一の閾値を取得し、前記差分画像の各画素値と前記第一の閾値の比較により、前記領域画像として絶対背景領域画像を生成する第一の生成手段と、
前記差分画像のエッジを検出し、前記エッジの近傍の領域に含まれる前記差分画像の画素値のヒストグラムを用いて第二の閾値を取得し、前記差分画像の各画素値と前記第二の閾値の比較により、前記領域画像として絶対前景領域画像を生成する第二の生成手段とを有し、
前記複雑領域における前記領域画像の生成は、前記第一の生成手段または前記第二の生成手段によって行われることを特徴とする請求項1に記載された画像処理装置。
【請求項6】
さらに、前記領域画像を用いてアルファマットを生成する手段と、
前記アルファマットを用いて前記前景画像から前記被写体領域の画像を切り出す手段とを有することを特徴とする請求項1から請求項5の何れか一項に記載された画像処理装置。
【請求項7】
入力手段、生成手段、更新手段を有する画像処理装置の画像処理方法であって、
前記入力手段が、被写体画像を含む画像が記録された前景画像、および、前記画像から前記被写体画像を除いた画像が記録された背景画像を入力し、
前記生成手段が、前記前景画像と前記背景画像の差分画像を生成し、前記差分画像から前記前景画像の領域を分割するための閾値を取得し、前記差分画像と前記閾値を用いて、前記前景画像を被写体領域と背景領域に分割するための領域画像を生成し、
前記更新手段が、前記前景画像と前記背景画像を用いて、前記被写体画像が含む複雑な形状の複雑領域を検出し、前記生成手段に、前記検出した複雑領域における前記領域画像の生成を繰り返させて前記領域画像を更新することを特徴とする画像処理方法。
【請求項8】
コンピュータを請求項1から請求項6の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−124873(P2012−124873A)
【公開日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願番号】特願2010−276386(P2010−276386)
【出願日】平成22年12月10日(2010.12.10)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願日】平成22年12月10日(2010.12.10)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]