chapter1 4.6

Post on 21-Jun-2015

1.580 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CV勉強会 発表資料レベルセット法

4.6 – 4.12

Presented by takmin

概要

• 4.6 局所成長速度場と拡張成長速度場

• 4.7 Narrow Band

• 4.8 再初期化

• 4.9 差分法を用いたLevel Set Method

• 4.10 Geodesic Active Contour

• 4.11 Fast Marching Method

• 4.12 領域の統合を用いたLevel Set Method

4.6 局所成長速度場と拡張成長速度場

4.4章のLevel Set Methodでは,成長速度Fijをグリッド(ピクセル)ごとに補助関数φij及び画素値Iijから毎回算出していた.

局所成長速度場

)( ,,,, jijiIji bakF (20)

濃度勾配が大きいと小さくなる

補助関数φの曲率

局所成長速度場

F=2 F=3 F=2 F=1 F=2 F=1 F=3 F=1 F=3 F=2

F=2 F=1 F=1 F=1

全てのピクセルごとにFを計算する

Φ=0

局所成長速度場

F=2 F=3 F=2 F=1 F=2 F=1 F=3 F=1 F=3 F=2

F=2 F=1 F=1 F=1 F=3 F=1 F=3 F=3 F=1 F=3

F=3 F=2 F=3 F=2 F=1 F=1 F=3 F=2 F=1 F=2

F=1 F=3 F=2 F=3 F=2 F=1 F=3 F=2 F=1 F=2

F=2 F=3 F=2 F=1 F=2 F=1 F=3 F=1 F=2 F=3

F=2 F=3 F=2 F=3 F=2 F=2 F=2 F=3 F=3 F=2

F=2 F=3 F=3 F=1 F=1 F=1 F=3 F=2 F=2 F=1

F=3 F=2 F=1 F=3 F=2 F=2 F=1 F=2 F=1 F=2

F=2 F=1 F=3 F=1 F=2 F=2 F=3 F=2 F=2 F=3

F=3 F=2 F=3 F=1 F=2 F=2 F=3 F=2 F=2 F=4

全てのピクセルごとにFを計算する

Φ=0

拡散成長速度場

F=1 F=2

F=1 F=3 F=2

F=2 F=1 F=2

F=3

F=2

Φ=0の領域でFを計算

拡散成長速度場

F=1 F=2

F=1 F=3 F=2

F=2 F=1 F=2

F=3

F=2

注目画素の最近傍zero level探索

拡散成長速度場

F=1 F=2

F=1 F=3 F=2

F=2 F=1 F=2

F=3

F=2

成長速度をコピー

F=3

拡散成長速度場

F=1 F=2

F=1 F=3 F=2

F=2 F=1 F=2

F=3

F=2

最近傍zero level setの成長速度をコピー

F=3 F=3

拡散成長速度場

F=1 F=2

F=1 F=3 F=2

F=2 F=1 F=2

F=3

F=2

最近傍zero level setの成功速度をコピー

F=3 F=3 F=2 F=1 F=1 F=1 F=3 F=1 F=1 F=2

拡散成長速度場

F=3 F=3 F=2 F=1 F=1 F=1 F=3 F=1 F=1 F=2

F=3 F=3 F=2 F=1 F=1 F=1 F=3 F=1 F=1 F=2

F=3 F=3 F=2 F=1 F=1 F=1 F=3 F=2 F=1 F=2

F=3 F=2 F=2 F=1 F=2 F=1 F=3 F=2 F=1 F=2

F=2 F=3 F=2 F=1 F=2 F=1 F=3 F=2 F=2 F=2

F=2 F=3 F=2 F=1 F=2 F=2 F=3 F=2 F=2 F=2

F=2 F=3 F=3 F=1 F=2 F=2 F=3 F=2 F=2 F=2

F=2 F=2 F=3 F=1 F=2 F=2 F=3 F=2 F=2 F=2

F=2 F=2 F=3 F=1 F=2 F=2 F=3 F=2 F=2 F=2

F=2 F=2 F=3 F=1 F=2 F=2 F=3 F=2 F=2 F=2

境界進行の比較

局所成長速度

拡張成長速度

境界進行の比較

局所成長速度

拡張成長速度

境界進行の比較

局所成長速度

拡張成長速度

4.7 Narrow Band

補助関数を画像全体に対して計算するのは無駄

ゼロ等高面の近傍のみ補助関数を更新すれば良い

φ

Narrow Band

zero level set

δ

4.7 Narrow Band

ところで、、、、、、

図19って正しくは↓じゃないですか????

φt

Step 1: 変数の準備

φi,j Fi,j

Si,j

φi+1,j Fi+1,j

Si+1,j

φi-1,j Fi-1,j

Si-1,j

φi,j-1 Fi,j-1

Si,j-1

φi,j+1 Fi,j+1

Si,j+1

φi-1,j-1 Fi-1,j-1

Si-1,j-1

φi+1,j-1 Fi+1,j-1

Si+1,j-1

φi-1,j+1 Fi-1,j+1

Si-1,j+1

φi+1,j+1 Fi+1,j+1

Si+1,j+1

変数φi,j,Fi,j,Si,j ,Pk,n=0を準備する。

φ=0

Pk = (px,k, py,k)Pk-1

Pk+1

処理領域(narrow band)内かを表すフラグ

Step 2: 符号付き距離場の構築• 初期閉曲線C(p,0)=C0(p)を設定• 補助関数値φijを初期閉曲線からの距離を元に設定• 閉曲線の周辺に幅δのNarrow Bandを設定• Narrow Band内のSi,jを1,それ以外のSi,jを0に設定

φ

Narrow Band

C0(p)φ=0

δ

Si,j=1

Step 3: 成長速度の計算

• nに1を加える。• Si,j=1の領域のみ成長速度Fi,jを計算

φ=0 )( ,,,, jijiIji bakF

Step 4: 補助関数の更新

• Si,j=1の領域のみ補助関数値φi,jを更新

φ=0jii,jjiji tF ,,,

φ

Step 5: Zero level setの検出

• Si,j=1の領域においてφ=0となる位置を検出し,閉曲線C(p,t)を求める

C(p,t-1)

C(p,t-1)

Step 6: 再初期化• nが適当な間隔,または閉曲線がNarrow Bandの端に近づいた場合,再初期化(後述)を行い,閉曲線からの符号付き距離をφi,jに設定する.

• 現在の閉曲線からの距離がδ以内にある領域のSi,jを1に,それ以外を0にセットする.

C(p,t-1)

δ

Step 7: 繰り返し

• Step 3~Step 6をφi,jの変化量が閾値以下になるか,nがあらかじめ決められた繰り返し回数を超えるまで繰り返す.

4.8 再初期化

Upwind Schemeで補助関数を逐次的に更新

φφ

再初期化のイメージ

積分誤差も積算される

定期的に現在のzero levelからの距離を元にφ全体を更新

再初期化

4.8 再初期化

• 全てのグリッドで近傍zero level setを探索し,距離を計算するのはコスト大

– Adalsteisonの方法

• First Marching Method(後述)

–倉爪らの方法

• 再初期化と拡張成長速度場の計算を統一

4.8 再初期化

• Sussmanの方法

– Level Setの更新の間に以下の式を繰り返し解く

)1)(sgn( 0

mmmd

d

(37)

1 m で収束

φ傾きが一定になる

4.8 再初期化

• Sussmanの方法(僕なりの解釈)

– Step 4 補助関数φの更新

–以下の式でφを更新

)1)(sgn( ,

0

,,, jijijiji

1, ji で収束

jii,jjiji tF ,,,

φ傾きが一定になる

4.9 差分法を用いたLevel Set Method

• 補助関数を以下の式で更新していく方法

}){( 1

,

111 t

ji

ttt ΦΦAΦ

行列Aを求めたい

差分法の導出

t(38)

(39)

「更新の大きさ」=「φの曲率」×「φの傾きの大きさ」

φの更新式を以下のように定義する

曲率

φi,j

φ曲率

傾き

差分法の導出

t(38)

(38) ,(39)式を離散化する

1

1

1 ),(

n

n

n

y

n

xnn

t

(39)

(40)

)( 1 nn f これを最終的に, の形式に変形したい

差分法の導出

1

1

1 ),(

n

n

n

y

n

xnn

t

力技で式を展開(省略)

}0,1{},1,0{

,,,

1

,,)(

lk

n

ji

n

ljkiljki

n

ji

n

jiA

t

(43)

1

,

1

,

1

,

2,

21

n

ji

n

ljki

n

ji

ljkih

A

(45)

差分法の導出

1

,

}0,1{},1,0{

,,,

}0,1{},1,0{

,1

n

ji

lk

n

ljkiljki

n

ji

lk

ljki tAtA (49)

古い補助関数値

新しい補助関数値を用いた式

1 nnuΑu

nji ,un

ji , を一列に並べたベクトル

11 nnuΑu

差分法の導出

1

,

1

1,

1

,

1

,1

1

1,1

,

1,

,

,1

1,1

11,

,

,1,,1

0

1

0

n

HW

n

W

n

ji

n

H

n

n

HW

n

W

n

ji

n

H

n

iji

lk

ljkijiji tAtAtAtAtA

1 nnuΑu

行列Aがとてもデカイ!

2HW 要素数:

差分法の流れ

1. 変数φi,jと変数Ai,jと繰り返し回数nをグリッド毎に準備

2. n=0として初期閉曲線C(p,0)を設定し,Cからの距離を元に符号付き補助関数値φi,jを求める

3. nに1を追加し,φからAi,jを計算する4. 以下の式からφを更新

5. nの適当な間隔で,再初期化処理を行う6. 3~5を収束するか指定回数を超えるまで繰り返す

11 nnuΑu

差分法の導出

1

,

}0,1{},1,0{

,,,

1

,,)(

n

jiI

lk

n

ji

n

ljkiljki

n

ji

n

jiakA

t

1

,

1

,

1

,

2,

2

n

ji

n

ljki

n

jiIljki

h

bkA

(47)

)( bak

tI

曲率だけでなく,画像の濃度勾配を含めた場合

(46)

濃度勾配の逆数

曲率

(48)

差分法の導出

1

,

1

,

}0,1{},1,0{

,,,

}0,1{},1,0{

,1

n

ji

n

jiI

lk

n

ljkiljki

n

ji

lk

ljki taktAtA

1 nnuBΑu

nji ,un

ji , を一列に並べたベクトル

BuΑu 11 nn

4.9.1 ADI法

•差分法は行列Aが巨大なため,計算量が大きい

•行列Aの大部分の要素がゼロ

近似解法で計算の高速化・安定化を行う

<ADI法>

x方向の解とy方向の解を逐次的に計算する

4.9.1 ADI法

x方向の更新

)()(

)()(

1

,

1

1,1,

1

,

1

1,1,

*

,

*

,1,1

*

,

*

,1,1

1

,

*

,

n

ji

n

jiji

n

ji

n

jiji

jijijijijilji

n

jiji

AA

AAt

}0,1{},1,0{

,,,

,1,1,,1,1,

,,1,1,,1,1

1

,,

)(

)()(

)()(

lk

n

ji

n

ljkiljki

n

ji

n

jiji

n

ji

n

jiji

n

ji

n

jiji

n

ji

n

jilji

n

ji

n

ji

A

AA

AAt

(43)

(44)

通常の差分法

ADI法(x方向)

y方向は前時刻n-1の値を利用する

4.9.1 ADI法

)()(

)()(

1

,

1

1,1,

1

,

1

1,1,

*

,

*

,1,1

*

,

*

,1,1

1

,

*

,

n

ji

n

jiji

n

ji

n

jiji

jijijijijilji

n

jiji

AA

AAt

(52)

ji

ji

ji

ji

jijiji baaa ,

*

,1

*

,

*

,1

,1,,1

1

,

1

1,1,

1

,

1

1,,1

1

,

1

,

,1,1

,1,1,

,1,1

1

n

ji

n

jiji

n

ji

n

jiji

n

ji

n

ji

jiji

jijiji

jiji

tAtAb

tAa

tAtAa

tAa

(53)

更新する補助関数値(x方向のみ)

4.9.1 ADI法

1* n

x buA

0

0

,1,,1 jijijix aaaA

*

,

*

jiu*

, ji を一列に並べたベクトル

11* n

x bΑu

まずはx方向のみ計算!

4.9.1 ADI法

1* n

x buA

HWW

ij

H

HWW

ji

H

jijiji

bb

b

bb

aaa

,1,

,11,1

*

,

*

1,

*

,

*

,1

*

1,1

,1,,1

0

0

*

,

*

jiu*

, ji を一列に並べたベクトル

行列Axの要素数= 2W

僕の解釈

計:

2H

計算列数= H

計算列数= W行列Ayの要素数=

WHHW 22 2HW

このテキストの表現が間違っている?

よりは尐ない

本当はこういうこと?

4.9.1 ADI法

y方向の更新

}0,1{},1,0{

,,,

,1,1,,1,1,

,,1,1,,1,1

1

,,

)(

)()(

)()(

lk

n

ji

n

ljkiljki

n

ji

n

jiji

n

ji

n

jiji

n

ji

n

jiji

n

ji

n

jilji

n

ji

n

ji

A

AA

AAt

(43)

(44)

通常の差分法

ADI法(y方向)

x方向は先程の逐次更新の値を利用する

)()(

)()(

,1,1,,1,1,

*

,

*

,1,1

*

,

*

,1,1

1

,,

n

ji

n

jiji

n

ji

n

jiji

jijijijijilji

n

ji

n

ji

AA

AAt

4.9.1 ADI法

*buA ny

njin

,un

ji , を一列に並べたベクトル

*1bΑu

y

n

更新完了!

* を使って計算

4.9.2 AOS法

<ADI法>

x方向の計算を行ってから,その結果を元にy方向を計算

<ASO法>

x方向とy方向を逐次的に別々に計算して,平均を取る

4.9.2 AOS法

)()(

)()(

1

,

1

1,1,

1

,

1

1,1,

*

,

*

,1,1

*

,

*

,1,1

1

,

*

,

n

ji

n

jiji

n

ji

n

jiji

jijijijijilji

n

jiji

AA

AAt

)()(

)()(

**

,

**

1,1,

**

,

**

1,1,

1

,

1

,1,1

1

,

1

,1,1

1

,

**

,

jijijijijiji

n

ji

n

jiji

n

ji

n

jilji

n

jiji

AA

AAt

y方向

x方向

1* n

x uuA

1** n

y uuA

2

***uu

u

n

4.10 Geodesic Active Contour

以下の式で定義された成長速度を持つ曲線をGeometric Active Contourと言う

dsdqqdqqCL )()('

)( ,,,, jijiIji bakF N)(FCt (11) (20)

閉曲線の時間変化

速度場 法線ベクトル 濃度勾配

が大きいほど小

曲率

NtC の時,以下のLを最小にする

Geometric Active Contour

dsdqqCL )('

NtC の時,以下のLを最小にする

C(p,t-1)

C(p,t)

輪郭線上速度場の合計

曲率の合計

閉曲線の長さ

輝度勾配について考えない場合,閉曲線の長さを最小にする方向に動く

4.10 Geodesic Active Contour

Geodesic Active Contour

dssCgdqqCqCgLR )()()( '(67)

このLRを最小にするアプローチ

Geometric Active Contourの問題点:•対象によっては曲線の成長が不安定•ノイズやギャップ(切れ)に敏感すぎる

境界の特徴

4.10 Geodesic Active Contour

dssCgdqqCqCgLR )()()( '(67)

この最小化を最急降下法で行うと(証明は参考文献にて)

N

NN

NNN

)(

)()(

)()(

'

F

IgIg

IgIgCt

と解ける.

ちなみに, は の微分という意味ではない.(お陰で長時間悩んだ))(' F )(F

4.10 Geodesic Active Contour

)()(

)()(

)('

IgIg

IgIg

Ft

N

補助関数の更新式は,以下の通り

境界特徴

補助関数の曲率

補助関数の勾配の大きさ

境界特徴の勾配

補助関数の勾配

まだ直感的にわからない・・・。

4.10 Geodesic Active Contour

)( ,,,, jijiIji bakF

ここで以下の式の,a=0,b=1とすると

jijiIji kF ,,,,

Geometric Active ContourとGeodesic Active Contourを比較して,理解を深める.

IG

kIg I

1

1)(

g(I)は境界に関する関数なので,kと対応させる.

)(IgF 濃度勾配の大きさ

4.10 Geodesic Active Contour

)()(

)('

IgIg

Ft

Geometric Active Contour

)(

)(

Ig

k

F

I

t

Geodesic Active Contour

Geometricとの違い

濃度勾配の空間的な変化を見ている

ボケやノイズ,ギャップに強くなる

4.10 Geodesic Active ContourGradient vector fieldを用いたGradient vector flow:

• エッジの位置情報だけでは動的輪郭の移動方向が正しく判別出来ない

•あらかじめエッジの大まかな位置を表すベクトル場を作成しておき,Geodesic Active Contourをこのベクトル場に基づいて移動させる.

4.11 Fast Marching Method

閉曲線が,常に一方向にしか動かないと仮定することで高速化を図る方法

常にF>0の例

4.11 Fast Marching Method

1)( FpT

Eikonal方程式

)(xTFx 1)(

Fdx

xdT

常にF>0で,一次元の例:

移動距離 成長速度

到達時間

多次元へ一般化

4.11 Fast Marching Method

ji

y

ji

y

ji

x

ji

x

ji FTDTDTDTD ,2

1

,,

2

,, /10,,max0,,max

ji

y

ji

y

ji

x

ji

x

ji FTDTDTDTD ,2

1

,,

2

,

2

, /10,min0,max0,min0,max

h

TTTD

h

TTTD

h

TTTD

h

TTTD

jijiy

ji

jijix

ji

jijiy

ji

jijix

ji

1,,

,

,1,

,

,1,

,

,,1

,

1)( FpTEikonal方程式

または

22

y

T

y

TT

Step 1: 初期化,Heapの構築

Heap形式のリスト

初期境界に属するグリッドをknownのリストに追加し,到達時間Tを0にセットする

known(T=0)

Step 1: 初期化,Heapの構築

Heap形式のリスト

knownの四近傍グリッドのうち,knownでないグリッドをtrialとする.

known(T=0)

trial

Step 1: 初期化,Heapの構築

Heap形式のリスト

trialグリッドの時間をTi,j=1/Fi,jから求め,リストに登録する.

trial

(4,2) T=1

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=0)

Step 1: 初期化,Heapの構築

Heap形式のリスト

trialグリッドの時間をTi,j=1/Fi,jから求め,リストに登録する.これらのグリッドを到達時間に関する昇順でソート

trial

(4,2) T=1

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=0)

