5-05 相互相関を使った画像抽出と位置検出(続き)

●計算はVBAで自動的に行う

 テンプレートを"F"から変更してみましょう。図5‐86のように「開発」タブからVisual Basicをクリックし、Module
02を開きます。"charF"の部分を"charL"に変更すると"L"の文字を探すようになります。

  図5-86 charLシートのテンプレートを参照する

●計算には少し時間がかかる

 実行(図5‐86の
三角マーク)をクリックするとマクロが実行されます(10分ほどかかると思います)。するとテンプレート"L"とshift40x40シートが乗算され、mult40x40シートが更新されます。

  図5-87 8×8画素が40×40個あるので計算に時間がかかる

●下の方に明るいセルが見える

 
隣のacc40x40シートは図5‐88のように自動的に更新されています。最大値は1465、セルは"I37"になります。

  図5-88 Lの文字が見つかったもよう

●結果が合っているか確認

 char10シートに戻ると"I37"セルが"L"の開始位置になっています。

  図5-89 I37セルからLの文字

●他の文字もちゃんと検出できるか

 X, O, N に関しても同様にModule02を変更して実行します。その結果は図5‐90(x, o, n)のようになります。shift40x40シートに戻ってその位置が合っているか確認しましょう。
(x) Q20セルが1440

(o) S3セルが1280

(n) AK34セルが1335
  図5-90 VBAを変えて実行してacc40x40シートを見る

●少なめの演算でもそこそこの認識

 近年はCNNなどの「ディープラーニング」で画像認識することが増えつつありますが、このように「相互相関」でも画像認識は可能です。
ディープラーニングと比べると演算量はかなり少ないので一つの選択肢になり得ると思います。

最初のページへ

目次へ戻る