ゴールデンテンプレート検証 (EChecker)
ECheckerには、学習と検査の2つの処理ステップが必要です。この2つの演算は全く異なるもので、個別のアプリケーションに分けてプログラミングできます。
学習では一連の参照画像の前処理を行います。各ピクセルの許容範囲を計算し、EasyObjectで使用できるように2枚の閾値画像に保存します。ゴールデンテンプレートが適切であるかテストして、必要に応じて学習プロセスパラメータを調整します。学習は1回行えば繰り返し行う必要はありません。学習結果は後から使用できるようにゴールデンテンプレートにアーカイブされます。
検査には、画像処理、位置合わせおよび正規化、許容範囲外のピクセルの検出、品質チェック、必要であれば検査パラメータの調整が含まれます。
以下では、学習および検査ステップで使用されるAPI関数について紹介します。

参照画像が前処理されてピクセルの許容範囲が計算され、EasyObject(レガシー)で使用できるように2枚の閾値画像に保存されます。学習結果は後から使用できるようにモデルファイルにアーカイブされます。
参照画像がディスクに保存済みであるのか、取り込まれた画像をオンザフライ方式で処理するのかによって、2とおりの演算モードがあります。
いずれの演算もオンライン処理中は使用できません。
モデルを定義するには、次の手順で演算を実行します:
- 最初の参照画像で1つまたは2つのROIを配置し、ロケーションパターンを定義します(基準マークまたはランドマーク)。
移動の自由度を定義するためにこれらのROIは他の2つのROIに囲まれており、パターンマッチング用のサーチエリアとして使用されます。ROIはハンドルをドラッグすることで対話形式で位置決めできます。
EChecker ではドラッグ操作が制御されます。
- Draw:ROIおよびハンドルをグラフィックとしてレンダリングします。
- HitTest:いずれかのハンドル上にあるカーソルを検出します。
- Drag:ハンドルを移動します。
これらの関数は3つすべてのROI(パターン、サーチ、検査対象)に適用されます。その際、ユーザーは次のことにすぐに気づきます:
- パターンROIをドラッグすると、許容値が一定になるように、対応するサーチROIが自動的に調整されます。
- サーチROIをドラッグすると、パターンに対して対称的になるようにそのサイズが調整されます。
- サーチエリアを変更すると、検査対象のROIが画像内で最も大きい使用可能な大きさに設定されます。
パターンROIとサーチROI
- 学習する画像がディスク上に保存されている場合、ファイル名のリストを登録し、後で単一コマンド内で学習を実行する際に使用できます(バッチ学習、オンザフライ学習と対照的)。
- 検査される領域を区切るために別のROIが定義されます。この領域には固定された部分(基準マークとともに移動)のピクセルのみが含まれるようにし、背景が含まれないようにします。
検査対象ROI
- 全画像が統計の学習を使用して処理および平均化されます。視野内での検査対象部分のずれに対処するために位置合わせが、全体的な照明の変化に対処するためにグレーレベル正規化が行われます。
- 理想では少なくとも16枚の画像を学習パスで使用し、低い/高い閾値画像を作成します。ユーザーはグローバルな許容値パラメータを使って許容範囲を強化または緩和できます。Learn(ELearningMode_Ready) を呼び出します。属性RelativeTolerance によって許容範囲が調整されます。
- モデルをファイルに保存する際には、さまざまなROIの位置、基準マークのパターン画像、グレーレベル正規化パラメータ、閾値画像などの関連情報もまとめて保存できます。
ECheckerモデルのコンポーネント

アライメントROIが設定されたら、その基準マークのロケーションの信頼性をチェックする必要があります。最良の方法は、学習画像を読み込んでそれを表示させ、Registerメンバ関数を使ってその中でパターンの位置を確認するやり方です。それで位置確認が行えない場合は、それぞれの問題に応じたさまざまな補正方法があります:
- パターンの選択が不適切な場合: より安定した他のROIを定義してください。
- サーチエリアが狭すぎるため、パターンが途中で切れている場合: サーチエリアを拡大してください。
- 代表的な画像として適切でない(欠陥がある)場合: 学習セットから削除します。
注記: メンバ Registerを最初に呼び出す際、EasyMatchコンテキストのアライメントのLearnメンバが呼び出され、パターンで学習が実行されます。メンバLearn(ELearningMode_Reset)が呼び出されない限り、これらのパターンは後続のアライメント演算に使用されます。最初に使用される画像は、アライメントパターンの定義とコントラスト測定の両方の基準として使用されます。この画像は母画像と呼ばれます。
学習画像がディスクに保存されている場合:ファイルが正常に読み込まれて参照画像と見なされるたびに、EChecker オブジェクトによってリストにファイルのパス名が追加されます。その後、すべてのファイルを単一コマンド内で処理できます。

