• 検索結果がありません。

コンピュータビジョン

N/A
N/A
Protected

Academic year: 2021

シェア "コンピュータビジョン"

Copied!
42
0
0

読み込み中.... (全文を見る)

全文

(1)

コンピュータビジョン

担当 : 井尻 敬

(2)

特徴点検出

• (復習)ガウシアンフィルタとその性質

• 特徴点とは

• SIFT 特徴

• Hough 変換

(3)

復習 : ガウシアンフィルタとその性質

復習

(4)

線形フィルタの例

ぼかす 鮮鋭化

復習

1/16 2/16 1/16

2/16 4/16 2/16

1/16 2/16 1/16

0 -1

0

-1 5 -1

0 -1

0

(5)

(i,j) (i,j)

2 h + 1

 

2 h + 1

 

線形フィルタとは

出力画素値を周囲画素の重み付和で計算するフィルタ

( , ) = ∑

= − h h

∑ =−h h

h ( , ) ( + , + )

 

I’ (i,j) 出力画像

h(i,j)

フィルタ I(i,j)

入力画像

復習

(6)

( � ∗ � ) ( ) = ∫

−∞

( ) ( ) ��

 

連続 :

( �∗ � ) ( ) =

�= −∞

( ) ( )

離散   :

『 * 』を畳み込み積分( Convolution) と呼び,以下の性質が成り立つ 交換 : = 

結合 : = 分配 : 微分 : 

フーリエ変換 :

 

線形フィルタ( convolution ) 復習

(7)

畳み込み積分のフーリエ変換 :

  復習

(8)

畳み込み積分のフーリエ変換 :

 

*

σ=6

   

×

σ=1/6

( )

    ( )

1

 

復習

(9)

ガウシアンフィルタとは

1

2

2

  1

2

+

2

2

2

 

1D

=1

  2D

=1

 

ガウス関数により畳み込むフィルタのこと

画像を平滑化する効果がある(ローパスフィルタ)

画像処理において様々な場面で活躍する

復習

(10)

ガウシアンのフーリエ変換はガウシアン

標準偏差 σ のガウス関数

をフーリエ変換すると標準偏差が逆 数のガウシアンになる

または

•  

  =3.0

=1/3.0

 

復習

(11)

2つの異なるガウシアンフィルタを用意する これらのフーリエ変換は以下の通り

関数に,フィルタを順番に適用する

•  

とを連続して畳み込むのは

を一度だけ畳み込むことと等しい

 

  =5 ( )

  �= 3 ( )

�= 4 ( )

 

復習

(12)

まとめ : ガウシアンフィルタとその性質

画像処理において頻繁に利用されるガウシアンフィルタの性質 を紹介した

ガウス関数のフーリエ変換はガウス関数

複数のガウシアンフィルタ適用は,一つのガウシアンフィルタ で表せる

•  

σ ( )= 1

2 � � 2

2

2

2

  σ ( , ) = 1

2 � � 2

2

+

2

2

2

 

(13)

特徴点とは

(14)

特徴抽出とマッチング

画像内から特徴的な場所を検出し似た 特徴を持つ場所と対応付けしたい

 パノラマ合成,ステレオ視,物体認 識, VR (位置あわせ), etc

画像内から特徴的な点を検出する

検出した点の局所的な特徴を計算機が 処理できる形で記述したい

+ 局所特徴を多次元ベクトルで表現

+ 平行移動 / 拡大 / 回転に強い記述が理想

(平行移動・拡大縮小・回転があっても特徴 量が変化しない)

(15)

特徴ベクトルとか言われてもしっくりこないという人のために…

• 画像 2 枚から特徴的な点を沢山抽出できた としてどれとどれが似ているかを知りたい

• つまり,どれとどれが似た局所画像を持つ か知りたい

 検出した特徴点の周囲の情報を,比較でき る形(数値データ)に変換したい

       !!! 特徴ベクトル !!!

     •

撮影条件によって対象は回転・拡大縮小・平行移動 するので,画像が回転・拡大縮小・平行移動しても 似た特徴ベクトルを生成できる手法がほしい

  この条件を満たす

SIFT

が良く用いられてきた

(16)

SIFT 特徴

Scale Invariant Feature Transform

• 有名&頻繁に利用される特徴量のひとつ

• 周囲の特徴を 128 次元ベクトルで表現

• 平行移動・回転・拡大縮小に堅固

平行移動・回転・拡大縮小があっても似た特 徴ベクトルを出力できる

• 特徴ベクトルにすると局所領域の相違度 を計算できる

