●はじめに
このような画像認識は、「パターンマッチング」、「テンプレートマッチング」、「テンプレート認識」、「画像認識」などとも呼ばれています。
一般的に、画像認識は、ソフト・画像処理ボード類等も含め非常に高価です。
このソフトは、USBカメラから直接入力できますのでボードも必要なく、非常に安価なシステムを作製できます。
ノートパソコンでもOKです。XYテーブル、外観検査等にご利用ください。
Excelから実行するサンプルソフトを付属していますので初めにお試しください。
・認識時間
200×200の認識エリア、50×50のモデルで500回Excelより精度2で認識テストした結果、0.254秒/1回 でした。
認識時間は使用するパソコン、認識エリア、モデルサイズ、認識精度等により異なります。
・周囲の環境
明るさが一定な方がいいですが、認識対象や用途等により異なりますので、事前にテストを十分に行ってください。
・USBカメラ・キャプチャーボード等の入力は機器や環境によっては動作できない可能性もあります。
ご自分の環境でご確認ください。
(まず機器の付属のドライバソフト等をインストールし動作可能な状態にしてください。
付属ソフトで動作しているかチェックしてください)
・検出可能な画像サイズはMAX640×480ピクセルです。
・ビデオの画像入力形式はRGB24にしてください。
RGB24に設定可能なカメラでないと使用できません。
・認識精度や動作は対象物、使用するカメラ、パソコンの環境などによって異なりますので十分にテストを行ってください。
・使用するカメラやパソコンのUSB環境によっては使用できない場合があります。
使用される環境で十分にテストを行ってください。
・下記のカメラで動作確認しました。
1)ELECOM UCAM-P1C30MNSV(USB2.0、30万画素)
2)Novac社製 CATCH EYE(USB1.1、30万画素))
・OSはWindows98、WindowsXPで動作確認を行いました。
【インストール】
ダウンロードされたファイルは圧縮されています。
1)「スタート」-「ファイル名を指定して実行」でダウンロードファイルを選択し、「OK」ボタンをクリックしてください。
2)「解凍先の指定」が出ますのでそのままでよければ「OK」ボタンをクリックしてください。 これで解凍できます。
3)「patrecog.dll」をWindowsのSystem32フォルダにコピーするか、DLLの宣言時パス指定をしてください。
・System32フォルダにコピーした場合のExcel VBA宣言例
Public Declare Function patmatch_open Lib "patrecog.dll"
(ByVal sdir As String) As Long
・c:\パターン認識 フォルダで使用する場合のExcel VBA宣言例
Public Declare Function patmatch_open Lib "c:\パターン認識\patrecog.dll"
(ByVal sdir As String) As Long
【アンインストール】
インストール先のフォルダごと削除してください。
もしSystem32フォルダにコピーされている場合は、「patrecog.dll」を削除してください。
レジストリは使用していません。
【お読みください.txt】
最新情報、使用条件等は添付の「お読みください.txt」を御覧ください。
●実行順序
開始時、認識ウィンドウオープン(patmatch_open)を行い、終了時には必ず終了処理(patmatch_close)を行ってください。
1)開始処理 認識ウィンドウをオープンします。
patmatch_open
2)モデルの登録 一度設定すると、変更がなければ2回目以降は必要ありません。
モデルは周囲と明るさが異なる、特徴がある範囲を設定すると認識率は高くなります。
patmatch_model
3)認識エリアの登録 一度設定すると、変更がなければ2回目以降は必要ありません。
エリアが小さいほど、認識速度が早くなります。
patmatch_area
4)認識の実行
patmatch_start
5)終了処理 認識ウィンドを閉じます
patmatch_close
●関数
patmatch_open
開始時に実行し、認識ウィンドウをオープンします。
・Excel VBA宣言例
Public Declare Function patmatch_open Lib "patrecog.dll" (ByVal
sdir As String) As Long
・パラメータ
sdir: 条件保存用ファイル、モデルファイル等の保存先フォルダを指定します。
・Excel VBA使用例
Dim ret As Long
Ret = patmatch_open(ActiveWorkbook.Application.Path)
・戻り値
-1: 認識ウィンドウがオープンされていないか、処理を実行中
0: OK
1: 認識エリア設定時のビデオ形式と違います。認識エリアを再設定してください。
2: モデルファイル(model.bmp)を開くことができませんでした。モデルを再設定してください。
3: モデルファイル(model.bmp)が見つかりません。モデルを再設定してください。
4: ビデオサイズは 横:640、縦480 ピクセル以下に設定してください。
5: ビデオ設定の形式をRGB24に設定してください。RGB24に設定できないカメラは使用できません。
6: USBカメラ等の画像入力が見つかりませんでした。カメラ等を接続後、再度実行してください。
7: avicap32.dll が見つからない為、実行できません
8: DLLオープンエラー
※.5,6のエラーが発生した場合、一度 patmatch_close で閉じ、カメラ接続等の対策後、再度実行してください。
[オープン状態]
・四角枠は登録されている、認識エリアを表示しています。
・十字はセンター位置を表示しています。
patmatch_model
認識モデルを設定します。
モデルは周囲と明るさが異なる、特徴がある範囲を設定すると認識率は高くなります。
逆の場合、誤認や認識できない可能性が高くなります。
・Excel VBA宣言例
Public Declare Function patmatch_model Lib "patrecog.dll" ()
As Long
・Excel VBA使用例
Dim ret As Long
ret = patmatch_model()
・戻り値
patmatch_open の戻り値と同じです。
[モデル設定中の画面]
枠内をドラッグすると移動できます。
枠の中央をドラッグすると枠サイズを変更できます。
patmatch_modelview
登録されている認識モデルを表示します。
・Excel VBA宣言例
Public Declare Function patmatch_modelview Lib "patrecog.dll"
() As Long
・Excel VBA使用例
Dim ret As Long
ret = patmatch_model()
・戻り値
patmatch_open の戻り値と同じです。
[モデル表示画面]
patmatch_area
認識エリアを設定します。
・Excel VBA宣言例
Public Declare Function patmatch_area Lib "patrecog.dll" ()
As Long
・Excel VBA使用例
Dim ret As Long
ret = patmatch_area()
・戻り値
patmatch_open の戻り値と同じです。
[認識エリア設定中の画面]
枠内をドラッグすると移動できます。
枠の中央をドラッグすると枠サイズを変更できます。
patmatch_start
認識を実行します。
Excel VBA宣言例
Public Declare Function patmatch_start Lib "patrecog.dll" _
(ByVal acc As Long, ByVal score As Single, ByRef retscore As Single,
ByRef nx As Long, ByRef ny As Long) As Long
・パラメータ
acc: 認識精度
score: 認識OKスコア
retscore: スコア(戻り値)
nx: X位置(戻り値)
ny: Y位置(戻り値)
・Excel VBA使用例
Dim ret As Long
ret = patmatch_start(acc, fn, fs, x, y)
'X位置
Range("G20") = x
'Y位置
Range("H20") = y
'スコア
Range("F20") = fs
DoEvents
・戻り値
認識に失敗すると、XYが-1になります。
patmatch_open の戻り値と同じです。
[認識できた画面]
左上に、認識スコア、X座標、Y座標が表示され、認識位置に十字が表示されます。
patmatch_format
ビデオ形式を設定します。
・Excel VBA宣言例
Public Declare Function patmatch_format Lib "patrecog.dll"
() As Long
・Excel VBA使用例
patmatch_format
・戻り値
0が返ります。
patmatch_video
ビデオ入力を設定します。 カメラの切り替えはここでできます。
・Excel VBA宣言例
Public Declare Function patmatch_video Lib "patrecog.dll" ()
As Long
・Excel VBA使用例
patmatch_video
・戻り値
0が返ります。
patmatch_compression
ビデオ圧縮を設定します。
・Excel VBA宣言例
Public Declare Function patmatch_compression Lib "patrecog.dll"
() As Long
・Excel VBA使用例
patmatch_compression
・戻り値
0が返ります。
patmatch_close
認識ウィンドウを閉じます。
・Excel VBA宣言例
Public Declare Function patmatch_close Lib "patrecog.dll" ()
As Long
・Excel VBA使用例
Dim ret As Long
Ret = patmatch_close()
・戻り値
patmatch_open の戻り値と同じです。
●Excelサンプルソフト
基本的に下記の順で行います。
(1) 認識ウィンドウを開きます。
(2) 認識モデルを設定します。「ビュー」ボタンでモデルを表示できます。
(3) 認識エリアを設定します。
(4) 認識を実行します。
事前に、「認識精度」と「認識OKスコア」を設定します。
「認識精度」: 1〜5の範囲で、1が精度が高く、5が低くなります。認識時間は精度が高くなるほど掛かります。
「認識OKスコア」: 0〜100%の範囲で設定します。高くすると、認識が難しくなります。
(5) 認識ウィンドウを閉じます。
・「ビデオ形式」ボタン: ビデオ形式を設定します。
・「ビデオ入力」ボタン: ビデオ入力を設定します。 カメラの切り替えはここでできます。
・「ビデオ圧縮」ボタン: ビデオ圧縮を設定します。
●XYテーブル等の位置決めで使用する方法
カメラを固定し、基板等の認識対象がテーブル上にあることとします。
[キャリブレーション]
(1)XYテーブルの中央付近に、認識率が高いモデルをおきます。
(2)認識し、XY位置を記憶します。
(3)XYテーブルを定量移動後、認識し、XY位置を記憶します。
これを数箇所行います。
(4)数箇所の平均をとり、モーターが1パルス移動すると、画面では何画素移動するかを計算します。
これをキャリブレーション値とします。
[位置決めの実行]
(1)基板等の認識対象がテーブルの適当な位置にセットされます。
(2)認識を実行し、センター値より何画素離れているかを計算します。
(3)これを、キャリブレーション値で割りパルス数を計算します。
(4)算出したパルス数分、テーブルを移動すると、認識モデルが中心に移動します。