Step 1: 初期化,Heapの構築

Heap形式のリスト

trialグリッドの時間をTi,j=1/Fi,jから求め,リストに登録する.これらのグリッドを到達時間に関する昇順でソート

trial

(4,2) T=1

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=0)

Step 1: 初期化,Heapの構築

Heap形式のリスト

それ以外のグリッドをfarとし,到達時間を無限大とする

far (T=∞)

(4,2) T=1

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=0)

Step 2: Heap先頭の取り出し

Heap形式のリスト

Heapの先頭に置かれた,trialリストの中で一番到達時間Tが短いグリッドを選択し,リストから除外して,knownとする

far (T=∞)

(4,2) T=1

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=0)

Step 2: Heap先頭の取り出し

Heap形式のリスト

Heapの先頭に置かれた,trialリストの中で一番到達時間Tが短いグリッドを選択し,リストから除外して,knownとする

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=1)

known(T=0)

Step 2: Heap先頭の取り出し

Heap形式のリスト

Heapの先頭に置かれた,trialリストの中で一番到達時間Tが短いグリッドを選択し,リストから除外して,knownとするHeapから除外する際,同時にHeapを再構築する.

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=1)

known(T=0)

Step 3: 取り出されたグリッド近傍の選択

Heap形式のリスト

現在選択されたグリッドの4近傍のうち,farに属しているグリッドをトライアルのリストに追加する

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=1)