※ は特徴ベクトルの要素

※ これは相違度の一例

•  

SIFT.py

各点が

128

次 元の特徴ベク トルを持つ

(17)

SIFT 特徴

(18)
(19)

DoG : Difference of Gaussian DoG.py

局所的に輝度値が高い・低い点やエッジ,コーナーなどが検出される その特徴点が現れたスケールも同時に得られる

(20)

SIFT 特徴

1.

特徴点検出

DoG の極大・極小を特徴点とする

Harris 行列を用いてエッジ点は除去

閾値処理でノイズ(極大値が小さい点)も除去

2. 方向検出

発見した各特徴点において、 DoG の層に対応するガウシア ンフィルタのかかった画像を利用し

勾配ヒストグラムを生成(方向を 36 分割し,強度を中心か らの距離で重み付け)

ヒストグラムを正規化し強度が 0.8 以上の方向を検出 ( 複 数検出される複数の特徴量を生成 )

3. 特徴ベクトル計算

検出した方向に沿った局所窓を配置

領域を 4x4 分割し,各領域内で勾配ヒストグラムを 計算する

勾配ヒストグラムを特徴ベクトルとする

勾配は 8 方向に量子化

4*4*8 = 128 次元ベクトルに

得られた特徴ベクトルを正規化(ベクトルの総和で割る)

方向ヒストグラム(イメージ)

0 20 40 60 80 100

120 140

160 180

200 220

240 260

280 300

320 340 0

0.2 0.4 0.6 0.8 1 1.2

各セルにおいて8方向に量子化した 勾配ヒストグラムを計算

(21)

SIFT 特徴点の例

(22)

1 4 7

10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100 103

106 109

112 115

118 121

124 127 0

20 40 60 80 100 120 140 160

文字

N

SIFT

特徴

book1 book2 book3

(23)

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100 103

106 109

112 115

118 121

124 127 0

20 40 60 80 100 120 140 160

画 の

  SIFT

特徴

book1 book3 book4

(24)

1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97 100 103

106 109

112 115

118 121

124 127 0

20 40 60 80 100 120 140

ル の

  SIFT

特徴

book1 book3

(25)

1. 特徴点検出

DoG の極大・極小を特徴点とする

Harris 行列を用いてエッジ点は除去

閾値処理でノイズ(極大値が小さい点)も除去

2. 方向検出

発見した特徴点においてそのサイズに合わせた局 所領域を考える(追記しました)

勾配ヒストグラムを生成(方向を 36 分割し,強度 を中心からの距離で重み付け)

ヒストグラムを正規化し強度が 0.8 以上の方向を 検出 ( 複数検出される複数の特徴量を生成 )

3. 特徴ベクトル計算

検出した方向に沿って局所領域を回転

領域を 4x4 分割し,各領域内で勾配ヒストグ ラムを計算する

勾配ヒストグラムを特徴ベクトルとする

勾配は 8 方向に量子化

4*4*8 = 128 次元ベクトルに

※ 手順を覚えてほしいわけではなくて、

このように設計した特徴ベクトルが,なぜ拡大縮小と回 転に対して不変(変化しにくい)となるかを説明できる ようになってほしい

質問 :

SIFT 特徴は

なぜ拡大・回転について不変なのか ?

(26)

SIFT 特徴(実装)

# SIFT.py

