画像処理・実習 第一回:

画像処理・実習
第十四回:パターン認識
東海大学
情報理工学部 情報メディア学科
濱本和彦
今回の内容
5. パターン認識
5.1 マッチングの原理
 5.2 テンプレートマッチング
 実習


相互相関とテンプレートマッチング
一般的なマッチングの尺度
フーリエ変換を
思い出してみよう
b
s   F ( x)G( x)dx
a
ある座標における関数値の積の総和=関数の内積
それぞれの関数の大きさで正規化すると次のようなります。
R

b
a

b
a
2
F ( x)G( x)dx
F ( x)dx

b
a
G 2 ( x)dx
一般的なマッチングの尺度
R

b
a

b
a
2
F ( x)G( x)dx
F ( x)dx
b
G
a
2
これは-1~+1の値をもち,
cosΘで表現されます。
 cos 
( x)dx
相互相関係数
Θは関数間の角度。
二つの関数をベクトル
表現した時のベクトル
が作る角度になます。
ディジタルデータの相互相関係数
二つのデジタルデータ → ベクトルデータとして考える
 f1 , f 2 
g1, g2 

 f

g
相互相関係数は,ベクトルの内積を用いて次のように表現する。
 
 
f , g  f  g cos
であるから,
 
f,g
R  cos   
f  g

f1 g1  f 2 g 2
f1  f 2
2
2
g1  g 2
2
2
ディジタルデータの相互相関係数
一般にN次元ベクトルの場合には次のように表される。
N 1
f
R  cos 
k 0
N 1
 fk
2
k 0
k
gk
N 1
 gk
2
k 0
実際の場合は平均値を引く必要があるため次のようになる。
f
N 1
R  cos 
k 0
f
N 1
k 0
k
 f g k  g 
 f
2
k
N 1
2


g

g
 k
k 0
実習:演習5.2
image_processing14.cとimgpattern.hを
利用します。
imgpattern.hのvoid Ensyu5_2(void)を完
成させなさい。
相関の結果が演習5.1の通りになることを
確認しなさい。
画像の相互相関関数
データが二次元の画像(N×N)の場合も,同様な処理で
相互相関係数が求まります。
  f [k ][l ]  f t[k ][l ]  t 
N 1 N 1
R
l 0 k 0
  f [k ][l ]  f   t[k ][l ]  t 
N 1 N 1
l 0 k 0
2
N 1 N 1
l 0 k 0
2
実習:画像の相互相関係数
void Cross_correlation(void)を完成させなさい。
この関数の実行時は,Input_image()や
Output_image()は必要ありません。関数内で2
つの画像をオープンします。
lena.raw同士,lena.rawとlenan20.raw(雑音が
ある場合),lena.rawとlenai.raw(白黒反転)の組
合せで相互相関係数を求め,考察しなさい。
実習:画像の相互相関係数
-1.0
1.0
0.835
相互相関でこんなことができます。
簡単な人物認証
濱本研メンバーDB
こういう人がやってきました
A 0.434
B 0.548
C 0.652
相互相関係数を求めます。
Eさんと判断されました。
D 0.512
E 0.746
F 0.564
研究室への入室が許可されます。
相互相関でこんなことができます。
簡単な人物認証
濱本研メンバーDB
こういう人がやってきました
A 0.321
B 0.619
C 0.836
相互相関係数を求めます。
Cさんと判断されました。
D 0.650
E 0.698
F 0.537
研究室への入室が許可されます。
相互相関でこんなことができます。
簡単な人物認証
濱本研メンバーDB
こういう人がやってきました
A 0.186
B -0.089 C -0.046
相互相関係数を求めます。
どのデータとも相関が高くありません。
D -0.190 E -0.134 F -0.080
研究室への入室が許可されません。
テンプレートマッチング
入力画像の中から,テンプレート(標準パターン)
に一致する位置を検出します。


パターン位置の検出
動いた物体の追跡
方法



画像にテンプレートを重ね相互相関係数を計算します。
テンプレートの位置をずらして再度相互相関係数を計
算します。
これを繰り返して,相互相関係数が最大になる位置を
探します。
テンプレートマッチング
テンプレートを移動しな
がら,相互相関を計算
相互相関が最大になっ
た位置が,テンプレートの
パターンと同じ図形となる
位置である。
テンプレートマッチング
テンプレートサイズをm×nとし,画像上の位置(i, j)における
相互相関係数は次の式で求められます。これは,式5.16に
平均値処理と正規化を加えたものです。相互相関関数と呼
ばれます。



l 0 k 0 
n 1 m 1
R[i ][ j ] 
 m
 n 
f i   k   j   l  
2 
 2

  m

 n 
f
i


k
j


l

f



 2
  2 
l 0 k 0 

n 1 m 1
2

f t[k ][l ]  t 

n 1 m 1
2


t
[
k
][
l
]

t

l 0 k 0
・テンプレートの中心が(i, j)と一致するようにしています。
・平均値は,m×n領域内での平均値です。
・式5.16では正確な処理を行うことは出来ません(何故?)
実習:テンプレートマッチング
void Template_matching(void)を実行し,テンプレート
マッチングの処理を確認しましょう。
テンプレートのサイズは,幅40,高さ48です。
テンプレート画像は,この関数内で入力処理を行います。
対象画像の入力は,Input_image()で行ってください。
相互相関が最大になった位置とその時の相関値を出力
します。
相関係数がどのように分布しているかを画像として出力
します。これを相互相関関数と呼びます。
入力画像:characters3.raw
テンプレート:characters3a.raw
実習:テンプレートマッチング
=‘A’の文字はこの
最大値:
x=50, y=69, R=1.00 位置にある!
実習:テンプレートマッチング
void Template_matching2(void)は,式
5.16によるものです。正しい結果が得られ
ないことを確認してください。
それは一体何故でしょうか?
こういうことができます
は,どこにいるでしょう?
最大値:
x=179, y=25
課題
教科書p.76の式5.17によりテンプレート
マッチングを行うプログラムを完成させ,
characters3.rawとcharacters3a.rawを用
いた実行結果を示してください。
提出期限は8/1,23:59とします。
i-collaboから提出してください。
期末テスト範囲
第四章 2値化画像p39-p52(境界線追跡まで)
第五章 パターン認識 5.1, 5.2のみ
第七章 画像の直交変換 7.1, 7.2, 7.3
内容:


中間と同じく,プログラムを書く問題はない。
教科書の類似問題 5割


教科書を理解していれば解ける問題 3割


処理結果の予測,処理の選択など
きちんと理解している必要がある問題 2割


穴埋めと演習問題より(数値を変更する場合アリ)
応用問題。説明を求める問題など。
試験8割,レポート2割

レポートは,3つ提出の場合上位2点を採点対象とする。