画像イメージの取り込み

画像イメージはいつ取り込まれるか

多くのビジョンシステムでは、処理すべき画像イメージを取り込むための特定のコマンドやステップを実行しなければなりませんが、Vision Guide 8.0では、ビジョンシーケンスの実行開始時に画像イメージが取り込まれるので、このような余分な手順を省略することができます。
必要な手順は、RuntimeAcquireプロパティーに適切な値を設定することだけです。ただし、RuntimeAcquireプロパティーは、“Stationary”にデフォルト設定されているため、ほとんどのアプリケーションで、このプロパティーを設定する必要はありません。デフォルト設定では、画像イメージはビジョンシーケンスの実行開始時に取り込まれるようになっています。他に、画像取得について設定するシーケンスプロパティーがあります。

同一の画像イメージを2つ以上の異なるビジョンシーケンスで使用する方法

同一の画像イメージを、2つ以上のビジョンシーケンスで使用したい場合は、1番目のビジョンシーケンスのRuntimeAcquireプロパティーを “Stationary”に設定し、他のビジョンシーケンスのRuntimeAcquireプロパティーを “None”に設定するだけです。他のビジョンシーケンスのRuntimeAcquireを “None”に設定することにより、このシーケンスは他の画像イメージを取り込むことをせず、1番目のビジョンシーケンスで取り込まれた画像イメージに基づいて、すべての処理を行います。

イメージバッファーの使用方法

各カメラにひとつのイメージバッファー (バッファー 0)があり、シーケンス内で共有できる10個のイメージバッファー (バッファー 1~10)があります。
ImageBufferシーケンスプロパティーで、使用するバッファーを指定します。デフォルトは、バッファー 0です。イメージバッファーを使用すると画像をメモリーに保存しておき、後で処理することができます。
例えば、オブジェクトのないシーケンスを作成して複数のバッファーに画像を取り込み、他のシーケンスで取り込んだ画像を処理することができます。

  ' seq1はビジョンオブジェクトなし - 複数のバッファーに画像を取得するためのシーケンス  
  VSet seq1.RuntimeAcquire, VISION_ACQUIRE_STATIONARY  
  VSet seq1.ImageBuffer, 1  
  VRun seq1 ' バッファー1へ画像を取り込む  
  Go Image2Pos  
  VSet seq1.ImageBuffer, 2  
  VRun seq1 ' バッファー2へ画像を取り込む  
  Go Image3Pos  
  VSet seq1.ImageBuffer, 3  
  VRun seq1 ' バッファー3へ画像を取り込む  
  ...  
  ' すでに取得している画像の処理を行う  
  VSet seq2.RuntimeAcquire, VISION_ACQUIRE_NONE  
  VSet seq2.ImageBuffer, 1  
  VRun seq2 ' バッファー1の画像処理を行う  
  VGet seq2.AllPassed, allPassed  
  ...  

画像を取得しない(処理のみを行う)シーケンスでイメージバッファー 1~10を使用すると、VRunの実行中は、Cameraプロパティーの値が無視されます。

外部トリガーでのイメージ取り込みの使用方法

Vision Guide 8.0は、外部信号によって、ビジョンシーケンスに画像イメージを取得させ、処理させるトリガー入力機能をサポートしています。トリガー入力の使用手順は、次のとおりです。
トリガー信号をカメラのコネクターへ配線します。ストロボ照明を使用するときは、カメラのストロボ出力信号へ配線することができます。
トリガー入力を使用するビジョンシーケンスのRuntimeAcquireプロパティーを “Strobed” に設定してください。
SPEL+プログラムで通常どおりVRunを実行して、AcquireStateプロパティーが、画像取り込み完了を示す値 “3”に変わるまで待ってください。次の例では、外部装置からトリガー信号を送っています。

Integer state  
Boolean found  
  
#define PICTURE_DONE 3  
TmReset 0  
VRun seq1  
Do  
  Wait 0.01  
  VGet seq1.AcquireState, state  
  If Tmr(0) > 10 Then  
    Error ER_STROBE_OT  ' User defined overtime error  
  EndIf  
Loop Until state = PICTURE_DONE  
VGet seq1.obj1.Found, found  
  • AcquireStateで画像の取り込み完了を待たなかった場合、自動的にタスクの次のビジョンコマンドは画像が取得されるまで待ってから実行されます。この場合、処理を継続する前に画像を取得しなければなりませんが、取得できない場合はタスクを中止しなければなりません。このため、トリガーが入力されず、画像が取得できなくてもプログラムを継続できるようにAcquireStateを確認することを推奨します。
  • Vision Guide 8.0 GUIからトリガー入力を使用しているシーケンスを実行するとき、システムはトリガーが入力されるまで待ちます。[中断]ボタンをクリックすると、トリガー入力待ちを中断できます。

注意


ビジョンシーケンスの実行結果は、外らん光や外部機器ノイズにより影響を受けることがあります。外らん光や外部機器ノイズにより、影響を受けると、取り込み画像が想定外の結果となり、検出位置結果がサーチエリア (検出エリア)内の不特定位置になる可能性があります。サーチエリアは、極力小さく、また誤検出に配慮した画像処理シーケンスの作成を行ってください。

カラー画像の使用方法

カラーカメラを設定すると、カラー画像を取得したりディスクから読み込むことができます。
ビジョンツールには、カラー画像を処理できるものとグレイスケール画像のみに対応しているものがあります。下表を参照してください。

ビジョンツール カラー処理 グレイスケール処理
Blob ×
Correlation ×
Geometric ×
Edge ×
Polar ×
Code Reader ×
OCR ×
ImageOp × ×
ColorMatch × ×
LineFinder ×
LineInspector ×
ArcFinder ×
ArcInspector ×
DefectFinder ×
BoxFinder ×
CornerFinder ×
Contour ×

ImageOpツールには、カラー画像を処理するColorFilter操作とColorStretch操作がありますが、その他のImageOp操作はグレイスケール画像を使用します。
ColorMatchツールは通常、カラー画像を処理するために使用されますが、グレイスケール画像にも使用できます(グレイに濃淡があります)。
カラー画像が取得されると、グレイスケール画像が必要なツールで使用するため、内部にグレイスケール画像も作成されます。シーケンスが実行されると、カラー処理を実行するオブジェクトがカラー画像を使用し、グレイスケール処理を実行するオブジェクトがグレイスケール画像を使用します。
カラー画像には、赤, 緑, 青の色相があります。ImageColorシーケンスプロパティーを使って取得する相を選択します。デフォルトでは、Allが選択され、3つの色相を使用したフルカラー画像が取得できます。
また、赤, 緑, 青, グレイスケールを選択することもできます。赤, 緑, 青を選択すると、グレイスケール画像は単色カラー画像になります。グレイスケール処理ツールを使用して、ひとつの色相を検索することができます。
Vision Guideウィンドウの[Run Object]ボタンをクリックしたとき、使用しているオブジェクトがグレイスケール処理ツールなら、ツールが処理中に使用するグレイスケールでビデオ画像が表示されます。