以下、本発明の実施の形態について、図面を参照して説明する。
図1は、本発明の実施形態に係る画像処理システムの構成を示すシステム構成図である。本実施形態の画像処理システムは、当該システムの中核をなす画像処理部1と、当該画像処理装置1に接続されるカメラ部2と、センサ部3と、操作インタフェース部4と、出力部5とを備える。
なお、本実施形態では、カメラ部2が撮影するカラー画像は、複数のフレームからなる映像(動画)である場合を例に以下に説明するが、カメラ部2が撮影するカラー画像は、静止画像であってもよい。
操作インタフェース部4は、操作者(ユーザ)が画像処理における様々な設定を行い、画像処理の状況を逐次確認するためのインタフェースである。
カメラ部2には、一般的なビデオカメラを用いること想定し、逐次、画像処理部1へカラー画像を出力する。
センサ部3には、深度情報を計測する深度センサ、温度情報を計測するサーモセンサなどを用いること想定し、逐次、画像処理部1へセンサ画像を出力する。センサ部3は、抽出したい前景(対象、被写体など)を含む撮影範囲をセンシングした結果を画像として扱うことができるもととする。また、センサ部3は、カメラ部2と同程度のフレームレートでセンサ画像を出力するものとする。
センサ部3には、抽出したい前景に応じて、当該前景に適したセンサを用いるものとする。例えば、抽出したい前景と背景とでセンサとの距離が異なる場合は、センサ部3に深度センサを用いることが望ましい。また、抽出したい前景と背景との温度が異なる場合は、センサ部3にサーモセンサを用いることが望ましい。あるいは、背景がある特定の色である場合には、センサ部3にクロマキーシステムを用いてもよい。また、背景が変化しない場合は、センサ部3で抽出したい対象が映っている画像と映っていない画像との差分を計算し、差分画像を画像処理部1に出力してもよい。
出力部5には、一般的なモニタ(ディスプレイ)、プロジェクタなどの出力装置を用いること想定し、カラー画像から抽出したい対象だけを抽出した抽出画像を出力する。
なお、図1に示す画像処理システムは、1つの機器(筐体)として一体となっていてもよいし、複数の装置から構成され、各部(各装置)がネットワークを経由して接続されていてもよい。
図2は、図1に示す画像処理部1の構成を示すブロック図である。図示する画像処理部1は、画像入力部11と、初期領域計算部12と、初期領域ノイズ除去部13と、ラベル画像計算部14と、背景画像取得部15と、境界補正部16と、探索位置設定部17と、画像合成部18と、画像出力部19と、を備える。
画像入力部11は、カラー画像と、抽出したい対象である前景をセンシングした結果であるセンサ画像と、マスク画像とを入力する。マスク画像については後述する。初期領域計算部12は、センサ画像とマスク画像とから、前景の領域をおおまかに示す初期領域を計算する。初期領域ノイズ除去部13は、初期領域に対してノイズを削除する。
ラベル画像計算部14は、センサ画像に基づいて、前景と、背景と、背景と前景との境界部分である未知とのラベルをもつラベル画像を生成する。背景画像取得部15は、カラー画像の中から前景が含まれていない背景画像を取得する。境界補正部16は、ラベル画像のうち、未知のラベルをもつ未知画素の各々について、カラー画像と背景画像とを用いて、未知画素のラベルを背景または前景に補正する。探索位置設定部17には、カラー画像において、未知画素の周囲の参照画素の探索位置が設定される。画像合成部18は、補正後のラベル画像を用いて、カラー画像から前景を抽出する。画像出力部19は、カラー画像から抽出した前景を出力部5に出力する。
上記説明した画像処理部1は、例えば、CPUと、メモリと、HDD等の外部記憶装置と、入力装置と、出力装置とを備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、CPUがメモリ上にロードされた画像処理部1用のプログラムを実行することにより、画像処理部1の各機能が実現される。また、画像処理部1用のプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD−ROMなどのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
次に、本実施形態の画像処理部1の処理について説明する。
図3は、画像処理部1の処理を示すフローチャートである。なお、カラー画像およびセンサ画像が動画として連続的に画像処理部1に入力される場合は、フレームごとに図3に示すS12〜S20の処理が連続して実施されるものとする。
まず、背景画像取得部15は、画像入力部11から前景が含まれていないカラー画像を取得し、背景画像としてメモリ等に保持する(S11)。
図4に、背景画像の例を示す。この前景が含まれていない背景画像は、操作者(ユーザ)が指示したタイミングで取得する。例えば、操作者は、最初にカメラ部2の前に前景がない状態で、背景画像の取得指示を、操作インタフェース部4を介して画像処理部1に入力する。これにより、カメラ部2が撮像した前景が含まれていないカラー画像が画像入力部11に入力され、背景画像として保持される。その後、抽出したい前景(例えば人などの被写体)にカメラの前に入ってもらった状態で以降のS12〜S20の処理が、フレーム毎に行われる。
次に、画像入力部11には、カラー画像と、センサ画像と、マスク画像とが入力される(S12)。
図5に、前景を含むカラー画像の例を示す。カラー画像は、カメラ部2から入力され、抽出したい領域(以下、「前景領域」)と、抽出したくない領域(以下、「背景領域」)とが含まれているものとする。図4の例では、中央にいる人物41を前景領域、それ以外を背景領域として、以下の処理を説明する。
また、カラー画像は、RGB(Red、Green、Blue)またはYUVの色空間などで表現されており、画素ごとに複数チャンネルの画素値を保持しているものとする。YUV は、輝度信号(Y)、輝度と青色成分との差(U)、輝度と赤色成分との差(V)の情報で色を表現する形式である。チャンネルは、画素を構成する色空間の次元を示す。例えばRGB色空間ではR(赤成分)、G(緑成分)、B(青成分)の3チャンネルを有する。また、深度センサのセンサ画像の場合は、深度成分のみを示すため、1チャンネルを有する。
センサ画像は、センサ部3から入力される、前景をセンシングした結果である画像であり、前景領域をおおまかに示すものとする。センサ画像は、センサ部3の種類に応じた情報を示すある1つのチャンネルを、カラー画像と同じ画角で保持しているものとする。なお、センサ画像がカラー画像の解像度より低い場合は、センサ画像を拡大・縮小し、カラー画像と解像度を一致させる。
図6に、マスク画像の例を示す。マスク画像は、操作インタフェース部4を用いて、操作者により手入力される画像であって、図5に示すカラー画像全体のうち、確実に背景領域となる領域を示すものである。図6のマスク画像では、黒い画素51が確実に背景領域となる領域を示し、白い画素52は前景領域が出現する可能性がある領域を示す。なお、センサ画像を監視して前景領域が表れない領域を統計することでマスク画像を自動的に作成してもよい。
次に、初期領域計算部12は、画像入力部11からセンサ画像とマスク画像とを取得し、前景領域をおおまかに示す2値の初期領域を計算する(S13)。
図7に、初期領域の例を示す。ここで白い画素は前景領域を示す画素(前景画素)とし、黒い画素は背景領域を示す画素(背景画素)とする。以降の説明では、前景画素の画素値をF(Fore)、背景画素の画素値をB(Back)とする。
初期領域計算部12は、センサ画像の各画素の画素値が所定の閾値より大きいか否かにより、センサ画像の各画素をFとBの2値に分類した初期領域を計算する。この閾値は、操作者が手入力で指定してもよいし、初期領域計算部12が複数のセンサ画像を監視して、画素および/または領域ごとに自動的に適切な閾値を決定してもよい。なお、初期領域計算部12は、マスク画像の黒い画素51については、センサ画像の画素値に関わらず、強制的にB(背景画素)とする。
なお、本実施形態では、マスク画像を用いて2値の初期領域計算することとしたが、マスク画像を用いることなく、センサ画像のみから初期領域を計算することとしてもよい。
次に、初期領域ノイズ除去部13は、初期領域計算部12で出力された初期領域に対して、メディアンフィルタなどを施すことで、初期領域のノイズを除去する(S14)。先述した図7では、前景となる人物の顔から首にかけて誤った背景画素(黒い部分)が存在し、また、本来背景である箇所に誤った前景画素(白い部分)が存在している。
図8は、図7に対してメディアンフィルタを施したノイズ除去後の初期領域の例である。なお、ノイズ除去として、初期領域画像の縦方向のメディアンフィルタの後、横方向のメディアンフィルタを施すといった、より高速なノイズ除去アルゴリズムを利用することが望ましい。
次に、ラベル画像計算部14は、ノイズを除去した初期領域のうち、後述するS18の補正処理の対象となる画素を未知画素として特定する。以降の説明では、未知画素の画素値をU(Unknown)とする。すなわち、ラベル画像計算部14は、2値(F、B)の画素値をもつ初期領域から、3値(F、B、U)の画素値をもつラベル画像を生成し、境界補正部16に出力する。ここで、画素値は、ラベルともいう。
具体的には、ラベル画像計算部14は、初期領域の各画素を参照し、前景画素と背景画素とが隣接している画素を境界画素として特定し、記憶する(S15)。次に、ラベル画像計算部14は、初期領域うち各境界画素から一定距離内にある画素を、未知画素の画素値(U)に更新し、F、B、Uのラベル画像を生成する(S16)。なお、ラベル画像計算部14は、初期領域画像の未知画素以外の画素については、初期領域の画素値(FまたはB)のままとする。
図9は、ラベル画像計算部14の処理により生成されたラベル画像の例である。図示する例では、白が前景画素、黒が背景画素、薄灰が未知画素を示す。なお、ラベル画像計算部14は、境界画素ごとに並列的にS16の処理を実施することで、より高速にS16の処理を完了することができる。
このとき、ラベル画像計算部14は、未知画素を複数の種類に分けてもよい。
図10(A)は、前景画素、背景画素、未知画素の3値のラベル画像の例であり、図10(B)は、未知画素を2種類とした4値のラベル画像の例を示している。図10(B)では、未知画素は、前景画素と背景画素との境界画素からの距離に応じて2つに区別(分類)されている。すなわち、濃灰は、境界画素および境界画素から近い未知画素(画素値UA)を示し、薄灰は、境界画素から遠い未知画素(画素値UB)を示している。境界画素から近い未知画素(画素値UA)は、境界画素から所定の距離内の未知画素であり、境界画素から遠い未知画素(画素値UB)は、境界画素から所定の距離より離れた未知画素である。
この未知画素の種類は、後述するS18の補正処理において参照され、未知画素の種類に対応した補正処理が行われる。なお、未知画素の種類は、境界画素からの距離だけでなく、周囲の画素値、領域(前景領域、背景領域、未知領域)の形状などに応じて区別してもよく、また2種類より多くてもよい。
次に、ラベル画像計算部14は、ラベル画像からすべての未知画素を参照し、未知画素の座標列を格納した未知画素列を生成する(S17)。未知画素が複数種類ある場合は、ラベル画像計算部14は、それぞれの種類ごとに未知画素列を作成する。
次に、境界補正部16は、ラベル画像のすべての未知画素に境界補正を行い、補正後のラベル画像を生成する(S18)。
図11は、図3のS18の処理の詳細を示すフローチャートである。まず、境界補正部16は、探索位置設定部17に設定された探索位置の変更指示が入力されたか否かを判定する(S31)。カラー画像(フレーム)が逐次的に画像処理部1に入力される場合、操作者が変更指示を入力しない場合は、前のフレームで用いた探索位置(または、あらかじめ設定した所定の探索位置)を使用する。操作者は、各カラー画像(フレーム)の内容に応じて所望の探索位置を選択し、操作インタフェース部4を介して探索位置を入力することができる。これにより、探索位置設定部17には、変更後の探索位置が設定される。探索位置は、補正処理において参照する複数の参照画素の位置を示すものである。
なお、カラー画像が静止画の場合は、あらかじめ設定した所定の探索位置を使用するか、あるいは、操作者がカラー画像の内容に応じて選択した探索位置を、変更指示として操作インタフェース部4を介して入力することとしてもよい。
探索位置の変更指示が入力された場合(S31:YES)、境界補正部16は探索位置設定部17に設定された探索位置の探索位置画像を作成する(S32)。
図12に、4つの探索位置画像の例を示す。各探索位置画像の白点は、画像中央を補正対象の未知画素としたときに、当該未知画素の近傍にある処理中に参照する画素の相対的な座標を示す。
例えば図12(A)では、画像の中央部ほど白点が多く、画像中央から離れると白点がなくなっている。これはある未知画素を補正するとき、その未知画素に近い画素ほど多く参照し、離れた画素は無視することを示している。図12(B)は、参照回数が比較的多い場合の探索位置画像であり、図12(A)よりも白点の密度が濃い。図12(C)は、比較的広い範囲で参照する場合の探索位置画像であり、図12(A)および図12(B)よりも広い範囲で白点が設置されている。一方で、図12(D)は、より近くの画素は参照せず、遠くの画素のみ参照する場合の探索位置画像であり、画像の中央部に白点がない。
ここで、本実施形態では、未知画素の種類に応じて、適切な探索位置画像(探索位置)を用いることとする。すなわち、未知画素の種類に応じて探索位置を変更する。例えば、上述した境界画素に近い未知画素(画素値UA)では、近くに前景や背景の画素が存在しない。そこで、未知画素(画素値UA)については、図12(D)の探索位置画像の探索位置を採用することで、無駄な参照を省くことができる。
一方、境界画素から遠い未知画素(画素値UB)では、近くに前景や背景の画素が存在するため、図12(A)〜(C)のいずれかの探索位置画像の探索位置を採用する。操作者は、カラー画像の内容に応じて、未知画素(画素値UB)に対して、図12(A)〜(C)のどの探索位置を使用するのか選択する。
次に、境界補正部16は、探索位置画像のすべての白点を参照し、画像中央からの相対的な座標を探索位置として取得し、探索位置列を生成する(S33)。このとき、境界補正部16は、探索位置列を画像中央からの距離で昇順に並べ替える(ソートする)ものとする。すなわち、境界補正部16は、探索位置に含まれる複数の参照画素の位置を、未知画素と同じ位置のカラー画素から近い順に並べ替えた探索位置列を生成する。これにより、後段のループBの処理で探索位置を参照するときに、補正対象の未知画素に近いものから順番に参照される。
後述するS37では、境界補正部16は、未知画素(画素値UA)に対しては、例えば図12(D)の探索位置画像の探索位置列を選択し、未知画素(画素値UB)に対して、例えば図12(A)〜(C)のいずれかの探索位置画像の探索位置列を選択する。
次に、境界補正部16は、ラベル画像計算部14から取得した未知画素列に含まれるすべての未知画素について、補正処理を実施する(ループA:S34〜S43)。なお、未知画素ごとに並列してこの処理を実施することで、より高速に処理を完了できる。
まず、境界補正部16は、ラベル画像における補正対象の未知画素uの座標(xu,yu)を取得する。次に、未知画素と同じ座標にあるカラー画像の画素値s(xu,yu)と、背景画像の画素値b(xu,yu)とを取得する。そして、境界補正部16は、未知画素uと同じ位置における、カラー画像の画素の画素値と、背景画像の画素の画素値との距離を示す色距離(第1の色距離)を計算する(S34)。カラー画像および背景画像がYUV色空間の場合、画素値sとbの色距離distances,bは、例えば下記のように計算される。
ただし、このときwは、各チャンネルに対する重みであり、操作者が手入力する、あるいは境界補正部16が自動的に設定するものとする。例えば上記で Uw=0,Vw=0の場合、色距離は輝度値成分のみで計算される。
境界補正部16は、計算した色距離を色距離最小値としてメモリなどに保持する。また、境界補正部16は、処理対象の未知画素の候補ラベルとして、背景画素を示すB、あるいは未知画素由来の背景画素であることを示すBUとしてメモリなどに保持する(S35)。BUは、補正前は未知画素であることを示すフラグである。
そして、境界補正部16は、色距離最小値が所定の閾値A(第1の閾値)より大きいか否かを判別する(S36)。色距離最小値が所定の閾値A以下の場合(S36:NO)、境界補正部16は、ラベル画像の当該未知画素に対する画素値l(xu,yu) を候補ラベルの値(BまたはBU)に更新し(S43)、当該未知画素に対する補正処理を終える。例えば、上述の色距離distances,bが閾値Aを下回っていた場合、補正対象の未知画素uは、未知画素を示すUから、背景を示すBあるいはBUに更新される。
色距離最小値が閾値Aより大きい場合(S36:YES)、以降の処理を継続する。本実施形態では、境界補正部16は、前述のとおり、補正対象の未知画素の種類(UA、UB)に応じた探索位置列を選択し(S37)、先頭の探索位置から順に下記の処理を実施する(ループB:S38〜S42)。
境界補正部16は、補正対象の未知画素uの座標(xu,yu)から探索位置(xd,yd)だけ移動した座標におけるカラー画像の画素値sd((xu+xd),(yu+yd))と、ラベル画像の画素値ld ((xu+xd),(yu+yd))とを取得する(S38)。境界補正部16は、ラベル画像の画素値ldがF(背景)またはB(前景)であるかを判別し(S39)、ラベル画像の画素値ldがU(未知)の場合(S39:NO)、当該探索位置での以降の処理を行うことなく、次の探索位置の処理を行う。
ラベル画像の画素値ldがFまたはBの場合(S39:YES)、境界補正部16は、カラー画像における補正対象の画素の画素値s(xu,yu)と、探索位置の画素の画素値sd((xu+xd),(yu+yd))とを用いて、色距離distances,sdを例えば下記のように計算する(S40)。すなわち、境界補正部16は、未知画素と同じ位置におけるカラー画像のカラー画素と、当該カラー画素の周辺の参照画素との色距離(第2の色距離)を算出する。
このとき、wは各チャンネルに対する重みであり、操作者が手入力する、あるいは境界補正部16が自動的に設定するものとする。例えば上記でPw 以外が0の場合、色距離は画素間の座標の距離のみで計算される。
そして、境界補正部16は、S40で算出した色距離が、現時点においてメモリに保持している色距離最小値より小さい場合、保持している色距離最小値をS40で算出した色距離に更新する。また、色距離最小値を更新した場合は、境界補正部16は、ラベル画像の当該探索位置における参照画素の画素値ld ((xu+xd),(yu+yd))を候補ラベルとする(S41)。
例えば、境界補正部16は、ラベル画像の参照画素の画素値ldがF(前景)の場合、候補ラベルをFまたは未知画素由来である前景を示すFUとする。FUは、補正前は未知画素であることを示すフラグである。また、境界補正部16は、参照画素の画素値ldが背景を示すBの場合、候補ラベルをBまたは未知画素由来である背景を示すBUとする。
なお、S40で算出した色距離最小値が現時点において保持している色距離最小値以上の場合、すなわち、色距離最小値を更新できない場合は、参照画素の画素値ldを候補ラベルとしない。
そして、境界補正部16は、色距離最小値が所定の閾値B(第2の閾値)より大きいか否かを判別する(S42)。色距離最小値が閾値B以下の場合(S42:NO)、境界補正部16は、ラベル画像の当該未知画素に対する画素値l(xu,yu)を候補ラベルの値に更新し(S43)、当該未知画素に対する処理を終える。すなわち、境界補正部16は、S37で選択した探索位置列の順番で、各探索位置の参照画素との色距離を算出し、色距離が閾値B以下になった時点で、当該参照画素と同じ画素値で補正対象の未知画素の画素値を補正する。
色距離最小値が閾値Bより大きい場合(S42:YES)、S38に戻り、次の探索位置の処理を行う。なお、探索位置の参照が探索位置列の終端まで到達した場合、境界補正部16は、その時点で保持されている候補ラベルの値で、ラベル画像の当該未知画素に対する画素値l(xu,yu)を更新(追受診)し、当該未知画素に対する補正処理を終える。
次に、図11の処理について、図13を用いて具体的に説明する。
図13は、上から探索位置画像131、ラベル画像132、カラー画像133および背景画像134の一部を表している。図13の中心の線135は、ラベル画像において補正対象の画素(未知画素)の座標を示している。まず、この座標においてカラー画像133の画素と、背景画像134の画素とが比較される(S34)。この比較で色距離が十分に小さい場合(S36:NO)、ラベル画像132の補正対象の画素は背景を示すBまたはBUとなり(S43)、図11の補正処理を終了する。
一方、色距離が比較的大きい場合(S36:YES)、カラー画像133の補正対象の画素と、当該画素の周辺の参照画素との比較に移る。図13の左側の線136は、探索位置画像131の探索位置が前景に対応している場合で、カラー画像133上でこの座標の画素と、中心の線135の座標の画素との色距離が近い場合は、ラベル画像の補正対象の画素の補正結果は前景を示すFまたはFUとなる。また、右側の線137は探索位置画像131の探索位置が背景に対応している場合で、カラー画像133上でこの座標の画素と、中心の線135の座標の画素との色距離が近い場合は、ラベル画像の補正対象の画素の補正結果は背景を示すBまたはBUとなる。
なお、閾値Aは背景画像とカラー画像との色距離の比較に用い、閾値Bはカラー画像における補正対象の画素と周辺の参照画素との色距離の比較に用いるものあるが、閾値Aと閾値Bの値は一致していなくてもよい。例えば撮影環境において背景が安定している場合は、閾値Aをより大きく設定して、できるだけ処理を早く終わらせる方が好ましい。一方で、撮影環境において背景が変化しやすい場合には、背景を誤って前景としてしまうこと(FalsePositive)を防ぐため、閾値Aを小さく設定することが望ましい。
図14に、境界補正部16から出力される補正後のラベル画像の例を示す。補正前の図8と比較して、誤検出が低減されている。また前景と背景の境界部分も滑らかになっており、センサ画像の解像度が小さい場合に発生するジャギーなどのノイズが解決されている。
そして、図3のS19の処理に戻り、画像合成部18は、カラー画像とS18で補正されたラベル画像とを入力として、抽出画像を生成する。
図15に抽出画像の例を示す。画像合成部18は、すべての画素ごとにラベル画像の画素値を参照し、画素値がFの場合はカラー画像の画素値を抽出画像に反映し、画素値がBの場合は黒または白などの操作者が設定した画素値を抽出画像に設定する。図15の例では背景領域を真っ白に削除すべく、ラベル画像でBの画素には白の画素値が設定された抽出画像を示している。
また、操作者が外部画像を指定し、ラベル画像の画素値がFの場合はカラー画像の画素値を、ラベル画像の画素値がBの場合は外部画像の画素値を適用することで、前景領域だけが外部画像に貼りついたような抽出画像を得ることができる。
ここで、画像合成部18は、境界補正部16から出力されたラベル画像を平滑化した後に、S19の抽出画像の生成処理を行ってもよい。例えば、画像合成部18は、Fを255、Bを0としてアルファ画像を作成し、アルファ画像にガウシアンフィルタなどで平滑化してからカラー画像のアルファチャンネルに適用する。これにより、前景領域の境界部分が滑らかになり、より違和感のない抽出画像を得ることができる。
また、画像合成部18は、補正後のラベル画像の画素の種類(未知画素由来であることを示すフラグの有無)に応じて平滑化処理を変化させてもよい。すなわち、前記画像合成部18は、フラグの有無に応じたラベル画像の平滑化処理を行い、平滑化後のラベル画像を用いて、カラー画像から前景を抽出してもよい。
例えば、ある座標(x,y)において、ラベル画像の画素値l(x,y)が未知画素由来の背景を示すフラグが設定されたBUであるとき、画像合成部18は、アルファ値α(x,y)を推定する以下のような計算を実施する。なお、アルファ値は、透過度である。
ここで、s(x,y)はカラー画像の画素値、b(x,y)は背景画像の画素値を示す。また座標(xd、yd)は、ラベル画像で座標(x、y)から最も近い前景を示す画素Fの座標を示す。
一方、ある座標(x,y)において、ラベル画像の画素値l(x,y)がBU以外の場合は、背景画素を用いることなく、アルファ値を算出する。例えば、前述のようにFを255、Bを0としてアルファ画像を作成し、平滑化処理を施した場合は、0と255の間にある画素は例えば128などのアルファ値となる。
最後に、画像出力部19は、S19で生成した抽出画像を、モニタやプロジェクタなどの出力部5に合わせて適切なフォーマットに変換し、抽出画像を出力する。
以上説明した本実施形態では、入力されたカラー画像から所望の人物や物体などの前景を抽出する場合、特にその境界部分において精緻に前景を抽出することが可能となる。また、閾値A、Bを適切に設定することで、抽出処理にかかる計算を削減し、高速に抽出画像を出力することが可能となる。
また、本実施形態の画像処理部1は、カラー画像の中から、前景が含まれていない背景画像を取得し、未知画素と同じ位置におけるカラー画像のカラー画素と、背景画像の背景画素との第1の色距離を算出し、第1の色距離が第1の閾値以下の場合は、当該未知画素のラベルを背景に更新する。
非特許文献1では、ある未知画素の補正後のラベルを決定する際に、カラー画像中の周囲の画素値との比較しか行っていない。そのため、初期領域を計算する際に本来は背景である画素が誤って前景となり(FalsePositive)、またラベル画像を計算する際にそれが未知画素に置き換わらず残ってしまった場合、カラー画像中でその画素と似た色である未知画素がすべて前景となってしまうなど、誤りが伝播してしまう可能性がある。
これに対し、本実施形態では、始めに背景画像との比較を行い、色距離が近い場合は未知画素の補正結果を背景画素として確定させるため、非特許文献1よりもFalsePositiveの伝播を受けにくくなり、結果としてより精度の高い抽出を可能としている。
また、本実施形態では、背景と前景の境界からの距離に応じて、複数の種類の未知のラベルを設定し、各未知画素のラベルの種類に応じて、カラー画像内での第2の色距離を算出する際に参照する複数の参照画素の位置を示す探索位置を変更する。これにより、本実施形態では、例えば境界画素に近い未知画素を補正する際に、極近い画素を無視するような探索位置(例えば、図12(D))を採用することで、極近い未知画素への参照をスキップすることができ、結果として参照回数の削減と高速な抽出画像の取得が可能となる。
すなわち、非特許文献1では、未知画素を中心として周囲の画素を疎に参照しているが、この参照する位置はすべての未知画素において同一となっているため、特に未知画素が密集しているような箇所では無駄な参照が多発し、結果として効率的な計算が行えず、処理時間が大幅に増加する。本実施形態では、未知画素の種類に応じて、探索位置を使い分けることで、無駄な参照を回避することができる。
また、本実施形態では、探索位置に含まれる複数の参照画素の位置を、未知画素と同じ位置のカラー画素から近い順に並べ替えた探索位置列を生成する。これにより、本実施形態では、第2の色距離を算出する際に、未知画素の位置から近い参照画素から順に実施することができる。多くの場合において、色距離が近い画素は、座標も近いため、結果としてより参照回数を削減し、高速に抽出画像を得ることが可能となる。
また、本実施形態では、探索位置列の順番で、参照画素との第2の色距離を算出し、第2の色距離が第2の閾値以下になった時点で、当該参照画素と同じ画素値(ラベル)で未知画素の画素値(ラベル)を補正する。このように、第2の閾値を設け、第2の色距離が第2の閾値を下回った時点で処理を離脱することにより、抽出画像の精度を毀損することなく、画素の参照回数を大幅に削減でき、高速に抽出画像を得ることができる。
また、本実施形態では、未知画素の補正後のラベルに、補正前は未知画素であったこと示すフラグを設定し、フラグの有無に応じたラベル画像の平滑化処理を行い、平滑化後のラベル画像を用いて、前記カラー画像から前景を抽出する。例えば、未知画素由来の背景を示すフラグが設定されたBUである場合、カラー画像とラベル画像に加えて背景画像を入力とすることで、前景・背景の2値ではない厳密なアルファ値を計算することが可能となり、より滑らかで精緻な抽出画像を得ることができる。
なお、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
以下に、上記実施形態の第1の変形例および第2の変形例について説明する。
<第1の変形例(変形例1−1)>
第1の本変形例は、ラベル画像の生成処理(図3:S16−S18)を効率化するための変形例である。
図16は、第1の変形例におけるラベル画像の生成処理を示すフローチャートである。図16は、図3の上記実施形態のS16およびS18の処理を置き換えるものである。すなわち、本変更例では、図3のS11〜S15を行った後、図16に示す処理を行い、その後、図3のS19〜S20を行う。なお、本変形例のS181の処理は、後述する図18で具体的に示す。
本変形例では、ラベル画像計算部14は、複数の種類の未知のラベルを設定し、境界補正部16は、未知のラベルをもつ未知画素の各々について、未知画素の種類ごとに複数の段階で各未知画素のラベルを背景または前景に補正し、補正済みの種類のラベルの補正結果を用いて、次の種類の未知画素のラベルを補正する。具体的には以下のとおりである。
ラベル画像計算部14は、初期領域うち、各境界画素から一定距離にある画素v(x, y)を、複数の種類の未知画素(画素値US1、US2)に更新し、ラベル画像を生成する。このときv(x, y)は、座標(x, y)にある初期領域の画素であるものとする。
すなわち、まず、ラベル画像計算部14は、境界画素から一定距離にある全ての各画素v(x, y)について、ループC(S161〜S163)の処理を行い、未知画素を複数の種類に分ける。
まず、ラベル画像計算部14は、xとyの加算値を計算し、その値の2による剰余(一般的にmodulo, modと表記される)を計算し、計算結果が0か否かを判別する(S161)。剰余が0の場合(S162:YES)、ラベル画像計算部14は、処理対象の未知画素を第1の種類の未知画素(画素値US1)に更新する(S162)。
一方、剰余が1の場合(S162:NO)、ラベル画像計算部14は、処理対象の未知画素を第2の種類の未知画素(画素値US2)に更新する(S163)。そして、ラベル画像計算部14は、ループCを行うことで、初期領域のうち各境界画素から一定距離内にある全ての画素を、複数の種類の未知画素のラベル(画素値US1、US2)に更新する。そして、ラベル画像計算部14は、F、B、US1、US2の4値のラベル画像を生成する(S164)。
なお、ラベル画像計算部14は、初期領域画像の未知画素以外の画素については、初期領域の画素値(FまたはB)のままとする。また、ラベル画像計算部14は、境界画素ごとに並列的にループCの処理を実施することで、高速にループCの処理を完了することができる。
そして、ラベル画像計算部14は、ラベル画像からすべての未知画素US1、US2を参照し、未知画素の種類ごとに未知画素の座標列を格納した未知画素列を作成する(S171)。ここでは、未知画素US1に対応する未知画素列と、未知画素US2に対応する未知画素列の2つが作成される。
図17は、ラベル画像計算部14の処理により生成されたラベル画像の例である。図17の左側の画像171は、ラベル画像の全体を示し、右側の画像172は、ラベル画像171のうち前景(被写体)領域の一部を拡大したものである。図示する画像172では、白色173は前景画素を、黒色174は背景画素を、薄灰(明るい灰色)175は未知画素US1を、そして、濃灰(暗い灰色)176は未知画素US2を示す。
ここでは、S161〜S163で座標(x, y)の加算値の剰余に基づいて未知画素を複数の種類(画素値US1、US2)に分類する。これにより、未知画素からなる未知領域177において、図示するように、複数の種類の未知画素が縦方法および横方向で交互(順番)に配置され、市松模様となる。換言すると、未知画素US1と未知画素US2とが、上下左右の四方向で隣接しないように配置される。
なお、後述するが、複数の種類の未知画素の配置は、図17に限定されるものではない。ラベル画像計算部14は、未知画素からなる未知画素領域において、各未知画素の周囲の8つの画素(上、下、左、右、右上、左上、右下、左下)のうち、少なくとも4つの画素が参照される場合において、そのうちの少なくとも1つが、異なる種類の未知画素となるように、各未知画素の種類を設定すればよい。
そして、境界補正部16は、未知画素の種類ごとに、ラベル画像のすべての未知画素に境界補正を行い、補正後のラベル画像を生成する(S181)。具体的には、境界補正部16は、カラー画像、背景画像、ラベル画像および複数の未知画素列を入力として、前景の境界部分を補正したラベル画像を出力する。
図18は、本変更例における図11のS18の処理の詳細を示すフローチャートである。図18は、上記実施形態の図11に対応するものである。本変形例では、未知画素の種類ごとに、順番にラベルを補正する。
まず、境界補正部16は、図11のS31と同様に、操作者による設定やパラメータの自動的な制御によって、探索位置設定部17に設定された探索位置の変更指示が入力されたか否かを判定する(S51)。探索位置の変更指示が入力された場合(S51:YES)、境界補正部16は探索位置設定部17に設定された探索位置の探索位置画像を取得する(S52)。ここでは、未知画素の種類ごとに、探索位置画像が取得される。
図19に、2つの探索位置画像の例を示す。本変形例では、未知画素の種類に応じて、適切な探索位置画像(探索位置)を用いることとする。すなわち、未知画素の種類に応じて探索位置を変更する。図19(A)は、未知画素US1に対応する未知画素列用の探索位置画像であり、図19(B)は、未知画素US2に対応する未知画素列用の探索位置画像である。また、各探索位置画像の白点は、画像中央を補正対象の未知画素としたときに、当該未知画素の近傍にある、処理中に参照する画素の相対的な座標を示す。
例えば図19(A)では、画像の中央部ほど白点が多く、画像中央から離れると白点がなくなっている。すなわち、補正対象の未知画素に近いほど、密に探索位置が設定されている。これはある未知画素を補正するとき、その未知画素に近い画素ほど多く参照し、離れた画素は無視することを示している。
一方、図19(B)は、図19(A)と比較して、探索位置の数が非常に少なくなるように設定される。すなわち、第2段階目以降に補正を行う未知画素用の探索位置は、各未知画素の周囲の画素である。具体的には、図19(B)は、補正対象の未知画素の周囲の上下左右の4つの画素のみが、探索位置として設定されている。これは、未知画素US2は、先に補正処理を行った未知画素US1の補正結果を利用できるためである。これにより、本変形例では、先に補正を行った補正済の種類の未知画素の補正結果を利用できるため、不要な探索位置での参照を省き、補正処理を効率化および高速化することができる。
次に、境界補正部16は、図19の各探索位置画像の各々について、当該探索位置画像のすべての白点を参照し、画像中央からの相対的な座標を探索位置として取得し、探索位置列を生成する(S53)。すなわち、未知画素US1用の探索位置列A1と、未知画素US2用の探索位置列A2とが生成される。
このとき、境界補正部16は、各探索位置列を画像中央からの距離で昇順に並べ替える(ソートする)ものとする。すなわち、境界補正部16は、探索位置に含まれる複数の参照画素の位置を、未知画素と同じ位置のカラー画素から近い順に並べ替えた探索位置列を生成する。これにより、探索位置を参照するときに、補正対象の未知画素に近いものから順番に参照される。
なお、境界補正部16は、後述する第1の種類の未知画素US1の境界補正を行う第1段ループA(未知画素US1)では、図19(A)の探索位置画像の探索位置列A1を選択し、第2の種類の未知画素US2の境界補正を行う第2段ループA(未知画素US2)では、図19(B)の探索位置画像の探索位置列A2を選択する。
次に、境界補正部16は、第1段階の補正処理として、未知画素US1に対応する未知画素列を参照し、すべての未知画素US1について補正処理(第1段ループA)を実施する(S54)。この第1段ループAの補正処理は、図11のループA(S34〜S43)と同様である。
すなわち、境界補正部16は、未知画素US1の座標に対応するカラー画像中の画素、および、背景画像中の画素に基づいて算出した色距離が閾値A以下である場合は、候補ラベルを背景とし、候補ラベルで未知画素US1を更新する。一方、色距離が閾値Aより大きい場合は、図11のS37において未知画素US1用の探索位置列A1を選択し、カラー画像中の補正対象の画素と、探索位置列A1の各探索位置の画素との色距離を比較する。その結果、色距離が閾値B以下である画素、あるいは色距離が最小である画素のラベル(画素値)を候補ラベルとし、候補ラベルで未知画素US1を更新する。
図20は、第1段ループA(S54)の終了後のラベル画像を示すものである。図示するラベル画像201では、第1段ループAを行う前のラベル画像172(図17参照)と比較して、未知画素US1に対応するすべての薄灰の画素が、白色または黒色に更新されていることがわかる。一方で未知画素US2に対応するすべての濃灰の画素は、まだ更新されていない。
次に、境界補正部16は、第2段階の補正処理として、未知画素US2に対応する未知画素列を参照し、すべての未知画素US2について補正処理(第2段ループA)を実施する(S55)。この第2段ループAの補正処理も、図11のループA(S34〜S43)と同様である。ここでは、図11のS37において、未知画素US2用の探索位置列A2を選択する。探索位置列A2では、探索位置の数が非常に少ないため、図11のループAの中のループB(S38〜S42)の比較計算の回数が非常に少ないものとなる。したがって、ループBの処理時間が短くなる。
図21は、第2段ループA(S55)の終了後のラベル画像を示すものである。図示するラベル画像211では、第2段ループAを行う前のラベル画像201(図20参照)と比較して、未知画素US2に対応するすべての濃灰の画素が、未知画素US1と同様に白色または黒色に更新されていることがわかる。
以上説明した変形例1では、未知画素を複数の種類に分類して、種類ごとに順番に補正処理を行う。このように、複数段階(ここでは、2段階)での補正処理を行うことにより境界補正の効率化および高速化を実現することができる。すなわち、本変形例では、上記実施形態で述べた効果に加え、精度への影響を抑えつつ、前景の抽出に要する計算量を削減することが可能になり、抽出画像の出力にかかる時間を短縮することができる。
なお、上記実施形態でも本変形例と同様に、未知画素にいくつかの種類を設けてもよいことが記載されているが、上記実施形態では、ある未知画素を補正(更新)する際に、補正済の未知画素のラベルを利用することを前提としていない。そのため、上記実施形態では、未知画素に複数の種類があるとしても、各未知画素を並列化し、一括して補正することができる。
一方、本変形例では、未知画素の補正を複数の段階に分け、第1段階では通常の探索位置画像(例えば、図19(A))を用いて第1の種類の未知画素を補正して、ラベル画像を更新する(図20)。そして、第2段階では、補正後の第1の種類の未知画素の補正結果を利用することで、極少ない探索位置画像(例えば、図19(B))で第2の種類の未知画素を補正し、最終的なラベル画像を取得する。
この複数段階の補正処理によって、未知画素を補正する処理(図16:S181、図18)の処理時間を、半分まではいかないまでも、大幅に削減することが可能となる。また、第1段階および第2段階のそれぞれのループ処理(図18:S54、S55)では、各未知画素の補正を並列化することができるため、従来の並列化の恩恵を大きく損ねない利点がある。
なお、本変形例では、補正対象の未知画素は、当該未知画素の周囲の4つの画素のいずれかに、色距離が最も近く、かつ、自身と同じラベルの画素が存在することを前提としている。この条件を満たさないような画素は少なからず存在するため、本変形例では若干ではあるが、上記実施形態よりも精度を犠牲にする場合がある。
また、本変形例では、複数の種類の未知画素を、図17に示すような市松模様に配置することとしたが、これに限定されるものではない。すなわち、各未知画素の周囲の8つの画素(上、下、左、右、右上、左上、右下、左下)のうち、少なくとも4つの画素が参照される場合において、そのうちの少なくとも1つが、異なる種類の未知画素となるように、各未知画素の種類を設定すればよい。例えば、複数の種類の未知画素を、以下のようにすることも考えらえる。
図22〜図25は、各未知画素の周囲の4つの画素のうち、少なくとも1つが異なる種類の未知画素となるように、複数の種類の未知画素を設定した例である。
図22に示す横型模様は、図16のループCにおいて、ラベル画像計算部14は、mod(y, 2)を計算し、計算結果が0か否かを判定する(S161)。すなわち、対象画素の座標が(x, y)の場合に、yの値について2による剰余を計算する。剰余が0の場合(S161:YES)、ラベル画像計算部14は、処理対象の未知画素を第1の種類の未知画素(図示する白色)に更新する(S162)。一方、剰余が1の場合(S161:NO)、ラベル画像計算部14は、処理対象の未知画素を第2の種類の未知画素(図示する灰色)に更新する(S163)。
図23に示す縦型模様は、図16のループCにおいて、ラベル画像計算部14は、mod(x, 2)を計算し、計算結果が0か否かを判定する。すなわち、対象画素の座標(x, y)のxの値について2による剰余を計算する。剰余が0の場合、ラベル画像計算部14は、処理対象の未知画素を第1の種類の未知画素(白色)に更新する。一方、剰余が1の場合、ラベル画像計算部14は、処理対象の未知画素を第2の種類の未知画素(灰色)に更新する。
図24に示す4ブロック模様は、図16のループCにおいて、ラベル画像計算部14は、mod(x, 3) > 0 AND mod(y, 3) > 0 の条件を満たすか否か、すなわち1(真値)か、或いは0(偽値)かを判定する。対象画素の座標(x, y)のxの値について3による剰余が0より大きく、かつ、yの値について3による剰余が0より大きい場合は、ラベル画像計算部14は、1(真値)と判定し、処理対象の未知画素を第1の種類の未知画素(灰色)に更新する。一方、mod(x, 3) > 0 AND mod(y, 3) > 0の条件を満たさない場合、ラベル画像計算部14は、0(偽値)と判定し、処理対象の未知画素を第2の種類の未知画素(白色)に更新する。
図25に示す6ブロック模様は、図16のループCにおいて、ラベル画像計算部14は、mod(y, 6) > 2 の計算結果を A とし、mod(x + 2 * A, 4) > 1 の条件を満たすか否か、すなわち1(真値)か、或いは0(偽値)かを判定する。ラベル画像計算部14は、対象画素の座標(x, y)のyの値について6による剰余を計算し、2より大きい場合は計算結果Aを1(真値)とし、2以下の場合は計算結果Aを0(偽値)とする。そして、ラベル画像計算部14は、対象画素の座標(x, y)のxに2*計算結果Aを加算した値について4による剰余を計算し、1より大きい場合は、1(真値)と判定し、処理対象の未知画素を第1の種類の未知画素(灰色)に更新する。一方、1以下の場合、ラベル画像計算部14は、0(偽値)と判定し、処理対象の未知画素を第2の種類の未知画素(白色)に更新する。
<第1の変形例(変形例1−2)>
上述した第1の変形例(変形例1−1)では、未知画素の種類を、未知画素US1と未知画素US2の2つとしたが、さらに多くの種類に未知画素を分類してもよい。例えば、図10に示す上記実施形態では、未知画素を前景画素と背景画素との境界画素からの距離に応じて2つに分類(区別)しており、境界画素から遠い未知画素に対してはより近い画素を参照する探索位置列を、境界画素および境界画素から近い未知画素に対しては、近い画素を無視し、より遠い画素を参照するような探索位置列を割り当てている。
本変形例(変形例1−2)では、変形例1−1の未知画素の種類と、境界画素からの距離に応じた未知画素の種類とを組み合わせた変形例である。
図26は、本変形例のラベル画像および探索位置画像の例を示す。本変形例では、未知画素US1を2つの種類に分類し、未知画素US2は分類しない。これにより、本変形例では、未知画素は、3種類に分類される。図示するラベル画像221は、薄灰が未知画素US1を示し、濃灰が未知画素US2を示す。ここでは、3つの探索位置画像222、223、224が用いられる。
薄灰の未知画素US1のうち、境界画素から遠い未知画素US1については、境界補正部16は、近い画素を密に参照するような探索位置画像222を選択する。これは境界付近に参照すべき前景および/または背景のラベルが存在しているためである。一方、薄灰の未知画素US1のうち、境界画素から近い未知画素US1については、境界補正部16は、近い画素を無視するような探索位置画像223を選択する。これは画素の近くはすべて未知画素であり、参照する必要がないためである。
また、濃灰である未知画素US2については、境界補正部16は、上下左右の4点を参照する探索位置画像224を選択する。これは、境界画素に近い場合、および、境界画素から遠い場合のどちらにおいても、上下左右の画素がすでに前景または背景のラベルに補正されており、参照すべきであるからである。
なお、本変形例では、図18に示す変形例1−1の補正処理と同様に、S54の第1段ループA(未知画素US1)の後に、S55の第2段ループA(未知画素US2)を行うものとする。
また、本変形例では、未知画素US2については、さらなる分類をしないこととしたが、これに限らず、未知画素US2についてもいくつかの種類に分類し、それぞれ適切な探索位置画像を用いてもよい。
<変形例1−3>
上述した上記変形例1−1および変形例1−2では、図18に示すように2段階の補正処理を行うこととしたが、3段階以上の補正処理を実施することを目的として、未知画素を3つ以上の種類に分類してもよい。以下に、3段階の補正処理を行う本変形例1−3について説明する。
図27は、本変形例のラベル画像および探索位置画像の例を示す。本変形例では、3段階の補正処理を行うために、3種類の未知画素に分類する。図示するラベル画像231では、前景画素を白色(画素値255)で、背景画素を黒色(画素値0)で、第1の種類の未知画素US1を薄灰色(画素値192)で、第2の種類の未知画素US2を中灰色(画素値128)で、第3の種類の未知画素US3を濃灰色(画素値64)で示している。ラベル画像計算部14は、例えば下記の剰余計算を用いた分岐に基づいて、未知画素を3種類に分類する。
mod(x+y, 2) = 0 かつ、mod(x, 2) = 0 またはmod(y, 2) = 0のとき、未知画素US1
mod(x+y, 2) = 0 かつ、mod(x, 2) = 1 またはmod(y, 2) = 1のとき、未知画素US2
mod(x+y, 2) = 1 のとき、未知画素US3
本変形例では、薄灰色の未知画素US1は、多数の探索位置を用いる探索位置画像232を用いる。一方、中灰色の未知画素US2は、右上、左上、右下、左下の4つの周囲の画素を参照する探索位置画像233を用いる。また、濃灰色の未知画素US3は、上下左右の4つの周囲の画素を参照する探索位置画像234を用いる。
そして、本変形例では、境界補正部16は、未知画素の種類ごとに、順番に未知画素のラベルを補正する。具体的には、境界補正部16は、第1段階の補正処理として、未知画素US1(薄灰色)に対応する未知画素列を参照し、すべての未知画素US1について探索位置画像232を用いて補正処理(第1段ループA)を実施する。
次に、境界補正部16は、第2段階の補正処理として、未知画素US2(中灰色)に対応する未知画素列を参照し、すべての未知画素US2について探索位置画像233を用いて補正処理(第2段ループA)を実施する。次に、境界補正部16は、第3段階の補正処理として、未知画素US3(濃灰色)に対応する未知画素列を参照し、すべての未知画素US3について探索位置画像234を用いて補正処理(第3段ループA)を実施する。第1段ループA、第2段ループAおよび第3段ループAの各処理は、図11のループA(S34〜S43)と同様である。
図28は、3段階の補正処理の各段階のラベル画像の例である。ラベル画像241は、図27のラベル画像231であり、第1段ループAが行われる前のラベル画像である。ラベル画像242は、第1段ループAが行われた後のラベル画像であり、未知画素US1(薄灰色)は前景(白色)または背景(黒)のラベルに更新されている。ラベル画像243は、第2段ループAが行われた後のラベル画像であり、未知画素US2(中灰色)は前景(白色)または背景(黒色)のラベルに更新されている。ラベル画像244は、第3段ループAが行われた後のラベル画像であり、未知画素US3(濃灰色)は前景(白色)または背景(黒色)のラベルに更新されている。
このとき、第2段ループA(未知画素US2:中灰色)と、第3段ループA(未知画素US3:濃灰色)の補正処理については、探索位置の数が非常に少ない探索位置画像233、234がそれぞれ用いられる。このため、図11のループAの中のループB(S38〜S42)の比較計算の回数が非常に少ないものとなる。
すなわち、変形例1−1のように、未知画素を均等に2種類に分類し、2段階で補正処理を行う場合(図17参照)は、総未知画素数の半分に該当する未知画素について、計算処理を非常に小さくすることができる。さらに、本変形例(図27参照)のように、未知画素をUS1:US2:US3=1:1:2となるように分類し、未知画素US1、未知画素US2、未知画素US3の順番で3段階で補正を行う場合は、総未知画素数の4分の3に相当する未知画素US2、US3について、計算処理を非常に小さくすることができる。
<第2の変形例>
次に、上記実施形態の第2の変形例について説明する。
本変形例は、パラメータの自動制御に関するものである。ここでは、動画像を想定し、カラー画像がフレーム単位で連続的に画像処理部に入力されるものとする。
図29は、本変形例の画像処理部1Aの構成を示すブロック図である。図示する画像処理部1Aは、パラメータ制御部20および記憶部21を備える点において、図2に示す画像処理部1と異なる。また、本実施形態の画像入力部11は、カラー画像(フレーム)が入力された時刻をパラメータ制御部20に出力する。また、本実施形態の画像出力部19は、画像合成部18から前景が入力された時刻を、パラメータ制御部20に出力する。それ以外の各部11〜19については、図2の画像処理部1の各部11〜19と同様であるため、ここでは説明を省略する。
パラメータ制御部20は、画像処理部1Aにおいて、カラー画像から前景を抽出する処理時間が、所定の閾値(第3の閾値)を超えるか否かを判定し、判定結果に応じて、処理時間に影響を与える少なくとも1つのパラメータを制御する。具体的には、パラメータ制御部20は、処理時間が所定の閾値以上の場合、当該処理時間を短縮する方向に少なくとも1つのパラメータの値を所定の変動幅で変更し、当該処理時間が所定の閾値未満の場合、当該処理時間を長くして抽出精度が向上する方向に少なくとも1つのパラメータの値を所定の変動幅で変更する。記憶部21には、処理時間に影響を与える複数のパラメータに関する情報が、あらかじめ記憶される。
本変形例の画像処理部1Aは、上記実施形態と同様に、動画像のフレームが画像として入力されるたびに、入力されたフレームの画像の中から前景(被写体)の領域を特定し、当該領域だけを残した画像を新たに作成し、抽出画像として出力する。本変形例では、パラメータ制御部20は、この処理と並行して、画像処理部1Aの各部がそれぞれ使用する各種パラメータの自動制御を行う。
図30は、パラメータの自動制御処理を示すフローチャートである。パラメータ制御部20は、フレームが入力される度に、ループDの処理(S61〜S64)を行う。具体的には、以下のとおりである。
画像入力部11は、フレームが入力されるたびに、入力された時刻をパラメータ制御部20に送出する。また、画像出力部19は、画像合成部18から前景が入力された時刻をパラメータ制御部20に送出する。パラメータ制御部20は、画像出力部19から送出された時刻から画像入力部11から送出された時刻を減算することで、前景の抽出に要する処理時間を測定する(S61)。すなわち、パラメータ制御部20は、1フレームの画像処理に要する時間を、処理時間として測定する。この処理時間は、目標とするフレームレートで抽出画像を出力できているかを判定するためのものである。なお、本変形例では、上記処理時間を指標として用いるが、後述するように、これ以外の指標を用いてもよい。
次に、パラメータ制御部20は、測定した処理時間が所定の閾値より大きい(閾値を上回る)か否かを判定する(S62)。この閾値は、目標とするフレームレートに依存するもので、例えば、フレームレート 59.94 fps の動画像が入力され、リアルタイムに抽出画像を出力する場合であって、かつ、画像処理部1Aにおいて動画像の入出力にかかる時間を無視する場合、閾値として16msec程度を設定する。
パラメータ制御部20は、S62の判定結果に応じて、処理時間に影響を与える所定のパラメータを自動的に制御する(S63、S64)。
図31は、画像処理部1Aが用いる各種パラメータのうち、処理時間に与える影響が大きいパラメータに関するパラメータ情報の例を示す。パラメータ情報は、記憶部21にあらかじめ記憶されている。図示するパラメータ情報の例では、パラメータ毎に、単位、初期値、処理時間を短縮する場合の変動値(変動幅)、抽出精度を向上する場合の変動値、上限値、および、下限値が設定されている。
変動値は、現在のパラメータ値をどのように変更するか示すものであり、パラメータ値の減少または増加の変動幅、機能のon/offなどを示す。例えば、「ノイズ除去のフィルタサイズ」については、処理時間を短縮する場合は、現在のパラメータ値を「2」減少させ、抽出精度を向上する場合は、現在のパラメータ値を「2」増加させることを示している。また、「平滑化のフィルタ」については、処理時間を短縮する場合は、offに設定し、抽出精度を向上する場合は、onに設定することを示している。
また、図示するパラメータ情報では、パラメータとして、初期領域ノイズ除去部13が使用する「ノイズ除去のフィルタサイズ」、探索位置設定部17が使用する「探索位置の密度指標」、ラベル画像計算部14が使用する「未知領域に置換する距離」、境界補正部16が使用する「補正処理を終了する色距離の閾値」、画像合成部18が使用する「平滑化のフィルタ」、画像出力部19が使用する「出力の固定遅延」および「出力画素のバッファ数」が設定されている。
これらのパラメータは抽出の精度にも影響するため、処理時間を短縮する方向にパラメータを変更すると、抽出の精度が劣化する。逆に、処理時間を長くする方向にパラメータを変更すると、抽出の精度が改善する。
また、画像出力部19の「出力の固定遅延」および「出力画素のバッファ数」は、フレームレートおよびフレームドロップ(コマ落ち)に影響するパラメータである。具体的には、「出力の固定遅延」の遅延時間を短縮すると、フレームレートは向上するが、フレームドロップが発生しやすくなる。一方、「出力の固定遅延」の遅延時間を長くすると、フレームレートは低下するが、フレームドロップを回避しやすくなる。同様に、「出力画素のバッファ数」を減少すると、フレームレートは向上するが、フレームドロップが発生しやすくなる。一方、「出力画素のバッファ数」を増加すると、フレームレートは低下するが、フレームドロップを回避しやすくなる。
処理時間が閾値より大きい場合(S62:YES)、パラメータ制御部20は、記憶部21に記憶されたパラメータの少なくとも1つを、処理時間を短縮する方向に変更する(S63)。具体的には、現在使用しているパラメータ値を、処理時間を短縮する方向の変動値で変更し、制御する。一方、処理時間が閾値以下の場合(S62:NO)、記憶部21に記憶されたパラメータの少なくとも1つを、抽出精度を向上またはフレームドロップを防止する方向に変更する(S64)。この場合、基本的に処理時間は長くなる。
なお、図31に示す各パラメータに変更レベルをあらかじめ設定し、パラメータ制御部20は、変更レベルの低いパラメータから順に、上限値または下限値になるまで、当該パラメータの値を変更するものとしてもよい。例えば、「ノイズ除去のフィルタサイズ」については、精度への影響が大きいため、変更レベルを高く設定する。また、「補正処理を終了する色距離の閾値」については、精度への影響が小さく、一方で処理時間には大きく影響するため、変更レベルを低く設定する。この場合、パラメータ制御部20は、最初に、変更レベルの最も低いパラメータの制御を行い、当該パラメータが上限値または下限値になった場合、次に変更レベルが低いパラメータを制御する。
また、パラメータ制御部20が行うパラメータの変更は、画像処理部1Aに次のフレームが入力されたときから反映される。なお、パラメータの自動制御を有効にしたときの、図31に示す複数の各パラメータの値の初期値を保持しておき、処理時間が閾値を上回った場合には、少なくとも1つのパラメータについて処理時間を短縮する方向に変更し、処理時間が閾値を下回った場合には、各パラメータを元の値の初期値に戻すように制御してもよい。
以上説明した本変形例では、処理時間と抽出精度に影響を与えるパラメータを事前に選定し、増減方向を決めておき、目標の処理時間(所定の閾値)に達するまで各パラメータを自動的に変更して制御することにより、目標とするフレームレートを実現するパラメータの値を見つけるまでの操作量を削減することができる。さらに、本変形例では、複数のフレームの画像を処理している途中で、処理時間に影響するような画像内容の変化が発生しても、目標とするフレームレートを維持することが容易になる。
本変形例では、特にリアルタイムでの前景抽出を想定しており、前景抽出の精度が高く、かつ、その処理時間が短いアルゴリズムを実現する必要がある。しかし、抽出精度と処理時間とはトレードオフの関係にあることが多く、本変形例では精度への影響を抑えつつ、処理時間を短くするためのものである。「精度はできるだけ高く保ちつつ、できるだけフレームレートを向上させたい」という操作は熟練した操作者でないと難しいため、これを自動的に制御することで、容易な操作を実現することができる。
なお、本変形例では、上記処理時間を指標として用いるが、これ以外の指標を用いてもよい。例えば、画像出力部19の出力の固定遅延を考慮した、画像入力部11にフレームが入力した時刻から、画像出力部19が抽出画像を出力する時刻までの時間(フレームレート)を指標として用いてもよい。この場合、画像出力部19は、抽出画像を出力した時刻を、パラメータ制御部20に送出する。
また、画像出力部19が抽出画像のバッファを設ける場合は、バッファしている抽出画像のバッファ数を指標として用いることとしてもよい。バッファ数を指標とする場合は、画像出力部19は、バッファ数をパラメータ制御部20に通知し、パラメータ制御部20は、通知されたバッファ数が所定の閾値を超えるか否かに応じて、処理時間を短縮する方向、または、抽出精度を向上する方向にパラメータを制御する。
以上説明した第1の変形例および第2の変形例を組み合わせることとしてもよい。