【HALCON】OCRやってみた

プログラミング

目次

1. 概要

アナログカウンターの数字をモニタするため、MVtec社の画像処理ライブラリHALCONを使ってOCR(Optical Character Recognition/Reader、オーシーアール、光学的文字認識)をやってみました。
OCRの処理構築は初めてトライしたのですが、HALCONに同梱されているサンプルプログラムを参考にして、なんとか独学で構築することができました。

ここでは以下の内容について紹介します。

  1. HALCONからカメラの制御をおこなう
  2. 取り込んだ画像に対して画像処理(OCR)を実行する

2. 今回使用した開発環境

  • OS : Windows10 64bit
  • 画像処理ライブラリ : HALCON  version11
  • カメラ:Basler社 Pulse(産業用の安いUSBカメラ)
  • カメラコントロールソフトウェア: pylon

詳細は割愛しますが、カメラをパソコンに接続して、pylon経由でHALCONから撮像などの操作を行います。そのためには、HALCONとpylonをインストールするのに加えて、pylon用のインターフェースと呼ばれるdllファイルをインストールする必要があります。これでHALCONがpylonを制御できるようになります。今回のようなカメラと画像処理を組み合わせたシステム構築をしようとした際、実はこの辺りの環境整備が面倒だったりします。HALCONのバージョンとpylonのバージョンの互換性もありますので、環境構築する際には注意が必要です。詳細はHALCONの総代理店である(株)リンクスに問い合わせるのがよいでしょう。

3. 処理の概要

   3.1. HALCONからカメラの制御をおこなう

あまり高周期で解析する必要はありませんので、フレームレートは1にしています(1fps)。フレームレートは低いもののリアルタイム処理を実行しています。

   3.2 取り込んだ画像に対して画像処理(OCR)を実行する

OCRといっても何も特別な処理ではなく、機械学習と同じ処理になります。
事前に正解画像を覚えさせて、撮像画像を正解画像と比較して、最も近いものを出力する、というイメージです。

アナログカウンターの数字(0~9)を処理したいだけなので、あらかじめ学習済みの分類器(HALCONに用意されている)を使ってもイケるかなとおもったのですが、精度が低かったです。やはり自分自身で学習させた分類器を使うほうが精度は高くなることがわかりました。また、撮像画像の中の文字に対して、Regionが正しく抽出できることが重要であることがわかりました。Regionが正しく抽出できさえすれば、ほぼうまく判別できそうです。

4. 結果

アナログカウンターの数字をモニタしている様子はYouTubeこちらから見ることができます。
アナログカウンターの数字は指でぽちぽち変えていますが、OCRの処理結果も追従してくれています。

コメント

タイトルとURLをコピーしました