known(T=0)

Step 3: 取り出されたグリッド近傍の選択

Heap形式のリスト

現在選択されたグリッドの4近傍のうち,farに属しているグリッドをtrialにする

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=1)

known(T=0)

Step 4: Heapへの追加と再構築

Heap形式のリスト

現在選択されたグリッドの4近傍のうち,trialに属しているグリッドの到達時間Tを計算して仮登録し,Heapを再構築する.

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=1)

known(T=0)

(5,2) T=1.5

(4,1) T=2

(3,2) T=4

Step 4: Heapへの追加と再構築

Heap形式のリスト

現在選択されたグリッドの4近傍のうち,trialに属しているグリッドの到達時間Tを計算して仮登録し,Heapを再構築する.

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=1)

known(T=0)

(5,2) T=1.5

(4,1) T=2

(3,2) T=4

Step 5: 繰り返し/終了処理

Heap形式のリスト

trialに属しているグリッドが存在すればStep 2へ戻る.それ以外の時は処理を終了する.

(5,3) T=2

(4,4) T=4

(3,3) T=3

known(T=1)

known(T=0)

(5,2) T=1.5

(4,1) T=2

(3,2) T=4

4.12 領域の競合を用いたLevel Set Method

濃度勾配が明確でない場合

領域の競合を用いる

4.12 領域の競合を用いたLevel Set Method

Cdxdyuds

s

CdxdyuIuCE 2)(),(

領域分割のためのエネルギー関数:

Mumford-Shahの枠組み問題と呼ばれる

なんのことかわからん!

4.12 領域の競合を用いたLevel Set Method

ds

s

CdxdyIdxdyI

CE

ininoutin

outin

22 )()(

),,(

分り易く画像全体を2つの領域 ΩinとΩoutに分ける場合を考える

Ωin

Ωout

I: 濃淡画像の輝度値μ in ,μ out: 領域内外の輝度値の平均値

領域Ω inでの輝度値のバラツキ

境界線の長さ

このエネルギー関数の最小化!

4.12 領域の競合を用いたLevel Set Method

NN koutint IIC 22 )()(

koutin II

t

22 )()(

をストークスの定理を用いて時間tで偏微分),,( outinCE

なので,

N)(FCt )(Ft

このCtでエネルギー関数が最小

(83)

(82)

4.12 領域の競合を用いたLevel Set Method

koutin II

t

22 )()(

レベルセットの補助関数更新時に,この領域分割の項を足す?(テキストに記述なし)

(83)

Thank You!

top related