【文献】
松尾賢治,“Grabcut適用結果の形状類似性に着目した対話不要の画像領域分割”,情報処理学会研究報告[DVD−ROM],社団法人情報処理学会,2010年 4月15日,Vol.2010-CVIM-171,No.19
(58)【調査した分野】(Int.Cl.,DB名)
前記第2の領域分割処理として、前記画像内の各画素に付与する前記主要被写体または前記背景を示す領域ラベルを更新しながら、該領域ラベルと該各画素の画素値に基づき、前記第1のヒストグラムの値が大きいほど値が小さくなる第1のコスト項と、前記第2のヒストグラムの値が大きいほど値が小さくなる第2のコスト項を含み、前記画素の画素値をビン値とする前記第1のヒストグラムの値が所定のヒストグラム閾値に比較して大きくかつ前記画素値の彩度が所定の彩度閾値に比較して大きい場合に、前記第1のコスト項がより小さくなるエネルギー関数の最小化処理により、前記画像内で前記主要被写体と前記背景を領域分割する、
ことを特徴とする請求項2に記載の画角調整装置。
【発明を実施するための形態】
【0013】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
【0014】
図1は、本発明の一実施形態に係る画角調整装置の機能ブロック図である。
【0015】
本実施形態は、画像内で主要被写体が適正画角となるように主要被写体に対する画角を調整する画角調整装置である。
【0016】
位置指定手段101は、目標画角の中心位置を指定する。この位置指定手段101は例えば、画像を表示するスマートフォンやデジタルカメラのタッチ入力機能付きディスプレイ上で、目標画角の中心位置をユーザに指等でタッチ指定させる手段である。
【0017】
第1の領域分割手段102は、画像内の各画素値に基づいて主要被写体と主要被写体以外の背景を領域分割する処理を実行する。そして、第1の領域分割手段102は、中心位置の周囲画素については主要被写体の領域に領域分割する。具体的には、第1の領域分割手段102は例えば、画像内の各画素に付与する主要被写体または背景を示す領域ラベルを更新しながら、領域ラベルと各画素の画素値に基づき、主要被写体を示す画像から算出した画素値ごとの第1のヒストグラムの値が大きいほど値が小さくなる第1のコスト項と、背景を示す画像から算出した画素値ごとの第2のヒストグラムの値が大きいほど値が小さくなる第2のコスト項を含み、中心位置に関する周囲画素については第1のコスト項の値がゼロとなるエネルギー関数の例えばGraph Cuts法による最小化処理により、画像内で主要被写体と背景を領域分割する。
【0018】
第2の領域分割手段103は、画像内の各画素値に基づいて主要被写体と主要被写体以外の背景を領域分割する処理を実行する。そして、第2の領域分割手段103は、第1の領域分割手段102により領域分割された主要被写体の周囲の各画素については主要被写体の領域に領域分割する度合いを高める処理を所定の終了条件に達するまで繰り返し実行する。具体的には、第2の領域分割手段103は例えば、画像内の各画素に付与する主要被写体または背景を示す領域ラベルを更新しながら、領域ラベルと各画素の画素値に基づき、第1のヒストグラムの値が大きいほど値が小さくなる第1のコスト項と、第2のヒストグラムの値が大きいほど値が小さくなる第2のコスト項を含み、その画素の画素値をビン値とする第1のヒストグラムの値が所定のヒストグラム閾値に比較して大きくかつその画素値の彩度が所定の彩度閾値に比較して大きい場合に、第1のコスト項がより小さくなる例えばGraph Cuts法によるエネルギー関数の最小化処理により、画像内で主要被写体と背景をさらに領域分割する処理を繰り返す。
【0019】
画角調整手段104は、第2の領域分割手段104により領域分割された主要被写体を囲む外接矩形枠を基準として主要被写体に対する画角を調整する。画角調整手段104は例えば、外接矩形枠が上下左右に一定のマージン領域を含めて画面内に収まるように、ズームアップの画角調整を行う。
【0020】
上述の構成において、以下のような初期ズーム手段を更に備えてよい。この初期ズーム手段は、目標画角の中心位置から画像の上下左右の端へ向かって伸ばした4本の線分のうち最も短い線分の長さだけ、中心位置から上下左右の方向にそれぞれ広げた大きさの矩形をズーム領域とする。そして、初期ズーム手段は、そのズーム領域のアスペクト比を保った状態で画面の中央に収まるようにズームアップの初期の画角調整を実行し、ズームアップ後の初期ズーム領域とする。
そして、
図1の構成による画角の調整が、上述の初期ズーム領域に対して実行される。
このとき、領域分割された主要被写体の領域のいずれかの境界が上述の初期ズーム領域の端に達したことが前述した所定の終了条件とされる。
【0021】
図2は、
図1の画角調整装置の動作説明図である。
【0022】
ユーザはまず、
図2(a)に示されるように、例えばディスプレイ画面に花が表示されている画像上で、目標画角の中心位置201、すなわち主要被写体の中央をワンタッチする。
【0023】
この結果、まず第1の領域分割手段102が、
図2(b)に示される花の中心部202のみを主要被写体領域として抽出する。
【0024】
次に、第2の領域分割手段103が、
図2(b)の主要被写体領域202に対して
図2(c)に示されるような周囲の領域203内の各画素の画素値を新たな主要被写体領域として取り込んでゆくような、主要被写体と背景の領域分割処理を実行する。そして、第2の領域分割手段103は、この処理を、
図2(d)の204として示されるように、主要被写体の領域を少しずつ広げながら、所定の終了条件に達するまで(例えば初期ズーム領域の端に到達するまで)、繰り返し実行する。
【0025】
以上の処理の結果、ユーザは、最初に目標画角の中心位置をワンタッチするだけで、その主要被写体が画面いっぱいに収まるように自動的に画角調整が実行され、主要被写体がズームアップ等された矩形枠が自動的に設定される。
これにより、ユーザは、矩形枠の設定や画角調整のわずらわしさから解放され、操作性を向上させることが可能となる。
また、主要被写体を認識して検索するようなアプリケーションの実行において、主要被写体の識別精度を向上させることが可能となる。
【0026】
図3は、本発明の一実施形態に係る画角調整装置301のハードウェア構成例を示すブロック図である。
【0027】
この画角調整装置301は例えば、いわゆるスマートフォンなどの携帯情報端末あるいはデジタルカメラであるコンピュータシステム上に実現される。
【0028】
画像領域分割装置301は、CPU(Central Processing Unit:中央演算処理装置)302と、ROM(Read Only Memory)303と、RAM(Random Access Memory)304を備える。また、画像領域分割装置301は、ソリッド記憶装置等の外部記憶装置305と、通信インタフェース306と、タッチパネルディスプレイ装置などの入力装置307および表示装置308を備える。さらに、画像領域分割装置301は、マイクロSDメモリカードやUSB(Universal Serial Bus)メモリカードなどの可搬記録媒体310をセット可能な可搬記録媒体駆動装置309を備える。撮像装置312は、静止画像やビデオ画像を撮像することのできるデジタルカメラ機構であり、レンズ、オートフォーカス駆動制御装置、露出制御装置、撮像センサ等を備える。上述の各機器302〜309および312は、バス311によって相互に接続される。
【0029】
ROM303には、スマートフォンやデジタルカメラ全体の一般的な動作を制御するプログラムのほか、後述する
図4、
図12、および
図13のフローチャートによって示される画像領域分割処理の制御プログラムが記憶されている。CPU302は、ROM303から、この制御プログラムを読み出し、RAM304をワークメモリとして実行する。これにより、
図1の構成を有する画角調整装置の機能が実現され、この結果、例えばユーザが、撮像装置312によって花などを撮像した画像上で、花がどのような画角で写っていても、花が画面いっぱいに表示されるように自動的に画角が調整される。このように画面が自動調整された画像に対して、例えば花などの主要被写体をそれ以外の背景から分割する画像領域分割処理が実行される。これにより得られた花などの主要被写体領域の画像データは、ユーザが例えば花の種類を検索するために、通信インタフェース306から特には図示しないインターネットを経由してインターネットに接続される画像検索サーバコンピュータに送信される。このコンピュータ上で、送られた主要被写体領域の花画像データに基づいて花のデータベースが検索される。その結果検索がヒットした花の図鑑情報が、その花の画像データとともにインターネットを経由して通信インタフェース306にて受信され、表示装置308に表示される。
【0030】
図4は、本実施形態による画角調整処理の全体動作を示すフローチャートである。このフローチャートの処理は、
図12および
図13の詳細処理を示すフローチャートの処理とともに、
図3のCPU302が、ROM303に記憶された制御プログラムを、RAM304をワークメモリとして使用しながら実行する処理として実現される。
【0031】
まず、CPU302は、撮像され例えばRAM304に記憶された画像を、
図3の例えばタッチ入力機能付きディスプレイである表示装置308に表示し、ユーザにズーム対象領域の中心(目標画角の中心位置)へのタッチを促す。ユーザが、タッチ入力機能付きディスプレイである入力装置307から中心位置をタッチ入力すると、CPU302は、その中心位置の画素の座標情報を例えばRAM304に記憶させる(以上、
図4のステップS401)。
【0032】
次に、CPU302は、初期ズーム処理を実行する(
図4のステップS402)。
図5は、初期ズーム処理の説明図である。まず、ユーザによって、目標画角の中心位置501が指定される。次に、CPU302は、中心位置501から画像の上下左右の端へ向かって伸ばした4本の線分502のうち最も短い線分502(下)の長さだけ、中心位置501から上下左右の方向にアスペクト比を保った状態でそれぞれ広げた大きさの矩形をズーム領域とする。そして、CPU302は、そのズーム領域の画面の中央に収まるようにズームアップの初期の画角調整を実行し、ズームアップ後の初期ズーム領域503とする。
以下の画角調整処理は、この初期ズーム領域に対して実行される。
CPU302が実行するステップS402の処理は、
図1での説明に関連して前述した初期ズーム手段の機能を実現する。
【0033】
次に、CPU302は、ステップS402で算出した初期ズーム領域に対して、データ項の更新1の処理を実行する(
図4のステップS403)。
CPU302が実行するデータ項の更新1の処理は、
図1の第1の領域分割手段102の機能の一部を実現する。
すなわち、CPU302は、初期ズーム領域の画像内の各画素に付与する主要被写体または背景を示す領域ラベルを更新しながら、領域ラベルと各画素の画素値に基づき、主要被写体を示す画像から算出した画素値ごとの第1のヒストグラムの値が大きいほど値が小さくなる第1のコスト項(後述する数6式および
図12のステップS1203参照)と、背景を示す画像から算出した画素値ごとの第2のヒストグラムの値が大きいほど値が小さくなる第2のコスト項(後述する数7式および
図12のステップS1204参照)を算出する。
またこのとき、CPU302は、ユーザによりタッチされた画素とその周囲の画素に関する第1のコスト項の値はゼロとなるように制御する(後述する
図12のステップS1206参照)。
ここで、周囲とは例えば、タッチされた画素位置から半径3画素以内の画素をいう。
なお、周囲には、タッチされた画素位置自身も含まれる。
ステップS403の処理の詳細は、
図12のフローチャートを用いて後述する。
【0034】
次に、CPU302は、ステップS403のデータ項の更新1の処理で算出した第1および第2のコスト項を含むエネルギー関数(後述する数3式参照)を計算しながら、Graph Cutsアルゴリズムを実行する(
図4のステップS404)。
この処理の詳細については後述する。
この場合にCPU302が実行するステップS404の処理は、
図1の第1の領域分割手段102の機能の一部を実現する。
【0035】
ステップS404の後、CPU302は、終了判定を行う(
図4のステップS405)。
図6は、終了判定の説明図である。この終了判定における終了条件は、
図6に示されるように、領域分割された主要被写体の領域601のいずれかの境界が初期ズーム領域の端602に達した場合、または主要被写体の領域が所定の誤差の範囲内で変化しなくなった場合のいずれかである。
この終了判定は、次に説明する406のデータ項の更新2において、主要被写体領域の周囲の背景画素が前景色に似ていて主要被写体領域と判定してしまう場合に対する対応策となっている。
【0036】
CPU302は、ステップS405の終了判定処理の結果、まだ終了していないと判定した場合には、ステップS402で算出した初期ズーム領域に対して、データ項の更新2の処理を実行する(
図4のステップS406)。
CPU302が実行するデータ項の更新2の処理は、
図1の第2の領域分割手段103の機能の一部を実現する。
すなわち、CPU302は、初期ズーム領域の画像内の各画素に付与する主要被写体または背景を示す領域ラベルを更新しながら、領域ラベルと各画素の画素値に基づき、主要被写体を示す画像から算出した画素値ごとの第1のヒストグラムの値が大きいほど値が小さくなる第1のコスト項(後述する数6式および
図13のステップS1203参照)と、背景を示す画像から算出した画素値ごとの第2のヒストグラムの値が大きいほど値が小さくなる第2のコスト項(後述する数7式および
図13のステップS1204参照)を算出する。
またこのとき、CPU302は、上記画素値をビン値とする第1のヒストグラムの値が所定のヒストグラム閾値に比較して大きくかつその画素値の彩度が所定の彩度閾値に比較して大きい場合に(後述する
図13のステップS1301参照)、第1のコスト項をより小さい値にする(後述する
図13のステップS1302からS1304参照)。
ステップS406の処理の詳細は、
図12のフローチャートを用いて後述する。
【0037】
次に、CPU302は、ステップS406のデータ項の更新2の処理で算出した第1および第2のコスト項を含むエネルギー関数(後述する数3式参照)を計算しながら、Graph Cutsアルゴリズムを実行する(
図4のステップS404)。
この処理の詳細については後述する。
この場合にCPU302が実行するステップS404の処理は、
図1の第2の領域分割手段103の機能の一部を実現する。
【0038】
その後、再び終了判定処理が実行され(
図4のステップS405)、さらに上述のデータ項の更新2の処理(
図4のステップS406)が繰り返し実行され、主要被写体領域が拡張されてゆく。
【0039】
ステップS405で終了が判定されると、最終ズーム処理が実行される(
図4のステップS407)。
図7は、最終ズーム処理の説明図である。
図7に示されるように、主要被写体領域701の外接矩形が、上下左右に一定のマージン領域を含めて画面内に収まるように、ズームアップの画角調整が行われる。
CPU302が実行するステップS407の処理は、
図1の画角調整手段104の機能を実現する。
【0040】
以上のようにして、
図2で前述したように、ユーザはステップS401で、
図2(a)に示されるように、ズーム対象領域の中心201をワンタッチする。そして、ステップS403で、
図2(b)に示される花の中心部202のみが主要被写体領域として抽出される。さらに、ステップS406の繰返しにより、
図2(b)の主要被写体領域202に対して
図2(c)に示されるような周囲の領域203内の各画素の画素値を新たな主要被写体領域として取り込んでゆくような、主要被写体と背景の領域分割処理が実行される。この処理が、
図2(d)の204として示されるように、主要被写体の領域を少しずつ広げながら、ステップS405の終了判定の条件に達するまで繰り返し実行される。
そして、ユーザは、最初に目標画角の中心位置をワンタッチするだけで、ステップS407の最終ズーム処理の後、花などの主要被写体が画面いっぱいに収まるように自動的に画角調整が実行される。ユーザは、矩形枠の設定や画角調整のわずらわしさから解放され、操作性を向上させることが可能となる。
【0041】
以下に、
図4のステップS403、S404、S406の処理の基礎となるGraphCutsアルゴリズムについて、説明する。
いま、
【数1】
を、要素X
v が画像Vにおける画素v(1≦v≦V)に対する領域ラベルを示す領域ラベルベクトルであるとする。この領域ラベルベクトルは、例えば、画素vが主要被写体領域内にあれば要素X
v =0、背景領域内にあれば要素X
v =1となるバイナリベクトルである。すなわち、
【数2】
である。
【0042】
本実施形態において実行される領域分割処理は、画像Vにおいて、次式で定義されるエネルギー関数E(X)を最小にするような数1式の領域ラベルベクトルXを求める処理である。
【数3】
エネルギー最小化処理が実行される結果、領域ラベルベクトルX上で領域ラベル値X
v =0となる画素vの集合として、主要被写体領域が得られる。なお、領域ラベルベクトルX上で領域ラベル値X
v =1となる画素vの集合が、背景領域となる。
【0043】
数3式のエネルギーを最小化するために、次式および
図8で示される重み付き有向グラフ(以下「グラフ」と略す)を定義する。
【数4】
ここで、Vはノード(node)、Eはエッジ(edge)である。このグラフが画像の領域分割に適用される場合は、画像の各画素が各ノードVに対応する。また、画素以外のノードとして、次式および
図8中に示される、
【数5】
と呼ばれる特殊なターミナルが追加される。このソースsを主要被写体領域、シンクtを背景領域に対応付けて考える。また、エッジEは、ノードV間の関係を表現している。周辺の画素との関係を表したエッジEをn−link、各画素とソースs(主要被写体領域に対応)またはシンクt(背景領域に対応)との関係を表したエッジEをt−linkと呼ぶ。
【0044】
いま、ソースsと各画素に対応するノードとを結ぶ各n−linkを、各画素がどの程度主要被写体領域らしいかを示す関係ととらえる。そして、その主要被写体領域らしさを示すコスト値を、数3式第1項に対応付けて、
【数6】
と定義する。ここで、θ(c、0)は、画像の主要被写体の領域から算出したカラー画素値cごとのヒストグラム(出現回数)を示す関数データであり、例えば
図9(a)に示されるように予め得られている。なお、θ(c、0)の全カラー画素値cにわたる総和は1になるように正規化されているものとする。また、I(v)は、入力画像の各画素vにおけるカラー(RGB)画素値である。実際には、カラー(RGB)画素値を輝度値に変換した値であるが、以下では説明の簡単のために「カラー(RGB)画素値」または「カラー画素値」と記載する。数6式において、θ(I(v)、0)の値が大きいほど、コスト値は小さくなる。これは、予め得られている主要被写体領域のカラー画素値の中で出現回数が多いものほど、数6式で得られるコスト値が小さくなって、画素vが主要被写体領域中の画素らしいことを意味し、数3式のエネルギー関数E(X)の値を押し下げる結果となる。
【0045】
次に、シンクtと各画素に対応するノードとを結ぶ各t−linkを、各画素がどの程度背景領域らしいかを示す関係ととらえる。そして、その背景領域らしさを示すコスト値を、数3式第1項に対応付けて、
【数7】
と定義する。ここで、θ(c、1)は、画像の背景の領域から算出したカラー画素値cごとのヒストグラム(出現度数)を示す関数データであり、例えば
図9(b)に示されるように予め得られている。なお、θ(c、1)の全カラー画素値cにわたる総和は1になるように正規化されているものとする。I(v)は、数6式の場合と同様に、入力画像の各画素vにおけるカラー(RGB)画素値である。数6式において、θ(I(v)、1)の値が大きいほど、コスト値は小さくなる。これは、予め得られている背景領域のカラー画素値の中で出現回数が多いものほど、数7式で得られるコスト値が小さくなって、画素vが背景領域中の画素らしいことを意味し、数3式のエネルギー関数E(X)の値を押し下げる結果となる。
【0046】
次に、各画素に対応するノードとその周辺画素との関係を示すt−linkのコスト値を、数3式第2項に対応付けて、
【数8】
と定義する。ここで、dist(u,v)は、画素vとその周辺画素uのユークリッド距離を示しており、κは所定の係数である。また、I(u)およびI(v)は、入力画像の各画素uおよびvにおける各カラー(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式のコスト値は、例えば
図10に示される特性を有する関数特性となる。すなわち、画素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とで、領域ラベル値が異なる方向に制御される。
【0047】
以上の定義を用いて、入力画像の各画素vごとに、数6式によって、ソースsと各画素vとを結ぶt−linkのコスト値(主要被写体領域らしさ)が算出される。また、数7式によって、シンクtと各画素vとを結ぶt−linkのコスト値(背景領域らしさ)が算出される。さらに、入力画像の各画素vごとに、数8式によって、画素vとその周辺例えば8方向の各8画素とを結ぶ8本のn−linkのコスト値(境界らしさ)が算出される。
【0048】
そして、理論的には、数1式の領域ラベルベクトルXの全ての領域ラベル値の0または1の組合せごとに、各領域ラベル値に応じて上記数6式、数7式、および数8式の計算結果が選択されながら数3式のエネルギー関数E(X)が計算される。そして、全ての組合せの中でエネルギー関数E(X)の値が最小となる領域ラベルベクトルXを選択することにより、領域ラベルベクトルX上で領域ラベル値X
v =0となる画素vの集合として、主要被写体領域を得ることができる。
【0049】
しかし実際には、領域ラベルベクトルXの全ての領域ラベル値の0または1の組合せ数は、2の画素数乗通りあるため、現実的な時間でエネルギー関数E(X)の最小化処理を計算することができない。
【0050】
そこで、
図4のステップS404で実行されるGraph Cuts法では、次のようなアルゴリズムを実行することにより、エネルギー関数E(X)の最小化処理を現実的な時間で計算することを可能にする。
図11は、上述した数6式、数7式で定義されるt−linkと数8式で定義されるn−linkを有するグラフと、領域ラベルベクトルXおよびグラフカットとの関係を、模式的に示した図である。
図11では、理解の容易化のために、画素vは一次元的に示されている。
【0051】
数3式のエネルギー関数E(X)の第1項の計算で、領域ラベルベクトルX中の領域ラベル値が0となるべき主要被写体領域中の画素では、数6式と数7式のうち、主要被写体領域中の画素らしい場合により小さな値となる数6式のコスト値のほうが小さくなる。従って、ある画素において、ソースs側のt−linkが選択されシンクt側のt−linkがカットされて(
図11の1102のケース)、数6式を用いて数3式のE(X)の第1項が計算された場合に、その計算結果が小さくなれば、その画素の領域ラベル値としては0が選択される。そして、そのグラフカット状態が採用される。計算結果が小さくならなければ、そのグラフカット状態は採用されず、他のリンクの探索およびグラフカットが試みられる。
【0052】
逆に、領域ラベルベクトルX中の領域ラベル値が1となるべき背景領域中の画素では、数6式と数7式のうち、背景領域中の画素らしい場合により小さな値となる数7式のコスト値のほうが小さくなる。従って、ある画素において、シンクt側のt−linkが選択されソースs側のt−linkはカットされて(
図11の1103のケース)、数7式を用いて数3式のE(X)の第1項が計算された場合に、その計算結果が小さくなれば、その画素の領域ラベル値としては1が選択される。そして、そのグラフカット状態が採用される。計算結果が小さくならなければ、そのグラフカット状態は採用されず、他のリンクの探索およびグラフカットが試みられる。
【0053】
一方、数3式のエネルギー関数E(X)の第1項の計算に係る上記グラフカット処理により、領域ラベルベクトルX中の領域ラベル値が0または1で連続すべき主要被写体領域内部または背景領域内部の画素間では、数8式のコスト値が0となる。従って、数8式の計算結果は、エネルギー関数E(X)の第2項のコスト値の計算には影響しない。また、その画素間のn−linkは、数8式がコスト値0を出力するように、カットされずに維持される。
【0054】
ところが、エネルギー関数E(X)の第1項の計算に係る上記グラフカット処理により、近傍画素間で、領域ラベル値が0と1の間で変化した場合に、それらの画素間のカラー画素値の差が小さければ、数8式のコスト値が大きくなる。この結果、数3式のエネルギー関数E(X)の値が押し上げられる。このようなケースは、同一領域内で第1項の値による領域ラベル値の判定がたまたま反転するような場合に相当する。従って、このようなケースでは、エネルギー関数E(X)の値が大きくなって、そのような領域ラベル値の反転は選択されない結果となる。また、この場合には、数8式の計算結果が、上記結果を維持するように、それらの画素間のn−linkは、カットされずに維持される。
【0055】
これに対して、エネルギー関数E(X)の第1項の計算に係る上記グラフカット処理により、近傍画素間で、領域ラベル値が0と1の間で変化した場合に、それらの画素間のカラー画素値の差が大きければ、数8式のコスト値が小さくなる。この結果、数3式のエネルギー関数E(X)の値が押し下げられる。このようなケースは、それらの画素部分が主要被写体領域と背景領域の境界らしいことを意味している。従って、このようなケースでは、これらの画素間で領域ラベル値を異ならせて、主要被写体領域と背景領域の境界を形成する方向に制御される。また、この場合には、境界の形成状態を安定化するために、それらの画素間のn−linkがカットされて、数3式の第2項のコスト値が0にされる(
図11の1104のケース)。
【0056】
以上の判定制御処理が、ソースsのノードを起点にして、順次各画素のノードをたどりながら繰り返されることにより、
図11の1101で示されるようなグラフカットが実行され、
図4のステップS404におけるエネルギー関数E(X)の最小化処理が現実的な時間で計算される。この処理の具体的な手法としては、例えば、非特許文献1に記載されている手法を採用することができる。
【0057】
そして、各画素ごとに、ソースs側のt−linkが残っていれば、その画素の領域ラベル値として0、すなわち主要被写体領域の画素を示すラベルが付与される。逆に、シンクt側のt−linkが残っていれば、その画素の領域ラベル値として1、すなわち背景領域の画素を示すラベルが付与される。最終的に、領域ラベル値が0となる画素の集合として、主要被写体領域が得られる。
【0058】
図12は、上述した動作原理に基づく
図4のステップS403のデータ項の更新1の処理の詳細を示すフローチャートである。
【0059】
まず、ステップS402で得られた初期ズーム領域の画像から、カラー画素値I(V)が1つずつ読み込まれる(
図12のステップS1201)。
【0060】
次に、ステップS1201で読み込まれた画素が、
図4のステップS401でユーザによってタッチ指定されたズーム対象領域の中心に関する周囲画素であるか否かが判定される(
図12のステップS1202)。
【0061】
ステップS1202の判定がNOの場合には、前述した数6式、数7式、および数8式に基づいて、主要被写体領域らしさを示すコスト値、背景領域らしさを示すコスト値、および境界らしさを示すコスト値が、それぞれ算出される(
図12のステップS1203、S1204、およびS1205)。なお、θ(c、0)の初期値は、学習用に用意した複数枚(数百枚程度)の主要被写体の領域から算出される。同様に、θ(c、1)の初期値は、学習用に用意した複数枚(数百枚程度)の背景の領域から算出される。
【0062】
一方、ステップS1202の判定がYESの場合には、タッチ指定された画素を含むその周囲の画素は、確実に主要被写体領域であると言える。このため、タッチ指定された画素を含むその周囲領域が確実に主要被写体領域と判定されるようにするために、主要被写体領域らしさを示すコスト値g
v (X
v )が、次式のようにゼロとされる(
図12のステップS1206)。
【数9】
【0063】
また、タッチ指定された画素を含むその周囲領域が確実に主要被写体領域と判定されるようにするために、背景領域らしさを示すコスト値g
v (X
v )が、次式のように値Kとされる。
【数10】
ここで、Kは、次式に示されるように、任意のピクセルの平滑化項の総和よりも大きい値を設定しておく(以上、
図12のステップS1207)。
【数11】
【0064】
さらに、タッチ指定された画素を含むその周囲領域内は全て主要被写体領域であるため、h
uv(X
u ,X
v )の値は0とされる(
図12のステップS1208)。
【0065】
以上の処理の後、画像内に処理すべき画素が残っているか否かが判定される(
図12のステップS1209)。
【0066】
処理すべき画素がありステップS1209の判定がYESならば、ステップS1201の処理に戻って、上記処理が繰り返される。
【0067】
処理すべき画素がなくなりステップS1209の判定がNOになると、
図4のステップS403のデータ項の更新1の処理が終了する。
その後、
図4のステップS404で、初期ズーム領域の画像内の全ての画素について求まったコスト値を用いて、数3式のエネルギー関数E(X)が計算されながら、Graph Cutsアルゴリズムが実行され、主要被写体と背景が領域分割される。
【0068】
図13は、前述したGraph Cutsアルゴリズムの動作原理に基づく
図4のステップS406のデータ項の更新2の処理の詳細を示すフローチャートである。このフローチャートにおいて、
図12の場合と同じ処理の部分には同じステップ番号を付してある。
【0069】
まず、ステップS402で得られた初期ズーム領域の画像から、カラー画素値I(V)が1つずつ読み込まれる(
図12のステップS1201)。
【0070】
次に、ステップS1201で読み込まれたカラー画素値I(V)が主要被写体の画素らしいか否かが、次のようにして判定される。いま、Sat(I(V))をカラー画素値I(V)に対する彩度、θ(I(V)、0)をカラー画素値I(V)の主要被写体らしさを示すヒストグラムとしたとき、彩度Sat(I(V))が所定の彩度閾値Sth以上であって、かつヒストグラムθ(I(V)、0)が所定のヒストグラム閾値θth以上か否かが判定される(
図13のステップS1301)。
【0071】
ステップS1301の判定がNOの場合には、
図12の場合と同様に、前述した数6式、数7式、および数8式に基づいて、主要被写体領域らしさを示すコスト値、背景領域らしさを示すコスト値、および境界らしさを示すコスト値が、それぞれ算出される(
図12のステップS1203、S1204、およびS1205)。
【0072】
一方、ステップS1301の判定がYESの場合には、ステップS1201で読み込まれたカラー画素値I(V)は、前回までの処理により得られている主要被写体領域の周囲の画素であって、やはり主要被写体領域である可能性が高いと言える。このため、タッチ指定された画素を含むその周囲領域が確実に主要被写体領域と判定されやすくするために、主要被写体領域らしさを示すコスト値g
v (X
v )が、次のように修正される。
まず、主要被写体領域らしさを示すコスト値g
v (0)が背景領域らしさを示すコスト値g
v (1)よりも大きいか否かが判定される(
図13のステップS1302)。
g
v (0)>g
v (1)であってステップS1302の判定がYESならば、主要被写体領域らしさを示すコスト値g
v (0)が背景領域らしさを示すコスト値g
v (1)の半分の値に修正される(
図13のステップS1303)。すなわち、数7式より、
g
v (X
v )=g
v (0)=g
v (1)/2=−logθ(I(V)、1)/2
とされる。
一方、g
v (0)>g
v (1)ではなくステップS1302の判定がNOならば、主要被写体領域らしさを示すコスト値g
v (0)が元の自身の値の半分の値に修正される(
図13のステップS1304)。すなわち、数6式より、
g
v (X
v )=g
v (0)=g
v (0)/2=−logθ(I(V)、0)/2
とされる。
【0073】
また、背景領域らしさを示すコスト値g
v (X
v )については、前述したステップS1204によって算出される。
【0074】
h
uv(X
u ,X
v )の値は、前述したステップS1205によって算出される。
【0075】
以上の処理の後、画像内の今回処理した画素の近傍に似ている色の画素が残っているか否かが判定される(
図13のステップS1305)。似ている色とは、例えば、256階調のRGB値を各色10階調へ減色した際に同じRGB値となる色とする。
【0076】
処理すべき画素がありステップS1305の判定がYESならば、ステップS1201の処理に戻って、上記処理が繰り返される。
【0077】
処理すべき画素がなくなりステップS1305の判定がNOになると、
図4のステップS406のデータ項の更新2の処理が終了する。
その後、
図4のステップS404で、初期ズーム領域の画像内の全ての画素について求まったコスト値を用いて、数3式のエネルギー関数E(X)が計算されながら、Graph Cutsアルゴリズムが実行され、主要被写体と背景が領域分割される。
【0078】
以上のようにして本実施形態では、領域分割の精度を向上させることが可能となる。
【0079】
本実施形態では、主要被写体として花を例に説明したが、花に限られず、様々なオブジェクトを採用することができる。
【0080】
本実施形態では、主要被写体の検索を目的とするシステムについて説明したが、画角調整が必要となる様々なシステムに適用可能である。
【0081】
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
画像内で主要被写体が適正画角となるように該主要被写体に対する画角を調整する画角調整装置であって、
目標画角の中心位置を指定する位置指定手段と、
前記画像内の各画素値に基づいて前記主要被写体と該主要被写体以外の背景を領域分割する処理を実行し、前記中心位置の周囲画素については前記主要被写体の領域に領域分割する第1の領域分割手段と、
前記画像内の各画素値に基づいて前記主要被写体と該主要被写体以外の背景を領域分割する処理を実行し、前記第1の領域分割手段により領域分割された主要被写体の周囲の各画素については前記主要被写体の領域に領域分割する度合いを高める処理を所定の終了条件に達するまで繰り返し実行する第2の領域分割手段と、
前記第2の領域分割手段により領域分割された主要被写体を囲む外接矩形枠を基準として該主要被写体に対する画角を調整する画角調整手段と、
を備えることを特徴とする画角調整装置。
(付記2)
前記位置指定手段は、ユーザーに中心位置を指定させる手段であることを特徴とする付記1に記載の画角調整装置。
(付記3)
前記位置指定手段は、前記画像を表示するタッチ入力機能付きディスプレイ上で、前記目標画角の中心位置を前記ユーザにタッチ指定させる、
ことを特徴とする付記2に記載の画角調整装置。
(付記4)
前記中心位置から前記画像の上下左右の端へ向かって伸ばした4本の線分のうち最も短い線分の長さだけ、前記中心位置から前記上下左右の方向にそれぞれ広げた大きさの矩形をズーム領域とし、該ズーム領域のアスペクト比を保った状態で画面の中央に収まるようにズームアップを実行し、該ズームアップ後の初期ズーム領域とする初期ズーム手段を更に備え、
前記画角の調整を前記初期ズーム領域に対して実行し、
前記第2の領域分割手段により領域分割された主要被写体の領域のいずれかの境界が前記初期ズーム領域の端に達したことを前記所定の終了条件とする、
ことを特徴とする付記1ないし3のいずれかに記載の画角調整装置。
(付記5)
前記第1の領域分割手段は、前記画像内の各画素に付与する前記主要被写体または前記背景を示す領域ラベルを更新しながら、該領域ラベルと該各画素の画素値に基づき、前記主要被写体を示す画像から算出した前記画素値ごとの第1のヒストグラムの値が大きいほど値が小さくなる第1のコスト項と、前記背景を示す画像から算出した前記画素値ごとの第2のヒストグラムの値が大きいほど値が小さくなる第2のコスト項を含み、前記中心位置に関する周囲画素については前記第1のコスト項の値がゼロとなるエネルギー関数の最小化処理により、前記画像内で前記主要被写体と前記背景を領域分割する、
ことを特徴とする付記1ないし4のいずれかに記載の画角調整装置。
(付記6)
前記第2の領域分割手段は、前記画像内の各画素に付与する前記主要被写体または前記背景を示す領域ラベルを更新しながら、該領域ラベルと該各画素の画素値に基づき、前記第1のヒストグラムの値が大きいほど値が小さくなる第1のコスト項と、前記第2のヒストグラムの値が大きいほど値が小さくなる第2のコスト項を含み、前記画素の画素値をビン値とする前記第1のヒストグラムの値が所定のヒストグラム閾値に比較して大きくかつ前記画素値の彩度が所定の彩度閾値に比較して大きい場合に、前記第1のコスト項がより小さくなるエネルギー関数の最小化処理により、前記画像内で前記主要被写体と前記背景を領域分割する、
ことを特徴とする付記5に記載の画角調整装置。
(付記7)
前記第1の領域分割手段および前記第2の領域分割手段は、Graph Cuts法により前記エネルギー関数の最小化処理を実行する、
ことを特徴とする付記6に記載の画角調整装置。
(付記8)
画像内で主要被写体が適正画角となるように該主要被写体に対する画角を調整する画角調整方法であって、
目標画角の中心位置をユーザに指定させる位置指定ステップと、
前記画像内の各画素値に基づいて前記主要被写体と該主要被写体以外の背景を領域分割する処理を実行し、前記中心位置の周囲画素については前記主要被写体の領域に領域分割する第1の領域分割ステップと、
前記画像内の各画素値に基づいて前記主要被写体と該主要被写体以外の背景を領域分割する処理を実行し、前記第1の領域分割ステップにより領域分割された主要被写体の周囲の各画素については前記主要被写体の領域に領域分割する度合いを高める処理を所定の終了条件に達するまで繰り返し実行する第2の領域分割ステップと、
前記第2の領域分割ステップにより領域分割された主要被写体を囲む外接矩形枠を基準として該主要被写体に対する画角を調整する画角調整ステップと、
を実行することを備えることを特徴とする画角調整方法。
(付記9)
画像内で主要被写体が適正画角となるように該主要被写体に対する画角を調整するコンピュータに、
目標画角の中心位置をユーザに指定させる位置指定ステップと、
前記画像内の各画素値に基づいて前記主要被写体と該主要被写体以外の背景を領域分割する処理を実行し、前記中心位置の周囲画素については前記主要被写体の領域に領域分割する第1の領域分割ステップと、
前記画像内の各画素値に基づいて前記主要被写体と該主要被写体以外の背景を領域分割する処理を実行し、前記第1の領域分割ステップにより領域分割された主要被写体の周囲の各画素については前記主要被写体の領域に領域分割する度合いを高める処理を所定の終了条件に達するまで繰り返し実行する第2の領域分割ステップと、
前記第2の領域分割ステップにより領域分割された主要被写体を囲む外接矩形枠を基準として該主要被写体に対する画角を調整する画角調整ステップと、
を実行させるためのプログラム。