VisualAppletsでの実装

「NormalizedcrossCorreslation.va」では、式 55 に従って NCC アルゴリズムを使用して画像内のオブジェクトが識別されます。図 387 に、「NormalizedCrossCorrelation.vad」の基本設計構造を示します。

「NormalizedCrossCorrelation.vad」の基本設計構造

図 387: 「NormalizedCrossCorrelation.vad」の基本設計構造


画像内において Camera Link base構成のRGBカメラからの画像に対して、12x12ピクセルのイメージカーネルが次のように定義されます FIRkernelNxM operator 12x12。カーネルサイズは、識別するオブジェクトによって異なります。 オブジェクトは、次の式の参照画像と同一です の式 55。 次のオペレータを使用して、1つのカラーコンポーネント(ここでは赤)が選択されます SelectComponent 式に従ってNCCアルゴリズムでオブジェクトを識別するための 55 HierarchicalBox内 NCC。その結果として、識別されたオブジェクトの位置の値が「1」、その他の位置の値が「0」である、元の入力画像と同じサイズの二値画像がDMA経由でPCに送信されます。 このサンプルは、VisualAppletsのインストールディレクトリの examples\Processing\ObjectFeatures\NormalizedCrossCorrelation にあるRGBテスト画像「PCB.tif」向けに設定されています。 この画像の寸法は1024x712ピクセルです。図 388 に、テスト画像を示します。

テスト画像「PCB.tif」

図 388: テスト画像「PCB.tif」


PCB基板の左下にある6つの小さな穴が、この例で識別する対象のオブジェクトです。オブジェクトの寸法は 12x12 ピクセルです。 ボックス NCC 内の設計(図 387 を参照)には、これらのオブジェクトを検出するための式 55 に従ったアルゴリズムが実装されています。対応する式の部分に関する詳細については、リンクおよび HierarchicalBox の横にあるコメントボックスを参照してください。図 389 に、HierarchicalBox NCC の内容を示します。

HierarchicalBox NCCの内容

図 389: HierarchicalBox NCC の内容


以下で説明するように、設計サンプルを用途の画像およびオブジェクトに合わせて適応させることができます。RGB画像の代わりに グレースケール画像を使用する場合は、 オペレータ BaseRgbCamera をオペレータ BaseGrayCamera に置き換え、オペレータ SelectComponent を削除してください。

  1. オペレータ FIRkernelNXM_12x12 のサイズを、画像内で識別するオブジェクトの寸法に合わせて調整します。

  2. HierarchicalBox NCC で「右クリック」し、[Properties]で検索対象オブジェクトのピクセル数「K」を設定できます。オブジェクトサイズが12x12の場合、Kは144になります。[Properties]で二値化の 閾値も調整できます。 この閾値は、結果画像内でオブジェクトの位置を「1」として視覚化するために使用されます。

  3. HierarchicalBox NCC 内の CONST オペレータ One の出力で、カーネルの列数と行数をオブジェクトの寸法に合わせて調整します。

  4. 識別するオブジェクトのピクセル値ファイルを読み込みます(ファイルは ) へ FIRoperatorNxM IxR HierarchicalBox 内の NCC。プログラム "NCC.m" を使用してこのファイル("R.txt")を作成できます。

  5. HierarchicalBox Sigma_R 内の FIRoperatornxM Rmean_Mult_K および HierarchicalBox NCC に、同じファイルをロードします。

  6. ファイル "Rpower2.txt"(Matlab プログラム "NCC.m" で作成)を FIRoperatorNxM Sum_R_R HierarchicalBox 内の Sigma_Rにロードします。 このファイルの内容は、オブジェクトのピクセル値(2で割ったもの)の2乗です。 .

HierarchicalBox 内で Division (図 389を参照)最終結果 の方程式 55 は除算演算で計算されます DIV。ボックスの内容を確認できます Division (図 390.

HierarchicalBox Division のコンテンツ

図 390: HierarchicalBox Division の内容


除算は 6 つの小数ビットを使用して実行されます。つまり、 の結果は -1 から 1 ではなく -64 から 64 の間になります。特定されたオブジェクトの位置を視覚化するために、結果画像は次を使用して二値化されます IS_GreaterEqual operator しきい値。この例ではしきい値は 50 に設定されています。この値は、オペレータで直接変更することも、上記のようにボックス上で「右クリック」して変更することもできます NCC。PC に送信される結果画像を図 391に示します。PCB 基板の左下にある小さな穴の位置にあるピクセル(図 388を参照)の値は「1」になり、他のすべてのピクセルの値は「0」になります。結果画像は DMA を経由して PC に送信されます。これに代えて、さらなる画像処理ステップの入力として使用することもできます。

オブジェクトの位置に「1」が表示された結果画像(拡大表示)

図 391: オブジェクトの位置に「1」が表示された結果画像(拡大表示)