img1 = cv2.imread(“ 画像名 .bmp", 0) sift = cv2.xfeatures2d.SIFT_create()

key1, des1 = sift.detectAndCompute (img1, None )

Python & openCV 環境だと上記の 3 行で SIFT 特徴を検出できます

※key1 は特徴点の位置を保持する配列

※des1 は特徴点の特徴ベクトルを保持する配列

※ 『 xfeatures2d.SIFT_create 』を書き換えると色々な特徴量を試せます 最近は C++ で全部書くのは流行らないみたい.

良い時代ですね。。。

(27)

まとめ : SIFT 特徴

• 特徴ベクトルとは何かを解説した

検出された特徴点同士を比較するため,特徴点 周囲の局所領域をベクトルの形で表すもの.

特徴ベクトルは, SIFT , BRIEF, ORB, SURF, AKAZE など,沢山の種類がある

特徴ベクトルは目的や対象画像の依存してよい ものを選択すべき

• SIFT 特徴

DoG の極値を特徴点として検出

特徴点のスケールに応じた局所領域を考慮

特徴点周囲の勾配方向に沿って局所窓を回転

局所窓を 4 分割し,各領域の勾配ヒストグラム

(28)

Hough 変換

(29)

Hough 変換とは

• 画像中から直線や円を検出する手法

• 直線や円の一部が破損・劣化してい ても検出可能

Hough.py

(30)

xy 空間と ab 空間

xy 空間における直線は 『 』と表せる

直線の傾き を横軸・ y 切片 を縦軸にとる ab 空間を考える

•  

x y

a b

2

    ( 1 2 / 2 )

直線は点に

xy 空間 ab パラメータ 空間

(31)

xy 空間と ab 空間

x y

a b

点を通る直線群

 

(2,3)

を通る直線群は

パラメータ空間では 直線

:

 

xy 空間 ab パラメータ 空間

( 2 3 )

 

より  

 

 

(32)

xy 空間と ab 空間

x y

a b

直線 上の点群 を通る直線群

 

上の点群

を通る直線群は  

と表せる

 

xy 空間 ab パラメータ 空間 2

 

を通る点群は と表せる.

この点を通る直線群は より

 

を通る直線群になる

 

SKIP

不要

(33)

xy 空間と ab 空間

直線の傾きを横軸, y 切片を縦軸にとる ab 空間を考えると…

• 直線  点に

• 点を通る直線群  直線に

• 直線 上の点群を通る直線群 点

•  

SKIP

不要

(34)

Hough 変換

入力 : 画像

出力 : エッジを通る直線群 1. 画像をエッジ画像へ変換

2. 全てのエッジ画素について…

エッジ画素を通る直線群は

ab 空間で直線に

ab 空間を小さなセルに分割し、その直線上 のセルの値を 1

プラスする(投票)

3. 閾値より大きな ab 空間のセルを検索 し,そのセルの現す直線を出力

• 直線は複数発見される

a b

ab

空間

実装時はセルの配列で 表現される

a b

閾値より多くの投票を 受けたセルを検索

36

(35)

• 先のアルゴリズムの問題点

傾き

a

と切片

b

のとりうる範囲は [-∞, ∞] である

任意の直線を検出するには,無限に広い ab 空間に投票する必要が…

• 解決法 : 直線を 『』と表す

は直線の傾きに対応,は原点から直線の符号付距離を表す

との値の範囲は, ( A は画像の対角線長)

•  

x y

ρ θ

 

 

直線

-

空間では点になる

 

(   0 , 0 )

(36)

捕捉 :  

• この直線は,点を通り,傾き の直線となる

• つまり,半径 ρ の円に接する直線となる

•  

θ ρ

x

y (   cos , sin )

θ ρ

x y

WxH の画像内に 入る範囲で

ρθ を動かす

(37)

直線を 『』と表すと…

•  

x y

点を通る直線群

 

(2,3)

を通る直線群は

空間では  

という正弦波になる

 

xy 空間

( 2 3 )

 

    

 

 

 

(38)

Hough 変換

入力 : 画像

出力 : エッジを通る直線群 1. 画像をエッジ画像へ変換

2. 全てのエッジ画素について…

エッジ画素を通る直線群は ρθ 空間で正弦波

ρθ 空間を小さなセルに分割し、その正弦波 上のセルの値を 1 プラスする(投票)

3. 閾値より大きな ρθ- 空間のセルを 検索し,そのセルの現す直線を出 力

• 直線は複数発見される

 

 

 

 

(39)

Hough 変換で円を検出する

• 直線とほぼ同じ方法で検出可能

(40)

まとめ : Hough 変換

• 画像中の直線や円を検出する手法

0. 直線(または円)を数式で表現する 1. 入力画像からエッジ画像を計算

2. 全てのエッジ画素について…

パラメータ空間の対応セルの値をプラス 1 する

(直線検出なら ρθ 空間の正弦波を考える)

3. パラメータ空間において値の大きなセルを検索   そのセルが対応する直線を出力

 

 

参照

関連したドキュメント

② 地図面をタップすると[+,-]ボタンが表示されます。

adv/sample1.png について R=3として縦横2倍にした画像がadv/synthesis1.png adv/sample2.png について

一方,回転及び拡大縮小タスクにおいて操作条件間 に有意差が見られなかった原因として,

第 2 章では,天然ガスを燃料とする小型の

149 5 履歴ファイルを参照し、履歴データを表示することができます。 6

134 5 履歴ファイルを参照し、履歴データを表示することができます。 6

本実験では Injoy Motion 社製のモーション ベースを使用し、 HMD は FOVE 社製の FOVE を用いた。刺激映像はシリンダー内部を体験者 自身が時計回りに

という極めて高い結果が得られ,また,本人拒否と 他人受入の Equal  Error  Rate の平均も