JP2008225778A - 画像処理装置 - Google Patents
画像処理装置 Download PDFInfo
- Publication number
- JP2008225778A JP2008225778A JP2007062360A JP2007062360A JP2008225778A JP 2008225778 A JP2008225778 A JP 2008225778A JP 2007062360 A JP2007062360 A JP 2007062360A JP 2007062360 A JP2007062360 A JP 2007062360A JP 2008225778 A JP2008225778 A JP 2008225778A
- Authority
- JP
- Japan
- Prior art keywords
- value
- label
- setting
- node
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Analysis (AREA)
Abstract
【課題】高速かつ高精度に画素のラベル値を選択する。
【解決手段】W(xp−xq+r)とV(xp)を含むエネルギー関数を評価する各評価関数m(t) p→q(xq)のt=0の初期値を設定する手段202と、h(xp)を設定する手段203と、Wが最小値になるxqであるPeakXqを算出する手段205と、xpごとにhとW(xp−PeakXq+r)との集約値を算出する手段206と、前記集約値と前記m(t)にxq=PeakXqを代入した値とを比較し、小さい値の方を最適値として選択してm’(t)とする手段207と、WとW(xp−(xq+k)+r)との差分とm’(t) p→q(xq+k)との集約値と、m’(t)との小さい値の方を最適値としてm(t+1)とする手段207と、xqごとにビリーフ値bq(xq)を算出しbqを最小にするラベル値xqを選択する手段213を具備する。
【選択図】図2
【解決手段】W(xp−xq+r)とV(xp)を含むエネルギー関数を評価する各評価関数m(t) p→q(xq)のt=0の初期値を設定する手段202と、h(xp)を設定する手段203と、Wが最小値になるxqであるPeakXqを算出する手段205と、xpごとにhとW(xp−PeakXq+r)との集約値を算出する手段206と、前記集約値と前記m(t)にxq=PeakXqを代入した値とを比較し、小さい値の方を最適値として選択してm’(t)とする手段207と、WとW(xp−(xq+k)+r)との差分とm’(t) p→q(xq+k)との集約値と、m’(t)との小さい値の方を最適値としてm(t+1)とする手段207と、xqごとにビリーフ値bq(xq)を算出しbqを最小にするラベル値xqを選択する手段213を具備する。
【選択図】図2
Description
本発明は、予め定義されたエネルギー関数の最小化を効率的に計算する技術に関し、例えば、動画像の動きベクトルの高速な算出に利用できる画像処理装置に関する。
超解像のように高い精度の動きベクトルを必要とするアプリケーションでは、従来のようにローカルの情報だけを用いて動きベクトルを算出するだけでは不十分である。一方、Belief Propagation(BP)という手法を用いて画面全体の整合性を考えながら動きベクトルを算出すれば、従来よりも信頼性の高い動き推定が可能である。
しかし、BPは、隣接画素対に対してメッセージ値という値を繰り返し計算する最適化手法で、非常に計算量が多いことが知られている。BPによれば、例えば、動き推定では数時間〜数日かかり、消費メモリは8Gバイトを超えてしまう。その対策として、全ての画素について動きベクトルの範囲が同じで、評価関数が特定の形の場合のみ適用可能な高速BPが提案された(例えば、非特許文献1参照)。
P. F. Felzenszwalb and D. R. Huttenlocher, ``Efficient Belief Propagation for Early Vision,’’ in Proceedings of the 2004 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, Volume 1, pp.261-268, 2004.
P. F. Felzenszwalb and D. R. Huttenlocher, ``Efficient Belief Propagation for Early Vision,’’ in Proceedings of the 2004 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, Volume 1, pp.261-268, 2004.
しかし、依然として計算量や消費メモリが多く、例えば、計算時間は数十分で、消費メモリはBPと同じである。
一方、ブロックマッチングにおいては、粗い動きベクトルを求めその周辺のみを探索する階層的探索や、他のフレームの動きベクトルを基準としてその周辺のみを探索する手法などの高速化手法が用いられている。これらの高速化手法と高速BPを組み合わせることができれば、高速で精度の高い動き推定が可能になる。
しかし、階層的探索などの高速化手法を利用すると、画素ごとに動きベクトルの範囲が異なるために高速BPが適用できなくなる。
ところで、高速化BPは、ここで示した動きベクトルの算出の他に、例えば、ステレオ画像の視差の算出、画像の復元に利用される手法として、多次元ベクトル空間上で予め定められた点の集合のうち、予め定義されたエネルギー関数を最小化する点を選択する手法である。これら動きベクトル、視差、奥行き情報は画素のラベル値で決定される。
この発明は、上述した事情を考慮してなされたものであり、高速かつ高精度に画素のラベル値を選択する画像処理装置を提供することを目的とする。
上述の課題を解決するため、本発明の画像処理装置は、画像の各画素に対応付けられた各ノードp、qのそれぞれのラベル値xp、xqを変数とし、ノード対(p、q)およびpとqに関連付けられた定数rを用いて定義された関数W(xp−xq+r)と関数V(xp)を含む、最小化するxpを求めるエネルギー関数を設定する設定手段と、各ノード対(p、q)に対応して各評価関数m(t) p→q(xq)を格納している格納手段と、前記各評価関数のt=0での値である初期値を設定する設定手段と、
にしたがってh(xp)を設定する設定手段と、xpごとにW(xp−xq+r)が最小値になるxqであるPeakXqを算出する算出手段と、xpごとにh(xp)とW(xp−PeakXq+r)との和または積である集約値を算出する算出手段と、前記集約値と前記m(t) p→q(xq)にxq=PeakXqを代入した値とを比較し、小さい値の方を最適値として選択してm’(t) p→q(xq)とする更新手段と、xpごとに、W(xp−xq+r)とW(xp−(xq+k)+r)との差分とm’(t) p→q(xq+k)との集約値と、m’(t) p→q(xq)との小さい値の方を最適値としてm(t+1) p→q(xq)とする更新手段と、tが繰り返し回数Tよりも小さい場合には、m(t+1) p→q(xq)を計算させ、最終的にm(T) p→q(xq)を取得する取得手段と、
xqごとに
xqごとに
を算出する算出手段と、qごとに、bq(xq)を最小にするラベル値xqを選択する選択手段と、を具備することを特徴とする。
本発明の画像処理装置によれば、高速かつ高精度に画素のラベル値を選択することが可能になる。
以下、図面を参照しながら本発明の実施形態に係る画像処理装置について詳細に説明する。
まず、ラベル値の例として動きベクトルを例に挙げ、画素ごとに動きベクトルの範囲が異なっている場合でも、高速BPが適用できるようにメッセージ値の計算が修正できる一例をごく簡単に示す。
まず、ラベル値の例として動きベクトルを例に挙げ、画素ごとに動きベクトルの範囲が異なっている場合でも、高速BPが適用できるようにメッセージ値の計算が修正できる一例をごく簡単に示す。
一例として、第1画素の動きベクトルpと第2画素の動きベクトルqの評価関数(後述するメッセージ値に対応)がf(q)+|p−q|という形のときに、各qに対して評価関数の最小値を求める計算を考える。なお、ここでは、簡単のため動きベクトルがスカラーであるとする。
高速BPでは、各qに対して|p−q|=0のときの評価関数(すなわち、f(q))を予め算出し、その後|p−q|が非0の場合を差分計算により逐次求めながら評価関数の最小値を求める。
しかし、高速BPでは、qの範囲内では|p−q|=0とならない場合が考慮されていない。例えば、p=−2,−1,0,1,2、p=−1,0,1,2,3のようにpとqの値の範囲が異なる場合、p=−2,−1,0,1,2、p=−3,−2,−1,0,1,2,3のように候補数が異なる場合、p=−2,−1,0,1,2、p=−2.5,−1.5,−0.5,0.5,1.5のようにpとqの差が小数になる場合は考慮されていない。
一方、本実施形態の画像処理装置による手法(拡張高速BPと呼ぶ)では、qの範囲内では|p−q|=0とならない場合(qの範囲外で最小値を持つ評価関数の場合)については、qの範囲境界における最小値を算出してから、高速BPと同様に差分計算による逐次評価を行う。こうすることで階層的探索と拡張高速BPを併用することができ、高速かつ高精度に動きベクトルを推定できるようになる。
(BP)
次に、BPについて説明する。
多次元ベクトル空間上で予め定められた点の集合のうち、予め定義されたエネルギー関数を最小化する点を選択する技術は、多くの応用を持ち、例えば、動画像の動きベクトルの算出、ステレオ画像の視差の算出、画像の復元に利用されている(上記のP. F. Felzenszwalb and D. R. Huttenlocherの文献参照)。一般的なエネルギー関数の厳密な最小化は極めて困難であることが知られている。その近似解の算出手法の1つとして、ビリーフプロパゲーション(BP:Belief Propagation)と呼ばれる技術が知られている。BPでは、高々2つの変数から成る項の総和として表現される次のエネルギー関数の近似的な最小化を考える(以下、近似的な最小化を単に最小化と呼ぶ)。
次に、BPについて説明する。
多次元ベクトル空間上で予め定められた点の集合のうち、予め定義されたエネルギー関数を最小化する点を選択する技術は、多くの応用を持ち、例えば、動画像の動きベクトルの算出、ステレオ画像の視差の算出、画像の復元に利用されている(上記のP. F. Felzenszwalb and D. R. Huttenlocherの文献参照)。一般的なエネルギー関数の厳密な最小化は極めて困難であることが知られている。その近似解の算出手法の1つとして、ビリーフプロパゲーション(BP:Belief Propagation)と呼ばれる技術が知られている。BPでは、高々2つの変数から成る項の総和として表現される次のエネルギー関数の近似的な最小化を考える(以下、近似的な最小化を単に最小化と呼ぶ)。
ラベルの添え字iをノード番号、あるいは単にノードと呼ぶ。xi={0,1,・・・,Li−1}はラベル、Nはエネルギー関数が含む各2ノード項を構成する変数対の集合をあらわす。また、各2ノード項を構成する(つまり、Nに属する)ノード対をエッジと呼ぶ。BPでは、エネルギー関数を最小化するために次の繰り返し演算を行う。
(ステップ1)t=0とする(tはメッセージ更新回数を表す)。各エッジ(p,q)∈Nに対し、m(t) p→q(xq)の初期値を与える(あるいは全てのm(t) p→q(xq)を0に初期化する)。
ただし、Σsは(s,p)∈Nかつs≠qを満たす全てのsに対する和を表す。なお、m(t) p→q(xq)とm(t) q→p(xq)は別のメッセージ値であり、区別する必要がある。
(ステップ3)tを1増やす。tが予め決めておいた繰り返し回数Tより小さいなら、ステップ2に戻る。
ただし、Σpは(p,q)∈Nを満たす全てのpに対する和を表す。
(ステップ5)各qに対してbq(xq)を最小とするラベルxq={0,1,・・・,Lq−1}を選ぶ。
BPでは上記のステップ2でメッセージ更新式の繰り返し演算を行うために多くの計算時間が必要となる。
(高速BP)
次に、高速BPについて説明する。高速BPは、メッセージ更新式の繰り返し演算を行うための計算時間を少なくする。
次に、高速BPについて説明する。高速BPは、メッセージ更新式の繰り返し演算を行うための計算時間を少なくする。
高速BPでは、全てのノードiに対してラベルを同一の範囲0〜(L−1)とし、かつ、2ノード項Wを以下に示すPottsや線形コストのいずれかの形に制限し、上記のステップ2の繰り返し演算の高速化を実現する。
Potts W(xp,xq)=0(if xp=xq),d(otherwise)
線形コスト W(xp,xq)=min(s‖xp−xq‖,d)
だだし、‖A‖はAのノルムを示す。ここで、pに依存する項をまとめて
Potts W(xp,xq)=0(if xp=xq),d(otherwise)
線形コスト W(xp,xq)=min(s‖xp−xq‖,d)
だだし、‖A‖はAのノルムを示す。ここで、pに依存する項をまとめて
高速BPではこの式をもとにメッセージ更新式の算出を高速化する。
を計算しておけば、残りの項はpに依存しないからm(t) p→q(xq)はqのラベル数のオーダで計算できる。
<Wが線形コストの場合>
2ノード項Wが線形コストの場合、はじめに2ノード項がW(xp,xq)=s‖xp−xq‖の場合について計算し、得られた結果とdとのminをPottsと同じ手法で計算すれば良い。2ノード項がW(xp,xq)=s‖xp−xq‖の場合についての計算では、メッセージ更新式は次の通りである。
2ノード項Wが線形コストの場合、はじめに2ノード項がW(xp,xq)=s‖xp−xq‖の場合について計算し、得られた結果とdとのminをPottsと同じ手法で計算すれば良い。2ノード項がW(xp,xq)=s‖xp−xq‖の場合についての計算では、メッセージ更新式は次の通りである。
メッセージ更新式を高速に計算するために、メッセージ更新は次の3つのステップに従って行う。この計算は「in-place」更新により行う、つまりm(xq)の値を各ステップで上書きしていくことで実現する。
(高速BP更新ステップ1)ラベルxq=0〜(L−1)に対し、m(xq)←h(xq)を計算する。
(高速BP更新ステップ2)1〜(L−1)までラベル番号xqを1ずつ増やしながら以下を実行する。
m(xq)←min(m(xq),m(xq−1)+s)
(高速BP更新ステップ3)(L−2)〜0までラベル番号xqを1ずつ減らしながら以下を実行する。
(高速BP更新ステップ1)ラベルxq=0〜(L−1)に対し、m(xq)←h(xq)を計算する。
(高速BP更新ステップ2)1〜(L−1)までラベル番号xqを1ずつ増やしながら以下を実行する。
m(xq)←min(m(xq),m(xq−1)+s)
(高速BP更新ステップ3)(L−2)〜0までラベル番号xqを1ずつ減らしながら以下を実行する。
m(xq)←min(m(xq),m(xq+1)+s)
高速BP更新ステップ3が終了した時点で、各m(t+1) p→q(xq)の値がm(xq)に得られる。
高速BP更新ステップ3が終了した時点で、各m(t+1) p→q(xq)の値がm(xq)に得られる。
以上のように、全てのノードに対してラベルを同一の範囲の整数0〜(L−1)とし、かつ2ノード項WがPottsや線形コストのいずれかであれば、高速化によりBPの計算時間を大幅に短縮できる。
(高速BPの問題点)
高速BPでは、全てのノードに対するラベル数が同一の範囲の整数であることを前提としている。しかし、全てのノードに対するラベル数が同一の範囲の整数でなければならないと仮定してしまうと、例えば、次のような場合には適用できない。
高速BPでは、全てのノードに対するラベル数が同一の範囲の整数であることを前提としている。しかし、全てのノードに対するラベル数が同一の範囲の整数でなければならないと仮定してしまうと、例えば、次のような場合には適用できない。
<ケース1>ノードpのラベルがxp={0,1,2,3,4}、ノードqのラベルがxq={2,3,4,5,6}というように、ノードごとにラベルの範囲が異なる場合。
<ケース2>ノードpのラベルがxp={0,1,2,3,4}、ノードqのラベルがxq={0,1,2,3,4,5,6}というように、ノードごとにラベルの種類数が異なる場合。
<ケース3>ノードpのラベルに対応する数値が小数を含む場合。例えば2ノード項をW(xp,xq)=s‖xp−xq‖の形で書いたときに、各ラベルに対応する数値がxp={0.3,1.3,2.3,3.3,4.3}、xq={0,1,2,3,4,5,6}となる場合。
<ケース2>ノードpのラベルがxp={0,1,2,3,4}、ノードqのラベルがxq={0,1,2,3,4,5,6}というように、ノードごとにラベルの種類数が異なる場合。
<ケース3>ノードpのラベルに対応する数値が小数を含む場合。例えば2ノード項をW(xp,xq)=s‖xp−xq‖の形で書いたときに、各ラベルに対応する数値がxp={0.3,1.3,2.3,3.3,4.3}、xq={0,1,2,3,4,5,6}となる場合。
以上に示したケースは多くの応用で起こりうる。例えば、動画像の各画素をノード、動きベクトルをラベルとして最適なラベルを選択する問題を考えると、それぞれのケースは下記の状況で起こる。
<ケース1>まず、動きベクトルを低い精度で求め、次に得られた動きベクトルを中心とした小さな範囲で動きベクトルをより高い精度で求める場合を考える。このとき、2回目の動きベクトルの算出では、ノードごとにラベルの範囲が異なる場合を扱う。
<ケース1>まず、動きベクトルを低い精度で求め、次に得られた動きベクトルを中心とした小さな範囲で動きベクトルをより高い精度で求める場合を考える。このとき、2回目の動きベクトルの算出では、ノードごとにラベルの範囲が異なる場合を扱う。
<ケース2>動画像の動きベクトル推定では、前のフレームからの動きベクトルの変化は比較的小さいと考えられるから、前のフレームで求めた動きベクトルを中心とした小さな範囲のみを次のフレームの動きベクトル候補とすれば高速化できる。このとき、画像中で動きベクトルの変化(変化とは、例えば、過去2フレームの動きベクトルから求めた加速度)が穏やかな領域では、誤推定の可能性は少ないため動きベクトル候補を少なくすれば余計な計算を減らせるが、動きベクトルの変化が激しい領域では、誤推定の可能性を減らすために動きベクトル候補を多くする必要がある。このとき、ノードごとにラベルの種類数が異なる場合を扱う。
<ケース3>ケース2と同様に前のフレームで求めた動きベクトルを中心とした小さな範囲を動きベクトル候補とし、ケース1のように動きベクトルの推定を多段構成で行う場合を考える。前のフレームでは動きベクトルを高い精度で求めているから、次のフレームで低い精度で求めるときには、中心とする動きベクトルは小数を含むことになる。このとき、各ノードのラベルとして小数を扱うことになる。
(拡張高速BP)
(用語の定義、基本部分)
本実施形態では、高々2つの変数(ノード)から成る項の総和として表現されるエネルギー関数の近似的な最小化問題を扱う。本実施形態では近似的な最小化を含めて単に最小化と呼んでいる。エネルギー関数の最小化とは、エネルギー関数を最小にするラベルを割り当てることをいう。1変数(1ノード)から成る項をV、2ノード(2ノード)から成る項をWとすると、エネルギー関数は次の式で表せる。
(用語の定義、基本部分)
本実施形態では、高々2つの変数(ノード)から成る項の総和として表現されるエネルギー関数の近似的な最小化問題を扱う。本実施形態では近似的な最小化を含めて単に最小化と呼んでいる。エネルギー関数の最小化とは、エネルギー関数を最小にするラベルを割り当てることをいう。1変数(1ノード)から成る項をV、2ノード(2ノード)から成る項をWとすると、エネルギー関数は次の式で表せる。
ただし、ラベルの添え字iやjはノードを表し、xi={0,1,・・・,Li−1}はラベルを表し、整数であることが多い。Nはエネルギー関数が含む各2ノード項を構成する変数対の集合をあらわす。なお、この和は積の形で書かれていても良い。関数が積で与えられる場合の解き方は後述する。解くとは、エネルギー関数を最小化するようにラベルを割り当てることをいう。また便宜上、和と積をあわせて集約と呼ぶ。エネルギー関数の最小化においては、上述したように、繰り返し行われるメッセージ値の更新の計算を効率的に行うことが重要である。なお、上記の符号を反転したエネルギー関数
の最大化問題は、符号を変えれば同じ手法で解ける。また、便宜上、最小値を選択する場合の最小値と最大値を選択する場合の最大値をあわせて最適値と呼ぶことにする。
≪ケース1,2:W(xp,xq)=s‖xp−xq+rpq‖、Liが画素ごとに異なる場合≫
各2ノード項がW(xp,xq)=s‖xp−xq+rpq‖(この一般形をW(xp−xq+r)と書くこともある)で与えられ、ラベル数Liが画素ごとに異なる場合を考える。rpqは定数で、2ノード項ごとに異なっていても良いものとする。このW、Liに対するメッセージ値は、上記の高速BPの手法では算出できない。
各2ノード項がW(xp,xq)=s‖xp−xq+rpq‖(この一般形をW(xp−xq+r)と書くこともある)で与えられ、ラベル数Liが画素ごとに異なる場合を考える。rpqは定数で、2ノード項ごとに異なっていても良いものとする。このW、Liに対するメッセージ値は、上記の高速BPの手法では算出できない。
本実施形態によれば、次の手法でメッセージ値を更新するため、2ノード項が前述のW(xp,xq)=s‖xp−xq+rpq‖で与えられる場合でも算出できる。このための手法について図1から図5を参照して説明する。
本実施形態の画像処理装置の本質的な手法である更新について、はじめにrpqが整数の場合について説明する。rpqが整数でない場合について、および本実施形態の画像処理装置全体の流れについては後述する。なお、ラベルxp、xqがそれぞれ0〜3、0〜4でrpq=−1の場合の例を図3から図5に示す。図3から図5において、縦方向はmの値を表すものとする。
本実施形態の画像処理装置の本質的な手法である更新について、はじめにrpqが整数の場合について説明する。rpqが整数でない場合について、および本実施形態の画像処理装置全体の流れについては後述する。なお、ラベルxp、xqがそれぞれ0〜3、0〜4でrpq=−1の場合の例を図3から図5に示す。図3から図5において、縦方向はmの値を表すものとする。
まず、本実施形態の画像処理装置の更新を行う更新処理装置部分について図2を参照して簡単に説明する。
更新処理装置部分は、メッセージ値保持部201、メッセージ初期値入力部202、h(xp)値算出部203、xq一時メッセージ値保持部204、PeakXq算出部205、集約値算出部206、最適値選択部207、最適値出力部208、ノード対(p,q)選択部209、xp値入力部210、xq値入力部211、xqビリーフ値算出部212、出力部213、ノードq選択部214を含んでいる。
更新処理装置部分は、メッセージ値保持部201、メッセージ初期値入力部202、h(xp)値算出部203、xq一時メッセージ値保持部204、PeakXq算出部205、集約値算出部206、最適値選択部207、最適値出力部208、ノード対(p,q)選択部209、xp値入力部210、xq値入力部211、xqビリーフ値算出部212、出力部213、ノードq選択部214を含んでいる。
メッセージ値保持部201は、各2ノード対(p、q)に対し、pからqへのメッセージ値mp→q(xq)を保持、すなわち格納している。
メッセージ初期値入力部202は、各2ノード対(p、q)に対し、pからqへのメッセージ値mp→q(xq)の初期値を設定する。
h(xp)値算出部203は、2ノード対(p、q)のノードqに対するラベル値xpを入力とし、更新後のmp→q(xq)に含まれる項であってノードpに依存しノードqに依存しない項(h(xp))を、mp→q(xq)の初期値を用いて算出する。
xq一時メッセージ値保持部204は、xq値入力部211で取得されたxqごとのメッセージ値を一時的に格納する。
PeakXq算出部205は、与えられたxpに対し関数W(xp−xq+r)が最適値をとるxqであるPeakXqを算出する。
集約値算出部206は、ラベル値xpを入力として、h(xp)とW(xp−PeakXq+r)を集約した値を算出する。
最適値選択部207は、集約値算出部206が算出した集約値と、PeakXqに対するxq一時メッセージ値保持部204が保持する値から最適値を選択し、PeakXqに対するxq一時メッセージ値保持部204が格納している値を更新する。
最適値出力部208は、ラベル値xqおよび差分定数kを入力として、関数W(xp−xq+r)と関数W(xp−(xq+k)+r)との差分をmp→q(xq+k)に集約した値と、mp→q(xq)とを比較し、その最適値でmp→q(xq+k)を更新する。
ノード対(p,q)選択部209は、処理すべきノード対(p、q)を選択する。
xp値入力部210は、処理すべきノード対(p、q)のノードpに対するラベル値xpを選択する。
xq値入力部211は、ノード対(p,q)選択部209、ノードq選択部214で選択されたqに対応するxq値を取得する。
xqビリーフ値算出部212は、ノードq選択部214からノードq、xq値入力部211からラベル値xq、メッセージ値保持部201からメッセージ値を入力し、ラベル値xqに対するqへのメッセージ値を集約した値であるビリーフ値を算出する。
出力部213は、ノードqに対し、各ラベル値xqのビリーフ値を算出し、それらのうち最適値を与えるラベル値をノードqのラベル値として出力する。
ノードq選択部214は、処理すべきノードqを選択する。
メッセージ初期値入力部202は、各2ノード対(p、q)に対し、pからqへのメッセージ値mp→q(xq)の初期値を設定する。
h(xp)値算出部203は、2ノード対(p、q)のノードqに対するラベル値xpを入力とし、更新後のmp→q(xq)に含まれる項であってノードpに依存しノードqに依存しない項(h(xp))を、mp→q(xq)の初期値を用いて算出する。
xq一時メッセージ値保持部204は、xq値入力部211で取得されたxqごとのメッセージ値を一時的に格納する。
PeakXq算出部205は、与えられたxpに対し関数W(xp−xq+r)が最適値をとるxqであるPeakXqを算出する。
集約値算出部206は、ラベル値xpを入力として、h(xp)とW(xp−PeakXq+r)を集約した値を算出する。
最適値選択部207は、集約値算出部206が算出した集約値と、PeakXqに対するxq一時メッセージ値保持部204が保持する値から最適値を選択し、PeakXqに対するxq一時メッセージ値保持部204が格納している値を更新する。
最適値出力部208は、ラベル値xqおよび差分定数kを入力として、関数W(xp−xq+r)と関数W(xp−(xq+k)+r)との差分をmp→q(xq+k)に集約した値と、mp→q(xq)とを比較し、その最適値でmp→q(xq+k)を更新する。
ノード対(p,q)選択部209は、処理すべきノード対(p、q)を選択する。
xp値入力部210は、処理すべきノード対(p、q)のノードpに対するラベル値xpを選択する。
xq値入力部211は、ノード対(p,q)選択部209、ノードq選択部214で選択されたqに対応するxq値を取得する。
xqビリーフ値算出部212は、ノードq選択部214からノードq、xq値入力部211からラベル値xq、メッセージ値保持部201からメッセージ値を入力し、ラベル値xqに対するqへのメッセージ値を集約した値であるビリーフ値を算出する。
出力部213は、ノードqに対し、各ラベル値xqのビリーフ値を算出し、それらのうち最適値を与えるラベル値をノードqのラベル値として出力する。
ノードq選択部214は、処理すべきノードqを選択する。
(拡張高速BP更新ステップ1)まず入力としてエネルギー関数が与えられ(S101)、メッセージ初期値入力部202がメッセージ値を初期化(ステップS102)する。次に、ラベルxq={0,1,・・・,Lq−1}に対し、m(xq)←+∞とするステップを実行する。このステップは後述の方法を使えばなくても良いためフローチャートでは示していないが、実行する場合は例えばステップS102とステップS103の間で実行する。m(xq)はxq一時メッセージ値保持部204で保持され、処理ラベルはxq値入力部211で制御される。
(拡張高速BP更新ステップ2)ノード対(p,q)選択部209がノード対を選択し、xp値入力部210がxpを取得し、h(xp)値算出部203がh(xp)を算出する(ステップS103)。PeakXq算出部205が、xp値入力部210で得られるxpに対し、関数s‖xp−xq+rpq‖が最適値をとるxqである下記の式で示されるyp(xq)(PeakXqと呼ぶ)を算出する(ステップS104)。集約値算出部206がh(xp)+s‖xp−PeakXq+rpq‖を計算する(ステップS105)。最適値選択部207がmin(m(yp(xp)),h(xp)+s‖xp−xq+rpq‖)を計算し、最適値選択部207が、この値と、PeakXqに対するxq一時メッセージ値保持部204が保持する値とから最適値を選択し、xq一時メッセージ値保持部204に出力し、mp→q(xq)を更新する(ステップS106)。
すなわち、各ラベルxpに対して、次の式を実行する。
m(yp(xp))←min(m(yp(xp)),h(xp)+s‖xp−xq+rpq‖)
なお、yp(xp)はラベルxpごとにラベルxqを選択するためのもので、
m(yp(xp))←min(m(yp(xp)),h(xp)+s‖xp−xq+rpq‖)
なお、yp(xp)はラベルxpごとにラベルxqを選択するためのもので、
により求める(なお、この式はxpではなくxqを決める式である)。図1や図2ではyp(xp)をPeakXqと記載している。
各yp(xp)(=PeakXq)についてmの値を求めると図3のようになる。縦方向はmの値の大小を表す。拡張高速BP更新ステップ2ではminを算出する操作を行う。この操作は図4に示すように、ラベルxqの範囲の制限により両端では2つ以上のyp(xp)が同じラベル値となることがあるが、このときm(xq)として最小値を選択する操作を表す。なお、この操作によって、ただ1つのyp(xp)が対応するxqについてはその値がm(xq)として用いられ、対応するyp(xp)が1つも存在しないxqについてはm(xq)に+∞が設定されることになる。
(拡張高速BP更新ステップ3)xq={0,1,・・・,Lq−1}の範囲で、ラベル番号xqを1から開始して1ずつ増やしながら以下を実行する。
m(xq)←min(m(xq),m(xq−1)+s)
この操作は、図5に示すように、隣接ラベル値でのm(xq)に差分を足した値と注目ラベル値でのm(xq)のうちの小さいほうをm(xq)として選択する操作を表す。
m(xq)←min(m(xq),m(xq−1)+s)
この操作は、図5に示すように、隣接ラベル値でのm(xq)に差分を足した値と注目ラベル値でのm(xq)のうちの小さいほうをm(xq)として選択する操作を表す。
(拡張高速BP更新ステップ4)xq={Lq−2,・・・,0}の範囲で、ラベル番号xqをLq−2から開始して1ずつ減らしながら以下を実行する。
m(xq)←min(m(xq),m(xq+1)+s)
なお、拡張高速BP更新ステップ3と4の順序は逆でもかまわない。
m(xq)←min(m(xq),m(xq+1)+s)
なお、拡張高速BP更新ステップ3と4の順序は逆でもかまわない。
図1では拡張高速BP更新ステップ3と4をまとめてS107としている。S107は拡張高速BP更新ステップ3や4の処理を一般化して書いたもので、最適値出力部208で実行される。実行される処理は次の通りである。
(ステップS107)ラベル差分をkとする。kが正ならkからLq−1まで、kが負ならLq−1+kから0までの範囲で、1(k>0)あるいは−1(k<0)ずつラベル値をずらしながら、以下を実行する。
m(xq)←min(m(xq),m(xq+k)+ΔW)
ここで、ΔWはラベルをkずらすことにより生じるWの差分を表す。拡張高速BP更新ステップ3はラベル差分k=1としてS107を実行する場合、拡張高速BP更新ステップ4はラベル差分k=−1としてS107を実行する場合に相当する。最小値の選択をA308で行い、選択された最小値はA305に送られる。
(ステップS107)ラベル差分をkとする。kが正ならkからLq−1まで、kが負ならLq−1+kから0までの範囲で、1(k>0)あるいは−1(k<0)ずつラベル値をずらしながら、以下を実行する。
m(xq)←min(m(xq),m(xq+k)+ΔW)
ここで、ΔWはラベルをkずらすことにより生じるWの差分を表す。拡張高速BP更新ステップ3はラベル差分k=1としてS107を実行する場合、拡張高速BP更新ステップ4はラベル差分k=−1としてS107を実行する場合に相当する。最小値の選択をA308で行い、選択された最小値はA305に送られる。
本実施形態の画像処理装置を最も特徴づけるステップは拡張高速BP更新ステップ2である。
はじめにh(xq)をラベルごとに求める必要があるが、このときm(xq)に単に求めたh(xq)を代入するのではなく、まず各2ノード項が最小になるラベル値yq(xq)を調べ、そのラベル値に対応するm(yq(xq))を更新する。このとき、複数のxqに対してyq(xq)が同一となる場合にはその最小値を選択しておけば、拡張高速BP更新ステップ3と4を終えた時点での更新メッセージ値は高速化を施さない場合と完全に一致する。
はじめにh(xq)をラベルごとに求める必要があるが、このときm(xq)に単に求めたh(xq)を代入するのではなく、まず各2ノード項が最小になるラベル値yq(xq)を調べ、そのラベル値に対応するm(yq(xq))を更新する。このとき、複数のxqに対してyq(xq)が同一となる場合にはその最小値を選択しておけば、拡張高速BP更新ステップ3と4を終えた時点での更新メッセージ値は高速化を施さない場合と完全に一致する。
なお、拡張高速BP更新ステップ1でメッセージ値を無限大としておくのは、何もしない拡張高速BP更新ステップ2でm(xq)の値が割り当てられないラベルについて、拡張高速BP更新ステップ3と4として高速BPと同じ手法で正しいメッセージ値が得られるようにするためである。拡張高速BP更新ステップ3と4では、Lの値がノードに依存して変化する点が高速BPの手法と異なるが、高速BPでの手法と回路やプログラムを共用できる。
更新ステップ4が終了した時点で、各m(t+1) p→q(xq)の値がm(xq)に得られる。m(xq)を保持するメモリはm(t+1) p→q(xq)を保持するメモリと同一のものでも良い。エネルギー関数の符号が反転している場合には最大値を選択する。
更新ステップ4が終了した時点で、各m(t+1) p→q(xq)の値がm(xq)に得られる。m(xq)を保持するメモリはm(t+1) p→q(xq)を保持するメモリと同一のものでも良い。エネルギー関数の符号が反転している場合には最大値を選択する。
次に、この拡張高速BP更新ステップ1〜4を用いた全体の流れについて説明する。
(最適化ステップ1)入力としてエネルギー関数が与えられる(S101)。t=0とする(tはメッセージ更新回数を表す)。各エッジ(p,q)∈Nに対し、m(t) p→q(xq)の初期値を与えるか、全て0で初期化する(S102)。ブロック図では、メッセージ初期値入力部202が初期値を与え、メッセージ値保持部201でそれを保持している。
(最適化ステップ1)入力としてエネルギー関数が与えられる(S101)。t=0とする(tはメッセージ更新回数を表す)。各エッジ(p,q)∈Nに対し、m(t) p→q(xq)の初期値を与えるか、全て0で初期化する(S102)。ブロック図では、メッセージ初期値入力部202が初期値を与え、メッセージ値保持部201でそれを保持している。
(最適化ステップ2)各エッジ(p,q)∈Nに対し、m(t+1) p→q(xq)を拡張高速BP更新ステップ1〜4により更新する(S108)。ブロック図では、ノード対(p,q)選択部209で処理するノード対を選択している。なお、拡張高速BPステップ2の各ノード対の処理は独立しているため並列に実行できる。
(最適化ステップ3)tを1増やす。tが予め決めておいた繰り返し回数Tより小さいなら、拡張高速BPステップ2に戻る。
ただし、Σpは(p,q)∈Nを満たす全てのpに対する和を表す。ブロック図ではノードq選択部214でノードq、xq値入力部211で処理するラベルを選択し、xqビリーフ値算出部212で求め出力部213に送っている。なお、xqビリーフ値算出部212で求めたビリーフ値を出力部213に送って評価すれば、全てのビリーフ値を保持する必要はない。
(最適化ステップ5)各qに対してbq(xq)を最小とするラベルxq={0,1,・・・,Lq−1}を選ぶ(S109)。ブロック図では出力部213がステップ5を行う手段である。
次に、本実施形態の画像処理装置の全体の構成を図6に示す。本実施形態の画像処理装置は、画像入力部601、MPU(演算ユニット)602、データ用メモリ603、プログラム用メモリ604、ラベル出力部605を含んでいる。なお、図2に示した装置部分は、MPU602、データ用メモリ603、プログラム用メモリ604に対応する。
本実施形態を実施すべきプログラムはプログラム用メモリ604に保存される。プログラムはROMに格納しても良いし、他の装置(例えばハードディスク)を接続してプログラム実行時にRAMに格納しても良い。プログラムはMPU602により実行される。プログラムは、例えば次の指示を出すように作成する。
(1)画像入力部601からの入力した画像をデータ用メモリ603に格納する。
(2)データ用メモリ603にメッセージ値や更新中の一時メッセージ値、ビリーフ値を記録するためのバッファを確保する。
(3)データ用メモリ603上のメッセージ値を初期化する。
(4)画像とメッセージ値を参照しながら、拡張高速BP更新ステップ1〜4にしたがって一時メッセージ値を算出する。
(5)求めた一時メッセージ値を利用してメッセージ値を更新する。
(6)メッセージ値の更新を所定の回数だけ繰り返す。
(7)メッセージ値を参照しながら、ビリーフ値を算出する。
(8)最小のビリーフ値を与えるラベル値を算出する。
(9)ラベル出力部605に結果を出力する。
(2)データ用メモリ603にメッセージ値や更新中の一時メッセージ値、ビリーフ値を記録するためのバッファを確保する。
(3)データ用メモリ603上のメッセージ値を初期化する。
(4)画像とメッセージ値を参照しながら、拡張高速BP更新ステップ1〜4にしたがって一時メッセージ値を算出する。
(5)求めた一時メッセージ値を利用してメッセージ値を更新する。
(6)メッセージ値の更新を所定の回数だけ繰り返す。
(7)メッセージ値を参照しながら、ビリーフ値を算出する。
(8)最小のビリーフ値を与えるラベル値を算出する。
(9)ラベル出力部605に結果を出力する。
ここで、(1)と(9)以外の処理は全てMPU602、データ用メモリ603、プログラム用メモリ604のみで行われる。なお、データ用メモリ603とプログラム用メモリ604は分離されていなくても良い。例えば、パーソナルコンピュータのようにプログラムとデータのいずれにも利用できるメモリを備えていれば、それを必要なメモリサイズで区切り、プログラムとデータの両方に利用できる。
≪ケース3:コスト差分値が小数の場合≫
rpqが整数でない場合についてメッセージ値の更新手法は拡張高速BP更新ステップ2を次のように変更する。
(拡張高速BP更新ステップ2(rpqが整数でない場合))各ラベルxqに対して、まず次の集合を求める。
rpqが整数でない場合についてメッセージ値の更新手法は拡張高速BP更新ステップ2を次のように変更する。
(拡張高速BP更新ステップ2(rpqが整数でない場合))各ラベルxqに対して、まず次の集合を求める。
はそれぞれxの小数点以下を切り捨てた値、xの小数点以下を切り上げた値を表し、コンピュータ言語でfloor(x)、ceil(x)として知られる関数に対応する。求めた{yp(xp)}内の各要素をyp(xp)として、以下を実行する。
m(yp(xp))←min(m(yp(xp)),h(xp)+s‖xp−yp(xp)+rpq‖)
なお、rpqが整数の場合は、切り捨て値と切り上げ値が一致するために、上述した手法と同等になる。
なお、rpqが整数の場合は、切り捨て値と切り上げ値が一致するために、上述した手法と同等になる。
(拡張高速BP更新ステップ1で無限大をセットしない手法)
先の説明では拡張高速BP更新ステップ1で全てのラベルに対してm(xq)←+∞と初期化し、拡張高速BP更新ステップ3と4ではそれら全てを対象とした。しかし、
先の説明では拡張高速BP更新ステップ1で全てのラベルに対してm(xq)←+∞と初期化し、拡張高速BP更新ステップ3と4ではそれら全てを対象とした。しかし、
は、xp={0,1,・・・,Lp−2}に対しては明らかにyp(0)とyp(Lp−1)の間の値をとる。そこで、yp(0)よりも小さいラベル値およびyp(Lp−1)よりも大きいラベル値に対するメッセージ値の計算は拡張高速BP更新ステップ1、3、4で行わなくても、拡張高速BP更新ステップ4の後に他のメッセージとの差分を求めれば、結果は同じになる。具体的な手順は次の通りである。
yp(Lp−1)よりも大きいラベル値:m(yp(Lp−1)+1)から順に、ラベル値を1ずつ増やしながらm(xq)←m(xq−1)+sを実行する。
yp(0)よりも小さいラベル値:m(yp(0)−1)から順に、ラベル値を1ずつ減らしながらm(xq)←m(xq+1)+sを実行する。
(ステレオマッチング)
エネルギー関数最小化のためのラベル選択問題は様々な産業的応用を持つが、ここではその1つであるステレオマッチングを例として説明する。
yp(Lp−1)よりも大きいラベル値:m(yp(Lp−1)+1)から順に、ラベル値を1ずつ増やしながらm(xq)←m(xq−1)+sを実行する。
yp(0)よりも小さいラベル値:m(yp(0)−1)から順に、ラベル値を1ずつ減らしながらm(xq)←m(xq+1)+sを実行する。
(ステレオマッチング)
エネルギー関数最小化のためのラベル選択問題は様々な産業的応用を持つが、ここではその1つであるステレオマッチングを例として説明する。
入力画像として、2つのカメラの視差が画像の水平方向のずれとしてあらわれる画像(左右のカメラから各1枚)が与えられるものとする。このような画像は、例えば、カメラを正確に並べて配置するか、2つのカメラの配置情報を利用し撮影画像に変換を施すことで得られることが知られている。ステレオマッチングでは、左右の画像の各画素における視差をラベルとし、Vに各画素を単独で見た場合の各ラベルの信頼度(値が大きくなるほどxiが出現しにくいことを表す)を記述し、Nを画素とその近傍の画素の組を全て集めた集合とし、Wに近傍画素間の関係(値が大きくなるほど、(xi,xj)の組が出現しにくいことを表す)を記述したうえで、Eを最小化するように各画素のラベルを選択する。得られた視差とカメラの情報があれば、例えば、それらを用いて各画素の奥行き情報を算出できることが知られている。
本実施形態の画像処理装置を利用することにより、より精度の高いステレオマッチング、および柔軟なステレオマッチングが可能になる。なお、視点の異なる画像が3枚以上ある場合には、例えば1枚の画像を基準として、それ以外の各画像に対してステレオマッチングで対応付けを行って基準画像の各画素の奥行き情報を算出し、基準画像の各画素の奥行き情報を各画像で算出した奥行き情報の平均値とすることで高精度な奥行き情報を算出できる。
(階層的探索)
ステレオマッチングの2ノード項の例として、ここでは次の式を考える。
W(xp,xq)=min(s‖xp−xq‖,dpq)
この式は、線形コストとPottsの組み合わせによって解ける形をしている。例えば、0〜30画素の範囲内で1画素単位の視差を求めるのであれば、必要なラベル数は31として高速BPの手法を適用すれば良いことになる。ところで、奥行き情報を正確に算出するには視差の精度が高いほど良い。しかし、必要なラベル数は視差の精度に比例して増大するため、例えば0.1画素単位の視差を求めるのであればラベル数は300以上になる。したがって、高い視差の精度を得たい場合、高速BPの手法を用いた場合は多くのメモリが必要となり、また計算時間も増大する。
ステレオマッチングの2ノード項の例として、ここでは次の式を考える。
W(xp,xq)=min(s‖xp−xq‖,dpq)
この式は、線形コストとPottsの組み合わせによって解ける形をしている。例えば、0〜30画素の範囲内で1画素単位の視差を求めるのであれば、必要なラベル数は31として高速BPの手法を適用すれば良いことになる。ところで、奥行き情報を正確に算出するには視差の精度が高いほど良い。しかし、必要なラベル数は視差の精度に比例して増大するため、例えば0.1画素単位の視差を求めるのであればラベル数は300以上になる。したがって、高い視差の精度を得たい場合、高速BPの手法を用いた場合は多くのメモリが必要となり、また計算時間も増大する。
一方、本実施形態の手法を用いることで、視差の階層的な算出を実現し、必要なメモリ、計算時間を抑制できる。なお、V(xp)はxp以外の変数を含まなければどのような形でもかまわないが、例えば次の形が使える。
V(xp)=min(‖Ileft(Xp,Yp)−Iright(Xp−xp,Yp)‖,cp)
Ileft(Xp,Yp)、Iright(Xp,Yp)はそれぞれ座標(Xp,Yp)における左画像・右画像の輝度値を表す。また、cpは定数である。
V(xp)=min(‖Ileft(Xp,Yp)−Iright(Xp−xp,Yp)‖,cp)
Ileft(Xp,Yp)、Iright(Xp,Yp)はそれぞれ座標(Xp,Yp)における左画像・右画像の輝度値を表す。また、cpは定数である。
以下、画素をノードとして、画素をp、視差の精度をδ、視差の最小値をγp、最大値をγp+(Lp−1)δで表す。なお、ここで用いた記号γ(ガンマ)はr(アール)とは別の記号である。フローチャートを図7に示す。ステレオマッチングは、次の流れで実現できる。
(ステップ1)(初期化)K=1とし、各画素pに対して、γpが視差の最小値、δが初期探索での視差の精度、γp+(Lp−1)δが視差の最大値となるように各パラメータを初期化する(S701)。例えば、視差を0〜30の範囲、1画素精度とするのであれば、γp=0、δ=1、Lp=31とする。ノードごとに候補ラベルを決定する(ステップS702)。
(ステップ2)2ノード項を次の形として求め(ステップS703)、本実施形態のメッセージ更新を用いたBP手法(ステップS101〜ステップS109)で各画素にラベルを割り当てる(S704)。
W(xp,xq)=min(s‖(xp−rp)−(xq−rq)‖,dpq)
(ステップ3)K←K+1とする。Kがしきい値に達していれば終了し、達していなければステップ4に進む。
(ステップ3)K←K+1とする。Kがしきい値に達していれば終了し、達していなければステップ4に進む。
(ステップ4)δを小さくする(S705)。例えば、δに予め定めた1未満の値(例えば0.5)を掛ける。各pの視差の候補は{γp,・・・,γp+(Lp−1)δ}であるから、これらの候補が予め決めた基準に合致するようにγpとラベル数Lpを決める。先の例であれば、ステップ2で求めた視差を中心とした−3δ〜+3δの範囲となるようにγpとラベル数Lpを決める。これらの値はpごとに変えても良い。{δ,γp,Lp}の更新後、ステップ2に戻り、先の手順を繰り返す(S706)。
この手法を用いると、ラベル数Lpの増加を抑えながら精度の高い(小さなδでの)視差の推定ができる。なお、スケールを表す数値Kがしきい値になるまで繰り返す代わりに、精度δが一定値になるまで繰り返しても良い。その場合、Kを計算する必要はない。また、ラベル数Lpは全てのpに対して同じである必要はない。例えば、画素pの視差とその4近傍の画素での視差での最大値と最小値を算出し、γp+(Lp−1)δが最大値以上、γpが最小値以下となるように個々のγpとLpを決めれば、物体境界のように視差の変動が激しい位置での推定精度を上げることができる。
なお、先のステップ1では0〜30の範囲で初期化したが、例えば視差の推定をステレオ動画像に対して行う場合には、例えば、直前の時刻における視差を中心とした一定の範囲としても良い。この場合、2ノード項にあらわれるγp−rqが小数とならないように各γpを量子化しても良いし、先に示した小数を扱う手法を用いても良い。
なお、本発明はより複雑なステレオマッチングでも利用できる。例えば文献「J. Sun et al., “Symmetric stereo matching for occlusion handling,” in Proc. IEEE Conference on Computer Vision and Pattern Recognition, vol. 2, pp.399-406, 2005.」では、ステレオの視差(disparity)と画素の隠れ情報(occlusion)の両方を最適化するために、第1の最適化であるステレオの視差の最適化と第2の最適化である画素の隠れ情報の最適化を、交互に繰り返し(例えば予め定めた回数、あるいはラベルの変化量の合計が別途定めたしきい値以下になるまで)行う。このうちステレオの視差の最適化は、視差の精度を上げると計算量やメモリ利用量が大幅に増える問題があるが、本発明を利用すれば、計算量やメモリ利用量をあまり増やすことなく視差の精度を上げられる。なお、例えば文献「J. Sun et al., “Symmetric stereo matching for occlusion handling,” in Proc. IEEE Conference on Computer Vision and Pattern Recognition, vol. 2, pp.399-406, 2005.」にある「セグメンテーションによるエネルギー関数への制約条件(Segmentation as Soft Constraint)」のように、最適化すべきエネルギーのW(Xp,Xq)項に影響を与えない改良(この改良に限定はされない)は、本発明に何ら変更を加えることなくそのまま利用できる。なお隠れ情報は隠れているかいないかの2値をとるため、従来の手法で最適化すれば良い。
ここまでは、1次元のノードについての説明であるが、以下2次元以上の場合について説明する。
(オプティカルフロー、多次元動きベクトル)
画像処理の分野において、2枚(あるいはそれ以上)の画像中の画素を対応付ける問題は、ステレオマッチング以外にもあらわれる。特に、2次元の画像の対応づけ問題は、動画像に対する動きベクトルの推定問題として様々な応用を持つ(例えば画像圧縮、人物や車両の追跡、超解像)。また、例えばX線CTやMRIのような医療用画像は3次元画像であることが多いが、これらの対応付け問題は3次元画像中の画素の対応付け問題になる。
(オプティカルフロー、多次元動きベクトル)
画像処理の分野において、2枚(あるいはそれ以上)の画像中の画素を対応付ける問題は、ステレオマッチング以外にもあらわれる。特に、2次元の画像の対応づけ問題は、動画像に対する動きベクトルの推定問題として様々な応用を持つ(例えば画像圧縮、人物や車両の追跡、超解像)。また、例えばX線CTやMRIのような医療用画像は3次元画像であることが多いが、これらの対応付け問題は3次元画像中の画素の対応付け問題になる。
以下、次元を表す番号(1)、(2)を記号の右下に付与する。2次元のノードqに対するラベルをxq=(x(1)q,x(2)q)で表す。ラベルの範囲をx(1)q={0,1,・・・,L(1)q−1}、x(2)q={0,1,・・・,L(2)q−1}とする。ノードqの候補となるラベル数はLq=L(1)qL(2)qである。2ノード項として、次の形を考える。
W(xp,xq)=s(1)‖x(1)p−x(1)q+r(1)pq‖+s(2)‖x(2)p−x(2)q+r(2)pq‖
V(xp)はxp以外の変数を含まなければどのような形でもかまわないが、例えば次の形が使える。
V(xp)=min(‖Ileft(Xp,Yp)−Iright(Xp−x(1)p,Yp−x(2)p)‖,cp)
Ileft(Xp,Yp)、Iright(Xp,Yp)はそれぞれ座標(Xp,Yp)における左画像、右画像の輝度値を表す。また、cpは定数である。
W(xp,xq)=s(1)‖x(1)p−x(1)q+r(1)pq‖+s(2)‖x(2)p−x(2)q+r(2)pq‖
V(xp)はxp以外の変数を含まなければどのような形でもかまわないが、例えば次の形が使える。
V(xp)=min(‖Ileft(Xp,Yp)−Iright(Xp−x(1)p,Yp−x(2)p)‖,cp)
Ileft(Xp,Yp)、Iright(Xp,Yp)はそれぞれ座標(Xp,Yp)における左画像、右画像の輝度値を表す。また、cpは定数である。
この2ノード項に対する拡張高速BPを実現するには、次の手法でメッセージ更新手法を行えばよい。
(拡張高速BP更新ステップ1)ラベルxq={(0,0),・・・,(L(1)q−1,L(2)q−1)}に対し、m(xq)←+∞とする。
(拡張高速BP更新ステップ2)各ラベルxqに対して、次の式を実行する。
m(y(1)p(xp),y(2)p(xp))←min(m(y(1)p(xp),y(2)p(xp)),h(xp)+s(1)‖x(1)p−y(1)p(xp)+r(1)pq‖+s(2)‖x(2)p−y(2)p(xp)+r(2)pq‖)
ただし、yの値は
ただし、yの値は
により算出する。y(2)p(xp)についても記号の右下に付与されている(1)を(2)に変えただけで全く同じ手法で算出する。なお、コスト差分値が小数の場合も1次元の場合と同じように、切り捨てと切り上げの2つの値それぞれについてmの更新式を実行すれば良い。
(拡張高速BP更新ステップ3)次の擬似コードで示した処理を実行する。以下、For A in {…} から Endfor までは{…}の要素をAに順に代入してForとEndforで囲まれた部分を実行することを表す。
For x(1)q in {0,・・・,L(1)q−1}
For x(2)q in {0,・・・,L(2)q−1}
m((x(1)q,x(2)q))←min(m((x(1)q,x(2)q)),m((x(1)q−1,x(2)q))+s(1))
m((x(1)q,x(2)q))←min(m((x(1)q,x(2)q)),m((x(1)q,x(2)q−1))+s(2))
ただし、m((x(1)q,−1)=+∞、m((−1,x(2)q)=+∞とする。
Endfor
Endfor
(拡張高速BP更新ステップ4)次の擬似コードで示した処理を実行する。
For x(1)q in {L(1)q−1,・・・,0}
For x(2)q in {L(2)q−1,・・・,0}
m((x(1)q,x(2)q))←min(m((x(1)q,x(2)q)),m((x(1)q+1,x(2)q))+s(1))
m((x(1)q,x(2)q))←min(m((x(1)q,x(2)q)),m((x(1)q,x(2)q+1))+s(2))
ただし、m((x(1)q,L(2)q)=+∞、m((L(1)q,x(2)q)=+∞とする。
Endfor
Endfor
もし2ノード項が、
W(xp,xq)=min(s(1)‖x(1)p−r(1)q+r(1)pq‖+s(2)‖x(2)p−r(2)q+r(2)pq‖,dpq)
のようにPottsと組み合わせた形をしているのであれば、拡張高速BP更新ステップ4の後で上記<WがPottsの場合>で述べたPottsに対するメッセージ更新を行えば良い。
For x(1)q in {0,・・・,L(1)q−1}
For x(2)q in {0,・・・,L(2)q−1}
m((x(1)q,x(2)q))←min(m((x(1)q,x(2)q)),m((x(1)q−1,x(2)q))+s(1))
m((x(1)q,x(2)q))←min(m((x(1)q,x(2)q)),m((x(1)q,x(2)q−1))+s(2))
ただし、m((x(1)q,−1)=+∞、m((−1,x(2)q)=+∞とする。
Endfor
Endfor
(拡張高速BP更新ステップ4)次の擬似コードで示した処理を実行する。
For x(1)q in {L(1)q−1,・・・,0}
For x(2)q in {L(2)q−1,・・・,0}
m((x(1)q,x(2)q))←min(m((x(1)q,x(2)q)),m((x(1)q+1,x(2)q))+s(1))
m((x(1)q,x(2)q))←min(m((x(1)q,x(2)q)),m((x(1)q,x(2)q+1))+s(2))
ただし、m((x(1)q,L(2)q)=+∞、m((L(1)q,x(2)q)=+∞とする。
Endfor
Endfor
もし2ノード項が、
W(xp,xq)=min(s(1)‖x(1)p−r(1)q+r(1)pq‖+s(2)‖x(2)p−r(2)q+r(2)pq‖,dpq)
のようにPottsと組み合わせた形をしているのであれば、拡張高速BP更新ステップ4の後で上記<WがPottsの場合>で述べたPottsに対するメッセージ更新を行えば良い。
3次元以上の場合であっても、各画素で全ての次元に対する直前あるいは直後の画素との差分を評価すれば、同様にメッセージの更新が可能である。
(多次元動きベクトルの利用シーン)
先に1次元の対応付け問題であるステレオマッチングを例として、精度を上げるとラベル数が増加する問題について説明した。2次元の対応付け問題であるオプティカルフロー推定や3次元以上の対応付け問題であっても同じ問題は起こる。しかも、候補ラベル数は次元数に対し指数的に増えるため、2次元以上の対応付け問題では、ステレオマッチングと比べても、精度を上げることによる計算量、メモリ消費量の増大量はさらに大きい。この対策もステレオマッチングと同様で、本実施形態の手法を用いてフローの精度を徐々に上げながらエネルギー最小化を繰り返せば良い。
(多次元動きベクトルの利用シーン)
先に1次元の対応付け問題であるステレオマッチングを例として、精度を上げるとラベル数が増加する問題について説明した。2次元の対応付け問題であるオプティカルフロー推定や3次元以上の対応付け問題であっても同じ問題は起こる。しかも、候補ラベル数は次元数に対し指数的に増えるため、2次元以上の対応付け問題では、ステレオマッチングと比べても、精度を上げることによる計算量、メモリ消費量の増大量はさらに大きい。この対策もステレオマッチングと同様で、本実施形態の手法を用いてフローの精度を徐々に上げながらエネルギー最小化を繰り返せば良い。
以下、オプティカルフロー推定問題でフローの精度を上げる手法について説明する。
以下、画素をノードとして、画素をp、フローの精度を(δ(1),δ(2))、2次元の各軸におけるフローの最小値をそれぞれγ(1)p,γ(2)p、フローの最大値をそれぞれγ(1)p+(L(1)p−1)δ(1)、γ(2)p+(L(2)p−1)δ(2)で表す。オプティカルフロー推定の流れを次に示す。
以下、画素をノードとして、画素をp、フローの精度を(δ(1),δ(2))、2次元の各軸におけるフローの最小値をそれぞれγ(1)p,γ(2)p、フローの最大値をそれぞれγ(1)p+(L(1)p−1)δ(1)、γ(2)p+(L(2)p−1)δ(2)で表す。オプティカルフロー推定の流れを次に示す。
(ステップ1)(初期化)k=1とし、各画素pに対して、フローの精度(δ(1),δ(2))、各軸におけるフローの最小値γ(1)p,γ(2)pおよび最大値γ(1)p+(L(1)p−1)δ(1)、γ(2)p+(L(2)p−1)δ(2)を初期化する。
(ステップ2)2ノード項を次の形として、本実施形態の拡張高速BPメッセージ更新を用いて各画素にラベルを割り当てる。
W(xp,xq)=min(s(1)‖x(1)p−x(1)q+r(1)pq‖+s(2)‖x(2)p−x(2)q+r(2)pq‖,dpq)
(ステップ3)k←k+1とする。kがしきい値に達していれば終了し、達していなければステップ4に進む。
W(xp,xq)=min(s(1)‖x(1)p−x(1)q+r(1)pq‖+s(2)‖x(2)p−x(2)q+r(2)pq‖,dpq)
(ステップ3)k←k+1とする。kがしきい値に達していれば終了し、達していなければステップ4に進む。
(ステップ4)フローの精度(δ(1),δ(2))を小さくする。例えば、(δ(1),δ(2))に予め定めた1未満の値(例えば0.5)を掛ける。各pにおけるフローの最小値γ(1)p,γ(2)pおよび最大値γ(1)p+(L(1)p−1)δ(1)、γ(2)p+(L(2)p−1)δ(2)が予め決めた基準に合致するように(例えば、ステップ2で求めたフローを中心とし、(δ(1),δ(2))の範囲となるように)γpと各軸でのラベル数L(1)p、L(2)pを決める。これらの値はpごとに変えても良い。パラメータの更新後はステップ2に戻る。
以上の流れでフロー推定を行えば、計算時間やメモリ消費量の増大を抑えながら高い精度でフローを推定できる。
なお、ステレオマッチングやフロー推定で示したエネルギー関数の形は一例であり、特にこの形に限定されるものではない。ここでは一例として、エネルギー最小化の前にセグメンテーション(例えば、“D. Comaniciu et al., Mean Shift: A Robust Approach Toward Feature Space Analysis, IEEE Transaction on Pattern Analysis and Machine Intelligence, vol.24, no.5, May 2002”に記載の手法)により画像を位置が近く色の似ている領域に分け、その領域単位で動きを求め、それをエネルギー最小化により修正するフロー推定について述べる(ステレオマッチングでも同様のことが行える)。
例えば、まず領域の動きをアファイン変換(位置の線形変換と平行移動を組み合わせた6パラメータの変換)で近似して領域単位で動きを推定する(ステレオマッチングの場合は領域単位で視差を推定する)。この推定は、細かい部分の影響を受けにくいため領域全体でみると推定結果は高い信頼性を持つが、個々の画素で見ると必ずしも信頼できないという性質を持つ。そこで、各領域の動きから画素(=ノード)pの動きを求めて得られた動きを(xseg(1),xseg(2))として、エネルギー関数のVを、
V(xp)=min(‖Ileft(Xp,Yp)−Iright(Xp−x(1)p,Yp−x(2)p)‖,c1p)+min(‖(x(1)p,x(2)p)−(xseg(1),xseg(2))‖,c2p)
の形とし(Wは前述のものが使える)、エネルギー関数の最小化を行えば良い。なお、他の記号は先の説明と同様で、Ileft(Xp,Yp)、Iright(Xp,Yp)はそれぞれ座標(Xp,Yp)における左画像、右画像の輝度値を表し、c1p、c2pは定数である(ステレオマッチングの場合はxp(2)、xseg(2)に係る項を除去し、1次元になおせば良い)。他にも、例えばVとして座標(Xp,Yp)の輝度誤差を用いる代わりに、座標(Xp,Yp)の近傍の輝度誤差の合計を用いることもできる。
V(xp)=min(‖Ileft(Xp,Yp)−Iright(Xp−x(1)p,Yp−x(2)p)‖,c1p)+min(‖(x(1)p,x(2)p)−(xseg(1),xseg(2))‖,c2p)
の形とし(Wは前述のものが使える)、エネルギー関数の最小化を行えば良い。なお、他の記号は先の説明と同様で、Ileft(Xp,Yp)、Iright(Xp,Yp)はそれぞれ座標(Xp,Yp)における左画像、右画像の輝度値を表し、c1p、c2pは定数である(ステレオマッチングの場合はxp(2)、xseg(2)に係る項を除去し、1次元になおせば良い)。他にも、例えばVとして座標(Xp,Yp)の輝度誤差を用いる代わりに、座標(Xp,Yp)の近傍の輝度誤差の合計を用いることもできる。
また、文献「J. Sun et al., “Symmetric stereo matching for occlusion handling,” in Proc. IEEE Conference on Computer Vision and Pattern Recognition, vol. 2, pp.399-406, 2005.」でステレオマッチングにおいて視差とオクルージョンを交互に最適化した方法と同じように、フロー推定についてもフローとオクルージョンを交互に最適化することで、オクルージョンを考慮したフロー推定が可能になる。この場合でも、フローの最適化において本発明を利用すればあまりコストを増やさずに高い精度を達成できる。
Vは画素ごとに見た場合の対応位置の選択基準を与えており、これらの例のように別のモデルを与えることで画素ごとの推定精度を上げていくことが可能である。Vを改良した場合でも、本実施形態の手法はそのまま適用できる。
(斥力)
ここまでの例では2ノード項として、ラベルの差がrpqとなれば最小となる関数を考えてきた。この関数は、2ノード間の関係が「もしノードpのラベルがxpであれば、ノードqのラベルはxp+rpqに近いことが望ましい」ことを定式化したものである。ところで、応用によっては、2ノード間の関係が「もしノードpのラベルがxpであれば、ノードqのラベルはxp+rpqから遠いことが望ましい」という関係の定式化が必要である。その場合にあらわれる2ノード項として、例えば以下の関数がある。dpqは定数で、ノードp、qごとに別の値でも良い。
ここまでの例では2ノード項として、ラベルの差がrpqとなれば最小となる関数を考えてきた。この関数は、2ノード間の関係が「もしノードpのラベルがxpであれば、ノードqのラベルはxp+rpqに近いことが望ましい」ことを定式化したものである。ところで、応用によっては、2ノード間の関係が「もしノードpのラベルがxpであれば、ノードqのラベルはxp+rpqから遠いことが望ましい」という関係の定式化が必要である。その場合にあらわれる2ノード項として、例えば以下の関数がある。dpqは定数で、ノードp、qごとに別の値でも良い。
W(xp,xq)=dpq−s‖xp−xq+rpq‖
この2ノード項を用いたエネルギー関数のメッセージ更新は、次の手順で高速に行える。
この2ノード項を用いたエネルギー関数のメッセージ更新は、次の手順で高速に行える。
(更新ステップ1)両端のメッセージ値をm(0)←+∞、m(Lq−1)←+∞で初期化する。
これを利用して、各ラベルxpに対して両端のメッセージ値を次の式で更新する。
m(0)←min(m(0),h(yp(xp))+dpq−s‖−rpq+yp(xp)‖)
m(Lq−1)←min(m(Lq−1),h(yp(xp))+dpq−s‖Lq−1−rpq+yp(xp)‖)
(更新ステップ3)xq={1,・・・,Lq−1}の範囲で、ラベル番号xqを1から開始して1ずつ増やしながら以下を実行する。
m(xq)←m(xq−1)+s
(更新ステップ4)xq={Lq−2,・・・,0}の範囲で、ラベル番号xqをLq−2から開始して1ずつ減らしながら以下を実行する。
m(0)←min(m(0),h(yp(xp))+dpq−s‖−rpq+yp(xp)‖)
m(Lq−1)←min(m(Lq−1),h(yp(xp))+dpq−s‖Lq−1−rpq+yp(xp)‖)
(更新ステップ3)xq={1,・・・,Lq−1}の範囲で、ラベル番号xqを1から開始して1ずつ増やしながら以下を実行する。
m(xq)←m(xq−1)+s
(更新ステップ4)xq={Lq−2,・・・,0}の範囲で、ラベル番号xqをLq−2から開始して1ずつ減らしながら以下を実行する。
m(xq)←min(m(xq),m(xq+1)+s)
(イメージ復元)
本実施形態の手法は、ノイズが加わった画像のノイズを除去するためにも使える。ノードを画素、ラベルを輝度値とすれば、ノイズ除去問題のエネルギー関数の各項は例えば、
V(xp)=‖xp−Ip‖、W(xp,xq)=min(s‖xp−xq‖,dpq)
で表せる。ここでIpは入力画像の輝度を表し、ラベルxpはノイズ除去後の輝度を表す。輝度は8ビットで表現した場合でも256種類あり、例えば12ビットで表現すれば4096種類にもなるため、本実施形態の手法を利用した効率的な最小化は効果的である。このエネルギー関数を先に説明したステレオマッチングと同じ手法で最小化でき、選択されたラベルは各画素におけるノイズ除去後の輝度になる。
(イメージ復元)
本実施形態の手法は、ノイズが加わった画像のノイズを除去するためにも使える。ノードを画素、ラベルを輝度値とすれば、ノイズ除去問題のエネルギー関数の各項は例えば、
V(xp)=‖xp−Ip‖、W(xp,xq)=min(s‖xp−xq‖,dpq)
で表せる。ここでIpは入力画像の輝度を表し、ラベルxpはノイズ除去後の輝度を表す。輝度は8ビットで表現した場合でも256種類あり、例えば12ビットで表現すれば4096種類にもなるため、本実施形態の手法を利用した効率的な最小化は効果的である。このエネルギー関数を先に説明したステレオマッチングと同じ手法で最小化でき、選択されたラベルは各画素におけるノイズ除去後の輝度になる。
(確率積の利用)
主に画像処理であらわれるマルコフ・ランダム・フィールド(MRF)やコンディショナル・ランダム・フィールド(CRF)と呼ばれる確率モデルでは、次の関数の最大化と等価な処理を行うことがよくある。
主に画像処理であらわれるマルコフ・ランダム・フィールド(MRF)やコンディショナル・ランダム・フィールド(CRF)と呼ばれる確率モデルでは、次の関数の最大化と等価な処理を行うことがよくある。
この関数の最大化問題は、負の対数−logP(x1,x2,・・・,xn)の最小化と等価である。−logP(x1,x2,・・・,xn)はBPで扱うエネルギー関数の形であるから、MRFやCRFをモデルとした確率の最適ラベル選択問題は本実施形態の手法により解ける。
(TRW/Weighted BPの利用)
BPに似た最適化アルゴリズムとして、2ノード項W(xp,xq)そのものではなく重み付けした値を使ってメッセージ更新を行うアルゴリズムや、2ノード項W(xp,xq)およびメッセージに重み付けを行い、さらに逆方向のメッセージ値も用いてメッセージ更新を行うアルゴリズム(ツリー・リウエイテッド・マックスプロダクト法、以下TRW)が知られているが、本実施形態の手法はこれらのアルゴリズムに対してもそのまま適用できる。以下、TRWを例として本実施形態の手法の適用手法を説明する。
BPに似た最適化アルゴリズムとして、2ノード項W(xp,xq)そのものではなく重み付けした値を使ってメッセージ更新を行うアルゴリズムや、2ノード項W(xp,xq)およびメッセージに重み付けを行い、さらに逆方向のメッセージ値も用いてメッセージ更新を行うアルゴリズム(ツリー・リウエイテッド・マックスプロダクト法、以下TRW)が知られているが、本実施形態の手法はこれらのアルゴリズムに対してもそのまま適用できる。以下、TRWを例として本実施形態の手法の適用手法を説明する。
として、2ノード項としてW’(xp,xq)=(1/ρpq)W(xp,xq)を考えれば、BPで用いる更新式と全く同じ形になる。したがって、各2ノード項に対しW’(xp,xq)=(1/ρpq)W(xp,xq)を算出するステップを最初に追加すれば、本実施形態の手法をそのまま適用できる。
の算出にt番目のメッセージ値を用いている。したがって、t番目、t+1番目のメッセージ値を保持する必要があり、必要なメモリは全メッセージ値の保持に必要なメモリの2倍になる。更新後のメッセージ値m(t+1) p→q(xq)をm(t) p→q(xq)の代わりに用いれば、メッセージ値を上書きするだけでよいため全メッセージ値1つ分のメモリで動作でき、必要なメモリを半分に減らせる。この手法はシーケンシャルBPとして知られており、本実施形態の手法でもそのまま利用できる。
(Efficient Multiscale BPとの併用)
高速BPで示されているように、2×2画素を1つのノードとみなしてBPを適用し、その結果を各画素のメッセージ値の初期値として使うことで、画像に対するBPの繰り返し回数を減らせる。この手法は本実施形態の手法と違いラベル数を減らせないためにメモリ消費量は減らせないが計算時間は減らせる。この手法はマルチスケールBPと呼ばれ、本実施形態の手法とも併用できる。本実施形態の手法を用いたラベル数の削減とマルチスケールBPを併用すれば、マルチスケールBPによる計算時間の削減と本実施形態の手法による計算時間、メモリ消費量の削減の両方の効果が得られる。
高速BPで示されているように、2×2画素を1つのノードとみなしてBPを適用し、その結果を各画素のメッセージ値の初期値として使うことで、画像に対するBPの繰り返し回数を減らせる。この手法は本実施形態の手法と違いラベル数を減らせないためにメモリ消費量は減らせないが計算時間は減らせる。この手法はマルチスケールBPと呼ばれ、本実施形態の手法とも併用できる。本実施形態の手法を用いたラベル数の削減とマルチスケールBPを併用すれば、マルチスケールBPによる計算時間の削減と本実施形態の手法による計算時間、メモリ消費量の削減の両方の効果が得られる。
なお、本実施形態で正の無限大を用いた例がいくつかあるが、これらは無限大でない適当な値を使用しても良い(なるべく大きい値であることが望ましい)。
以上の実施形態の画像処理装置により、階層的探索と拡張高速BPを併用することができるので、高速かつ高精度に画素のラベル値を選択することが可能になる。例えばステレオマッチングやオプティカルフロー推定の階層化のように、従来の高速BPでは扱えなかった2ノード項を持つエネルギー関数に対し、エネルギー関数を高速に最小化できるようになる。典型的な例では、計算時間は数分程度、消費メモリも〜1G程度に改善される。
また、本実施形態によれば、2ノード項WがPottsであらわせず、ノードごとにラベルの範囲や種類数が異なる場合や、ラベルが小数を含む場合であってもBPを高速に実行できるため、エネルギー最小化を解くことを必要とする場合でも大幅な高速化が実現できる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
201・・・メッセージ値保持部、202・・・メッセージ初期値入力部、203・・・h(xp)値算出部、204・・・xq一時メッセージ値保持部、205・・・PeakXq算出部、206・・・集約値算出部、207・・・最適値選択部、208・・・最適値出力部、209・・・ノード対(p,q)選択部、210・・・xp値入力部、211・・・xq値入力部、212・・・xqビリーフ値算出部、213・・・出力部、214・・・ノードq選択部、601・・・画像入力部、603・・・データ用メモリ、604・・・プログラム用メモリ、605・・・ラベル出力部。
Claims (5)
- 画像の各画素に対応付けられた各ノードp、qのそれぞれのラベル値xp、xqを変数とし、ノード対(p、q)およびpとqに関連付けられた定数rを用いて定義された関数W(xp−xq+r)と関数V(xp)を含む、最小化するxpを求めるエネルギー関数を設定する設定手段と、
各ノード対(p、q)に対応した各評価関数m(t) p→q(xq)を格納する格納手段と、
前記各評価関数のt=0での値である初期値を設定する設定手段と、
xpごとにW(xp−xq+r)が最適値になるxqであるPeakXqを算出する算出手段と、
xpごとにh(xp)とW(xp−PeakXq+r)との和または積である集約値を算出する算出手段と、
前記集約値と前記m(t) p→q(xq)にxq=PeakXqを代入した値とを比較し、小さい値の方を最適値として選択してm’(t) p→q(xq)とする更新手段と、
xpごとに、W(xp−xq+r)とW(xp−(xq+k)+r)との差分とm’(t) p→q(xq+k)との集約値と、m’(t) p→q(xq)との小さい値の方を最適値としてm(t+1) p→q(xq)とする更新手段と、
tが繰り返し回数Tよりも小さい場合には、m(t+1) p→q(xq)を計算させ、最終的にm(T) p→q(xq)を取得する取得手段と、
xqごとに
qごとに、bq(xq)を最小にするラベル値xqを選択する選択手段と、を具備することを特徴とする画像処理装置。 - 前記W(xp−xq+r)は、sをノード対(p、q)に関連付けられた定数として、
W(xp−xq+r)=s‖xp−xq+r‖
であることを特徴とする請求項1に記載の画像処理装置。 - 精度値δの初期値を設定する設定手段と、
ノードpごとに精度値δに対応するラベル値の候補を設定する設定手段と、
ノード対(p、q)に対し、前記候補に対応するW(xp−xq+r)を設定関数として設定する設定手段と、
前記設定関数を使用して、前記選択手段がラベル値を選択するように制御する制御手段と、
精度が上がるように精度値δをδ’に変更する変更手段と、
精度値δ’がある値になるまで、精度値δ’を新たな初期値としてラベル値を選択するように制御する制御手段と、を具備することを特徴とする請求項1または請求項2に記載の画像処理装置。 - 前記ラベル値は、第1の画像に対する第2の画像の対応点の位置を示すことを特徴とする請求項1から請求項3のいずれか1項に記載の画像処理装置。
- 前記ノードごとに、関連付けられるラベル値の数が異なることを特徴とする請求項1から請求項4のいずれか1項に記載の画像処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007062360A JP2008225778A (ja) | 2007-03-12 | 2007-03-12 | 画像処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007062360A JP2008225778A (ja) | 2007-03-12 | 2007-03-12 | 画像処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008225778A true JP2008225778A (ja) | 2008-09-25 |
Family
ID=39844335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007062360A Pending JP2008225778A (ja) | 2007-03-12 | 2007-03-12 | 画像処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008225778A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013065247A (ja) * | 2011-09-20 | 2013-04-11 | Nec System Technologies Ltd | ステレオマッチング処理装置、ステレオマッチング処理方法、及び、プログラム |
KR20170090976A (ko) * | 2016-01-29 | 2017-08-08 | 삼성전자주식회사 | 영상시차 획득방법 및 장치 |
-
2007
- 2007-03-12 JP JP2007062360A patent/JP2008225778A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013065247A (ja) * | 2011-09-20 | 2013-04-11 | Nec System Technologies Ltd | ステレオマッチング処理装置、ステレオマッチング処理方法、及び、プログラム |
KR20170090976A (ko) * | 2016-01-29 | 2017-08-08 | 삼성전자주식회사 | 영상시차 획득방법 및 장치 |
KR102187192B1 (ko) | 2016-01-29 | 2020-12-04 | 삼성전자주식회사 | 영상시차 획득방법 및 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809975B2 (en) | System and method for end-to-end-differentiable joint image refinement and perception | |
Wang et al. | Real-time scalable dense surfel mapping | |
US20060193535A1 (en) | Image matching method and image interpolation method using the same | |
EP3465611B1 (en) | Apparatus and method for performing 3d estimation based on locally determined 3d information hypotheses | |
JP2007000205A (ja) | 画像処理装置及び画像処理方法並びに画像処理プログラム | |
JP6448680B2 (ja) | 画像の調整 | |
US20160307321A1 (en) | Method and apparatus for estimating image optical flow | |
CN111553296B (zh) | 一种基于fpga实现的二值神经网络立体视觉匹配方法 | |
WO2015190593A1 (ja) | 情報処理方法、情報処理装置およびそのプログラム | |
Tang et al. | Lsm: Learning subspace minimization for low-level vision | |
JP2017068577A (ja) | 演算装置、方法及びプログラム | |
JP5564643B2 (ja) | 情報処理方法および情報処理装置 | |
Tang et al. | Random walks with efficient search and contextually adapted image similarity for deformable registration | |
JP2008225778A (ja) | 画像処理装置 | |
CN111626368B (zh) | 一种基于量子算法的图像相似度识别方法、装置及设备 | |
JP5716170B2 (ja) | 情報処理方法および情報処理装置 | |
EP2924649B1 (en) | Method and an apparatus for generating an approximate nearest neighbor field (annf) for images and video sequences | |
US20220172421A1 (en) | Enhancement of Three-Dimensional Facial Scans | |
JP7350515B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
Šurkala et al. | Hierarchical Layered Mean Shift Methods | |
Karantzalos et al. | Implicit free-form-deformations for multi-frame segmentation and tracking | |
CN116982059A (zh) | 通过迭代式精化的高效姿态估计 | |
EP2637140B1 (en) | Method and apparatus for multi-label segmentation | |
CN118115767A (zh) | 一种基于二阶邻近引导的图像数据采样方法 | |
Lee | A Method of Color Image Segmentation Based on DBSCAN (Density Based Spatial Clustering of Applications with Noise) Using Compactness of Superpixels and Texture Information |