勉強しないとな~blog

ちゃんと勉強せねば…な電気設計エンジニアです。

OpenCVやってみる - 23. シール点数集計検討

今回はOpenCVネタです。

いままでチュートリアルを追ってきましたが、そろそろ本題の春のパン祭り集計を考えていこうかと。

使えそうな手

今までチュートリアルを見てきた中で、いくつか有用そうなテクニックがありました。

  • 射影変換
    台紙を真正面から撮影していなくても、真正面からの視点に変換できます。
    ロバスト性を上げるのにいいかと。
  • ヒストグラム、2値化
    春のパン祭りだと、年によりますがシールの色が濃いピンク色、台紙はだいたい白となっていて、この色味でシール領域、台紙領域を区別できます。
  • 画像の平滑化
    普通の2Dフィルタだとシールのエッジもぼけてしまいますが、バイラテラルフィルタだといい感じにエッジが残っていました。これも適用しておいてもいいかも。暗いところでの撮影で有効かもしれません。
  • エッジ検出
    Canny法でシールや台紙のエッジが取れますが、その後が難しいかな。次の輪郭検出のほうが使えそう。
  • 輪郭検出
    2値化した後、輪郭情報を得ます。輪郭の面積や外接円などの情報から、それが台紙の外周なのか、シールの外周なのか、といったことが分かります。これは使えそう。
  • テンプレートマッチング
    これは使えそうです。春のパン祭りのシールは0.5点、1点、1.5点、2点、2.5点とある(それ以上ももしかしたら?)ので、それらのテンプレートを用意して一致度を出せば、どの点数か調べることができます。シールを貼るときに傾いたり、そもそも上向きに貼らない人も考えられるので、回転角の考慮が課題かと。
  • ハフ変換による円検出
    シールの領域を探すのに使えるかもしれませんが、上の輪郭検出のほうで十分かな?
  • 特徴量検出、マッチング
    色々やってみましたが、今回は用なしかな。またステレオビジョンなどで使ってみたいとは思います。

方式検討

いくつかのステップを踏む必要がありそうです。

  1. 台紙外形を取得する
    射影変換をするのと、スケーリング(台紙を基準として画像サイズを調整する)に必要になります。
  2. 射影変換実施
  3. シール外形、中心点取得
  4. シール位置でテンプレートマッチング
    テンプレートを回転させながら試す必要がある?

少し考えたこと

  • 自分で撮った画像を見ても、台紙が曲がってしまっていることがあるので、 輪郭検出した後にハフ変換で直線検出をし、4本の直線を検出、その交点を射影変換行列計算に与える点とする、というのでどうだろう?
  • 画像特徴量を勉強したとき、回転不変性を持つ特徴量も紹介されていた。
    今までやったところでは、特徴点を検出してからそこの特徴量を計算する、という形だったが、任意の点から特徴量を計算してもらうことはできるのか?

ここまで

今回はここまでの検討で。
考えたことだけなので面白い記事にはならず…
次回からここで挙げた項目を1つずつ検討していきたいと思います。