(58)【調査した分野】(Int.Cl.,DB名)
前記画素位置重み関数更新手段は、前記分散値として、前記主要オブジェクトの領域が前記画像範囲の境界部分に接する割合が増加するほど減少する特性を有する分散値を算出する、
ことを特徴とする請求項1に記載の画像領域分割装置。
前記画素位置重み関数更新手段は、前記分散値として、前記主要オブジェクトの領域が前記画像範囲内で占める面積の割合が増加するほど減少する特性を有する分散値を算出する、
ことを特徴とする請求項1に記載の画像領域分割装置。
【発明を実施するための形態】
【0013】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
【0014】
図1は、本発明の一実施形態に係る画像領域分割装置101のハードウェア構成例を示すブロック図である。
【0015】
この画像領域分割装置101は例えば、いわゆるスマートフォンなどの携帯情報端末であるコンピュータシステム上に実現される。
【0016】
画像領域分割装置101は、CPU(Central Processing Unit:中央演算処理装置)102と、ROM(Read Only Memory)103と、RAM(Random Access Memory)104を備える。また、画像領域分割装置101は、ソリッド記憶装置等の外部記憶装置105と、通信インタフェース106と、タッチパネルディスプレイ装置などの入力装置107および表示装置108を備える。さらに、画像領域分割装置101は、マイクロSDメモリカードやUSB(Universal Serial Bus)メモリカードなどの可搬記録媒体110をセット可能な可搬記録媒体駆動装置109を備える。撮像装置112は、静止画像やビデオ画像を撮像することのできるデジタルカメラ機構であり、レンズ、オートフォーカス駆動制御装置、露出制御装置、撮像センサ等を備える。上述の各機器102〜109および112は、バス111によって相互に接続される。
【0017】
ROM103には、スマートフォン全体の一般的な動作を制御するプログラムのほか、後述する
図4、
図9、および
図10のフローチャートによって示される画像領域分割処理の制御プログラムが記憶されている。CPU102は、ROM103から、この制御プログラムを読み出し、RAM104をワークメモリとして実行する。これにより、後述する
図2の機能ブロックで示される画像領域分割機能が実現され、この結果、例えばユーザが、撮像装置112によって花などを撮像し、入力装置107で範囲してした画像範囲から、花などの主要オブジェクトをそれ以外の背景から分割する画像領域分割処理が実行される。これにより得られた花などの主要オブジェクト領域の画像データは、ユーザが例えば花の種類を検索するために、通信インタフェース106から特には図示しないインターネットを経由してインターネットに接続される画像検索サーバコンピュータに送信される。このコンピュータ上で、送られた主要オブジェクト領域の花画像データに基づいて花のデータベースが検索される。その結果検索がヒットした花の図鑑情報が、その花の画像データとともにインターネットを経由して通信インタフェース106にて受信され、表示装置108に表示される。
なお、本実施形態による画像領域分割装置101は、携帯情報端末上ではなく、上記サーバコンピュータ上などに実現されてもよい。
【0018】
図2は、
図1の画像領域分割装置101の機能的構成を示す機能ブロック図である。
本実施形態における画像領域分割装置101は、画像内で、例えばユーザにより矩形枠指定された画像範囲内の花などの主要オブジェクトとその主要オブジェクト以外の背景を領域分割する装置として実現される。
【0019】
領域分割手段201は、例えばユーザにより矩形枠として指定された画像範囲内の各画素に付与する主要オブジェクトまたは背景を示す領域ラベルを更新しながら、その領域ラベルと各画素の画素値に基づき、主要オブジェクトらしさまたは背景らしさを示すデータ項203と、隣接画素間の領域ラベルの滑らかさを示す平滑化項204と、データ項203または平滑化項204の少なくともいずれかに前回の領域分割の結果に応じて算出され各画素の位置に応じた画素位置重み値を付加する画素位置重み関数205とを含むエネルギー関数の最小化処理により、画像内で主要オブジェクトと背景を領域分割する。この領域分割手段201は例えば、Graph Cuts法によりエネルギー関数の最小化処理を実行する。
【0020】
画素位置重み関数更新手段202は、領域分割手段201により前回領域分割された主要オブジェクトの領域が画像範囲内で占める割合が増加するほど、画像範囲の中央から画像範囲の境界部分に向かって画素位置重み値が減少する関数を算出し、その関数を領域分割手段201における次回の領域分割のための画素位置重み関数205として更新する。この画素位置重み関数は例えば、領域分割手段201により前回領域分割された主要オブジェクトの領域が画像範囲内で占める割合が増加するほど減少する特性を有する分散値を有し、画像範囲の中央から画像範囲の境界部分に向かって分散値に従ってガウス関数的に画素位置重み値が減少する関数である。
【0021】
花画像などの場合、ユーザが例えば矩形枠の画像範囲を指定するときには、主要オブジェクトとなる花が矩形枠内に適度に収まるように指定するのが通常である。一方、入力画像としては、例えば主要オブジェクトとなる花が他の背景物からきちんと独立している場合もあれば、主要オブジェクトとなる花に近接して葉があったり、背景となる領域にも主要オブジェクトとなる花と同じ花が群生しているような場合もある。これらの各種ケースによって領域分割のアルゴリズムが影響を受ける。この結果、領域分割処理によって、例えば
図3(a)の破線301として示されるように、主要オブジェクトの領域が花の中央部分のみしか含まずに矩形枠の中央部分の狭い領域として算出されてしまう場合がある。逆に、例えば
図3(b)の破線302として示されるように、主要オブジェクトの領域が花の周囲の葉も含んでしまって矩形枠をはみ出すように算出されてしまう場合がある。
【0022】
本実施形態では、領域分割手段201における領域分割の繰返し処理ごとに、画素位置重み関数更新手段202において画素位置重み関数205が算出されて更新される。そして、領域分割手段201での次回の領域分割処理において、データ項203または平滑化項204の少なくともいずれかに、上記更新された画素位置重み関数205によって、画像範囲内での各画素の位置に応じた画素位置重み値が付加される。この画素位置重み関数205は、主要オブジェクトの領域が例えば矩形枠である画像範囲内で占める割合が増加するほど、画像範囲の中央から画像範囲の境界部分に向かって画素位置重み値が減少する関数として更新される。例えば、前回領域分割された主要オブジェクトの領域が画像範囲内で占める割合が増加するほど減少する特性を有する分散値を有し、画像範囲の中央から画像範囲の境界部分に向かって分散値に従ってガウス関数的に画素位置重み値が減少する関数である。
【0023】
この処理により、領域分割手段201での前回の領域分割処理により、例えば
図3(a)の破線301として示されるように、主要オブジェクトとなる花の領域が画像範囲の中央部分の狭い領域として算出されてしまう場合には、主要オブジェクトの領域が画像範囲内で占める割合が減少する。このため、画素位置重み関数更新手段202が、その減少に逆行するように、画像範囲の中央からその境界付近にまで広範囲に裾が広がった画素位置重み関数205を算出する。この結果、領域分割手段201での次回の領域分割処理において、画像範囲の中央からその境界付近まで高い値となる画素位置重み値が、エネルギー関数E(X)を構成するデータ項203または平滑化項204に例えば乗算される。これにより、領域分割手段201で計算されるエネルギー関数が、画像範囲の中央から境界ぎりぎりの付近までは高めの値となるため、画像範囲内の中央から境界側にかなり寄った部分で主要オブジェクトの領域が領域分割されるように、フィードバック制御がかかり、正しく領域分割が行われるようになる。
【0024】
逆に、領域分割手段201での前回の領域分割処理により、例えば
図3(b)の破線302として示されるように、主要オブジェクトとなる花の領域が矩形枠いっぱいの領域として算出されてしまう場合には、主要オブジェクトの領域が画像範囲内で占める割合が増加する。このため、画素位置重み関数更新手段202が、その増加に逆行するように、画像範囲の中央からの広がりかたが少なく裾が急速に減少するガウス関数である画素位置重み関数205を算出する。この結果、領域分割手段201での次回の領域分割処理において、画像範囲の中央から急速に減少する画素位置重み値が、エネルギー関数E(X)を構成するデータ項203または平滑化項204に例えば乗算される。これにより、領域分割手段201で計算されるエネルギー関数が、画像範囲の中央から少しの範囲で低い値となるため、画像範囲内の中央から少しの範囲をすぎたところで領域分割が行われるように、フィードバック制御がかかり、正しく領域分割が行われるようになる。
【0025】
画素位置重み関数205は例えば、以下のようにして算出できる。まず、現時点で算出されている主要オブジェクトの領域が例えば矩形枠の境界部分に接する割合が増加するほど減少する特性を有する分散値が算出される。具体的には、この分散値としては、現時点で算出されている主要オブジェクトの領域が画像範囲である例えば矩形枠の垂直方向の境界部分に接する割合が増加するほど減少する特性を有する第1の分散値と、主要オブジェクトの領域が矩形枠の水平方向の境界部分に接する割合が増加するほど減少する特性を有する第2の分散値として算出できる。この場合の画素位置重み関数205としては、矩形枠の中央から矩形枠の水平方向の境界部分に向かって第1の分散値に従ってガウス関数的に画素位置重み値が減少し、矩形枠の中央から矩形枠の垂直方向の境界部分に向かって第2の分散値に従ってガウス関数的に画素位置重み値が減少する関数として算出、更新できる。あるいは、上述の分散値としては例えば、現時点で算出されている主要オブジェクトの領域が例えば矩形枠内で占める面積の割合が増加するほど減少する特性を有する分散値として算出できる。
【0026】
以上のようにして、領域分割手段201による領域分割処理と画素位置重み関数更新手段202による画素位置重み関数205の更新処理が繰り返し実行されることにより、主要オブジェクト領域と背景領域がより正確に領域分割されるように収束させることが可能となる。
【0027】
図4は、本実施形態による画像領域分割処理の全体動作を示すフローチャートである。このフローチャートの処理は、
図9および
図10の詳細処理を示すフローチャートの処理とともに、
図1のCPU102が、ROM103に記憶された制御プログラムを、RAM104をワークメモリとして使用しながら実行する処理として実現される。
【0028】
まず、矩形枠決定処理が実行される(
図4のステップS401)。この処理では、ユーザが、例えば
図1の撮像装置112にて撮像した画像に対して、認識したい物体(例えば花)が存在するおおよその領域に対して、例えばタッチパネル等の入力装置107を用いて、矩形枠を指定する。例えば、タッチパネル上での、指によるスライド動作である。
【0029】
次に、画素位置重み関数初期化処理が実行される(
図4のステップS402)。この処理では、領域分割処理においてエネルギー関数のデータ項203および平滑化項204に乗算される画素位置重み関数の値が、全ての画素位置に関して均等な値(例えば“1”)に設定される。
【0030】
続いて、画像範囲内の各画素に対して、主要オブジェクトと背景を領域分割する領域分割処理(グラフカット処理)が実行される(
図4のステップS403)。この領域分割処理は、
図2の領域分割手段201の機能を実現する。この処理の詳細については、
図5から
図9で後述する。
【0031】
一度領域分割処理が終了した後、収束判定が行われる(
図4のステップS404)。この収束判定は、以下のいずれかが満たされたときに、YESの判定結果となる。
・繰り返し回数が一定以上になった
・前回主要オブジェクトとされた領域面積と今回主要オブジェクトとされた領域面積の差が一定以下
【0032】
ステップS404の判定で収束せず、その判定がNOであった場合、前回の領域分割の状況に応じて、ユーザが指定した矩形枠内の後述するコスト関数g
v (X
v )が、次のようにして修正されて更新される(
図4のステップS405)。ステップS403の領域分割処理によって主要オブジェクトと判定された領域のヒストグラムと、事前に用意されている後述するヒストグラムθ(c,0)が、カラー画素値cごとに例えば一定割合で混合(加算)される。これにより、新たな主要オブジェクトらしさを示すヒストグラムθ(c,0)が生成され、それに基づいて新たなコスト関数g
v (X
v )が計算される(後述する数6式等を参照)。同様に、ステップS403の領域分割処理によって背景と判定された領域のヒストグラムと、事前に用意されている後述するヒストグラムθ(c,1)が、カラー画素値cごとに例えば一定割合で混合(加算)される。これにより、新たな背景らしさを示すヒストグラムθ(c,1)が生成され、それに基づいて新たなコスト関数g
v (X
v )が計算される(後述する数7式等を参照)。
【0033】
次に、画素位置重み関数更新処理が実行される(
図4のステップS406)。この処理は、
図2の画素位置重み関数更新手段202の機能を実現する。この処理の詳細については、
図10から
図13で後述する。その後、
図4のステップS403の領域分割処理が繰り返される。
【0034】
ステップS404の判定が収束し、その判定がYESになると、
図4のフローチャートで示される領域分割処理は終了とし、現在得られている主要オブジェクト領域が最終結果として出力される。
【0035】
以下に、
図4のステップS402の領域分割処理について、説明する。
いま、
【数1】
を、要素X
v が画像Vにおける画素v(1≦v≦V)に対する領域ラベルを示す領域ラベルベクトルであるとする。この領域ラベルベクトルは、例えば、画素vが主要オブジェクト領域内にあれば要素X
v =0、背景領域内にあれば要素X
v =1となるバイナリベクトルである。すなわち、
【数2】
である。
【0036】
本実施形態において実行される領域分割処理は、画像Vにおいて、次式で定義されるエネルギー関数E(X)を最小にするような数1式の領域ラベルベクトルXを求める処理である。
【数3】
エネルギー最小化処理が実行される結果、領域ラベルベクトルX上で領域ラベル値X
v =0となる画素vの集合として、主要オブジェクト領域が得られる。本実施形態の例でいえば、矩形枠内の花の領域である。なお、領域ラベルベクトルX上で領域ラベル値X
v =1となる画素vの集合が、背景領域(矩形枠外も含む)となる。
【0037】
数3式のエネルギーを最小化するために、次式および
図5で示される重み付き有向グラフ(以下「グラフ」と略す)を定義する。
【数4】
ここで、Vはノード(node)、Eはエッジ(edge)である。このグラフが画像の領域分割に適用される場合は、画像の各画素が各ノードVに対応する。また、画素以外のノードとして、次式および
図5中に示される、
【数5】
と呼ばれる特殊なターミナルが追加される。このソースsを主要オブジェクト領域、シンクtを背景領域に対応付けて考える。また、エッジEは、ノードV間の関係を表現している。周辺の画素との関係を表したエッジEをn−link、各画素とソースs(主要オブジェクト領域に対応)またはシンクt(背景領域に対応)との関係を表したエッジEをt−linkと呼ぶ。
【0038】
いま、ソースsと各画素に対応するノードとを結ぶ各t−linkを、各画素がどの程度主要オブジェクト領域らしいかを示す関係ととらえる。そして、その主要オブジェクト領域らしさを示すコスト値を、数3式第1項に対応付けて、
【数6】
と定義する。ここで、θ(c、0)は、画像の主要オブジェクトの領域から算出したカラー画素値cごとのヒストグラム(出現回数)を示す関数データであり、例えば
図6(a)に示されるように予め得られている。なお、θ(c、0)の全カラー画素値cにわたる総和は1になるように正規化されているものとする。また、I(v)は、入力画像の各画素vにおけるカラー(RGB)画素値である。実際には、カラー(RGB)画素値を輝度値に変換した値であるが、特に言及の必要がなければ、以下では説明の簡単のために「カラー(RGB)画素値」または「カラー画素値」と記載する。数6式において、θ(I(v)、0)の値が大きいほど、コスト値は小さくなる。これは、予め得られている主要オブジェクト領域のカラー画素値の中で出現回数が多いものほど、数6式で得られるコスト値が小さくなって、画素vが主要オブジェクト領域中の画素らしいことを意味し、数3式のエネルギー関数E(X)の値を押し下げる結果となる。
【0039】
次に、シンクtと各画素に対応するノードとを結ぶ各t−linkを、各画素がどの程度背景領域らしいかを示す関係ととらえる。そして、その背景領域らしさを示すコスト値を、数3式第1項に対応付けて、
【数7】
と定義する。ここで、θ(c、1)は、画像の背景の領域から算出したカラー画素値cごとのヒストグラム(出現度数)を示す関数データであり、例えば
図6(b)に示されるように予め得られている。なお、θ(c、1)の全カラー画素値cにわたる総和は1になるように正規化されているものとする。I(v)は、数6式の場合と同様に、入力画像の各画素vにおけるカラー(RGB)画素値である。数6式において、θ(I(v)、1)の値が大きいほど、コスト値は小さくなる。これは、予め得られている背景領域のカラー画素値の中で出現回数が多いものほど、数7式で得られるコスト値が小さくなって、画素vが背景領域中の画素らしいことを意味し、数3式のエネルギー関数E(X)の値を押し下げる結果となる。
【0040】
次に、各画素に対応するノードとその周辺画素との関係を示すn−linkのコスト値を、数3式第2項に対応付けて、
【数8】
と定義する。ここで、dist(u,v)は、画素vとその周辺画素uのユークリッド距離を示しており、κは所定の係数である。また、I(u)およびI(v)は、入力画像の各画素uおよびvにおける各カラー(RGB)画素値である。実際には前述したように、カラー(RGB)画素値を輝度値に変換した値である。画素vおよびその周辺画素uの各領域ラベル値X
u およびX
v が同一(X
u =X
v )となるように選択された場合における数8式のコスト値は0とされて、エネルギーE(X)の計算には影響しなくなる。一方、画素vとその周辺画素uの各領域ラベル値X
u およびX
v が異なる(X
u ≠X
v )ように選択された場合における数8式のコスト値は、例えば
図7に示される特性を有する関数特性となる。すなわち、画素vおよびその周辺画素uの各領域ラベル値X
u およびX
v が異なっていて、かつ画素vおよびその周辺画素uの輝度値の差I(u)−I(v)が小さい場合には、数8式で得られるコスト値が大きくなる。この場合には、数3式のエネルギー関数E(X)の値が押し上げられる結果となる。言い換えれば、近傍画素間で、輝度値の差が小さい場合には、それらの画素の各領域ラベル値は、互いに異なるようには選択されない。すなわち、その場合には、近傍画素間では領域ラベル値はなるべく同じになって主要オブジェクト領域または背景領域はなるべく変化しないように、制御される。一方、画素vおよびその周辺画素uの各領域ラベル値X
u およびX
v が異なっていて、かつ画素vおよびその周辺画素uの輝度値の差I(u)−I(v)が大きい場合には、数8式で得られるコスト値が小さくなる。この場合には、数3式のエネルギー関数E(X)の値が押し下げられる結果となる。言い換えれば、近傍画素間で、輝度値の差が大きい場合には、主要オブジェクト領域と背景領域の境界らしいことを意味し、画素vとその周辺画素uとで、領域ラベル値が異なる方向に制御される。
【0041】
以上の定義を用いて、入力画像の各画素vごとに、数6式によって、ソースsと各画素vとを結ぶt−linkのコスト値(主要オブジェクト領域らしさ)が算出される。また、数7式によって、シンクtと各画素vとを結ぶt−linkのコスト値(背景領域らしさ)が算出される。さらに、入力画像の各画素vごとに、数8式によって、画素vとその周辺例えば8方向の各8画素とを結ぶ8本のn−linkのコスト値(境界らしさ)が算出される。
【0042】
そして、理論的には、数1式の領域ラベルベクトルXの全ての領域ラベル値の0または1の組合せごとに、各領域ラベル値に応じて上記数6式、数7式、および数8式の計算結果が選択されながら数3式のエネルギー関数E(X)が計算される。そして、全ての組合せの中でエネルギー関数E(X)の値が最小となる領域ラベルベクトルXを選択することにより、領域ラベルベクトルX上で領域ラベル値X
v =0となる画素vの集合として、主要オブジェクト領域を得ることができる。
【0043】
しかし実際には、領域ラベルベクトルXの全ての領域ラベル値の0または1の組合せ数は、2の画素数乗通りあるため、現実的な時間でエネルギー関数E(X)の最小化処理を計算することができない。
【0044】
そこで、Graph Cuts法では、次のようなアルゴリズムを実行することにより、エネルギー関数E(X)の最小化処理を現実的な時間で計算することを可能にする。
図8は、上述した数6式、数7式で定義されるt−linkと数8式で定義されるn−linkを有するグラフと、領域ラベルベクトルXおよびグラフカットとの関係を、模式的に示した図である。
図8では、理解の容易化のために、画素vは一次元的に示されている。
【0045】
数3式のエネルギー関数E(X)の第1項の計算で、領域ラベルベクトルX中の領域ラベル値が0となるべき主要オブジェクト領域中の画素では、数6式と数7式のうち、主要オブジェクト領域中の画素らしい場合により小さな値となる数6式のコスト値のほうが小さくなる。従って、ある画素において、ソースs側のt−linkが選択されシンクt側のt−linkがカットされて(
図8の802のケース)、数6式を用いて数3式のE(X)の第1項が計算された場合に、その計算結果が小さくなれば、その画素の領域ラベル値としては0が選択される。そして、そのグラフカット状態が採用される。計算結果が小さくならなければ、そのグラフカット状態は採用されず、他のリンクの探索およびグラフカットが試みられる。
【0046】
逆に、領域ラベルベクトルX中の領域ラベル値が1となるべき背景領域中の画素では、数6式と数7式のうち、背景領域中の画素らしい場合により小さな値となる数7式のコスト値のほうが小さくなる。従って、ある画素において、シンクt側のt−linkが選択されソースs側のt−linkはカットされて(
図8の803のケース)、数7式を用いて数3式のE(X)の第1項が計算された場合に、その計算結果が小さくなれば、その画素の領域ラベル値としては1が選択される。そして、そのグラフカット状態が採用される。計算結果が小さくならなければ、そのグラフカット状態は採用されず、他のリンクの探索およびグラフカットが試みられる。
【0047】
一方、数3式のエネルギー関数E(X)の第1項の計算に係る上記領域分割(グラフカット)処理により、領域ラベルベクトルX中の領域ラベル値が0または1で連続すべき主要オブジェクト領域内部または背景領域内部の画素間では、数8式のコスト値が0となる。従って、数8式の計算結果は、エネルギー関数E(X)の第2項のコスト値の計算には影響しない。また、その画素間のn−linkは、数8式がコスト値0を出力するように、カットされずに維持される。
【0048】
ところが、エネルギー関数E(X)の第1項の計算に係る上記領域分割(グラフカット)処理により、近傍画素間で、領域ラベル値が0と1の間で変化した場合に、それらの画素間の輝度値の差が小さければ、数8式のコスト値が大きくなる。この結果、数3式のエネルギー関数E(X)の値が押し上げられる。このようなケースは、同一領域内で第1項の値による領域ラベル値の判定がたまたま反転するような場合に相当する。従って、このようなケースでは、エネルギー関数E(X)の値が大きくなって、そのような領域ラベル値の反転は選択されない結果となる。また、この場合には、数8式の計算結果が、上記結果を維持するように、それらの画素間のn−linkは、カットされずに維持される。
【0049】
これに対して、エネルギー関数E(X)の第1項の計算に係る上記領域分割(グラフカット)処理により、近傍画素間で、領域ラベル値が0と1の間で変化した場合に、それらの画素間の輝度値の差が大きければ、数8式のコスト値が小さくなる。この結果、数3式のエネルギー関数E(X)の値が押し下げられる。このようなケースは、それらの画素部分が主要オブジェクト領域と背景領域の境界らしいことを意味している。従って、このようなケースでは、これらの画素間で領域ラベル値を異ならせて、主要オブジェクト領域と背景領域の境界を形成する方向に制御される。また、この場合には、境界の形成状態を安定化するために、それらの画素間のn−linkがカットされて、数3式の第2項のコスト値が0にされる(
図8の804のケース)。
【0050】
以上の判定制御処理が、ソースsのノードを起点にして、順次各画素のノードをたどりながら繰り返されることにより、
図8の801で示されるようなグラフカットが実行され、エネルギー関数E(X)の最小化処理が現実的な時間で計算される。この処理の具体的な手法としては、例えば、非特許文献1に記載されている手法を採用することができる。
【0051】
そして、各画素ごとに、ソースs側のt−linkが残っていれば、その画素の領域ラベル値として0、すなわち主要オブジェクト領域の画素を示すラベルが付与される。逆に、シンクt側のt−linkが残っていれば、その画素の領域ラベル値として1、すなわち背景領域の画素を示すラベルが付与される。最終的に、領域ラベル値が0となる画素の集合として、主要オブジェクト領域が得られる。
【0052】
上述した動作原理に基づいて
図4のステップS402の領域分割処理が実行されるが、本実施形態ではさらに、数3式のエネルギー関数E(X)の計算において、下記数9式に示されるように、数3式第1項のデータ項(
図2の203に対応)に、画像範囲内での各画素の位置に応じた画素位置重み関数の値w(x,y)(
図2の205に対応)が乗算される。
【数9】
あるいは、数9式の代わりに、下記数10式に示されるように、数3式第2項の平滑化項(
図2の204に対応)に、画像範囲内での各画素の位置とその周辺画素の位置に応じた各画素位置重み値から算出される画素位置重み関数の値w
uv(
図2の206に対応)が乗算されてもよい。
【数10】
上述の数9式または数10式のいずれかが、数3式の代わりに、エネルギー関数E(X)の計算に使用される。上述の画素位置重み関数w(x,y)またはw
uvの算出手法については、後述する。
【0053】
図9は、上述した動作原理に基づく
図4のステップS402の領域分割処理を示すフローチャートである。
【0054】
まず、画像から、カラー画素値I(V)が1つずつ読み込まれる(
図9のステップS901)。
【0055】
次に、ステップS901で読み込まれた画素が、ユーザによって指定された矩形枠内の画素であるか否かが判定される(
図9のステップS902)。
【0056】
ステップS902の判定がYESの場合には、前述した数6式、数7式、および数8式に基づいて、主要オブジェクト領域らしさを示すコスト値、背景領域らしさを示すコスト値、および境界らしさを示すコスト値が、それぞれ算出される(
図9のステップS903、S904、およびS905)。なお、θ(c、0)の初期値は、学習用に用意した複数枚(数百枚程度)の主要オブジェクトの領域から算出される。同様に、θ(c、1)の初期値は、学習用に用意した複数枚(数百枚程度)の背景の領域から算出される。
【0057】
一方、ステップS902の判定がNOの場合には、矩形の枠外には主要オブジェクト領域はないため、そこが主要オブジェクト領域と判定されないようにするために、主要オブジェクト領域らしさを示すコスト値g
v (X
v )が、次式のように一定の大きな値Kとされる。
【数11】
ここで、Kは、次式に示されるように、任意のピクセルの平滑化項の総和よりも大きい値を設定しておく(以上、
図9のステップS906)。
【数12】
【0058】
また、矩形の枠外が必ず背景領域と判定されるようにするために、背景領域らしさを示すコスト値g
v (X
v )が、次式のように0とされる(
図9のステップS907)。
【数13】
【0059】
さらに、矩形の枠外は全て背景領域であるため、h
uv(X
u ,X
v )の値は0とされる(
図9のステップS908)。
【0060】
以上の処理の後、画像内に処理すべき画素が残っているか否かが判定される(
図9のステップS909)。
【0061】
処理すべき画素がありステップS909の判定がYESならば、ステップS901の処理に戻って、上記処理が繰り返される。
【0062】
処理すべき画素がなくなりステップS909の判定がNOになると、画像内の全ての画素について求まったコスト値を用いて、数9式または数10式のエネルギー関数E(X)が計算されながら、Graph Cutsアルゴリズムが実行され、主要オブジェクトと背景が領域分割される(ステップS910)。
【0063】
図10は、
図4のステップS406の画素位置重み関数更新処理を示すフローチャートである。この処理では、
図9のステップS910において計算される数9式または数10式のエネルギー関数E(X)における画素位置重み関数w(x,y)またはw
uvが算出、更新される。
【0064】
まず、下記数14式に従って、x(水平)、y(垂直)方向の標準偏差σ
x (第1の分散値に対応)、σ
y (第2の分散値に対応)が算出される(
図10のステップS1001)。
【数14】
【0065】
図11は、ステップS1001の標準偏差σ
x 、σ
y の算出処理の説明図である。
図11において、Ly1、Ly2、Ly3等(3個に限らない)はそれぞれ、
図4のステップS403の領域分割処理において主要オブジェクトの領域ラベルが付与された画素が、
図4のステップS401でユーザにより指定された矩形枠のy(垂直)方向の境界画素と連続的に接する各画素数である。Lx1、Lx2、Lx3等(3個に限らない)はそれぞれ、上記主要オブジェクトの領域ラベルが付与された画素が、上記矩形枠のx(水平)方向の境界画素と連続的に接する各画素数である。Lwyは矩形枠のy方向の左右両辺の一辺あたりの画素数、Lwxは矩形枠のx方向の上下両辺の一辺あたりの画素数である。
【0066】
数14式のx方向標準偏差σ
x の算出式で、「ΣLyi」は矩形枠のy方向の左右両境界辺に対する主要オブジェクトの総接触長を示し、「2Lwy」は矩形枠のy方向の左右両境界辺の合計長を示している。従って、項「ΣLyi/2Lwy」は、矩形枠のy方向の左右両境界辺に対する主要オブジェクトのy方向接触比を示している。これに負符号を付けて指数をとり、y方向の境界辺長Lwyとy方向の調整用係数ky を乗算することにより、x方向の標準偏差標準偏差σ
x が算出される。主要オブジェクト領域が矩形枠のy方向の左右両境界辺に多く接していると、主要オブジェクトがx方向に矩形枠いっぱいまで広がっていることを示している。この場合には、数14式で算出されるx方向標準偏差σ
x の値は小さい値となり、主要オブジェクトの広がりを抑える方向にフィードバックをかける値となる。逆に、主要オブジェクト領域が矩形枠のy方向の左右両境界辺にあまりまたは全く接していないと、x方向で主要オブジェクトが矩形枠に接することなく矩形枠内の中央付近の範囲で背景と分割されていることを示している。この場合には、数14式で算出されるx方向標準偏差σ
x の値は大きい値となり、主要オブジェクトの広がりを増やす方向にフィードバックをかける値となる。従って、y方向接触比の標準偏差に基づいて決定される画素位置重み関数205を、エネルギー関数E(X)に基づいてx方向で主要オブジェクトと背景を領域分割するときのコスト値に乗算等することにより、x方向での領域分割のエラーを修正する方向にフィードバック制御をかけることが可能になると期待できる。
【0067】
同様に、数14式のy方向標準偏差σ
y の算出式で、「ΣLxi」は矩形枠のx方向の上下両境界辺に対する総接触長を示し、「2Lwx」は矩形枠のx方向の2つの上下両境界辺の合計長を示している。従って、項「ΣLxi/2Lwx」は、矩形枠のx方向の上下両境界辺に対するx方向接触比を示している。これに負符号を付けて指数をとり、x方向の境界辺長Lwxとx方向の調整用係数kx を乗算することにより、y方向の標準偏差標準偏差σ
y が算出される。主要オブジェクト領域が矩形枠のx方向の左右両境界辺に多く接していると、主要オブジェクトがy方向に矩形枠いっぱいまで広がっていることを示している。この場合には、数14式で算出されるy方向標準偏差σ
y の値は小さい値となり、主要オブジェクトの広がりを抑える方向にフィードバックをかける値となる。逆に、主要オブジェクト領域が矩形枠のx方向の左右両境界辺にあまりまたは全く接していないと、y方向で主要オブジェクトが矩形枠に接することなく矩形枠内の中央付近の範囲で背景と分割されていることを示している。この場合には、数14式で算出されるy方向標準偏差σ
y の値は大きい値となり、主要オブジェクトの広がりを増やす方向にフィードバックをかける値となる。従って、x方向接触比の標準偏差に基づいて決定される画素位置重み関数205を、エネルギー関数E(X)に基づいてy方向で主要オブジェクトと背景を領域分割するときのコスト値に乗算等することにより、y方向での領域分割のエラーを修正する方向にフィードバック制御をかけることが可能になると期待できる。
【0068】
図12は、標準偏差の特性例を示す図であり、例として、y方向の調整用係数ky =2、y方向の境界辺長Lwy=60であるときの、y方向接触比ΣLyi/2Lwyに対するx方向の標準偏差σ
x の値を示す特性図である。この特性図から理解されるように、y方向接触比ΣLyi/2Lwyが増加するほどx方向の標準偏差σ
x が減少し、逆に、ΣLyi/2Lwyが減少するほどx方向の標準偏差σ
x が増加する特性を有することがわかる。このような標準偏差に対応する分散値を用いて画素位置重み関数205を定義することにより、領域分割のエラーを修正するフィードバック制御が可能となる。
【0069】
図10のステップS1001の後、下記数15式に従って、x(水平)、y(垂直)方向のガウス関数f(x)、f(y)が算出される(
図10のステップS1002)。
【数15】
【0070】
数15式におけるガウス関数f(x)は、
図13に示されるように、画像範囲の水平方向中央位置x
0 を中心としてx方向分散値σ
x 2 を有する関数であって、x方向の中央位置x
0 から画像範囲の水平方向の両端の境界辺にそれぞれ向かって漸近的に減少する関数である。
【0071】
一方、数15式におけるガウス関数f(y)は、
図13に示されるように、画像範囲の垂直方向中央位置y
0 を中心としてy方向分散値σ
y 2 を有する関数であって、y方向の中央位置y
0 から画像範囲の垂直方向の両端の境界辺にそれぞれ向かって漸近的に減少する関数である。
【0072】
図10のステップS1002の後、下記数16式に従って、画素位置重み関数205が算出される(
図10のステップS1003)。
【数16】
数16式で算出される画素位置重み関数205=w(x,y)は、
図13に示されるように、画像範囲の中央座標位置(x
0 ,y
0 )から画像範囲の周囲の境界辺に向かって放射状に漸近的に減少する関数曲面となる。
【0073】
以上のようにして算出された画素位置重み関数205に基づいて、
図4のステップS403の領域分割処理中の
図9のステップS910において、前述した数9式に示されるように、エネルギー関数E(X)中の第1項のデータ項に、各画素の位置(x,y)に応じた画素位置重み値w(x,y)が乗算される。
【0074】
あるいは、数9式の代わりに、前述した数10式に示されるように、エネルギー関数E(X)中の第2項の平滑化項に、各画素vの位置に応じた画素位置重み値w
v (x,y)およびその周辺画素uの位置に応じた画素位置重み値w
u (x,y)の平均値として求まる画素位置重み値w
uvが乗算されてもよい。
【0075】
図11の例では、x方向およびy方向ともに、この領域分割画像が得られている時点で主要オブジェクトに分割された領域が本来の花の周辺の葉も含んで矩形枠の境界にかなり接している。このような場合には、画素位置重み関数更新手段202で算出されるx方向分散値σ
x 2 およびy方向分散値σ
y 2 はともに比較的小さいな値となり、これらから得られる画素位置重み関数205、w(x,y)(
図13参照)等は、画像範囲の中央座標位置(x
0 ,y
0 )から画像範囲の周囲の境界辺に向かって放射状に比較的急峻に減少する関数となる。この結果、次回の領域分割処理における
図9のステップS910では、矩形枠から同心円状に内側に少し入った画素位置でエネルギー関数E(X)のデータ項(数9式の場合)または平滑化項(数10式の場合)が小さな値となって、本来の主要オブジェクトとなるべき花の境界位置で領域分割が行われることが期待できる。
【0076】
前述した数14式のx、y方向の標準偏差σ
x 、σ
y をさらに細分化し、下記数17式に示されるように、x方向左側標準偏差σx
Left、x方向右側標準偏差σx
Right 、y方向上側標準偏差σy
Top 、y方向下側標準偏差σy
Bottomが算出され、各画素位置ごとにそれぞれの標準偏差を用いた画素位置重み関数205(数15式に対応)が算出されてもよい。
【数17】
ここで、「i∈LeftSide」は、主要オブジェクトの画素が左境界辺上で接触している連続画素Lyiの集合を示す。「i∈RightSide 」は、主要オブジェクトの画素が右境界辺上で接触している連続画素Lyiの集合を示す。「i∈TopSide 」は、主要オブジェクトの画素が上境界辺上で接触している連続画素Lxiの集合を示す。「i∈BottomSide」は、主要オブジェクトの画素が下境界辺上で接触している連続画素Lyiの集合を示す。
【0077】
前述したx、y方向の標準偏差σ
x 、σ
y は、数14式や数17式の代わりに、下記数18式によって算出されてもよい。
【数18】
ここで、Sf は、現時点で算出されている主要オブジェクトの領域の面積(画素数)である。また、SR は、矩形枠の面積(画素数)である。従って、数18式によって求まる標準偏差σは、現時点で算出されている主要オブジェクトの領域が例えば矩形枠内で占める面積の割合が増加するほど減少する特性を有する。このσにx方向の境界辺長Lwxとx方向の調整用係数kx を乗算することにより、x方向の標準偏差標準偏差σ
x が算出される。また、σにy方向の境界辺長Lwyとy方向の調整用係数ky を乗算することにより、y方向の標準偏差標準偏差σ
y が算出される。
【0078】
以上説明した実施形態により、領域分割手段201における領域分割処理において、背景領域と主要オブジェクト領域とで誤認識をする割合が減少し、領域分割の精度を向上させることが可能となる。
【0079】
上述の実施形態では、主要オブジェクトが花である場合を例に説明したが、主要オブジェクトとしては、花に限られず、様々なオブジェクトを採用することができる。
【0080】
また、上述の実施形態では、画素位置重み関数205として、主要オブジェクトの領域が画像範囲内で占める割合の増加または減少に逆行して減少または増加する分散値に従って画像範囲の中央から境界部分に向かってガウス関数的に画素位置重み値が減少する関数として実現される。しかしながら、本発明はこれに限られるものではなく、画素位置重み関数205は、主要オブジェクトの領域が画像範囲内で占める割合が増加するほど、画像範囲の中央から画像範囲の境界部分に向かって画素位置重み値が減少する関数であれば、どのような関数が採用されてもよい。
【0081】
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
画像内で指定された画像範囲内の主要オブジェクトと該主要オブジェクト以外の背景を領域分割する装置であって、
前記画像範囲内の各画素に付与する前記主要オブジェクトまたは前記背景を示す領域ラベルを更新しながら、該領域ラベルと前記各画素の画素値に基づき、前記主要オブジェクトらしさまたは背景らしさを示すデータ項と、隣接画素間の前記領域ラベルの滑らかさを示す平滑化項と、前記データ項または前記平滑化項の少なくともいずれかに前回の領域分割の結果に応じて算出され前記各画素の位置に応じた画素位置重み値を付加する画素位置重み関数とを含むエネルギー関数の最小化処理により、前記画像内で前記主要オブジェクトと前記背景を領域分割する領域分割手段と、
前記領域分割手段により前回領域分割された前記主要オブジェクトの領域が前記画像範囲内で占める割合が増加するほど、前記画像範囲の中央から前記画像範囲の境界部分に向かって前記画素位置重み値が減少する関数を算出し、該関数を前記領域分割手段における次回の領域分割のための前記画素位置重み関数として更新する画素位置重み関数更新手段と、
を備え、
前記領域分割手段および前記画素位置重み関数更新手段による処理を繰り返し実行する、
ことを特徴とする画像領域分割装置。
(付記2)
前記画素位置重み関数は、前記領域分割手段により前回領域分割された前記主要オブジェクトの領域が前記画像範囲内で占める割合が増加するほど減少する特性を有する分散値を有し、前記画像範囲の中央から前記画像範囲の境界部分に向かって前記分散値に従ってガウス関数的に前記画素位置重み値が減少する関数である、
ことを特徴とする付記1に記載の画像領域分割装置。
(付記3)
前記画素位置重み関数更新手段は、前記分散値として、前記主要オブジェクトの領域が前記画像範囲の境界部分に接する割合が増加するほど減少する特性を有する分散値を算出する、
ことを特徴とする付記2に記載の画像領域分割装置。
(付記4)
前記画素位置重み関数更新手段は、
前記分散値として、前記主要オブジェクトの領域が前記画像範囲の垂直方向の境界部分に接する割合が増加するほど減少する特性を有する第1の分散値と、前記主要オブジェクトの領域が前記画像範囲の水平方向の境界部分に接する割合が増加するほど減少する特性を有する第2の分散値を算出し、
前記画像範囲の中央から前記画像範囲の水平方向の境界部分に向かって前記第1の分散値に従ってガウス関数的に前記画素位置重み値が減少し、前記画像範囲の中央から前記画像範囲の垂直方向の境界部分に向かって前記第2の分散値に従ってガウス関数的に前記画素位置重み値が減少する関数として前記画素位置重み関数を更新する、
ことを特徴とする付記3に記載の画像領域分割装置。
(付記5)
前記画素位置重み関数更新手段は、前記分散値として、前記主要オブジェクトの領域が前記画像範囲内で占める面積の割合が増加するほど減少する特性を有する分散値を算出する、
ことを特徴とする付記2に記載の画像領域分割装置。
(付記6)
前記領域分割手段は、Graph Cuts法により前記エネルギー関数の最小化処理を実行する、
ことを特徴とする付記1ないし5のいずれかに記載の画像領域分割装置。
(付記7)
画像内で指定された画像範囲内の主要オブジェクトと該主要オブジェクト以外の背景を領域分割する方法であって、
前記画像範囲内の各画素に付与する前記主要オブジェクトまたは前記背景を示す領域ラベルを更新しながら、該領域ラベルと前記各画素の画素値に基づき、前記主要オブジェクトらしさまたは背景らしさを示すデータ項と、隣接画素間の前記領域ラベルの滑らかさを示す平滑化項と、前記データ項または前記平滑化項の少なくともいずれかに前回の領域分割の結果に応じて算出され前記各画素の位置に応じた画素位置重み値を付加する画素位置重み関数とを含むエネルギー関数の最小化処理により、前記画像内で前記主要オブジェクトと前記背景を領域分割する領域分割ステップと、
前記領域分割ステップにより前回領域分割された前記主要オブジェクトの領域が前記画像範囲内で占める割合が増加するほど、前記画像範囲の中央から前記画像範囲の境界部分に向かって前記画素位置重み値が減少する関数を算出し、該関数を前記領域分割ステップにおける次回の領域分割のための前記画素位置重み関数として更新する画素位置重み関数更新ステップと、
を繰り返し実行することを特徴とする画像領域分割方法。
(付記8)
画像内で指定された画像範囲内の主要オブジェクトと該主要オブジェクト以外の背景を領域分割する処理を実行するコンピュータに、
前記画像範囲内の各画素に付与する前記主要オブジェクトまたは前記背景を示す領域ラベルを更新しながら、該領域ラベルと前記各画素の画素値に基づき、前記主要オブジェクトらしさまたは背景らしさを示すデータ項と、隣接画素間の前記領域ラベルの滑らかさを示す平滑化項と、前記データ項または前記平滑化項の少なくともいずれかに前回の領域分割の結果に応じて算出され前記各画素の位置に応じた画素位置重み値を付加する画素位置重み関数とを含むエネルギー関数の最小化処理により、前記画像内で前記主要オブジェクトと前記背景を領域分割する領域分割ステップと、
前記領域分割ステップにより前回領域分割された前記主要オブジェクトの領域が前記画像範囲内で占める割合が増加するほど、前記画像範囲の中央から前記画像範囲の境界部分に向かって前記画素位置重み値が減少する関数を算出し、該関数を前記領域分割ステップにおける次回の領域分割のための前記画素位置重み関数として更新する画素位置重み関数更新ステップと、
を繰り返し実行させるためのプログラム。