[python] テンプレートマッチングで使う相互相関関数(scipy: correlate2d)で画像が一致するかどうかを確認

stachoverflowにあったこれ(http://stackoverflow.com/questions/1819124/image-comparison-algorithm)をなんとなく解説。
tumblr_inline_nok128mSMK1swbk6z_540

tumblr_inline_nok12gM7Ah1swbk6z_540

 
実装はこんな感じ↓
 

# # -*- coding: utf-8 -*
  import scipy as sp
  from scipy.misc import imread
  from scipy.signal.signaltools import l as c2d

  def get(i):
      #get JPG image as Scipy array, RGB (3 layer)
      data = imread("%s.jpg" % i)
      # convert to grey-scale using W3C luminance calc
      data = sp.inner(data,[299,587,144]) / 1000.0
      #normarilze Cross-correlation
      return (data - data.mean()) / data.std()
      #numpy.mean 配列内にある数値データの算術平均を求める
      #numpy.std 配列内にある数値データの標準偏差を求める

  if __name__ == '__main__':
      img1 = get(1)
      img2 = get(2)
      img3 = get(3)

  c11 = c2d(img1, img1, mode='same')
  c12 = c2d(img1, img2, mode='same')
  c13 = c2d(img1, img3, mode='same')
  c23 = c2d(img2, img3, mode='same')

  print(c11.max())
  print(c12.max())
  print(c13.max())
  print(c23.max())