ROIの位置決めとパターン学習が実行された後(Register 演算)、2つのパスがまだ必要です:
- 部品画像の中心傾向を表す、理想的なノイズフリーの画像を計算するには「平均」パスが必要です。
各画像で位置調整および正規化を行います(Register)。演算が正常に行われたら(適切なパターン位置)、Learn(ELearningMode_Average)を呼び出してすぐに処理を行うか(オンザフライ学習)、または
AddPathNameで遅延処理(バッチ学習)を行います。 - 「偏差」パスは、平均画像を基準とした変動を測定します。
各画像で位置調整および正規化を行います(Register)。演算が完了したら、
Learn(ELearningMode_RmsDeviation) (大きな偏差を強調)または
Learn(ELearningMode_AbsDeviation) を呼び出して、すぐに処理を行います(よりロバストで、たいていの状況で推奨)。
原則として、この2つのパス中に表示される画像は同じでなければなりません。
画像をアーカイブしたくない場合は、2つの画像セットを使用できます(オンザフライ学習)。この2枚の画像が同じサイズである必要はありません。
学習セットサイズとして少なくとも16枚の画像を推奨します。
あるいは、BatchLearnを呼び出して、ファイルリストに追加されている全画像に2つのパスを実行することもできます。
閾値化の調整
Learn(ELearningMode_Ready)。属性RelativeToleranceを変更して許容範囲を調整できます。

検査手順は簡単です。サンプル画像がモデルファイルに合わせて位置合わせされ、グレーレベルが正規化されます。
注記: 検査対象ROIは母画像上になければなりません。パターンとサーチエリアと同じように対話形式で位置決めできます。このROIも他のROIと同時に設定できます。探索許容値を変更すると、検査対象ROIが使用可能な最も大きい範囲にリセットされます。
ECheckerによって検査時にグローバルなRelativeTolerance属性が調整されることがあり、そのときはEasyObject(レガシー)で使用された低い/高い閾値画像が変更されます。
学習後に変更できるのは EChecker パラメータのみです。
![]() |
![]() |
![]() |
![]() |
検査する画像... | ... 高い/低い閾値画像... | ... 検出されたブロブ |
結果画像はブロブ解析のために ECodedImageオブジェクトに渡されます。このオブジェクトは近傍ピクセルをグループ化してブロブを形成し、小さいブロブ(通常はノイズ)を破棄して、幾何学的な特徴(ロケーション、サイズ、方向など)を測定します。EasyObjectを参照。
それからこの画像は低い/高い参照画像と比較されます(サンプルとテンプレートがピクセル単位で比較され、許容範囲に入らないピクセルが検出されます)。欠陥ピクセルは標準のEasyObject機能によって対処されます。

ECheckerはテンプレートとサンプル間の目に見える相違点を検出し、重大な相違点が強調された欠陥マップで欠陥を報告します。その後、EasyObjectのブロブ解析ツールによって欠陥の位置を特定し、その大きさ、方向、明るさなどをもとに分類します。このような処理が最適であるのは、検査対象となるアイテムが固定されており(形状が変化しない)、照明が均等で、画像の視覚的な再現性が確保されている場合で、このようなときに点と点の比較が意味をなします。
参照画像と欠陥のあるサンプル画像

複数の参照画像を取り込むことで、標準的なグレーレベルの変化や許容範囲の評価が最適化されます:
- 同じ部分の連続画像で何も変化がない場合(静的テスト)、ノイズ分布に相当するグレーレベル分布が得られます。
- 欠陥のない異なる部分の連続画像では、部分による変化が現れます。
許容されるグレーレベル範囲