ビジョンオブジェクトの使い方

ここでは、さまざまなビジョンオブジェクトのレイアウトや操作方法の違いについて説明します。

注意


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

ImageOp オブジェクト (画像操作)

ImageOp オブジェクトの概要
ImageOpオブジェクトは、指定された領域について、形態を変える (広げる, ふさぐ, 縮小, 膨張), コンボリューション (鮮明にする, 滑らかにする), ひっくり返す, 2値化する, 回転することができます。
ImageOp領域にある他のビジョンオブジェクトは、ImageOpのアウトプット上でその操作を実行します。例えば、ImageOpツールを使って、ビデオ画像イメージ全体に縮小操作を実行して、それからBlobオブジェクトをImageOpサーチウィンドウ内に置いて、縮小された画像イメージを検索することができます。

ImageOp オブジェクトのレイアウト
ImageOpオブジェクトには、下に示すように画像イメージ処理ウィンドウがあります。

ImageOpオブジェクトのプロパティー
ImageOpオブジェクトで使われるプロパティーの一覧を次に示し、簡単に説明します。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0 プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定
AngleObject

どのオブジェクトから自動的に回転するかを定義

画像イメージは、指定されたオブジェクトのAngleリザルトを使って、反時計回りに回転します。Operationプロパティーは、Rotationに設定してください。設定しないと、このプロパティーは無視されます。

デフォルト: None

AngleObjectResult AngleObject プロパティーが使用するリザルトを指定
Caption

見出しをImageOpオブジェクトに割りあてる

デフォルト: 空欄

ColorMode

カラー処理に使用する色空間(RGB/HSV)を設定

デフォルト: RGB

CurrentModel

実行時のみ

OperationがColorFilterに設定されている場合、ModelColorプロパティーやVTeachで、使用するモデルを指定CurrentModel = 0の場合、背景は設定されています。

デフォルト: 0

Description

ユーザー指定の説明を設定

デフォルト: 空欄

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor オブジェクトの検出不良時の色を選択
Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: None

FillHoles

2値画像の穴を埋めるかを指定

OperationをBinarizeに設定したときのみ表示されます。

デフォルト: False

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

ImageBuffer1

OperationプロパティーをSubtractAbsに設定したときの、第1イメージをバッファー番号で指定

SubtractAbsは、(第1イメージ - 第2イメージ)の絶対値画像を算出します。

ImageBuffer1File

ImageBuffer1を“File”に設定した時の、バッファーに格納する画像ファイルのパスを指定

デフォルト: None

ImageBuffer2 OperationプロパティーをSubtractAbsに設定したときの、第2イメージをバッファー番号で指定
ImageBuffer2File

ImageBuffer2を“File”に設定した時の、バッファーに格納する画像ファイルのパスを指定

デフォルト: None

Iterations

指定された操作を実行する回数を定義

デフォルト: 1

KeepRGBRatio

処理にRGB比率を維持するかを指定

デフォルト: True

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

MaxRGB

ColorStretch処理で使用する色の最大値を定義

デフォルト: 255, 255, 255

MinRGB

ColorStretch処理で使用する色の最小値を定義

デフォルト: 0, 0, 0

ModelColor

実行時のみOperationプロパティーがColorFilterに設定されている場合、実行時にRGB色の値を直接入力し、モデルや背景色を教示

デフォルト: RGB (0, 0, 0)

ModelColorTol

実行時のみモデル色の許容差を設定画素色が許容差の範囲内であれば、画素は変化しません。

デフォルト: 10 (ColorMode = RGB), 0,0,50 (ColorMode = HSV)

ModelName 実行時のみ現在使用しているモデルの名前を設定
ModelWin

実行時のみ

1コールでモデルウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す

ModelWinHeight モデルウィンドウの高さを定義
ModelWinLeft モデルウィンドウの最左端の位置を定義
ModelWinTop モデルウィンドウの最上端の位置を定義
ModelWinWidth モデルウィンドウの幅を定義
Name

ImageOpオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: ImgOp01

NumberOfModels

実行時のみ使用しているカラーモデル数実行中、このプロパティーを設定すると、CurrentModel, VTeachを使用し、カラーモデルを教示できます。

デフォルト: 1

Operation

画像処理の種類を設定

Operationプロパティーの詳細は、以下を参照してください。

"Vision Guide 8.0 プロパティー&リザルトリファレンス"

デフォルト: Open

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType オブジェクト検出時の良否判定の条件を定義
Polarity オブジェクトと背景の差 (明るい背景に暗いオブジェクトか、暗い背景に明るいオブジェクトか)を定義
RotationAngle

操作プロパティーをRotationに設定したとき、画像イメージを回転する角度を定義

デフォルト: 0

RotationDirection 回転操作時の、回転方向を指定
SearchWin 実行時のみ1コールでサーチウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す
SearchWinAngle 被検索領域の角度を定義
SearchWinCenterX 被検索領域の中心のX座標値を定義
SearchWinCenterY 被検索領域の中心のY座標値を定義
SearchWinHeight

被検索領域の高さを定義 (単位: ピクセル)

デフォルト: 100

SearchWinLeft 被検索領域の最左端の位置を定義 (単位: ピクセル)
SearchWinTop 被検索領域の最上端の位置を定義 (単位: ピクセル)
SearchWinType 被検査領域のタイプ (Rectangle, RotatedRectangle, Circle)を定義
SearchWinWidth

被検索領域の幅を定義 (単位: ピクセル)

デフォルト: 100

ShiftObject Shift処理を行うオブジェクトを設定
ShiftX X方向のShift量を設定
ShiftY Y方向のShift量を設定
ThresholdAuto 対象物 (オブジェクト)、背景、画像イメージのエッジを表すグレイレベルのしきい値を自動設定するか否かを設定
ThresholdBlockSize

OperationプロパティーをBinarizeAdaptiveに設定したときに使用する、しきい値を決定するために近傍領域を参照する範囲を定義

デフォルト: 1/16ROI

ThresholdColor

しきい値の範囲内にあるピクセルの色を定義

デフォルト: 黒色

ThresholdHigh

OperationプロパティーをBinarizeに設定したときに使用する、しきい値を高く維持する設定を定義

デフォルト: 128

ThresholdLevel

OperationプロパティーをBinarizeAdaptiveに設定したときに使用する、近傍領域との輝度差の割合を定義

デフォルト: 15%

ThresholdLow

OperationプロパティーをBinarizeに設定したときに使用する、しきい値を低く維持する設定を定義

デフォルト: 0

ThresholdMethod 2値化の処理方法を設定
ZoomFactor

OperationプロパティーをZoomに設定したときに使用する、ズーム値を設定

デフォルト: 1

ImageOpオブジェクトリザルト
下の一覧は、ImageOpオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Passed 検出結果が良か否かを返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)
FocusValue

相対的なフォーカスレベルを返す

最小値になったときが最適なフォーカスです。

OperationプロパティーをDetectFocusに設定したときのみ表示されます。

ImageOpオブジェクトの使用方法
これまでVision Guide ImageOpオブジェクトの使い方を理解するための基礎を説明してきました。このセクションで説明するImageOpオブジェクトを使うのに必要な手順は、次のとおりです。

  • 新規ImageOpオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • ImageOpオブジェクトに関連するプロパティーの設定
  • ImageOpオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

次の手順を始める前に、新規ビジョンシーケンスを作成するか、または使用するビジョンシーケンスを選択しておいてください。作業するビジョンシーケンスがなければ、 [新規シーケンス]ボタンをクリックして、新しいビジョンシーケンスを作成することができます。Vision Guideウィンドウの[シーケンス]タブをクリックしてから、[シーケンス]タブの上部にあるドロップダウンリストボックスをクリックして、以前に作成したシーケンスを選択することもできます。新規ビジョンシーケンスを作成する、または以前に定義したシーケンスを選択する方法の詳細は、以下を参照してください。
ビジョンシーケンスの新規作成

Step 1: 新規ImageOpオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [ImageOp (画像操作)]ボタンをクリックします。
  2. マウスを画像イメージ表示部に動かしてください。マウスポインターがImageOpオブジェクトアイコンに変わります。
  3. 画像イメージ表示部の目的の位置にアイコンが来るまで、マウスを動かし続けてください。それから、マウスを左クリックして、オブジェクトを作成します。
  4. オブジェクト名は自動的に作成されます。この例では、このシーケンスで最初に作成されたImageOpオブジェクトなので、“ImgOp01”となります。(名前の変更方法は、後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
次に示すようなImageOpオブジェクトがあります。

新規ImageOpオブジェクトのレイアウト

  1. ImageOpオブジェクトの名前ラベルをクリックして、ボタンを押さえたまま、ImageOpオブジェクトをサーチウィンドウの左上に来る位置にドラッグしてください。
  2. サーチウィンドウサイズハンドルを使って、ImageOpオブジェクトサーチウィンドウのサイズを変えてください。マウスポインターをサイズハンドルに動かして、それからマウスの左側ボタンを押さえながら、ハンドルをドラッグして、ウィンドウの大きさを変えます。

Step 3: ImageOpオブジェクトプロパティーの設定
ImageOpオブジェクトプロパティーの設定を行います。よく使われるImageOpオブジェクトに特有のプロパティーを、いくつか下に説明します。別のビジョンオブジェクトで使われる、Graphicsなど他のプロパティーの説明は、「Vision Guide 8.0 プロパティー&リザルトリファレンス」、またはImageOpプロパティー一覧にあります。

項目 説明
Nameプロパティー

新規に作成されたImageOpオブジェクトに、デフォルトとして与えられるオブジェクト名は “ImgOp**”です。**は、1つのビジョンシーケンス内で複数のImageOpオブジェクトを用いるとき、それらのImageOpオブジェクトを区別するための番号です。

ビジョンシーケンスで1番目に用いられるImageOpオブジェクトには、 “ImgOp01”というオブジェクト名がデフォルトで設定されます。

オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でImageOpオブジェクト名を表示する場所は、すべて変更後の名称に変わります。

Operationプロパティー どの画像イメージ操作を実行するかを決定ImageOpオブジェクトにもっとも重要なプロパティーです。
Iterationsプロパティー 反復する回数を決定
Polarityプロパティー

暗いオブジェクト、それとも明るいオブジェクトで操作を実行するかを決定

デフォルト設定は暗いオブジェクトです。変更する場合は、PolarityプロパティーのValueフィールドをクリックしてください。選択肢が2つ(“DarkOnLight”と“LightOnDark”)のドロップダウンリストがあります。使用する選択肢をクリックしてください。

ImageOpオブジェクトをテストして、後で必要な他のプロパティーを設定することもできます。

Step 4: ImageOp オブジェクトカラーの教示
Operationプロパティーが “ColorFilter”に設定されている場合、背景とともにフィルターにかける色をひとつ以上ティーチしてください。Vision Guideウィンドウの[ティーチ]ボタンが有効になり、ImageOpメインウィンドウに長方形のモデルウィンドウが表れます。
[ティーチ]ボタンをクリックすると、次のような画面が表示されます。最初は、モデルがない状態になります。

[追加]ボタンをクリックすると、新しいフィルターカラーがデフォルト色(黒)で追加されます。背景色、または、フィルターカラーをひとつ選択し、[ティーチ]ボタンをクリックすると、モデルウィンドウにある画素の平均色が使用されます。または、RGB値を直接入力することもできます。
モデルウィンドウを開いている間、ウィンドウのサイズと位置を変更することができます。色を追加したり、サイズや位置を変更した後、画面を閉じずに[ティーチ]ボタンをクリックすると、新しい色を教示します。
ColorModeプロパティーはTeachダイアログが表示されていても変更できます。
ColorModeがRGBの場合、各色のToleranceの値は1つです。ColorModeがHSVの場合、各色のToleranceの値は3つです。(hTol, sTol, vTol)
[削除]ボタンは、フィルターカラーを削除します。背景色は削除できません。

Step 5: ImageOp オブジェクトのテスト
ImageOpオブジェクトを実行するには、[オブジェクト]タブの左下にある[オブジェクト実行]ボタンをクリックしてください。画像イメージに与えるImageOpツールの効果がわかります。

Step 6: プロパティーの調整と再テスト
ImageOpオブジェクトを何回か実行したあと、問題を見つけたり、プロパティー設定を微調整する必要があるもしれません。一般的な微調整の方法について次に説明します。
アプリケーションによっては、ImageOpオブジェクトの微調整が必要となる場合があります。ImageOpオブジェクトの微調整に関する主要なプロパティーについて、次に説明します。

項目 説明
Iterations 目的の画像イメージ操作の実行回数を決定
ThresholdColor, ThresholdLow, ThresholdHigh, ThresholdAuto

Binarize操作のパラメーターを調整

「Vision Guide 8.0 プロパティー&リザルトリファレンス」の「ThresholdColor プロパティー」、「ThresholdLow プロパティー」、「ThresholdHigh プロパティー」、「ThresholdAuto プロパティー」の説明を参照してください。

プロパティーの調整が完了し、ImageOpのテストを行って満足なリザルトを得ることができたら、ビジョンオブジェクトの作成は完了です。他のビジョンオブジェクトを作成したり、ビジョンシーケンス全体の設定やテストを行う次のステップに進むことができます。

Geometricオブジェクト (幾何学的形状)

Geometricオブジェクトの概要
Geometricオブジェクトは、幾何学的形状対象物に基づいて、モデルを検出します。このオブジェクトは、画素間相関の代わりに、エッジを基準にした幾何学的形状対象物でモデルを検出します。Geometricオブジェクトは、スケールや角度の変化量に加えて、照明変化量(鏡面反射を含む)、モデルに対する許容誤差が大きいなど、相関パターンマッチングより役に立つ点があります。
通常、Geometricオブジェクトは、オブジェクトの対象物を見つけて、位置と方向を決定するのに使われます。これは、ロボットをピックアップ位置や配置位置に動かすために、パーツ位置を検出するのによく使われます。

Geometricオブジェクトのレイアウト
Geometricオブジェクトには、下に示すようにサーチウィンドウ、モデルウィンドウがあります。

Geometricオブジェクトのプロパティー
下の一覧は、Geometricオブジェクトのプロパティーを簡単に説明した概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0 プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

対象物が検出されたと判断するための形状スコアの値を指定

対象物のスコアが設定値を超えているものを検出します。設定値を低く設定すると、誤検出の原因となります。

デフォルト: 700

AngleEnable

Geometricサーチが角度検出付き (回転)サーチを実行するかどうかを指定

Geometricオブジェクトのモデル登録の前に指定されます。

AngleOffset

回転のオフセット値を設定

デフォルト: 0.000

AngleRange 一連の回転モデルの登録範囲を指定
AngleStart 角度サーチの中心を指定
CalRobotPlacePos 設計時とプログラム実行時に RobotPlacePos をキャリブレーションする
Caption 見出しをGeometricオブジェクトに割りあてる
CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

CenterPntObjResult

CenterPointObjectプロパティーからどのリザルトを使うのかを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にGeometricオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す
CenterPntOffsetY サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す
CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

SearchWinTypeがRotatedRectangleに設定されている場合、サーチウィンドウはAngleリザルトにしたがって回転します。

デフォルト: False

CheckClearanceFor クリアランス (隙間)を確認するオブジェクトを設定
ClearanceCondition クリアランス (隙間)の判断方法を指定
Confusion

検出する画像イメージ中に予想される複雑さの度合い量を示す

検索している実際の対象物ではない対象物で得られる形状スコアの最大値です。

CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

DetailLevel 検索中にエッジが検出されたとみなされるレベルを選択
EditWindow 被検索領域の検出マスクを定義
Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor オブジェクトの検出不良時の色を選択
Frame

指定されたフレームに関して、作業中のオブジェクトの検索位置を規定

(Geometricオブジェクトをフレームに関係して位置決めすることができます。)

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics 表示するグラフィックを指定
LabelBackColor オブジェクトラベルの背景の色を設定
ModelObject 検索に使用するモデルを決定
ModelOrgAutoCenter モデルは固定基準点を持っていて、モデルウィンドウではモデルの位置はその基準点で表わされます。この固定基準点は、モデル原点と呼ばれています。ModelOrgAutoCenterプロパティーによって、モデル原点は、モデルウィンドウの中心に設定できます。
ModelOrgFindCenter モデル原点を、登録済みモデルのエッジ中心に設定します。
ModelOrgX モデル原点のX座標値 (サブピクセルで設定可)
ModelOrgY モデル原点のY座標値 (サブピクセルで設定可)
ModelWin

実行時のみ

1コールでモデルウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す

ModelWinAngle モデルウィンドウの角度を定義
ModelWinCenterX モデルウィンドウの中心のX座標値を定義
ModelWinCenterY モデルウィンドウの中心のY座標値を定義
ModelWinHeight モデルウィンドウの高さを定義
ModelWinLeft モデルウィンドウの最左端の位置を定義
ModelWinTop モデルウィンドウの最上端の位置を定義
ModelWinType モデルウィンドウのタイプを定義
ModelWinWidth モデルウィンドウの幅を定義
Name Geometricオブジェクトに独自のオブジェクト名を割りあてるデフォルト: Geom01
NumberToFind

作業中のサーチウィンドウで検出するオブジェクトの数を定義

(Geometricオブジェクトは一度に複数のオブジェクトを検出できます。)

PassColor オブジェクト検出で良判定時の色を選択
PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

RejectOnEdge

サーチウィンドウのエッジにかかって検出されたパーツを除外するかどうかを決定

通常は、Trueで使用してください。誤検出が発生した結果、サーチウィンドウに接する検出が除外でき、誤検出リスクを軽減できます。

SaveTeachImage モデルをティーチするときに、画像ファイルに保存するかを設定
ScaleEnable スケーリングを有効にする
ScaleFactorMax ScaleTarget値に適用する最大倍率を設定、または返す
ScaleFactorMin ScaleTarget値に適用する最小倍率を設定、または返す
ScaleTarget 検索するモデルの予想スケールを設定、または返す
ScaleTargetPriority オブジェクト検出時に、ScaleTarget近傍を優先的に検出するか否かを設定、または返す
ScoreMode Fail時のリザルトを表示させるための閾値を設定、または返す
SearchReducedImage 検索時に縮小画像を使用するか否かを設定、または返す
SearchPolarity 検索の極性を設定、または返す
SearchWin

実行時のみ

1コールでサーチウィンドウの左端, 上端, 高さ, 幅、または、中心のX座標, 中心のY座標, 円内周の半径サイズ, 円外周の半径サイズのパラメーターを設定、または返す

SearchWinAngle 被検索領域の角度を定義
SearchWinAngleEnd 被検索領域の終了角度を定義
SearchWinAngleStart 被検索領域の開始角度を定義
SearchWinCenterX 被検索領域の中心のX座標値を定義
SearchWinCenterY 被検索領域の中心のY座標値を定義
SearchWinHeight 被検索領域の高さを定義 (単位: ピクセル)
SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinPolygonPointX1 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第1頂点のX座標値を定義
SearchWinPolygonPointY1 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第1頂点のY座標値を定義
SearchWinPolygonPointX2 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第2頂点のX座標値を定義
SearchWinPolygonPointY2 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第2頂点のY座標値を定義
SearchWinPolygonPointX3 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第3頂点のX座標値を定義
SearchWinPolygonPointY3 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第3頂点のY座標値を定義
SearchWinPolygonPointX4 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第4頂点のX座標値を定義
SearchWinPolygonPointY4 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第4頂点のY座標値を定義
SearchWinPolygonPointX5 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第5頂点のX座標値を定義
SearchWinPolygonPointY5 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第5頂点のY座標値を定義
SearchWinPolygonPointX6 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第6頂点のX座標値を定義
SearchWinPolygonPointY6 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第6頂点のY座標値を定義
SearchWinPolygonPointX7 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第7頂点のX座標値を定義
SearchWinPolygonPointY7 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第7頂点のY座標値を定義
SearchWinPolygonPointX8 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第8頂点のX座標値を定義
SearchWinPolygonPointY8 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第8頂点のY座標値を定義
SearchWinPolygonPointX9 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第9頂点のX座標値を定義
SearchWinPolygonPointY9 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第9頂点のY座標値を定義
SearchWinPolygonPointX10 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第10頂点のX座標値を定義
SearchWinPolygonPointY10 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第10頂点のY座標値を定義
SearchWinPolygonPointX11 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第11頂点のX座標値を定義
SearchWinPolygonPointY11 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第11頂点のY座標値を定義
SearchWinPolygonPointX12 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第12頂点のX座標値を定義
SearchWinPolygonPointY12 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第12頂点のY座標値を定義
SearchWinRadiusInner 被検索領域の円内径を定義
SearchWinRadiusOuter 被検索領域の円外径を定義
SearchWinTop 被検索領域の最上端を定義 (単位: ピクセル)
SearchWinType 被検査領域のタイプ (Rectangle, RotatedRectangle, Circle, Arc, Polygon)を定義
SearchWinWidth 被検索領域の幅を定義 (単位: ピクセル)
SeparationAngle 検出されたオブジェクト間の許容最小角度を設定、または返す
SeparationMinX 検出されたオブジェクト間のX軸方向の許容最短距離を設定、または返す
SeparationMinY 検出されたオブジェクト間のY軸方向の許容最短距離を設定、または返す
SeparationScale 検出されたオブジェクト間の許容最小スケール差を設定、または返す
SharedEdges 検出されたオブジェクト間のエッジ共有を許容するかどうかを設定、または返す
ShowModel

教示モデルをさまざまなズーム設定によって表示

モデルの原点変更や検出マスクを設定

SkewFitEnable

モデルに対して歪み変形を適応するかを設定

デフォルト: False

Smoothness 幾何学的形状エッジ抽出フィルターの平滑化レベルを設定、または返す
Sort オブジェクトのリザルトを並び替える順番を選択
Timeout Geometricオブジェクトの最長サーチ時間を設定、または返す

Geometricオブジェクトのリザルト
下の一覧は、Geometricオブジェクトのリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle

検出されたパーツに関係する回転量を返す

(最初に教示された方向に対して、パーツが持っている回転量を定義)

CameraX カメラ座標系における検出パーツ位置の (モデル原点を基準にした)X座標を返す
CameraY カメラ座標系における検出パーツ位置の (モデル原点を基準にした)Y座標を返す
CameraXYU

実行時のみ

カメラ座標系における検出パーツ位置のCameraX座標, CameraY座標, CameraU座標を返す

ClearanceOK クリアランス (隙間)の判断結果を返す
Found オブジェクトが検出されたかどうか (対象物、またはパーツがAcceptプロパティーの現在の設定を超える形状スコア値を持っているかどうか)の値を返す
FoundOnEdge

Geometricオブジェクトがサーチウィンドウのエッジに密接して検出されたときに、Trueを返す

FoundOnEdgeがTrueのとき、FoundリザルトはFalseに設定されます。

NumberFound

検出されたオブジェクト数を返す

(最低0個から、最高はNumberToFindプロパティーで設定した検出個数になります。)

Overlapped 検出されたオブジェクト同士に重なりがある場合にTrueを返す
Passed 検出結果が良か否かを返す
PixelX 検出パーツ位置の (モデル原点を基準にした)X座標をピクセルで返す
PixelY 検出パーツ位置の (モデル原点を基準にした)Y座標をピクセルで返す
PixelXYU

実行時のみ

検出パーツ位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

Reversed 検出されたオブジェクトがモデルと極性反転している場合にTrueを返す
RobotX ロボット座標系における検出パーツの (モデル原点を基準にした)X座標位置を返す
RobotY ロボット座標系における検出パーツの (モデル原点を基準にした)Y座標位置を返す
RobotU ロボット座標系における検出パーツのU座標位置を返す
RobotXYU

実行時のみ

ロボット座標系における、検出パーツ位置のRobotX座標, RobotY座標, RobotU座標を返す

Scale

倍率を返す

このリザルトを有効にするには、ScaleEnabledを “True”に設定してください。

Score 実行時に検出された対象物が、Geometricオブジェクトが検索するモデルに一致するレベルを表わすINTEGER数値を返す
ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

SkewDirection 実行時に検出された対象物の歪み方向を返す
SkewRatio 実行時に検出された対象物の歪み率を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)
TimedOut オブジェクト実行がタイムアウトで終了したか否かを返す

Geometricサーチの基本的知識
Geometricオブジェクトの目的は、サーチウィンドウで、事前に登録されたモデルを位置決めすることです。Geometricオブジェクトは、パーツの検出、対象物の有無の検出、パーツの欠陥の検出など、さまざまなものの検出に利用することができます。
ここでは、Geometricオブジェクトの基本的知識について説明します。説明する項目は次のとおりです。

  • Geometricオブジェクトのモデルと対象物
  • 検索の基本的概念
  • AcceptプロパティーとConfusionプロパティーの設定
  • 追加された検索パラメーター
  • 複数リザルトのダイアログを使って、検索上の問題をデバッグする方法
  • Geometricオブジェクトと回転
  • Geometricオブジェクトとスケール
  • 角度検索のためのモデル登録
  • 検索の反復性と精度
  • カメラと対象物間距離のキャリブレーション

Geometricオブジェクトのモデルと対象物
Geometricオブジェクトを使うときは、対象物とモデルの違いをよくご理解していただくことが重要になります。対象物とは、サーチウィンドウの領域中のエッジの特定パターンのことです。対象物には、数個のピクセルの単純なエッジから、数万個のピクセルの複雑なパターンまであります。Geometricオペレーションでは、領域中の対象物が、事前にその対象物を登録されたモデルに、どの程度一致するかを測定します。対象物の理想的な表現であるモデルあるいはテンプレートに対して、対象物とは、実際のサーチウィンドウ内に現実に存在するもののことです。
一般的な検索では、1つのサーチウィンドウで登録された代表モデルを使って、そのサーチウィンドウ内にある代表モデルの類似対象物を検索します。下図は、対象物(十字線)を含むサーチウィンドウを示します。十字線のモデルを登録するには、モデルウィンドウを定義し、実行パネルの[ティーチ]ボタンをクリックしてください。 (モデルの登録については、「Geometricオブジェクトの使用方法」を参照してください。)
その結果、モデルは下図の右側の図に示すとおりに作成され、サーチウィンドウ内の他の十字線を検索するのに使用することができます。


対象となる数個の対象物を含むサーチウィンドウ(左側)と画像イメージから登録されたモデル(右側)

幾何学的形状対象物に基づいてモデルを検索する方法は、安定した信頼できる技法ですが、最適のモデルを選べるようにモデルの位置を決めるときに、気をつけなければならない点がいくつかあります。

  • 画像イメージに十分なコントラストをつけてください
    コントラストは、サブピクセル精度で、モデル元のエッジとターゲット画像イメージを識別するのに必要不可欠です。幾何学的形状のエッジを基準にした検索アルゴリズムをGeometricサーチツールが使うので、コントラストの弱い画像イメージは使わないでください。コントラストが弱ければ弱いほど、検索に使うエッジを基準にした情報の量は少なく、精度は低くなります。このため、グレイスケール値のグラデーションが緩やかなモデルを使用しないでください。背景と画像イメージのエッジの間に、少なくとも10グレイスケール値の差を維持するようにしてください。

  • 不適切な幾何学的形状モデルを使用しないでください
    不適切な幾何学的形状モデルには、明確に定義された幾何学的形状対象物がない、または、他の画像イメージ対象物とはっきり区別できない幾何学的形状対象物であるという欠点があります。このモデルは不確かなリザルトを出すことがあります。

    図のような不適切な幾何学的形状モデルは、単純な曲線は特徴となる対象物がなく、誤って一致したとすることがあります。

  • 曖昧なモデルを使用しないでください
    幾何学的形状モデルのあるタイプのものは、位置, 角度, スケールについて、曖昧なリザルトを出します。
    位置が曖昧なモデルは、通常、1組以上の平行線だけで構成されています。例えば、平行線だけでできているモデルは、平行線の正確な位置を確立することが不可能なので、使用しないでください。どの直線にも線分の実際の数は、理論上無限にあるので、一致が無限に検出されます。線分は必ず、他の画像イメージの細部と区別できる特徴になる形状を含むようにしてください。

    図のように、特徴となる対象物がない、平行線で構成されたモデルは使用しないでください。

    オブジェクトの一部分で構成されるモデルは、スケールが曖昧でないことを確認するために、テストを行ってください。例えば、孤立した角でできたモデルは、スケールの点で、曖昧です。
    これは、スケールの範囲の中で検索するのに曖昧になる例です。区別の目安となる幾何学的特徴がないので、不適切な結果を出します。

    対象物が類似しているために、対称モデルはよく角度が曖昧になります。例えば、円形は、角度の点において、完全に曖昧になります。四角形や三角形のような単純な対称モデルは、一定の角度が曖昧になります。

  • ほとんど曖昧なモデル
    モデルの大部分に曖昧な対象物がある場合は、曖昧な対象物に含まれる検索結果のエッジの割合が一致とみなされるほど高いために、誤って一致したとすることがあります。これを避けるには、他のターゲット画像イメージの対象物と十分に区別できるような明瞭な対象物をモデルが持つことを確認してください。これにより、確実に正しい一致だけが検索結果として返されます。例えば、下記のモデルは、特徴となる曲線よりも、平行な直線でモデルの有効なエッジの大部分が構成されているために、誤って一致したとすることがあります。

  • 検索の基本的概念
    検索では、サーチウィンドウ内でモデルが最も類似している領域を検出することによって、対象物を位置づけます。下図は、モデルとサーチウィンドウ、およびサーチウィンドウ内でモデルに最も類似している領域を示します。このようなモデルは、例えばプリント基板上の基準マークのような対象物を検索するのに使えます。ロボットは、サーチファンクションから戻された位置データを使って、ボード上の部品取付位置、あるいは、ボード自体の位置決めの場所を検出できます。

Acceptプロパティーのしきい値とConfusionプロパティーのしきい値の設定方法
AcceptプロパティーとConfusionプロパティーは、Geometricオブジェクトの重要な検索パラメーターです。Acceptプロパティーは、どのような場合にシーンの一定領域での検索を続行するかヒントを与えることによって、検索速度に影響を与えます。Acceptプロパティーが高い値に設定された場合は、対象物はモデルに非常に類似したものとなるので、多くの領域が大まかな確認によって排除され、それ以上の検索が続行されるようなことはありません。Acceptプロパティーが低い値に設定された場合は、モデルにわずかでも類似している対象物はAcceptプロパティーのしきい値を超えてしまうので、シーン中のより多くの領域について詳細な確認が必要となります。このように、Acceptプロパティーの値が高ければ、Geometricオブジェクトの実行速度、つまり検索速度は速くなります。
Confusionプロパティーは、検索速度に影響すると予想されるリザルトの数と相互作用します。Confusionプロパティーと予想されるリザルトの数は一緒になって、画像イメージの検索可能領域の全検索が完了する前に、検索を中止させることができます。

Acceptプロパティーを設定して、許容可能な「最悪ケース劣化」の対象物例をシステムによって検索できるようにしてください。劣化は、欠陥, スケール, 回転, ビデオノイズなどによって発生することがあります。Vision Guide 8.0 では、Acceptプロパティーに “700”のデフォルト値を設定しています。この値は、ほとんどのアプリケーションにとって適切な開始点です。ただし、試行や訂正を重ねることによって、状況に合わせて最適な値に設定することもできます。なお、アプリケーションが適切に機能するためにスコアが “1000”、あるいはそれに近い値である必要はありませんので注意してください。対象物のゆがみなどにもよりますが、アプリケーションによっては形状スコア “200”でも良好な位置情報が得られる場合もあります。

「誤差対象物」を獲得すると予想される最高値 (+誤差余裕)を基にして、Confusionプロパティーを設定してください。Confusionプロパティーのしきい値は、Acceptプロパティーのしきい値に等しいかそれ以上の値にします。高い値に設定すると、検索時間が長くなりますが、正しい対象物を確実に検出するためにはやむをえません。Confusionプロパティーのデフォルト値は “800”ですが、アプリケーション要件にしたがって調整してください。

下図は、複雑度のほとんどないシーンを示しています。円形のパッドは、十字線とほとんど類似性がありません。したがって、Confusionプロパティーは、かなり低い値 (700程度)に設定することができます。許容可能な劣化量によりますが、Acceptプロパティーは、通常、Confusionプロパティーに等しいかそれ以下の値に設定します。このシーンでは劣化がほとんどないので、 “920”の形状スコアが適切と予想されます。

下図は、複雑度の多いシーンを示しています。フィードスルーとICパッドは、両方とも、円形パッドに類似しています。したがって、Confusionプロパティーは、かなり高い値 (820程度)に設定しなければなりません。

グレイ定数の領域を持つサーチウィンドウは、その領域で常に0の幾何学的形状値を獲得します。シーンが基本的に均一の背景を持つ場合 (例: 1枚の白い紙)は、ほとんどの場所で幾何学的形状がないので、Geometricオブジェクトが何かを検出した場合、それは検出したい対象物であるはずであり、Confusionプロパティーは低い値に設定することができます。

AcceptプロパティーとConfusionプロパティーの設定の仕方によって、より迅速に対象物の位置を把握させることができる、と考えることもできます。一般的に、これらのプロパティーには慎重な値を設定すべきであって、正確に設定する必要はありません。最も慎重な設定方法はAcceptプロパティーを低く、Confusionプロパティーを高く設定する方法です。検索するシーンについてわかっている情報が少ししかない場合は、より慎重な設定方法をとってください。検索は注意深く実行されますが、検索速度は遅くなります。 (これは、Geometricプロパティー位置リザルトを使ってロボットに動作先を示す場合、特に重要となります。)

検索するシーンについてわかっている情報が多い場合は、より大まかな設定方法を実施してください。例えば、ある1つの対象物を探していて、残りのシーンに何もない場合は、より大まかな値を設定してください。注意深く検索する必要がないので、検索速度は速くなります。

追加されたGeometricサーチパラメーター

DetailLevel

DetailLevelは、検索中にエッジとみなすものを決めます。

エッジは隣接するピクセルとの間のグレイスケール値の変化により定義されます。デフォルト設定の “Medium”では、コントラストに変化がある、ノイズがある、照明が一定でないなどの状況で、画像イメージから有効なエッジを安定して検出します。画像イメージ中のコントラストの強い領域に比べて、目的のオブジェクトがとても弱いコントラストの場合などは、コントラストの弱いエッジが検出されないことがあります。画像イメージ中にコントラストの弱いオブジェクトがある場合、DetailLevelの設定を高くして、画像イメージ中の重要なエッジはすべて検出できるようにしてください。VeryHighの設定では、コントラストが弱いエッジもすべて抽出します。ただし、このモードはノイズにとても影響されやすいことに注意してください。

ScaleTargetPriority

オブジェクト検出時に、ScaleTarget近傍を優先的に検出するように設定します。工業製品など検出オブジェクトにサイズ変動がない場合、本プロパティーを “True”に設定してください。

デフォルト: True

SearchReducedImage

オブジェクト検出の粗検出時に、入力画像を縮小して検出するようになります。入力画像に特徴点(エッジなど)が非常に多い場合など、検索時間を短縮できることがあります。

デフォルト: False

Smoothness

Smoothnessプロパティーにより、エッジ抽出フィルターの平滑化レベルをコントロールすることができます。平滑化オペレーションは、粗いエッジを滑らかにして、ノイズを除去します。このコントロール範囲は、0 (滑らかでない) ~ 100 (非常に滑らか)までです。

デフォルト: 50

SharedEdges SharedEdgesを “True”に設定して、複数リザルトにエッジを共有させることができます。これを選択しない場合は、複数のリザルトの一部になるエッジは最大スコアを持つリザルトの一部だとみなします。
TimeOut

時間重視のアプリケーションでは、Geometricオブジェクトが指定モデルの検索結果を検出するのに時間制限をミリ秒単位で設定できます。時間制限中に必要とされる数の検索結果が検出されない場合は、検索は停止します。検出された検索結果のリザルトは返されます。ただし、制限時間になる前に、どの検索結果が検出されるのかはわかりません。

デフォルト: 2000ミリ秒

複数リザルトのダイアログを使って、検索上の問題をデバッグする方法

たとえ同一生産ロット内でも、ときには、作業しているパーツがかなり変化したり、1つのパーツ上に類似対象物が2つ以上あったりする場合があります。このような場合、Acceptプロパティーを適切な値に設定した場合でも、その値に該当する他のパーツをまちがえて検索してしまう場合があります。これらのケースでは、何が起こるか予想するのが非常に困難です。
[Show All Results]ダイアログは、上記の問題をはじめとするさまざまな問題を解決するために作成されました。1つのパーツ上に1つの対象物だけを検出したい場合は、複数検出を行って、Vision Guide 8.0が時々二次的な対象物を本来検出したい対象物として結果を返す理由を調べることができます。このような問題が発生するには、一般的に、いくつか異なった原因があります。

  • サーチウィンドウ中の2つ以上の対象物が非常に類似しているため、非常に近い値のScoreリザルトを持つ場合
  • Confusionプロパティー、またはAcceptプロパティーが十分高く設定されていないために、本来検出したい対象物よりも低いスコアを持つ対象物がAcceptプロパティーの設定値を満たしてしまう場合

Vision Guide 8.0を初めてご使用になる方にとって、上記の2つの状況は、サーチウィンドウ内で1つの対象物を検索する場合に極めて混同しやすいので注意してください。
本来検出したい対象物が検出されたり、別の対象物が検出されたりするようなときには、リザルトダイアログを使って、問題を特定してください。問題の原因を参照するための手順を、次に示します。

  1. NumberToFindプロパティーを “3”以上に設定してください。
  2. Vision Guide 8.0開発環境からビジョンオブジェクトを実行してください。
  3. [ShowAllResults]プロパティーボタンをクリックして、リザルトダイアログを表示してください。
  4. 検出された上位3つあるいはそれ以上の対象物のスコアを確認してください。

このように、検出された上位3つあるいはそれ以上の対象物のスコアを確認すると、問題の原因が明確になります。このような問題は、ほとんど次に示すどちらかの場合に発生します。

  • 検出された各々の対象物が、Acceptプロパティーの設定値より大きいスコアを持っている場合。 このような場合には、Confusionプロパティーをより高く設定し、適切な対象物だけを常に強制的に検出するようにして、Acceptプロパティーのしきい値に一致するようなその他の対象物は返されないようにしてください。また、Acceptプロパティーの値を変更することもできます。
  • 各々の対象物のスコアが非常に近接している場合。このような場合は、次の処理を行って、本来検出したい対象物が区別できるようにしてください。
    • サーチウィンドウを再調整し、検出対象物としてランダムに返される対象物がサーチウィンドウ内部に入らないようにします。
    • 本来検出したい対象物をモデルに再登録します。
    • アプリケーションの照明条件を調整して、本来検出したい対象物が、まちがって検出してしまう対象物のスコアより高いスコアを獲得するようにしてください。
      複数リザルトの使用方法の詳細は、「1つのオブジェクトから複数のリザルトを返す」の項目を参照してください。

Geometricオブジェクトと分離
検索結果がはっきり区別できる (一致)とみなされるのに必要な、同一モデルの他の検索結果との分離の最小量を指定できます。本質的には、これは同一モデルの検索結果がオーバーラップできる量を定義します。
X位置, Y位置, 角度, スケールの4基準の最小分離を設定できます。検索結果が他と区別できるとみなされるためには、最小分離条件の1つを満たすことが必要です。例えば、角度の最小分離を満たせば、位置やスケールに関係なく、検索結果は区別できるとみなされます。しかし、これら分離基準は、有効な検索結果を決定するときに考慮されないように、無効になることがあります。
位置の最小分離プロパティーのSeparationMinXとSeparationMinYは、同一モデルの2つの検索結果の検出位置がどれくらい離れていなければならないかを決定します。この分離は、公称スケール (ScaleTarget)でのモデルサイズの割合として指定されます。
デフォルト値は10%です。0%の値はプロパティーを無効にします。例えば、ScaleTargetで、モデルが幅100ピクセルの場合、SeparationMinXを10%に設定すると、検索結果が区別できて、分離しているとみなされるためには、検索結果は最低10ピクセルX方向に離れていなければなりません。
角度の最小分離 (SeparationAngle)は、検索結果間の角度の最小差異を決定します。この値は絶対角度値として指定されます。デフォルト値は10.0(です。0(の値はプロパティーを無効にします。
スケールの最小分離 (SeparationScale)は、検索結果間のスケールの最小差異を倍率として定義します。デフォルト値は1.1です。1.0の値はプロパティーを無効にします。

Geometricオブジェクトとスケール
モデルのスケールは、ターゲット画像イメージ中で検出されると予想されるモデルのサイズを規定します。予想される検索結果がモデルよりも小さい、あるいは大きい場合は、サポートされた倍率に応じて、スケールを設定できます。予想スケールはScaleTargetプロパティー (範囲: 0.5 ~ 2.0)を使って設定されます。
デフォルトで、スケール範囲の検索は無効になっています。必要なら、ScaleEnableをTrueに設定して、スケール範囲の検索を有効にすることもできます。これにより、指定したScaleTargetから、小さいサイズでも大きいサイズでも、異なるサイズ範囲のターゲット画像イメージ中でモデルを検出することができます。スケール範囲を設定するには、ScaleFactorMinとScaleFactorMaxを使ってください。ScaleFactorMin (0.5 ~ 1.0)とScaleFactorMax (1.0 ~ 2.0)は、ともに、公称ScaleTargetからスケール範囲を決定します。
これらの最大倍率と最小倍率は、次のようにScaleTarget設定に用いられます。

max scale = ScaleTarget x ScaleFactorMax
min scale = ScaleTarget x ScaleFactorMin

予想スケール(ScaleTarget)を変更する場合に、範囲を変更する必要がないように、範囲を倍率として定義するように注意してください。スケール範囲の検索は、平行に行われます。つまり、検索結果の実際のスケールは、最初に検出される検索結果には影響しません。しかし、スケール範囲が大きくなればなるほど、検索は遅くなります。

Geometricオブジェクトと回転
Geometricオブジェクトは回転したパーツを検出するのに理想的です。エッジの幾何学的形状パターンを検索しているので、回転したパーツは、一般的に他のビジョンツールよりも、より確かに検出されます。
Geometricオブジェクトの角度検出付きサーチを行う場合は、Geometricオブジェクトのモデルを登録するときに、AngleEnableプロパティーの設定を “True”としておかなければなりません。AngleStartプロパティーとAngleRangeプロパティーも設定してください。

角度検出のためのモデル登録
角度検出付きサーチを行うには、まず、角度検出のためのGeometricサーチオブジェクトを設定してください。そのための手順としては、AngleEnableプロパティーを“True”に設定し、登録されるモデルの角度範囲をAngleRangeプロパティーを使って指定します。AngleStartプロパティーを設定することにより、角度検出の中心を変更することもできます。これはAngleRangeが基づく角度です。例えば、AngleStartが45、AngleRangeが10の場合、35° ~ 55°までのモデルを検索します。
角度付でモデルを登録するときは、モデルがサーチウィンドウの外側にはみ出すことなく回転できるように、サーチウィンドウは充分大きくなければなりません。

検索の反復性と精度
検索の反復性と精度とは、モデルのサイズと詳細 (形状, 対象物の粗さ, 形状の対称性)と、サーチウィンドウの中の対象物の劣化(ノイズ, 欠陥, 回転やスケールによる影響)により影響を受けます。
ノイズによる位置への影響を測定するには、劣化のない対象物を含む特定のサーチウィンドウで検索を実行し、この検索と完全に同じ検索をオブジェクトの位置を変更せずに再実行し(2番目の画像イメージをフレームバッファに取り込み)、位置についての測定結果を比較します。そのための手順を次に示します。

  1. モデルの定義後、実行パネルのオブジェクトの[Run]ボタンを2回以上クリックします。
  2. [統計]ツールバーボタンをクリックします。
  3. すると、統計ダイアログが表示され、2回のオブジェクト検索で得られた位置の差異を調べることができます。

劣化のない対象物の大型モデル (30 × 30)については、1/20ピクセルの繰返し精度を得ることも可能です。しかし、ほとんどの場合、1ピクセルをわずか下まわる精度 (1/2, 1/3, 1/4など)が現実的です。
検索精度は、劣化のない対象物を含む特定のサーチウィンドウで検索を実行し、オブジェクトを移動して、検索で得られた位置の差異と実際の差異を比較することで計測できます。劣化がなく、回転誤差やスケール誤差がなく、X方向、Y方向ともに充分なエッジがある大型モデル (30 × 30)については、検索精度は、1/4ピクセルになります。 (これは、ビジョンシステムでの検索精度であって、ロボットに固有の不正確な精度は影響していませんので、注意してください。したがって、ロボットでパーツを移動するときは、ロボットメカニズムそのものの不正確な精度も考慮に入れなければなりません。)

カメラと対象物間距離のキャリブレーション
最適な検索結果を得るためには、画像イメージ中の対象物の検索時のサイズが、モデルが登録されたときのサイズと同じでなければなりません。同じカメラと同じレンズを使用すると仮定した場合、モデルを登録した時と検索を実行する時とで、対象物とカメラとの距離が変わると、サーチウィンドウ中では対象物の見かけ上のサイズが異なって見えます。つまり、カメラが対象物に近づくと対象物は大きくなり、カメラが対象物から遠ざかると対象物は小さくなります。
対象物とカメラとの距離が変わるときは、モデルを再登録しなければなりません。

Geometricオブジェクトの使用方法
以上で正規化Geometricと検索処理がどのように動作するのか確認し、Vision Guide 8.0のGeometricオブジェクトの使用方法を理解するための基本的知識を得ることができました。
ここでは、Geometricオブジェクトの使用方法を、次にリストアップしたステップごとに説明します。

  • 新規Geometricオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • モデルウィンドウの位置とサイズの設定
  • モデル原点の位置決め
  • Geometricオブジェクトの関連プロパティーの構成
  • モデルの登録
  • Geometricオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト
  • 単一Geometricオブジェクトからの複数検出を使用した作業

これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。

すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規Geometricオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Geometric (幾何学形状)]ボタンをクリックしてください。
  2. [Geometric(幾何学的形状)]オブジェクトツールバーボタンの上に、Geometricアイコンが表示されます。
  3. Geometricアイコンをクリックして、Vision Guideウィンドウの画像イメージ表示部までドラッグしてください。
  4. オブジェクト名は自動的に作成されますので注意してください。この例では、このシーケンスで最初に作成されたGeometricオブジェクトなので、 “Geom01”というオブジェクト名になります。 (オブジェクト名の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上には、下図のようなGeometricオブジェクトが表示されます。

新規Geometricオブジェクトのレイアウト

  1. Geometric オブジェクトの名称ラベルをクリックし、ボタンを押し続けながら、Geometricオブジェクトをドラッグして、サーチウィンドウの左上コーナーを好きな位置に合わせてください。
  2. サイズハンドルをクリックして、マウスをドラッグすると、Geometricオブジェクトサーチウィンドウのサイズが変更できますので、適当な大きさに調整してください。 (サーチウィンドウ内が、被検索領域になります。)

注意


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

Step 3: モデルウィンドウの位置とサイズの設定

  1. 作業を行うGeometricオブジェクトのサーチウィンドウは、サイズハンドルが強調表示されています。サイズハンドルが見えない場合は、Geometricオブジェクト名フィールドをクリックしてください。サイズハンドルが見えるなら、この手順は無視して、次の手順へ進んでください。
  2. モデルウィンドウを形成するボックスの1辺をクリックしてください。この操作によって、モデルウィンドウが強調表示され、モデルウィンドウのサイズハンドルが現われます。
  3. モデルウィンドウを形成するボックスの1辺をクリックして、マウスを押し続けながらモデルウィンドウをドラッグし、モデルウィンドウの左上コーナーの位置を合わせてください。
  4. 次に、サイズハンドルをクリックしてマウスをドラッグし、モデルウィンドウのサイズを調整して、Geometricオブジェクトのモデルとして登録する対象物を囲んでください。

Geometricオブジェクトのレイアウトは、下図のように表され、サーチウィンドウは被検索領域をカバーし、モデルウィンドウは検索したい対象物を包囲しているはずです。実際のサーチウィンドウとモデルウィンドウは、この例のようには表されていないかもしれませんが、画面予想図として参考にしてください。
サーチウィンドウとモデルウィンドウの位置と、サイズ調整後のGeometricオブジェクト

キーポイント


モデルウィンドウの位置とサイズを適切に設定するための注意点:
Geometricオブジェクトのモデルウィンドウの位置とサイズは、これによって検索する対象物が定義されるので、適切な調整を行うことが重要です。モデルウィンドウを作成する場合には、特に次の2点に留意してください。

  • 被検索領域であるサーチウィンドウは、なるべく小さい方が検索時間を短縮できます。また、特にパーツの回転が大きいと予想されるときには、サーチウィンドウを小さく設定し、モデルも小さく(パーツの一部などに)設定できれば、パーツの回転による影響が少なくてすみます。
  • モデルウィンドウサイズを可能な限りサーチウィンドウサイズに近づけることによって、検索実行時間を短縮することができます。

また、2つのパーツが互いに接触するくらいに隣接しているような場合は、モデルウィンドウを実際の対象物より少しだけ(数ピクセル分)大きめに設定しておくと、対象物を他の物体と区別しやすくなります。
モデルウィンドウの最適なサイズは、それぞれのビジョンアプリケーションによって異なりますので注意してください。

Step 4: モデル原点の位置決め
モデル原点は、オブジェクトを実行するときに、対象物の位置として返されるモデル上の位置を定義します。つまり、モデル原点は、位置データが重要となる場合に、有意性のある場所に位置づけられていなければなりません。

例えば、Geometric オブジェクトを使ってパーツを検出し、ロボットにパーツのピックアップや配置をさせる場合は、モデル原点の位置は、ロボットが簡単にパーツをつかむことのできる場所であることが重要となります。その位置は、RobotX, RobotY, RobotU, RobotXYUリザルトに基づくロボットの動作先になるからです。

新規Geometricオブジェクトが作成されると、ModelOrgAutoCenter プロパティーはデフォルト値の “True”に設定されます。つまり、モデル原点は、モデルウィンドウの中心に自動的に位置づけられ、手動で移動させることができません。モデル原点を移動させたい場合には、最初にModelOrgAutoCenterプロパティーの値を “False”に設定する必要があります。この設定手順と、モデル原点を実際に位置決めする手順を次に示します。

  1. Vision GuideウィンドウのフローチャートからGeometricオブジェクトをクリックしてください。オブジェクトウィンドウのプロパティーリストでModelOrgAutoCenterプロパティーを探し、その設定値フィールドをクリックしてください。
  2. ドロップダウンリストに、2つの選択項目、 “True” と “False” が表示されますので、 “False”をクリックしてください。これで、ModelOrgAutoCenterプロパティーが “False”に設定され、モデル原点はマウスで移動することができます。
  3. モデルウィンドウをクリックして、モデルウィンドウを強調表示させてください。
  4. モデル原点をクリックして、マウスボタンを押し続けながら、モデル原点を新規の位置にドラッグしてください。なお、モデル原点を置くことができるのは、モデルウィンドウの境界内だけですので、注意してください。

Step 5: Geometricオブジェクトプロパティーの設定
Step 4で表示したオブジェクトウィンドウから、Geometricオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。あるいは、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、Geometricオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われる、AbortSeqOnFail, Graphicsなどのプロパティーの詳細は、「Geometricオブジェクトのプロパティー」を参照してください。Geometric オブジェクトをテストするときは、これらのプロパティーを設定する必要はありません。ただし、実際にGeometricオブジェクトで作業するのが初めての方は、この説明を参考にしてください。

注意


ビジョンシーケンスの実行結果は、外らん光や外部機器ノイズにより影響を受けることがあります。外らん光や外部機器ノイズにより、影響を受けると、取り込み画像が想定外の結果となり、検出位置結果がサーチエリア (検出エリア)内の不特定位置になる可能性があります。Accept, RejectOnEdgeなどのプロパティー値を適切に設定し、誤検出リスクを軽減してください。

項目 説明
Nameプロパティー

新規に作成されたGeometric オブジェクトに、デフォルトとして与えられるオブジェクト名は “Geomxx”です。xxは、1つのビジョンシーケンス内で複数のGeometricオブジェクトを用いるとき、それらのGeometricオブジェクトを区別するための番号です。

ビジョンシーケンスで1番目に用いられるGeometricオブジェクトには、 “Geom01”というオブジェクト名がデフォルトで設定されます。

オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。

画面上でGeometricオブジェクト名を表示する場所は、すべて変更後の名称に変わります。

Acceptプロパティー

Acceptプロパティーは、対象物が一致するべき、あるいは検出されたと判定するときの基準となる形状スコアの値を設定します。

Scoreリザルトに返される値は、このAcceptプロパティーに設定されている値との比較が行われます。

デフォルト: 700

Confusionプロパティー

サーチウィンドウの中に類似する対象物が複数個ある場合、このConfusionプロパティーを使うと、検索したい対象物を正確に獲得するのに役立ちます。

デフォルト: 800

ModelOrgAutoCenterプロパティー

最初にこのModelOrgAutoCenterプロパティーを “False”に設定しておくとモデル原点の位置が変更できます。

デフォルト: True

Frameプロパティー

このプロパティーによって、事前に定義されていたFrameオブジェクトをGeometricオブジェクトのリファレンスフレームとして選択することができます。

Frameの詳細は、「Frameオブジェクト」で説明しています。

NumberToFindプロパティー 検出したい対象物の数に合わせて、NumberToFindプロパティーを1より大きい数値に設定することができます。これによって、Geometricオブジェクトは1つのサーチウィンドウ内で複数の対象物を検出することができます。
AngleEnableプロパティー Geometricモデルを角度付で検索したい場合は、このプロパティーを “True”に設定しなければなりません。複数のモデルを角度付で検索できるようにするには、Geometric オブジェクトのモデル登録の前に、このプロパティーを “True”に設定しておかなければなりません。
AngleRangeプロパティー これらのプロパティーは、AngleEnableプロパティーと一緒に用いることにより、Geometricモデルを角度付で検索することができます。
RejectOnEdgeプロパティー

このプロパティーによって、サーチウィンドウのエッジにかかって検出されたパーツを除外することができます。

通常はこのプロパティーを “True”に設定します。

プロパティーは、まずデフォルト設定のままにして次のステップに進み、後で必要に応じて設定を変更することができます。

Step 6: Geometricオブジェクトのモデルの登録
Geometricオブジェクトには、検索するためのモデルが必要であり、モデルの登録と呼ばれるプロセスによって実行します。すでに、Geometricオブジェクトのモデルウィンドウは、モデルとして使いたい対象物をとり囲むように位置決めされているはずです。モデルの登録は、次に示す手順で完成します。

  1. Geometricオブジェクトが、現在表示されているオブジェクトであることを確認してください。フローチャート、またはシーケンスツリーを見ると、どのオブジェクトが現在作業中のオブジェクトになっているか確認することができます。また、画像イメージ表示部で、どのオブジェクトがマゼンタ色で強調表示されているかによって確認することもできます。
  2. 実行パネルにある、[ティーチ]ボタンをクリックしてください。モデルが登録されます。モデルの登録に要する時間は、ほとんどの場合わずか数秒です。ただし、AngleEnableプロパティーが“True”に設定されているときにモデルを登録する場合は、わずかな角度ずつオフセットした複数のモデルを登録する必要があるため、モデルの登録には、かなりの時間を要します。

Step 7: Geometricオブジェクトのテストとリザルトの確認
Geometricオブジェクトを実行するには、実行パネルのオブジェクトの[Run]ボタンをクリックしてください。
Geometric オブジェクトが実行されると、リザルトが表示されますので確認してください。この時点で確認すべき主要なリザルトは、次のとおりです。

項目 説明
Foundリザルト

Geometricオブジェクトが検出されたかどうかの値を返す

検索している対象物が検出されると、リザルトとして “True”の値が返ります。対象物が検出されないと、Foundリザルトは “False”を返し、赤で強調表示されます。Geometricオブジェクトが検出されなかった場合、その一般的理由については、Step 8を参照してください。

FoundOnEdgeリザルト

対象物がサーチウィンドウのエッジに接して検出されたときに、 “True”を返す

この場合、Foundリザルトは “False”を返します。

Score リザルト

モデルと、モデルに最もよく似ている対象物とが、どの程度一致しているかを示す

Scoreリザルトの範囲は、0~1000で、1000はモデルと対象物が完全に一致したことを示します。検出された対象物が、検索したい対象物に一致している程度を確認するために、まず、Geometricオブジェクト実行後のScoreリザルトを確認してください。

Time リザルト

Geometric オブジェクトの実行に要した時間を返す

サーチウィンドウとモデルウィンドウを小さくすることで、検索速度は速くなります。

NumberFoundリザルト 1つ以上のGeometricオブジェクトを実行するとき、NumberFoundリザルトは、Geometricオブジェクトのモデルに一致した対象物の数を返す
Angleリザルト

Geometricオブジェクトの傾斜角度を返す

この角度は、モデルに設定された初期角度に基づいて計算されますが、ときには概略的な値であり、信頼性が高くないことがあります。

回転角度の決定にはPolarオブジェクトを使うことをお勧めします。特にロボットガイダンスには、Polarオブジェクトを使うようにしてください。

PixelXリザルト

PixelYリザルト

対象物のXY座標値 (ピクセル座標系)を返す

この値は、検出された対象物のモデル原点の位置です。別の位置を返したい場合は、モデル原点の位置を変更し、モデルを再登録する必要があります。

CameraXリザルト

CameraYリザルト

カメラ座標系における検出対象物のXY座標値を定義

これらのリザルトは、カメラキャリブレーションが完了していない場合は[nocal]を返し、値を返しません。

RobotXリザルト

RobotYリザルト

ロボット座標系における検出対象物のXY座標値を定義

ロボットは、このXY座標値を動作先とすることができます。 (他の変換、処理作業は不要です。)

この値は、検出された対象物のモデル原点位置です。別の位置を返したい場合は、まずモデル原点の位置を変更しモデルを再登録する必要があります。これらのリザルトは、カメラキャリブレーションが完了していない場合は “no cal”を返し、値を返しません。

RobotUリザルト

検出対象物の角度として、ロボット座標系に変換された値を返す

RobotUリザルトは、カメラキャリブレーションが完了していない場合は “no cal”を返し、値を返しません。

ShowAllResults 複数のリザルトで作業しているとき、ShowAllResultsの設定値フィールドにあるボタンをクリックすると、ShowAllResultsダイアログが表示され、現在作業中のビジョンオブジェクトのリザルトすべてを参照することができます。

キーポイント


上記のステップ例では、キャリブレーションを実行していませんので、RobotXYU, RobotX, RobotY, RobotU, CameraX, CameraY, CameraXYUのリザルトは、 “no cal”を返します。これは、キャリブレーションを実行しなかったため、ロボット座標系あるいはカメラ座標系に関して座標リザルトを計算することができなかった、という意味です。詳細は、「キャリブレーション」を参照してください。

Step 8: プロパティーの調整と再テスト
Geometric オブジェクトを数回実行することで、検出上の問題が見つかったり、プロパティー設定の微調整をする必要が出てきたりするかもしれません。ここでは、一般的に生じる問題のトラブルシューティングや、微調整の方法について説明します。

Geometricオブジェクトのトラブルシューティング
GeometricオブジェクトがFalseのFoundリザルトを返す場合

  • Acceptプロパティーの設定を少し低め(例えば、現在のScoreリザルトより小さい値)に変更し、Geometricオブジェクトを再度実行してみてください。
  • 返されたFoundOnEdgeリザルトが、 “True”かどうかを確認してください。Foundリザルトが “False”を返し、FoundOnEdgeリザルトが “True”を返した場合は、対象物は検出されたものの、その一部がサーチウィンドウに接触していることを意味しています。この場合は、サーチウィンドウを大きくし、対象物がサーチウィンドウに収まるようにしてください。サーチウィンドウのサイズ変更が不可能な場合は、カメラの位置を変更するか、モデルウィンドウのサイズを再調整してください。
    Geometricオブジェクトが誤認対象物を検出した場合
  • Acceptプロパティーは、充分高い値に設定されているでしょうか。Acceptプロパティーの設定値が低すぎると、検索対象となる対象物のかわりに、別の対象物が検出される可能性があります。
  • Confusionプロパティーは、充分高い値に設定されているでしょうか。Confusionプロパティーの値は、Acceptプロパティーの値に等しいか、それ以上の値でなければなりません。また、サーチウィンドウ内に、検索する対象物に類似した対象物がある場合は、Confusionプロパティーの設定をさらに高い値に変更し、別の対象物を誤って検出しないようにしなければなりません。
  • サーチウィンドウを調整して、検索する対象物に近づけ、その対象物だけを隔離するようにしてください。

Geometricオブジェクトの微調整
オブジェクトが正常に動作するためには、通常、Geometricオブジェクトの微調整が必要となります。Geometricオブジェクトの微調整に関する主要なプロパティー、およびモデル追加について、次に説明します。

項目 説明
Acceptプロパティー Acceptプロパティーを低くすると、Geometricオブジェクトの実行速度は速くなります。しかし、Acceptプロパティーの値が低いと、検出したい対象物とは別の対象物が検出される可能性も強くなります。Geometricオブジェクトを数回実行してみて、Scoreリザルトに返される形状スコアの値の予想がつけられるようになったら、Acceptプロパティーの値を調整してみてください。数回試行を重ね、より速い実行速度で信頼性の高い対象物を得ることができるような適切な値を設定してください。
Confusionプロパティー サーチウィンドウ中に類似対象物が複数ある場合は、Confusionプロパティーに相対的に高い値を設定する必要があります。これによって、検出したい対象物を、他の混同しやすい対象物と区別して検出することができます。ただし、Confusionプロパティーの値を高く設定すると、実行速度が遅くなります。サーチウィンドウ中に類似対象物がない場合は、Confusionプロパティーに低い値を設定して実行速度を速くすることができます。
サンプルの追加 現在のモデルと同じサイズのモデルウィンドウでティーチすると、「サンプルの追加」を選択できます。形や模様が少し違う、影の出方が変わる、など、モデルが少し変化する場合、変化したモデルを選択してモデルを追加すると、オブジェクト実行時のスコアが安定的になります。角度が大きくずれていたり、変化が大きくてモデルの追加に失敗したときは、もとのモデルが保持されます。

調整が完了し、Geometric オブジェクトのテストを行って、満足なリザルトを得ることができたら、ビジョンオブジェクトの作成ステップは完了します。次のステップとして、他のビジョンオブジェクトを作成し、ビジョンシーケンス全体の設定やテストに進むことができます。

Geometricオブジェクトに関するその他の便利なユーティリティ
Vision Guide 8.0のヒストグラム機能は、サーチウィンドウ内のグレイスケール値の分布を視覚的に表示できるため、とても便利な機能です。Vision Guideヒストグラムを使用して、Geometricオブジェクトのイメージの状態を調べることができます。

Correlationオブジェクト (相関サーチ)

Correlationオブジェクトの概要
Vision Guide 8.0では一般的によく使用されるツールです。Correlationオブジェクトが登録されると、登録された対象物を、非常に迅速にかつ高精度で検出して測定することができます。Correlationオブジェクトは、次のようなタイプのアプリケーションによく用いられます。

項目 説明
Alignment 既知のオブジェクトについて、オブジェクト上に対象物 (つまり、登録マーク)を位置づけることにより、位置と方向を決定します。これは、パーツ位置を検出するのに使われ、ロボットをパーツのピックアップアンドプレイス位置にガイダンスするのに役立ちます。
Gauging パーツ検査のために、長さ, 半径, 角度, その他の重要な寸法を計測します。
Inspection パーツの欠落、あるいは判読困難なプリント印刷などの単純な欠陥を探します。

Correlation オブジェクトのレイアウト
Correlationオブジェクトには、下に示すようにサーチウィンドウ、モデルウィンドウがあります。

Correlationオブジェクトのプロパティー
下の一覧は、Correlationオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

対象物が検出されたと判定するための形状スコアの値を指定

対象物のスコアが設定値を超えているものを検出します。設定値を低く設定すると、誤検出の原因となります。

デフォルト: 700

AngleAccuracy

角度サーチの精度を度数で指定

デフォルト: 1

AngleEnable

相関サーチが角度検出付き (回転)サーチを実行するかどうかを指定

Correlationオブジェクトのモデル登録の前に指定されます。

デフォルト: False

AngleMaxIncrement

角度検出付きサーチを実行する相関モデルの登録のための角度最大増加量

設定範囲の最大: 10

デフォルト: 10

AngleOffset

回転のオフセット値を設定

デフォルト: 0.000

AngleRange

一連の回転モデルの登録範囲を指定

登録範囲の最大値: 45

デフォルト: 10

AngleStart

角度サーチの中心を指定

デフォルト: 0

CalRobotPlacePos 設計時とプログラム実行時に RobotPlacePos をキャリブレーションする
Caption

見出しをCorrelationオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーからどのリザルトを使うのかを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にCorrelationオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

SearchWinTypeが“RotatedRectangle”に設定されている場合、サーチウィンドウはAngleリザルトにしたがって回転します。

デフォルト: False

CheckClearanceFor クリアランス (隙間)を確認するオブジェクトを設定
ClearanceCondition クリアランス (隙間)の判断方法を指定
Confusion

検索する画像イメージ中に予想される複雑さの度合い量を示す

検索している実際の対象物ではない対象物で得られる形状スコアの最大値です。

デフォルト: 800

CoordObject リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われませんデフォルト: None
CurrentResult

オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義

デフォルト: 1

Description

ユーザー指定の説明を設定

デフォルト: 空欄

EditWindow 被検索領域の検出マスクを定義
Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出不良時の色を選択

デフォルト: Red

Frame

指定されたフレームに関して、作業中のオブジェクトの検索位置を規定

Correlationオブジェクトをフレームに関係して位置決めすることができます。

デフォルト: None

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

ModelObject

検索に使用するモデルを決定

デフォルト: Self

ModelOrgAutoCenter

モデルは固定基準点を持っていて、モデルウィンドウではモデルの位置はその基準点で表されます。この固定基準点は、モデル原点と呼ばれています。ModelOrgAutoCenterプロパティーによって、モデル原点は、モデルウィンドウの中心に位置します。

デフォルト: True

ModelOrgX モデル原点のX座標値 (サブピクセルで設定可)
ModelOrgY モデル原点のY座標値 (サブピクセルで設定可)
ModelWin

実行時のみ

1コールでモデルウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す

ModelWinAngle モデルウィンドウの角度を定義
ModelWinCenterX モデルウィンドウの中心のX座標値を定義
ModelWinCenterY モデルウィンドウの中心のY座標値を定義
ModelWinLeft モデルウィンドウの最左端の位置を定義
ModelWinHeight

モデルウィンドウの高さを定義

デフォルト: 50

ModelWinTop モデルウィンドウの最上端の位置を定義
ModelWinType モデルウィンドウのタイプを定義
ModelWinWidth モデルウィンドウの幅を定義
Name

Correlationオブジェクトに独自のオブジェクト名を割りあて

デフォルト: Corr01

NumberToFind

作業中のサーチウィンドウで検出する対象物の数を定義

デフォルト: 1

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

RejectOnEdge

サーチウィンドウのエッジにかかって検出されたパーツを除外するかどうか指定通常は、Trueで使用してください。誤検出が発生した結果、サーチウィンドウに接する検出を除外でき、誤検出リスクを軽減できます。

デフォルト: False

SaveTeachImage モデルをティーチするときに、画像ファイルに保存するかを設定
ScoreMode Fail時のリザルトを表示させるための閾値を設定、または返す
SearchWin

実行時のみ

1コールでサーチウィンドウの左端, 上端, 高さ, 幅、または、中心のX座標, 中心のY座標, 円内周の半径サイズ, 円外周の半径サイズのパラメーターを設定、または返す

SearchWinAngle 被検索領域の角度を定義
SearchWinAngleEnd 被検索領域の終了角度を定義
SearchWinAngleStart 被検索領域の開始角度を定義
SearchWinCenterX 被検索領域の中心のX座標値を定義
SearchWinCenterY 被検索領域の中心のY座標値を定義
SearchWinHeight

被検索領域の高さを定義 (単位: ピクセル)

デフォルト: 100

SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinPolygonPointX1 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第1頂点のX座標値を定義
SearchWinPolygonPointY1 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第1頂点のY座標値を定義
SearchWinPolygonPointX2 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第2頂点のX座標値を定義
SearchWinPolygonPointY2 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第2頂点のY座標値を定義
SearchWinPolygonPointX3 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第3頂点のX座標値を定義
SearchWinPolygonPointY3 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第3頂点のY座標値を定義
SearchWinPolygonPointX4 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第4頂点のX座標値を定義
SearchWinPolygonPointY4 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第4頂点のY座標値を定義
SearchWinPolygonPointX5 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第5頂点のX座標値を定義
SearchWinPolygonPointY5 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第5頂点のY座標値を定義
SearchWinPolygonPointX6 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第6頂点のX座標値を定義
SearchWinPolygonPointY6 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第6頂点のY座標値を定義
SearchWinPolygonPointX7 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第7頂点のX座標値を定義
SearchWinPolygonPointY7 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第7頂点のY座標値を定義
SearchWinPolygonPointX8 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第8頂点のX座標値を定義
SearchWinPolygonPointY8 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第8頂点のY座標値を定義
SearchWinPolygonPointX9 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第9頂点のX座標値を定義
SearchWinPolygonPointY9 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第9頂点のY座標値を定義
SearchWinPolygonPointX10 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第10頂点のX座標値を定義
SearchWinPolygonPointY10 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第10頂点のY座標値を定義
SearchWinPolygonPointX11 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第11頂点のX座標値を定義
SearchWinPolygonPointY11 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第11頂点のY座標値を定義
SearchWinPolygonPointX12 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第12頂点のX座標値を定義
SearchWinPolygonPointY12 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第12頂点のY座標値を定義
SearchWinRadiusInner 被検索領域の円内径を定義
SearchWinRadiusOuter 被検索領域の円外径を定義
SearchWinTop 被検索領域の最上端を定義 (単位: ピクセル)
SearchWinType 被検査領域のタイプ (Rectangle, RotatedRectangle, Circle, Arc, Polygon)を定義
SearchWinWidth

被検索領域の幅を定義 (単位: ピクセル)

デフォルト: 100

ShowModel

教示モデルをさまざまなズーム設定によって表示

モデルの原点変更や検出マスクを設定

SkewFitEnable

モデルに対して歪み変形を適応するかを設定

デフォルト: False

Sort

オブジェクトのリザルトを並び替える順番を選択

デフォルト: 0 - None

Timeout Correlationオブジェクトの最長サーチ時間を設定、または返す

Correlationオブジェクトのリザルト
下の一覧は、Correlationオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、Vision Guide 8.0プロパティー&リザルトリファレンスを参照してください。

リザルト 説明
Angle 検出されたパーツの回転量を角度で返す
CameraX カメラ座標系における検出パーツ位置の (モデル原点を基準にした)X座標を返す (単位: mm)
CameraY カメラ座標系における検出パーツ位置の (モデル原点を基準にした)Y座標を返す (単位: mm)
CameraXYU

実行時のみ

カメラ座標系における検出パーツ位置のCameraX座標, CameraY座標, CameraU座標を返す

ClearanceOK クリアランス (隙間)の判断結果を返す
Found オブジェクトが検出されたかどうか (つまり、対象物あるいはパーツがAcceptプロパティーの現在の設定を超える形状スコア値を持っているかどうか)の値を戻す
FoundOnEdge

Correlationオブジェクトがサーチウィンドウのエッジに密接して検出されたときに、“True”を返す

FoundOnEdgeが “True”のとき、Foundリザルトは “False”に設定されます。

NumberFound

検出されたオブジェクト数を返す

(最小0個から、最大はNumberToFindプロパティーで設定した検出個数になります。)

Passed 検出結果が良か否かを返す
PixelX 検出パーツ位置の (モデル原点を基準にした)X座標をピクセルで返す
PixelY 検出パーツ位置の (モデル原点を基準にした)Y座標をピクセルで返す
PixelXYU

実行時のみ

検出パーツ位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系における検出パーツ位置の (モデル原点を基準にした)X座標を返す
RobotY ロボット座標系における検出パーツ位置の (モデル原点を基準にした)Y座標を返す
RobotU ロボット座標系における検出パーツ位置のU座標を返す
RobotXYU

実行時のみ

ロボット座標系における検出パーツ位置のRobotX座標, RobotY座標, RobotU座標を返す

Scale 実行時に検出された対象物のスケーリング値を返す
Score 実行時に検出された対象物が、Correlationオブジェクトが検索するモデルに一致するレベルを表す0から1000のINTEGER数値を返す
ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

SkewDirection 実行時に検出された対象物の歪み方向を返す
SkewRatio 実行時に検出された対象物の歪み率を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)
TimedOut オブジェクト実行がタイムアウトで終了したか否かを返す

正規化相関の基本的知識
Correlation (相関サーチ)の目的は、サーチウィンドウで、事前に登録された1つ以上の対象物を位置決めし、測定することです。Correlationオブジェクトは、パーツの検出, 対象物の有無の検出, パーツの欠陥の検出など、さまざまなものの検出に利用することができます。
Vision Guide 8.0は、多様なビジョンオブジェクトツールを装備していますが、Correlationオブジェクトは、高速でしかも信頼性が高いため、一般的によく用いられるツールです。
例えば、多くのアプリケーションで、オブジェクトのエッジを検出するのにエッジツールを使用しますが、同一の領域内にEdgeオブジェクトを混同させるようなエッジが多くある場合は、Correlationオブジェクトをエッジ位置の検出に使用することができます。
また、モデルが登録できる場合にはBlobオブジェクトのかわりに、より信頼性の高いCorrelationオブジェクトが使われる場合もあります。
ここでは、Correlationオブジェクトに適用できるサーチツールの基本的知識について説明します。説明する項目は次のとおりです。

  • 対象物とモデル: 説明
  • 検索の基本的概念
  • 正規化相関
  • 正規化相関形状スコア
  • 正規化相関最適化 (AcceptおよびConfusion)
  • AcceptプロパティーとConfusionプロパティーの値の設定
  • AcceptプロパティーとConfusionプロパティーの応用知識
  • Correlationオブジェクトと回転
  • 角度検索のためのモデル登録
  • 検索の反復性と精度
  • カメラと対象物間距離のキャリブレーション

Correlationオブジェクトのモデルと対象物
Correlationオブジェクトを使うときは、対象物とモデルの違いをよく理解していただくことが重要となります。
対象物とは、サーチウィンドウの領域中のグレイレベルの特定パターンのことです。対象物には、数個のピクセルの単純なエッジから、数万個のピクセルの複雑なパターンまであります。
相関サーチオペレーションでは、領域中の対象物が、事前にその対象物を登録されたモデルに、どの程度一致するかを測定します。
対象物の理想的な表現であるモデル、あるいはテンプレートに対して、対象物とは、実際のサーチウィンドウ内に現実に存在するもののことです。
モデルとは、対象物を表すのに用いられるグレイレベルのパターンのことです。モデルは、テンプレートマッチングシステムにおけるテンプレートと同じものです。
モデルに2つのグレイレベルがあるときは、バイナリモデルと呼ばれ、モデルに3つ以上のグレイレベルがあるときは、グレイモデルと呼ばれています。
グレイモデルは、バイナリモデルに比べてより強力であり、真の対象物に近い対象物を表わすことができるため、Vision Guide 8.0で使われるモデルは、すべてグレイモデルです。グレイモデルを使うことにより、より信頼性の高い検出結果を得ることができます。
一般的な検索では、1つのサーチウィンドウで登録された代表モデルを使って、そのサーチウィンドウ内にある代表モデルの類似対象物を検索します。図は、対象物 (十字線)を含むサーチウィンドウを示します。
十字線のモデルを登録するには、モデルウィンドウを定義し、実行パネルの[ティーチ]ボタンをクリックしてください。
(モデルの登録については、後述の「Correlationオブジェクトの使用方法」を参照してください。)
その結果、モデルは右側の図に示すとおりに作成され、サーチウィンドウ内の他の十字線を検索するのに使用することができます。

対象となる数個の対象物を含むサーチウィンドウ(左側)と画像イメージから登録されたモデル(右側)

検索の基本的概念
検索では、サーチウィンドウ内でモデルが最も類似している領域を検出することによって、対象物を位置づけます。図は、モデルとサーチウィンドウ、およびサーチウィンドウ内でモデルに最も類似している領域 (ピーク)を示します。このようなモデルは、例えばプリント基板上の基準マークのような対象物を検索するのに使えます。ロボットは、サーチファンクションから戻された位置データを使って、ボード上の部品取りつけ位置、あるいは、ボード自体の位置決めの場所を検出できます。

サーチウィンドウ内のモデルの検索方法は数多くありますが、最も一般的な方法は、モデルとの一致を検出する全数検索方法です。この方法では、モデルはサーチウィンドウ中のあらゆる場所で評価され、最も類似性の高い場所がリザルトとして返されます。この全数検索方法では、信頼性の高いリザルトを返すことができますが、半面、処理が非常に遅くなる場合があります。例えば、サーチウィンドウが36(36ピクセルの正方形で、モデルは6ピクセルの正方形としたとき、モデルと一致するものの場所を検出するには、961ヶ所全部で、類似性の評価を行わなければならないことになります。
しかし、Vision Guide 8.0のサーチ方法では、この全数検索方法を大幅に改良しています。まず、サーチウィンドウをスキャンして、一致する可能性がある場所の位置を検出し、次に、その場所についてだけ、類似性を評価します。その中から、最も一致した場所を返すので、全数検索方法に比べて、数千倍も高速の実行時間でリザルトを返すことができます。

正規化相関
正規化相関とは、サーチウィンドウ内の線形差異やモデル輝度の線形差異には左右されずに、画像イメージとモデル間の幾何学的類似性を測定する方法です。
正規化相関は、強力かつ安定なため、Vision Guide 8.0のCorrelationオブジェクトの検索アルゴリズムとして使われています。正規化相関の値は、次に示す状況においても変化することがありません。

  • すべてのサーチウィンドウあるいはモデルピクセルを、ある定数で乗算した場合
  • すべてのサーチウィンドウあるいはモデルピクセルに、ある定数を加算した場合
    正規化相関の最も重要な特性は、正規化相関の値が、サーチウィンドウあるいはモデルの線形な輝度の変化には左右されない、ということです。これは、非常に重要な特性です。
    なぜなら、画像イメージの輝度とコントラストの一切は、照度, 反射性, カメラの絞り, センサーのゲインとオフセット (可能な自動ゲイン制御回路など), 画像イメージデジタイザのゲインとオフセットなどの要因によって決定され、これらはすべて、ほとんどの製造の場面でコントロールが困難だからです。例えば、電球は経時変化し、周囲の光量レベルは1日の時間の推移とともに変化し、カメラとデジタイザは故障する可能性や交換の必要性が生じ、検出される対象物の反射性は変化する可能性があります。
    正規化相関のもう1つの重要な特性は、形状スコア値 (次の「正規化相関の形状スコア」の項参照)が絶対的な有意性を持っているということです。つまり、すべてのモデルとすべてのサーチウィンドウについて同一の完全な一致を定義することができるということです。
    この特性は、画像イメージの輝度とコントラストに左右されないばかりではなく、モデルの輝度、コントラスト、サイズにも左右されません。そのため、検査アプリケーションでの対象物の質の測定に、形状スコアを使うことができるのです。
    サーチウィンドウとモデルについて計算した形状スコアが900であった場合、サーチウィンドウとモデルは非常に類似していることになります。
    形状スコアが100であった場合は、サーチウィンドウとモデルは類似していません。
    これらのステートメントは、モデルあるいはサーチウィンドウ領域について何もわかっていない場合でも有効です。つまり、相関係数は、絶対的な意味を持っているということです。

正規化相関形状スコア
正規化相関では、対象物の形状スコア (モデルへの類似程度)は、0~1000までの値として定義されます。形状スコアが大きくなると、対象物とモデルとの類似性は大きくなります。(形状スコア1000は、完全一致を意味します。)
形状スコアは、CorrelationオブジェクトからScoreリザルトとして返される値です。Scoreリザルトの詳細は、Vision Guide 8.0プロパティー&リザルトリファレンスを参照してください。

正規化相関最適化 (AcceptおよびConfusion)
従来のテンプレートマッチングでは、実際的な検索アプリケーションのほとんどで長い処理時間がかかります。これは、すべての可能性のある検索位置で全数相関に基づいた処理を行っているためです。
この問題を解決するには、適切な指向検索の方法をとることが必要です。指向検索では、検索中に引き出されたデータを使って、一致する可能性のない場所を回避し、一致する可能性のある場所を、検索の指向対象とします。
相関サーチでは、ヒルクライミング法と呼ばれる指向検索を採用しています。ヒルクライミング法では、ローカルデータ全体から、常に上り最大急勾配の方向に移動するので、1つあるいは複数の変数のファンクションピークを検出することができます。あるポイントについて両隣りの各ポイントが低いときに、ピークに到達したとします。
従来のヒルクライミング法には、次に示すような欠点があります。

  • 開始点の場所によって、他に最大値があっても、まちがったピークを得ることがあります。
  • プラトー (平坦域)に到達した場合、検索の方向をどちらにするか決定する余地がありません。

開始点があまりにも少ないと、有意性のあるヒルを見落としてしまう可能性があります。また、開始点があまりにも多いと、別の方向から同じヒルに上るという事態が生じてしまうため、ヒルクライミング法の特色であるスピード優位性が落ちてしまいます。

しかしVision Guide 8.0では、サーチウィンドウ領域とモデルに基づいたヒルについて、次のような見積りを実施することにより、上述の問題を克服することができます。
相関サーチは、数学的にフィルター演算と同じ働きをします。相関ファンクションは、特定の空間周波数を増幅し、その他の空間周波数を減衰する、特定の既知のフィルター (モデル)の出力です。さらに、サーチウィンドウの指定部分の周波数成分がモデルの周波数成分と類似していない場合は、この領域にヒルクライミングの開始点を置く必要はありません。

システムでは、モデルの伝達ファンクションを確認することによって、相関ファンクションの空間周波数成分を見積ります。そして、その値によって、ヒルの最小分布と最小サイズを見積ることができます。最小分布がわかれば、どの地点からヒルクライミングを開始するか計画することができます。また、ヒルの最小サイズがわかれば、誤ったピークに到達する可能性を避けることができます。
モデルから得られる情報の他に、1組のVision Guideプロパティー、つまりAcceptプロパティーとConfusionプロパティーを規定することにより、検索をコントロールします。
Acceptプロパティーは、形状スコアを指定し、この形状スコアと等しいかそれ以上の場合に、特徴は「検出された」と判定されます。 (つまり、Foundリザルトは “True”を返します。) ヒルの高さの大まかな見積りが、サーチウィンドウの指定の領域におけるAcceptプロパティーの値を超えない場合、その領域のヒルクライミングは終了します。
Confusionプロパティーは、サーチウィンドウ内に予想される複雑さの度合を示します。具体的には、検索している実際の対象物ではない対象物で得られる形状スコアの最大値です。これによって、システムは、検索すべきシーンについて重要なヒントが与えられます。つまり、対象物が複雑度のしきい値を超える形状スコアを獲得した場合は、必ず検索している対象物でなければなりません。
システムでは、Confusionプロパティーと予想されるリザルトの数(NumberToFindプロパティーにより指定)を使って、どのヒルに上る必要があり、どのヒルには上る必要がないのかを判断します。具体的には、形状スコアがConfusionプロパティーのしきい値とAcceptプロパティーのしきい値を超える対象物に対して、それが予定した個数検出されると、そこで検索を終了します。
検索を開始するには、複数のヒルクライミングを並行して実施しなければならず、開始点として、モデルの伝達ファンクションによって複数の位置が決定されます。ヒルクライミングが進行するにしたがって、各々のヒルの高さの見積り精度は高くなり、最終的には真のピークが検出されます。

ヒルクライミングは、複数のヒルについて、並行して実施され、一度に1ステップずつ、Confusionプロパティーで設定されたしきい値を超える見積り高さを持つヒルがなくなるまで、処理が続行します。ヒルクライミングがConfusionプロパティーのしきい値に到達したとき、そのヒルのピークに上ります。

Confusionプロパティーのしきい値とAcceptプロパティーのしきい値の設定方法
Confusionプロパティーのしきい値とAcceptプロパティーのしきい値によって、Correlationオブジェクトの検索速度は影響を受けます。
Acceptプロパティーは、どのような場合にシーンの一定領域での検索を続行するかヒントを与えることによって、検索速度に影響を与えます。
Acceptプロパティーが高い値に設定された場合は、対象物はモデルに非常に類似したものとなるので、多くの領域が大まかな確認によって排除され、それ以上の検索が続行されるようなことはありません。
Acceptプロパティーが低い値に設定された場合は、モデルにわずかでも類似している対象物はAcceptプロパティーのしきい値を超えてしまうので、シーン中のより多くの領域について詳細な確認が必要となります。

このように、Acceptプロパティーの値が高ければ、Correlationオブジェクトの実行速度、つまり検索速度は速くなります。
Confusionプロパティーは、検索速度に影響すると予想されるリザルトの数と相互作用します。Confusionプロパティーと予想されるリザルトの数は一緒になって、画像イメージの検索可能領域の全検索が完了する前に、検索を中止させることができます。
Acceptプロパティーを設定して、許容可能な「最悪ケース劣化」の対象物例をシステムによって検出できるようにしてください。劣化は、欠陥, スケール, 回転, ビデオノイズなどによって発生することがあります。
Vision Guide 8.0では、Acceptプロパティーに “700”のデフォルト値を設定しています。この値は、ほとんどのアプリケーションにとって適切な開始点です。ただし、試行や訂正を重ねることによって、状況に合わせて最適な値に設定することもできます。
なお、アプリケーションが適切に機能するためにスコアが “1000”、あるいはそれに近い値である必要はありませんので注意してください。対象物がこうむる劣化のタイプによりますが、アプリケーションによっては形状スコア “200”でも良好な位置情報が得られる場合もあります。 けれども、ほとんどのアプリケーションでは、Acceptプロパティーに “500”以上の形状スコアを使用してください。
「誤認対象物」を獲得すると予想される最高値 (+誤差余裕)を基にして、Confusionプロパティーを設定してください。
Confusionプロパティーのしきい値は、Acceptプロパティーのしきい値に等しいかそれ以上の値にします。高い値を設定すると、検索時間が長くなりますが、正しい対象物を確実に検出するためにはやむをえません。
Confusionプロパティーのデフォルト値は “800”ですが、アプリケーション要件にしたがって調整してください。

下図は、複雑度のほとんどないシーンを示しています。円形のパッドは、十字線とほとんど類似性がありません。したがって、Confusionプロパティーは、かなり低い値 (500程度)に設定することができます。
許容可能な劣化量によりますが、Acceptプロパティーは、通常、Confusionプロパティーに等しいかそれ以下の値に設定します。このシーンでは劣化がほとんどないので、920の形状スコアが適切と予想されます。

複雑度がほとんどないシーン

下図は、複雑度の多いシーンを示しています。フィールドスルーとICパッドは、両方とも、円形パッドに類似しています。したがって、Confusionプロパティーは、かなり高い値 (820程度)に設定しなければなりません。

複雑さの度合いが高いシーン

AcceptプロパティーとConfusionプロパティーの応用知識
グレイ定数の領域を持つサーチウィンドウは、その領域で常に0の相関値を獲得します。シーンが、基本的に均一の背景を持つ場合 (例: 1枚の白い紙)はほとんどの場所で相関がないので、Correlationオブジェクトが何かを検出した場合、それは検索したい対象物であるはずであり、したがって、Confusionプロパティーは低い値に設定することができます。
AcceptプロパティーとConfusionプロパティーの設定の仕方によって、より迅速に対象物の位置を把握させることができる、と考えることもできます。
一般的に、これらのプロパティーには慎重な値を設定すべきであって、正確に設定する必要はありません。最も慎重な設定方法は、Acceptプロパティーを低く、Confusionプロパティーを高く設定する方法です。
検索するシーンについてわかっている情報が少ししかない場合は、より慎重な設定方法をとってください。検索は注意深く実行されますが、検索速度は遅くなります。
(これは、Correlationプロパティー位置リザルトを使ってロボットに動作先を示す場合、特に重要となります。)
検索するシーンについてわかっている情報が多い場合は、より大まかな設定方法を実施してください。例えば、ある一つの対象物を探していて、残りのシーンに何もない場合は、より大まかな値を設定してください。注意深く検索する必要がないので、検索速度は速くなります。

複数リザルトのダイアログを使って、検索上の問題をデバッグする方法
たとえ同一生産ロット内でも、ときには、作業しているパーツがかなり変化したり、1つのパーツ上に類似対象物が2つ以上あったりする場合があります。このような場合、Acceptプロパティーを適切な値に設定した場合でも、その値に該当する他のパーツをまちがえて検索してしまう場合があります。これらのケースでは、何が起こるか予想するのが非常に困難です。
ShowAllResultsダイアログは、上記の問題をはじめとする種々の問題を解決するために作成されました。
1つのパーツ上に1つの対象物だけを検出したい場合は、複数検出を行って、Vision Guide 8.0が時々二次的な対象物を本来検出したい対象物として結果を返す理由を調べることができます。このような問題が発生するには、一般的に、いくつか異なった原因があります。

  • サーチウィンドウ中の2つ以上の対象物が非常に類似しているため、非常に近い値のScoreリザルトを持つ場合
  • Confusionプロパティー、またはAcceptプロパティーが十分高く設定されていないために、本来検出したい対象物よりも低いスコアを持つ対象物がAcceptプロパティーの設定値を満たしてしまう場合

Vision Guide 8.0を初めてご使用になる方にとって、上記の2つの状況は、サーチウィンドウ内で1つの対象物を検索する場合に極めて混同しやすいので注意してください。
ときには本来検出したい対象物が検出され、またときには別の対象物が検出されるようなときには、リザルトダイアログを使って、問題を特定してください。問題の原因を参照するための手順を、次に示します。

  1. NumberToFindプロパティーを “3”以上に設定してください。
  2. Vision Guide 8.0開発環境からビジョンオブジェクトを実行してください。
  3. [ShowAllResults]プロパティーボタンをクリックして、リザルトダイアログを表示してください。
  4. 検出された上位3つあるいはそれ以上の対象物のスコアを確認してください。
  5. 1つまたは2つの対象物だけが検出された場合 (Vision Guide 8.0は、検出されたとみなされるそれらの対象物について、スコアの設定だけをします。) 1より多い対象物が検出されるように、Acceptプロパティーを低くして、ビジョンオブジェクトをもう一度実行してください。 (Acceptレベルは、リザルトダイアログを確認したあとで、元に戻すことができます。)
  6. [ShowAllResults]プロパティーボタンをクリックして、リザルトダイアログを表示してください。
  7. 検出された上位3つあるいはそれ以上の対象物のスコアを確認してください。

上述のように、検出された上位3つあるいはそれ以上の対象物のスコアを確認すると、問題の原因が明確になります。このような問題は、ほとんど次に示すどちらかの場合に発生します。

  • 検出された各々の対象物が、Acceptプロパティーの設定値より大きいスコアを持っている場合。このような場合には、Confusionプロパティーをより高く設定し、適切な対象物だけを常に強制的に検出するようにして、Acceptプロパティーのしきい値に一致するようなその他の対象物は返されないようにしてください。また、Acceptプロパティーの値を変更することもできます。
  • 各々の対象物のスコアが非常に近接している場合。このような場合は、次の処理を行って、本来検出したい対象物が区別できるようにしてください。
    • サーチウィンドウを再調整し、検出対象物としてランダムに返される対象物がサーチウィンドウ内部に入らないようにします。
    • 本来検出したい対象物をモデルに再登録します。
    • アプリケーションの照明条件を調整して、本来検出したい対象物が、間違って検出してしまう対象物のスコアより高いスコアを獲得するようにしてください。
      複数リザルトの使用方法の詳細は、「1つのオブジェクトから複数のリザルトを返す」の項目を参照してください。

Correlationオブジェクトと回転
テンプレートマッチング手順では、対象物とモデルとでサイズや角度に差がある場合、形状スコアと位置決め精度が低下します。差異が大きい場合には、形状スコアは非常に低くなるか、検索作業では対象物を検出することができなくなります。
角度とサイズ変更の正確な許容誤差は、モデルによって異なりますが、一般的に、角度については3o ~ 10o、サイズについては、2 ~ 5%の範囲となっています。
角度に依存しない円のような点対称のモデルや、サイズに依存しない1つのエッジと1つの角で構成されるモデルなどは例外です。
サーチウィンドウ内に、2つの異なるシーンを想定してください。
1つのシーンは人間の顔の写真で、鼻がモデルとして教示されています。鼻はXY対称とはみなされないので、回転することによって、この対象物の位置の精度は極度の影響を受けます。2つめのシーンは、基準点 (図に示すような十字線)がモデルのプリント基板です。この場合、基準点のマーク (十字線)はXY対称なので、回転することによって、この対象物の位置の精度は、即座に圧倒的な影響を受けるということはありません。
基本的に、繊細な対象物 (鼻、花や木などの写真)が優位的なモデルは、回転に対して比較的、許容度が低くなります。例えば十字線のような対称的な対象物は、回転に対して比較的、許容度が高くなります。
ただし、以上のことに念頭においていただいた上で、回転角度の決定には、Polarオブジェクトを使うことをお勧めします。CorrelationオブジェクトはXY位置の検出に使い、PolarオブジェクトはCorrelationオブジェクトと関連して、XY位置を対象物の角度検出の中心点に使うことができます。PolarオブジェクトをCorrelationオブジェクトやその他のビジョンオブジェクトと関連して使用する方法の詳細は、「Polarオブジェクト(ポーラサーチ)」 を参照してください。

有意性のある角度、またはスケールの変化が予想される場合に使用できる手法はいろいろありますが、主要な手法は次に示すとおりです。

  • 複雑な対象物を、小型の単純な対象物に分解します。一般的に小型の単純モデルは、大型の複雑モデルに比べて、スケールや角度の変化に対する感度が極めて低くなります。
  • 角度関係プロパティー (AngleEnable, AngleRange, AngleMaxIncrement)を使って、Correlationオブジェクトで作業するときに回転角度の検出をサポートします。
    単純な特徴に分解できない、複雑なシーンの複雑な対象物を位置づけるときに使用するとよいでしょう。ただし、この機能は、さまざまな角度での一連のモデルをもつことで実行されますので、通常検索に比べて処理は何倍も遅くなります。

キーポイント


Correlationオブジェクトの角度検出付きサーチを行う場合は、Correlationオブジェクトのモデルを登録するときに、AngleEnableプロパティーの設定を “True” としておかなければなりません。この設定によって、AngleRangeプロパティーやAngleMaxIncrementプロパティーによって定義されるさまざまな角度でCorrelationオブジェクトを登録できるようになります。

パーツの回転角度を決定するには、CorrelationオブジェクトとPolarオブジェクトを一緒に使います。詳細は、「Polarオブジェクト(ポーラサーチ)」を参照してください。

角度検出のためのモデル登録
角度検出付きサーチを行うには、まず、一連の回転モデルを登録するよう、システムに指示しなければなりません。
そのための手順としては、AngleEnableプロパティーを “True”に設定し、登録されるモデルの角度範囲をAngleRangeプロパティーを使って指定します。この方法で回転モデルを登録する場合は、その範囲内で等分間隔で角度を変えたさまざまな回転モデルが1組、自動的に作成されます。
また、その角度範囲内で、モデルが登録される角度最大増加量を指定することができます。この指定は、CorrelationオブジェクトのAngleMaxIncrementプロパティーの増加量の値を設定することによって実施できます。
ただし、AngleMaxIncrementプロパティーに関しては、次の点に留意してください。

  • 角度最大増加量を指定すると、モデル登録ファンクションは角度の自動増加量を選択し、選択された増加量と指定された角度最大増加量のうちで、自動的に小さい方の角度増加量を使用します。
  • AngleMaxIncrementプロパティーを “0”に設定すると、モデル登録ファンクションは角度の自動増加量を選択し、その角度増加量を使用します。この場合は、一般的に角度増加量の範囲を2o ~ 5oの間に設定します。
    その結果、最小のモデル必要容量と最大の検索速度が得られますが、期待値に比べておおよその結果になる場合もあります。

角度を正確に計測したい場合は、AngleMaxIncrementプロパティーに、必要とする角度精度に対応するような増加量を設定しなければなりません。
角度増加量を小さく設定すれば、その分モデルに必要な容量は大きくなり、検索速度は遅くなりますので、注意してください。

キーポイント


角度の判断には、できる限りPolarオブジェクトを使用することをお勧めします。Polarオブジェクトは、ロボットガイダンスにビジョンを使用するときに要求される、非常に信頼性の高く高精度のリザルトを提供します。

角度付でモデルを登録するときは、モデルがサーチウィンドウの外側にはみ出すことなく回転できるように、サーチウィンドウは充分大きくなければなりません。

検索の反復性と精度
検索の反復性と精度とは、モデルのサイズと詳細 (形状, 対象物の粗さ, 形状の対称性)と、サーチウィンドウの中の対象物の劣化 (ノイズ, 欠陥, 回転やスケールによる影響)により影響を受けます。
無相関ノイズによる位置への影響を測定するには、劣化のない対象物を含む特定のサーチウィンドウで検索を実行し、この検索と完全に同じ検索をオブジェクトの位置を変更せずに再実行し (2番目の画像イメージをフレームバッファに取り込み)、位置についての測定結果を比較します。
そのための手順を次に示します。

  1. モデルの定義後、実行パネルのオブジェクトの[Run]ボタンを2回以上クリックします。
  2. [統計]ツールバーボタンをクリックします。
  3. すると、統計ダイアログが表示され、2回のオブジェクト検索で得られた位置の差異を調べることができます。

劣化のない対象物の大型モデル (30(30)については、1/20ピクセルの繰返し精度を得ることも可能です。しかし、ほとんどの場合、1ピクセルをわずか下まわる精度 (1/2, 1/3, 1/4など)が現実的です。
検索精度は、劣化のない対象物を含む特定のサーチウィンドウで検索を実行し、対象物を移動して、検索で得られた位置の差異と実際の差異を比較することで計測できます。
劣化がなく、回転誤差やスケール誤差がなく、X方向、Y方向ともに充分なエッジがある大型モデル (30(30)については、検索精度は、1/4ピクセルになります。 (これは、ビジョンシステムでの検索精度であって、ロボットに固有の不正確な精度は影響していませんので、注意してください。したがって、ロボットでパーツを移動するときは、ロボットメカニズムそのものの不正確な精度も考慮に入れなければなりません。)
回転とスケールが検索精度に与える影響は、モデルによって左右されます。

  • 回転によって対称形となるモデルでは、良好な検索精度が得られます。
  • 繊細な対象物で非対称形モデルでは、良好な検索精度は得られません。

カメラと対象物間距離のキャリブレーション
最適な検索結果を得るためには、画像イメージ中の対象物の検索時のサイズが、モデルが登録されたときのサイズと同じでなければなりません。
同じカメラと同じレンズを使用すると仮定した場合、モデルを登録した時と検索を実行する時とで、対象物とカメラとの距離が変わると、サーチウィンドウ中では対象物の見かけ上のサイズが異なって見えます。つまり、カメラが対象物に近づくと対象物は大きくなり、カメラが対象物から遠ざかると対象物は小さくなります。

キーポイント


対象物とカメラとの距離が変わるときは、モデルを再登録しなければなりません。

Correlationオブジェクトの使用方法
以上で正規化相関と検索処理がどのように動作するのか確認し、Vision Guide 8.0のCorrelationオブジェクトの使用方法を理解するための基本的知識を得ることができました。
ここでは、Correlationオブジェクトの使用方法を、次にリストアップしたステップごとに説明します。

  • 新規Correlationオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • モデルウィンドウの位置とサイズの設定
  • モデル原点の位置決め
  • Correlationオブジェクトの関連プロパティーの構成
  • モデルの登録
  • Correlationオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト
  • 単一Correlationオブジェクトからの複数検出を使用した作業

これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。
すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規Correlationオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Correlation (相関サーチ)]ボタンをクリックしてください。
  2. マウスカーソルはCorrelationアイコンに変わります。
  3. マウスを動かして、Correlationアイコンを、Vision Guideウィンドウの画像イメージ表示部まで、ドラッグしてください。そして、マウスの左側のボタンをクリックして、画像イメージ表示部にCorrelationオブジェクトを置いてください。
  4. オブジェクト名は自動的に作成されますので注意してください。この例では、このシーケンスで最初に作成されたCorrelationオブジェクトなので、 “Corr01”というオブジェクト名になります。 (オブジェクト名の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上には、下図のようなCorrelationオブジェクトが表示されます。

新規Correlationオブジェクトのレイアウト

  1. Correlationオブジェクトの名称ラベルをクリックし、ボタンを押し続けながら、Correlationオブジェクトをドラッグして、サーチウィンドウの左上コーナーを好きな位置に合わせてください。
  2. サイズハンドルをクリックして、マウスをドラッグすると、Correlationオブジェクトサーチウィンドウのサイズが変更できますので、適当な大きさに調整してください。 (サーチウィンドウ内が、被検索領域になります。)

注意


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

Step 3: モデルウィンドウの位置とサイズの設定

  1. 作業を行うCorrelationオブジェクトサーチウィンドウは、マゼンタ色になり、サイズハンドルがそれぞれの角と各辺の中央に表示されているはずです。サイズハンドルがない場合は、Correlationオブジェクト名フィールドをクリックしてください。作業を行うCorrelationオブジェクトのサイズハンドルが表示されて、マゼンタ色になったら、手順2に進みます。
  2. モデルウィンドウを形成するボックスの1辺をクリックしてください。この操作によって、モデルウィンドウが強調表示され、モデルウィンドウのサイズハンドルが表示されます。
  3. Correlationオブジェクトのモデルとして登録する対象物を、モデルウィンドウで囲みます。まず、モデルウィンドウを形成するボックスの1辺をクリックして、マウスを押し続けながらモデルウィンドウをドラッグし、モデルウィンドウの左上コーナーの位置を合わせてください。
  4. 次に、サイズハンドルをクリックしてマウスをドラッグし、モデルウィンドウのサイズを調整して、Correlationオブジェクトのモデルとして登録する対象物を囲んでください。

Correlationオブジェクトのレイアウトは、下図のように表され、サーチウィンドウは被検索領域をカバーし、モデルウィンドウは検索したい対象物を包囲しているはずです。実際のサーチウィンドウとモデルウィンドウは、この例のようには表されていないかもしれませんが、画面予想図として参考にしてください。

サーチウィンドウとモデルウィンドウの位置と、サイズ調整後のCorrelationオブジェクト

キーポイント


モデルウィンドウの位置とサイズを適切に設定するための注意点:
Correlationオブジェクトのモデルウィンドウの位置とサイズは、これによって検索する対象物が定義されるので、適切な調整を行うことが重要です。モデルウィンドウを作成する場合には、特に次の2点に留意してください。

  • 被検索領域であるサーチウィンドウは、なるべく小さい方が検索時間を短縮できます。また、特にパーツの回転が大きいと予想されるときには、サーチウィンドウを小さく設定し、モデルも小さく (パーツの一部などに)設定できれば、パーツの回転による影響が少なくてすみます。
  • モデルウィンドウサイズを可能な限りサーチウィンドウサイズに近づけることによって、検索実行時間を短縮することができます。

また、2つのパーツが互いに接触するくらいに隣接しているような場合は、モデルウィンドウを実際の対象物より少しだけ (数ピクセル分)大きめに設定しておくと、対象物を他の物体と区別しやすくなります。
モデルウィンドウの最適なサイズは、それぞれのビジョンアプリケーションによって異なりますので注意してください。

Step 4: モデル原点の位置決め
モデル原点は、Correlationオブジェクトを実行するときに、対象物の位置として返されるモデル上の位置を定義します。つまり、モデル原点は、位置データが重要となる場合に、有意性のある場所に位置づけられていなければなりません。
例えば、Correlationオブジェクトを使ってパーツを検出し、ロボットにパーツのピックアップや配置をさせる場合は、モデル原点の位置は、ロボットが簡単にパーツをつかむことのできる場所であることが重要となります。
その位置は、RobotX, RobotY, RobotU, RobotXYUリザルトに基づくロボットの動作先になるからです。
新規Correlationオブジェクトが作成されると、ModelOrgAutoCenterプロパティーはデフォルト値の “True”に設定されます。つまり、モデル原点は、モデルウィンドウの中心に自動的に位置づけられ、手動で移動させることができません。
モデル原点を移動させたい場合には、最初にModelOrgAutoCenterプロパティーの値を “False”に設定する必要があります。この設定手順と、モデル原点を実際に位置決めする手順を次に示します。

  1. Vision GuideウィンドウのフローチャートからCorrelationオブジェクトをクリックしてください。オブジェクトウィンドウのプロパティーリストでModelOrgAutoCenterプロパティーを探し、その設定値フィールドをクリックしてください。
  2. ドロップダウンリストに、2つの選択項目、 “True” と “False”が表示されますので、 “False”をクリックしてください。これで、ModelOrgAutoCenterプロパティーが “False”に設定され、モデル原点はマウスで移動することができます。
  3. モデルウィンドウをクリックして、モデルウィンドウを強調表示させてください。
  4. モデル原点をクリックして、マウスボタンを押し続けながら、モデル原点を新規の位置にドラッグしてください。なお、モデル原点を置くことができるのは、モデルウィンドウの境界内だけですので、注意してください。

Step 5: Correlationオブジェクトプロパティーの設定
Correlationオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。あるいは、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、Correlationオブジェクトで一般的に使われるプロパティーのいくつかを示します。
Correlationオブジェクトをテストするときは、これらのプロパティーを設定する必要はありません。ただし、実際にCorrelationオブジェクトで作業するのが初めての方は、この説明を参考にしてください。
その他、さまざまなビジョンオブジェクトの多くで使われる、AbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。

  • Correlationオブジェクトのプロパティーリスト
  • "Vision Guide 8.0プロパティー&リザルトリファレンス"

注意


ビジョンシーケンスの実行結果は、外らん光や外部機器ノイズにより影響を受けることがあります。外らん光や外部機器ノイズにより、影響を受けると、取り込み画像が想定外の結果となり、検出位置結果がサーチエリア (検出エリア)内の不特定位置になる可能性があります。Accept, RejectOnEdgeなどのプロパティー値を適切に設定し、誤検出リスクを軽減してください。

項目 説明
Nameプロパティー

新規に作成されたCorrelationオブジェクトに、デフォルトとして与えられるオブジェクト名は “Corrxx”です。xxは、1つのビジョンシーケンス内で複数のCorrelationオブジェクトを用いるとき、それらのCorrelationオブジェクトを区別するための番号です。

ビジョンシーケンスで1番目に用いられるCorrelationオブジェクトには、 “Corr01”というオブジェクト名がデフォルトで設定されます。オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でCorrelationオブジェクト名を表示する場所は、すべて変更後の名称に変わります。

Acceptプロパティー

Acceptプロパティーは、対象物が一致するべき、あるいは検出されたと判定するときの基準となる形状スコアの値を設定します。

Scoreリザルトに返される値は、このAcceptプロパティーに設定されている値との比較が行われます。デフォルト値は “700”で、Correlationオブジェクトの初回実行時には適切な値です。

Confusionプロパティー サーチウィンドウの中に類似する対象物が複数個ある場合、このConfusionプロパティーを使うと、検索したい対象物を正確に獲得するのに役立ちます。デフォルト値は “800”で、Correlationオブジェクトの初回実行時には適切な値です。
ModelOrgAutoCenterプロパティー

最初にこのModelOrgAutoCenterプロパティーを “False”に設定しておくとモデル原点の位置が変更できます。

デフォルト: True

Frameプロパティー このプロパティーによって、事前に定義されていたFrameオブジェクトをCorrelationオブジェクトのリファレンスフレームとして選択することができます。Frameの詳細は、「 Frameオブジェクト (フレーム)」の項目を参照してください。
NumberToFindプロパティー 検出したい対象物の数に合わせて、NumberToFindプロパティーを1より大きい数値に設定することができます。これによって、Correlationオブジェクトは1つのサーチウィンドウ内で複数の対象物を検出することができます。
AngleEnableプロパティー Correlationモデルを角度付で検索したい場合は、このプロパティーを “True”に設定しなければなりません。複数のモデルを角度付で検索できるようにするには、Correlationオブジェクトのモデル登録の前に、このプロパティーを “True”に設定しておかなければなりません。
AngleMaxIncrementプロパティーとAngleRangeプロパティー これらのプロパティーは、AngleEnableプロパティーと一緒に用いることにより、相関モデルを角度付で検索することができます。
RejectOnEdgeプロパティー このプロパティーによって、サーチウィンドウのエッジにかかって検出されたパーツを除外することができます。通常はこのプロパティーをTrueに設定します。

プロパティーは、まずデフォルト設定のままにして次のステップに進み、後で必要に応じて設定を変更することができます。

Step 6: Correlationオブジェクトのモデルの登録
Correlationオブジェクトには、検索するためのモデルが必要であり、モデルの登録と呼ばれるプロセスによって実行します。すでに、Correlationオブジェクトのモデルウィンドウは、モデルとして使いたい対象物をとり囲むように位置決めされているはずです。モデルの登録は、次に示す手順で完成します。

  1. Correlationオブジェクトが、現在表示されているオブジェクトであることを確認してください。フローチャート、またはシーケンスツリーを見ると、どのオブジェクトが現在作業中のオブジェクトになっているか確認することができます。また、画像イメージ表示部で、どのオブジェクトがマゼンタ色で強調表示されているかによって確認することもできます。
  2. 実行パネルにある、[ティーチ]ボタンをクリックしてください。モデルが登録されます。モデルの登録に要する時間は、ほとんどの場合わずか数秒です。ただし、AngleEnableプロパティーが “True”に設定されているときにモデルを登録する場合は、わずかな角度ずつオフセットした複数のモデルを登録する必要があるため、モデルの登録には、かなりの時間を要します。

Step 7: Correlationオブジェクトのテストとリザルトの確認
Correlationオブジェクトは、実行パネルのオブジェクトの[Run]ボタンをクリックするだけで簡単に実行できます。
Correlationオブジェクトが実行されると、リザルトが表示されますので確認してください。この時点で確認すべき主要なリザルトは、次のとおりです。

項目 説明
Foundリザルト

Correlationオブジェクトが検出されたかどうかの値を返す

検索している対象物が検出されると、リザルトとして “True”が返ります。対象物が検出されないと、Foundリザルトは “False”を返し、赤で強調表示されます。Correlationオブジェクトが検出されなかった場合、その一般的理由について Step 8を参照してください。

FoundOnEdgeリザルト

対象物がサーチウィンドウのエッジに接して検出されたときに、 “True”を返す

この場合、Foundリザルトは “False”を返します。

Scoreリザルト

モデルと、モデルに最もよく似ている対象物とが、どの程度一致しているかを示す

Scoreリザルトの範囲は、0~1000で、1000はモデルと対象物が完全に一致したことを示します。検出された対象物が、検索したい対象物に一致している程度を確認するために、まず、Correlationオブジェクト実行後のScoreリザルトを確認してください。

Timeリザルト

Correlationオブジェクトの実行に要した時間を返す

サーチウィンドウとモデルウィンドウを小さくすることで、検索速度は速くなります。

NumberFoundリザルト 1つ以上のCorrelationオブジェクトを実行するとき、NumberFoundリザルトは、Correlationオブジェクトのモデルに一致した対象物の数を返す
Angleリザルト

Correlationオブジェクトの傾斜角度を返す

この角度は、モデルに設定された初期角度に基づいて計算されますが、ときには概略的な値であり、信頼性が高くないことがあります。回転角度の決定にはPolarオブジェクトを使うことをお勧めします。特にロボットガイダンスには、Polarオブジェクトを使うようにしてください。

PixelXリザルト

PixelYリザルト

対象物のXY座標値 (ピクセル座標系)を返す

この値は、検出された対象物のモデル原点の位置です。別の位置を返したい場合は、モデル原点の位置を変更し、モデルを再登録する必要があります。

CameraXリザルト

CameraYリザルト

カメラ座標系における検出対象物のXY座標値を定義

これらのリザルトは、カメラキャリブレーションが完了していない場合は “no cal”を返し、値を返しません。

RobotXリザルト

RobotYリザルト

ロボット座標系における検出対象物のXY座標値を定義

ロボットは、このXY座標値を動作先とすることができます。 (他の変換、処理作業は不要です。)

この値は、検出された対象物のモデル原点位置です。別の位置を返したい場合は、まずモデル原点の位置を変更しモデルを再登録する必要があります。これらのリザルトは、カメラキャリブレーションが完了していない場合は “no cal”を返し、値を返しません。

RobotUリザルト

検出対象物の角度として、ロボット座標系に変換された値を返す

RobotUリザルトは、カメラキャリブレーションが完了していない場合は “no cal”を返し、値を返しません。

ShowAllResults 複数のリザルトで作業しているとき、ShowAllResultsの設定値フィールドにあるボタンをクリックすると、ShowAllResultsダイアログが表示され、現在作業中のビジョンオブジェクトのリザルトすべてを参照することができます。

キーポイント


上記のステップ例では、キャリブレーションを実行していませんので、RobotXYU, RobotX, RobotY, RobotU, CameraX, CameraY, CameraXYUのリザルトは、 “no cal”を返します。これは、キャリブレーションを実行しなかったため、ロボット座標系あるいはカメラ座標系に関して座標リザルトを計算することができなかった、という意味です。詳細は、以下を参照してください。

ビジョンキャリブレーション

Step 8: プロパティーの調整と再テスト
Correlationオブジェクトを数回実行することで、検出上の問題が見つかったり、プロパティー設定の微調整をする必要が出てきたりするかもしれません。
ここでは、一般的に生じる問題のトラブルシューティングや、微調整の方法について説明します。

Correlationオブジェクトのトラブルシューティング
CorrelationオブジェクトがFalseのFoundリザルトを返す場合

  • 返されたScoreリザルトが、Acceptプロパティーの設定より低くなっていないか確認してください。Scoreリザルトのほうが低くなっている場合は、Acceptプロパティーの設定を少し低め(例えば、現在のScoreリザルトより小さい値)に変更し、Correlationオブジェクトを再度実行してみてください。
  • 返されたFoundOnEdgeリザルトが、 “True”かどうかを確認してください。 Foundリザルトが “False”を返し、FoundOnEdgeリザルトが “True”を返した場合は、対象物は検出されたものの、その一部がサーチウィンドウに接触していることを意味しています。この場合は、サーチウィンドウを大きくし、対象物がサーチウィンドウに収まるようにしてください。サーチウィンドウのサイズ変更が不可能な場合は、カメラの位置を変更するか、モデルウィンドウのサイズを再調整してください。

Correlationオブジェクトが誤認対象物を検出した場合

  • Acceptプロパティーは、充分高い値に設定されているでしょうか。Acceptプロパティーの設定値が低すぎると、検索対象となる対象物のかわりに、別の対象物が検出される可能性があります。
  • Confusionプロパティーは、充分高い値に設定されているでしょうか。Confusionプロパティーの値は、Acceptプロパティーの値に等しいか、それ以上の値でなければなりません。また、サーチウィンドウ内に、検索する対象物に類似した対象物がある場合は、Confusionプロパティーの設定をさらに高い値に変更し、別の対象物を誤って検出しないようにしなければなりません。
  • サーチウィンドウを調整して、検索する対象物に近づけ、その対象物だけを隔離するようにしてください。

Correlationオブジェクトの微調整
オブジェクトが正常に動作するためには、通常、Correlationオブジェクトの微調整が必要となります。
Correlationオブジェクトの微調整に関する主要なプロパティー、およびモデル追加について、次に説明します。

項目 説明
Acceptプロパティー Acceptプロパティーを低くすると、Correlationオブジェクトの実行速度は速くなります。しかし、Acceptプロパティーの値が低いと、検出したい対象物とは別の対象物が検出される可能性も強くなります。Correlationオブジェクトを数回実行してみて、Scoreリザルトに返される形状スコアの値の予想がつけられるようになったら、Acceptプロパティーの値を調整してみてください。数回試行を重ね、より速い実行速度で信頼性の高い対象物を得ることができるような適切な値を設定してください。
Confusionプロパティー サーチウィンドウ中に類似特徴が複数ある場合は、Confusionプロパティーに相対的に高い値を設定する必要があります。これによって、検出したい対象物を、他の混同しやすい対象物と区別して検出することができます。ただし、Confusionプロパティーの値を高く設定すると、実行速度が遅くなります。サーチウィンドウ中に類似対象物がない場合は、Confusionプロパティーに低い値を設定して実行速度を速くすることができます。
サンプルの追加 現在のモデルと同じサイズのモデルウィンドウでティーチすると、「サンプルの追加」を選択できます。形や模様が少し違う、影の出方が変わる、など、モデルが少し変化する場合、変化したモデルを選択してモデルを追加すると、オブジェクト実行時のスコアが安定的になります。角度が大きくずれていたり、変化が大きくてモデルの追加に失敗したときは、もとのモデルが保持されます。

調整が完了し、Correlationオブジェクトのテストを行って、満足なリザルトを得ることができたら、ビジョンオブジェクトの作成ステップは完了します。
次のステップとして、他のビジョンオブジェクトを作成し、ビジョンシーケンス全体の設定やテストに進むことができます。

Correlationオブジェクトに関するその他の便利なユーティリティ
この時点で、Vision Guide 8.0のヒストグラム機能を確認することもできます。
ヒストグラムは、サーチウィンドウ内のグレイスケール値の分布をグラフィックに表示できるので、非常に便利です。Vision Guideヒストグラムの使用方法の詳細は、以下を参照してください。
概要

また、Correlationオブジェクトのリザルトを統計的に確認するのに、Vision Guide統計機能を使用することもできます。
Vision Guide統計機能の詳細は、以下を参照してください。
統計ツール

Blob オブジェクト (2値検査)

Blobオブジェクトの概要
Blobオブジェクトは、2値検査ツールを利用して、幾何学的特徴、位相的特徴、その他の画像イメージの特徴量を計算処理します。
Blobオブジェクトは、画像イメージ中の対象物の有無、サイズ、方向を決定するのに便利です。例えば、Blobオブジェクトを使って、シリコンウエハー上のインクドットの有無やそのサイズと位置の検出、部品方向の決定、さらにはロボットガイダンスなどをすることができます。(ただし、回転方向の決定にはPolarオブジェクトを使用することをお勧めします。)
Blobオブジェクトで計算処理される幾何学的特徴は、次のとおりです。

  • 領域と周
  • 重心
  • 主軸と慣性モーメント
  • 連結性
  • 外接長方形
  • ピクセル座標系、カメラ座標系、ロボット座標系での重心の座標位置
  • ブローブの穴、ざらつき、コンパクトさ

Blobオブジェクトのレイアウト
Blobオブジェクトのレイアウトは、Correlationオブジェクトのような長方形です。しかし、Blobオブジェクトにはモデルがありません。つまり、Blobオブジェクトのレイアウトには、モデルウィンドウやモデル原点は必要ありません。下のように、Blobオブジェクトはオブジェクト名とサーチウィンドウだけです。サーチウィンドウは、Blobを検索する領域を定義します。Blobオブジェクトの例を下に示します。

Blobオブジェクトのプロパティー
Blobオブジェクトで使われるプロパティーの一覧を次に示し、簡単に説明します。各プロパティーの詳細は、Vision Guide 8.0プロパティー&リザルトリファレンスを参照してください。

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

CalRobotPlacePos 設計時とプログラム実行時に RobotPlacePos をキャリブレーションする
Caption

見出しをBlobオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーから使用するリザルトを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にBlobオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

SearchWinTypeがRotatedRectangleに設定されている場合、サーチウィンドウはAngleリザルトにしたがって回転します。

デフォルト: False

CheckClearanceFor クリアランス (隙間)を確認するオブジェクトを設定
ClearanceCondition クリアランス (隙間)の判断方法を指定
CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentResult

オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義

デフォルト: 1

Description

ユーザー指定の説明を設定

デフォルト: 空欄

EditWindow 被検索領域の検出マスクを定義
Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出不良時の色を選択

デフォルト: Red

FillHoles

2値画像の穴を埋めるかを選択

デフォルト: False

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: None

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics 表示するグラフィックを指定
LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

MaxArea

オブジェクトの上限領域を規定

被検出ブローブが取得するAreaリザルトは、MaxAreaプロパティーに設定された値より低くなければなりません。

デフォルト: 100,000

MinArea

オブジェクトの下限領域を規定

被検出ブローブが取得するAreaリザルトは、MinAreaプロパティーに設定された値より高くなければなりません。

デフォルト: 25

MinMaxArea 実行時のみ1ステートメントでMinAreaとMaxAreaを設定、または返す
Name

Blobオブジェクトに独自のプロジェクト名を割りあてる

デフォルト: Blob01

NumberToFind

サーチウィンドウの中で検出するオブジェクトの数を指定

デフォルト: 1

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

Polarity

オブジェクトと背景の差 (明るい背景に暗いオブジェクトか、暗い背景に明るいオブジェクトか)を定義

デフォルト: 1 - DarkOnLight

RejectOnEdge

Trueに設定すると、サーチウィンドウのエッジにかかって検出されたブローブを無視します

デフォルト: False

SearchWin

実行時のみ

1コールでサーチウィンドウの左端, 上端, 高さ, 幅、または、中心のX座標, 中心のY座標, 円内周の半径サイズ, 円外周の半径サイズのパラメーターを設定、または返す

SearchWinAngle 被検索領域の角度を定義
SearchWinAngleEnd 被検索領域の終了角度を定義
SearchWinAngleStart 被検索領域の開始角度を定義
SearchWinCenterX 被検索領域の中心のX座標値を定義
SearchWinCenterY 被検索領域の中心のY座標値を定義
SearchWinHeight

被検索領域の高さを定義 (単位: ピクセル)

デフォルト: 100

SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinPolygonPointX1 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第1頂点のX座標値を定義
SearchWinPolygonPointY1 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第1頂点のY座標値を定義
SearchWinPolygonPointX2 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第2頂点のX座標値を定義
SearchWinPolygonPointY2 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第2頂点のY座標値を定義
SearchWinPolygonPointX3 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第3頂点のX座標値を定義
SearchWinPolygonPointY3 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第3頂点のY座標値を定義
SearchWinPolygonPointX4 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第4頂点のX座標値を定義
SearchWinPolygonPointY4 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第4頂点のY座標値を定義
SearchWinPolygonPointX5 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第5頂点のX座標値を定義
SearchWinPolygonPointY5 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第5頂点のY座標値を定義
SearchWinPolygonPointX6 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第6頂点のX座標値を定義
SearchWinPolygonPointY6 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第6頂点のY座標値を定義
SearchWinPolygonPointX7 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第7頂点のX座標値を定義
SearchWinPolygonPointY7 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第7頂点のY座標値を定義
SearchWinPolygonPointX8 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第8頂点のX座標値を定義
SearchWinPolygonPointY8 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第8頂点のY座標値を定義
SearchWinPolygonPointX9 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第9頂点のX座標値を定義
SearchWinPolygonPointY9 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第9頂点のY座標値を定義
SearchWinPolygonPointX10 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第10頂点のX座標値を定義
SearchWinPolygonPointY10 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第10頂点のY座標値を定義
SearchWinPolygonPointX11 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第11頂点のX座標値を定義
SearchWinPolygonPointY11 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第11頂点のY座標値を定義
SearchWinPolygonPointX12 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第12頂点のX座標値を定義
SearchWinPolygonPointY12 SearchWinTypeが“Polygon”に設定されている時の、被検索領域の第12頂点のY座標値を定義
SearchWinRadiusInner 被検索領域の円内径を定義
SearchWinRadiusOuter 被検索領域の円外径を定義
SearchWinTop 被検索領域の最上端を定義(単位: ピクセル)
SearchWinType 被検査領域のタイプ (Rectangle, RotatedRectangle, Circle, Arc, Polygon)を定義
SearchWinWidth

被検索領域の幅を定義 (単位: ピクセル)

デフォルト: 100

SizeToFind

検出するブローブのサイズを選択

デフォルト: 1 - Largest

Sort

オブジェクトのリザルトを並び替える順番を選択

デフォルト: 0 - None

ThresholdAuto

対象物 (オブジェクト)、背景、画像イメージのエッジを表すグレイレベルのしきい値を自動設定するか否かを設定

デフォルト: 無効

ThresholdBlockSize

ThresholdMethodプロパティーをLocalAdaptiveに設定したときに使用する、しきい値を決定するために近傍領域を参照する範囲を定義

デフォルト: 1/16ROI

ThresholdColor

しきい値の範囲内にあるピクセルの色を定義

デフォルト: 黒色

ThresholdHigh

ThresholdLowプロパティーとともに、対象物 (オブジェクト)、背景、画像イメージのエッジを表すグレイレベル範囲を定義

ThresholdHighプロパティーは、画像イメージの対象物領域のグレイレベル範囲の上限を定義

ThresholdLowとThresholdHighで定義されたグレイレベル範囲にあてはまる画像イメージは、どの部分もピクセルの重みづけ1が割りあてられます。 (つまり、対象物の一部分です。)

ThresholdAutoが“True”で、かつThresholdColorが“White”の場合、本プロパティー値は255に設定され、変更できなくなります。

デフォルト: 128

ThresholdLevel

ThresholdMethodプロパティーをLocalAdaptiveに設定したときに使用する、近傍領域との輝度差の割合を定義

デフォルト: 15%

ThresholdLow

ThresholdHighプロパティーとともに、対象物 (オブジェクト)、背景、画像イメージのエッジを表すグレイレベル範囲を定義

ThresholdLowプロパティーは、画像イメージの対象物領域のグレイレベル範囲の下限を定義

ThresholdLowとThresholdHighで定義されたグレイレベル範囲にあてはまる画像イメージは、どの部分もピクセルの重みづけ1が割りあてられます。 (つまり、対象物の一部分です。)

ThresholdAutoが“True”で、かつThresholdColorが“Black”の場合、本プロパティー値は0に設定され、変更できなくなります。

デフォルト: 0

ThresholdMethod 2値化の処理方法を設定

Blobオブジェクトのリザルト
下の一覧は、Blobオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle 検出されたパーツの回転量を角度で返す
Area ブローブの領域をピクセルで返す
CameraX カメラ座標系における検出パーツのX座標位置を返す
CameraY カメラ座標系における検出パーツのY座標位置を返す
CameraXYU

実行時のみ

カメラ座標系における検出パーツ位置のCameraX座標, CameraY座標, CameraU座標を返す

ClearanceOK クリアランス (隙間)の判断結果を返す
Compactness ブローブの緊密さを返す
Extrema

実行時のみ

ブローブ極値のMinXピクセル座標, MaxXピクセル座標, MinYピクセル座標, MaxYピクセル座標を返す

Found

オブジェクトが検出されたかどうかを返す

(つまり、MinAreaプロパティーとMaxAreaプロパティーの間に一致するAreaリザルトを持つ連結Blobです。)

FoundOnEdge Blobオブジェクトがサーチウィンドウのエッジに近づきすぎる状態で検出されるとき、 “True”を返す
Holes ブローブで検出される穴の数を返す
MajorDiameter 検出されたブローブを楕円形に近似した場合の長径を返す
MaxFeretDiameter 検出されたブローブの最大フェレ径を返す
MaxX ブローブの外接長方形の最大Xピクセル座標を返す
MaxY ブローブの外接長方形の最大Yピクセル座標を返す
MinorDiameter 検出されたブローブを楕円形に近似した場合の短径を返す
MinX ブローブの外接長方形の最小Xピクセル座標を返す
MinY ブローブの外接長方形の最小Yピクセル座標を返す
NumberFound

サーチウィンドウ内に検出されたブローブの数を返す

(最低0個から、最高はNumberToFindプロパティーで設定したBlobオブジェクトによるブローブ検出個数になります。)

Passed 検出結果が良か否かを返す
Perimeter 検出されたブローブの、外側エッジの端から端までのピクセルの数
PixelX 検出パーツ位置のX座標をピクセルで返す
PixelY 検出パーツ位置のY座標をピクセルで返す
PixelXYU

実行時のみ

検出パーツ位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系における検出パーツのX座標位置を返す
RobotY ロボット座標系における検出パーツのY座標位置を返す
RobotU ロボット座標系における検出パーツのU座標位置を返す
RobotXYU

実行時のみ

ロボット座標系における、検出パーツ位置のRobotX座標, RobotY座標, RobotU座標を返す

Roughness ブローブの粗さを返す
ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

Time オブジェクト処理に要した時間を返す (単位: ミリ秒)
TotalArea 検出したリザルトすべての領域の合計を返す

2値検査の原理
2値検査のプロセスは、次の手順で行われます。

  1. 次の項目からなるセグメンテーション
    • しきい値
    • 連結性解析
  2. Blobリザルトの計算処理

セグメンテーション
2値検査では、オブジェクトの特徴を測定するため、まず画像イメージ中のどこにオブジェクトがあるのか、つまり、画像イメージ中の他のすべてのものからオブジェクトを区別しなければなりません。この、画像イメージのオブジェクトと背景との分割プロセスをセグメンテーションと呼びます。
Blobオブジェクトは、各ピクセルのグレイスケール値に基づいてセグメンテーションできる画像イメージに使用されます。このような種類のセグメンテーションの簡単な例として、しきい値決定があります。
本章で説明するBlobオブジェクトは、グレイスケール値で区別することができない、任意のグレイスケールイメージについても正確なリザルトを出すことができます。しかし、そのような場合でも、通常は限られた使用価値しかありません。それは、リザルトが、画像を定義しているウィンドウのサイズに影響されるからです。

全体画像イメージの2値検査において、観察対象の特徴は、画像イメージ中で特定のグレイレベルを持つ唯一のオブジェクトでなければなりません。画像イメージ中に同じグレイスケール値を持っている他のオブジェクトがあると、この画像イメージはセグメンテーションできません。以下の図A-Dは、それぞれ、全体画像イメージの2値検査のグレイスケール値でセグメンテーションできる例とできない例を示します。


A: グレイスケール値でセグメンテーションできるシーン

図Aは、カメラの視野を示します (左)。Blobオブジェクトを使って処理されるシーンは、“Blob01”という名称のサーチウィンドウ内に映しだされます。グレイスケール値でセグメンテーションが完了すると、オブジェクトと背景は、図Aの右側の図に示すように容易に区別できるようになります。


B: 拡大サーチウィンドウで見た図Aのシーン

図Bに示すようにサーチウィンドウのサイズを変更すると、背景のサイズだけが変更されます。ブローブの特徴には、何の影響も及ぼしません。
図Cと図Dは、同様の画像イメージ視野を示しています。しかし、このシーンでは、画像イメージ中に同一のグレイスケール値を持つ2つのオブジェクトがあります。
このシーンでは、背景領域とブローブの測定特徴の両方が、サーチウィンドウのサイズと、サーチウィンドウで囲まれた画像イメージ部分によって変化します。図C中の画像イメージがグレイスケール値でセグメンテーションできたとしても、図Dに示すようにサーチウィンドウを拡大すると、セグメンテーションされた画像イメージは全く別なものに変化してしまいます。同一のグレイスケール値を持つオブジェクトは、サーチウィンドウからどちらかを取り除かなければ、互いに区別することができません。


図C: グレイスケール値でセグメンテーションできないシーン


図D: 同一のグレイスケール値の2つのオブジェクトを囲む拡大サーチウィンドウ

また、図Eに示すような状況についても注意してください。この例では、内側のブローブと背景の一部が連結しています。そのため、セグメンテーションの対象となる中央のオリジナルのブローブとは非常に異なる大きなブローブが形成されてしまいます。


図E: オブジェクトと背景が連結している例

しきい値
Blobオブジェクトは、画像中の各ピクセルの重みを決定するために、しきい値を使用します。
ユーザー定義のしきい値には、ThresholdLowとThresholdHighの2つがあります。グレイスケールの値が2つのしきい値の範囲内にあるピクセルは、ピクセルの重みづけに “1”が与えられ、その他のピクセルには、 “0”が与えられます。
ThresholdColorプロパティーは、重みづけ “1”のピクセルの色を定義します。このピクセルの色が、しきい値の範囲内の色 (黒色または白色)になります。
これらのピクセルの重みづけに基づいて、Blobオブジェクトは、画像を対象物(重みづけ “1”のピクセル部)と背景(重みづけ “0”のピクセル部)に分けます。Polarityプロパティーでは、白色または黒色のピクセルを含むブローブを検出するように、Blobオブジェクトを設定します。Polarityの設定がDarkOnLightのときは、黒色のピクセルを含むブローブを検出します。一方、Polarityの設定がLightOnDarkのときは、白色のピクセルを含むブローブを検出します。

ヒストグラムを使って、しきい値を決定する
Vision Guide 8.0 のヒストグラムツールを使って、しきい値のThresholdLowとThresholdHighの値を決定することができます。
例として、白い背景上の黒いブローブの理想的なバイナリ画像イメージを考えてみましょう。下図に、そのような画像イメージとそのヒストグラムを示します。


理想的なバイナリ画像イメージとそのヒストグラム

このヒストグラムでは、0以外の値を持つグレイスケール値が2つしかないことに注意してください。

実際の画像イメージでは、このようなヒストグラムを得るようなことは決してありません。さまざまなノイズ(例えば、不均一なプリント印刷、不規則な照明、電気的なノイズ)の影響と結びついて、ピークは山型に広がります。より現実的なヒストグラムを下図に示します。

ヒストグラムのピークを山形にするノイズの影響
上図に示すヒストグラムでは、各々のピークは、明瞭に示されています。ピークサイズ(領域)は、前に示した理想的なヒストグラムのピークサイズと同じ比率になっていますが、ここでは各ピークは山型に広がって、2つ以上のグレイスケール値を持っています。
2つの主要なピークの間の谷の部分のグレイスケール値は、ブローブのエッジを現しており、完全に暗くも明るくもありません。
ブローブは重みづけ “1”のピクセルを持っているので、Threshold値を調整します。

連結性 (連結2値検査)
連結性は、非ゼロ質量の連結ピクセルに基づいた検査として定義することができます。もっと簡単に説明すると、連結性は、ブローブとしてみなされる連結ピクセルのグループを検出するのに使われます。
連結性は、Blobオブジェクトによって自動的に実行され、次に、検出されたブローブの測定が計算されます。Blobオブジェクトの連結性は、Blobオブジェクトの実行前に設定されたNumberToFindプロパティーに基づいて、検出されたBlobオブジェクトの数を戻り値として戻します。

Blobリザルトの計算
2値検査のその他のすべての手順が完了すると、検出されたブローブについてリザルトが計算されます。Blobオブジェクトのリザルトリストについては、「Blobオブジェクトのリザルト」の説明項目を参照してください。
ビジョンオブジェクトのすべてのリザルトに関する詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

「Vision Guide 8.0 プロパティー&リザルトリファレンス」で説明しているリザルトのいくつか、例えばFoundリザルト, Timeリザルト, PixelXリザルトなどは、さまざまなビジョンオブジェクトで使われます。FoundリザルトやTimeリザルトは、極めて一般的なリザルトであり、すべてのビジョンオブジェクトで一般的に同じ方法で利用できますが、位置に関するリザルトなどのように、いくつかのリザルトはBlobオブジェクトに使われるときに特別な意味を持ちます。これらのリザルトについて、以下に説明します。
MinX, MinY, MaxX, MaxY リザルト
MinXリザルト, MinYリザルト, MaxXリザルト, MaxYリザルトが結合すると、ブローブの外接長方形を作成します。外接長方形とは、ブローブを包囲する最小長方形のことです。外接長方形を理解していただくには、下図を参照してください。


主軸, 重心, 極値

ロボット座標系、カメラ座標系、ピクセル座標系での位置のデータ
座標位置のリザルトは、重心の位置を返します。重心は、必ずしもパーツの中心ではありませんので注意してください。
パーツをピックアップするときに重心を使うと、パーツによっては問題が生じることがあります。BlobオブジェクトからのRobotX, RobotY, RobotUの座標位置リザルトをパーツのピックアップ位置として使うときには、重心でパーツをピックアップすることが可能であることを確認してください。
重心でパーツをピックアップしたくないときは、オフセットを計算するか、Correlationオブジェクトなどの他のビジョンオブジェクトを使ってパーツを検出し、より便利なピックアップ位置を返すようにしなければなりません。

TotalAreaリザルト
TotalAreaリザルトは、検出されたリザルトすべての領域の合計です。これは、ピクセルを計算するのに役立ちます。NumberToFindを0に設定することにより、Blobオブジェクトは、MinAreaとMaxAreaの間の領域をもつ、すべてのブローブを検出します。TotalAreaは、すべてのリザルトの合計領域を表示します。

BlobオブジェクトのAngleリザルト制限
BlobオブジェクトのAngleリザルトは、その範囲に制限がありますので注意してください。
BlobオブジェクトのAngleリザルトは、+90°から-90°までの範囲にある角度の値を返します。Blobオブジェクトは、360°全体の角度のリザルトを返すことはできません。

キーポイント


BlobオブジェクトのAngleリザルトは、必ずしも信頼できるリザルトを返すというわけではありませんので、ロボットを使用するときは注意してください。BlobオブジェクトのAngleリザルトの範囲には制限があり、場合によっては信頼できる値ではないことがあります。

ロボットガイダンスのパーツの角度方向の計算にはBlobオブジェクトのAngleリザルトを使わずに、Polarオブジェクトを使うことをお勧めします。

Polarオブジェクトは、Blobオブジェクトから重心として検出されたX, Y位置を使うことができ、Blobオブジェクトの重心に基づいた角度を計算します。詳細は、「Polarオブジェクト(ポーラサーチ)」で後述します。

Blobオブジェクトの使用方法
以上、Vision Guide 8.0のBlobオブジェクトの使用方法を理解するための基本的知識として、2値検査がどのように動作するのか確認しました。ここでは、Blobオブジェクトの使用方法を説明します。
Blobオブジェクトを使うのに必要なステップは次のとおりです。

  • 新規Blobオブジェクトの作成
  • サーチウィンドウの位置とサイズの設定
  • Blobオブジェクトの関連プロパティーの設定
  • Blobオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると新規ビジョンシーケンスが作成できます。
すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規Blobオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Blob (2値検査)]ボタンをクリックしてください。
  2. 画像イメージ表示部にマウスを動かしてください。マウスポインターがBlobアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置に来るまで、マウスを動かし続けてください。それから、マウスを左クリックして、オブジェクトを作成してください。
  4. オブジェクト名は自動的に作成されますので注意してください。この例では、このシーケンスで最初に作成されたBlobオブジェクトなので、 “Blob01”という名称になります。 (名称の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上には、下図のようなBlobオブジェクトが表示されます。

新規Blobオブジェクトのレイアウト

  1. Blobオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、Blobオブジェクトをドラッグして、サーチウィンドウの左上コーナーを好きな位置に合わせてください。
  2. サイズハンドルをクリックして、マウスをドラッグすると、Blobオブジェクトサーチウィンドウのサイズが変更できますので、適当な大きさに調整してください。 (サーチウィンドウは、ブローブの被検索領域になります。)

注意


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

Step 3: Blobオブジェクトプロパティーの設定
このステップでは、Blobオブジェクトのプロパティーを設定することができます。次に、Blobオブジェクトに特有で、よく使用されるプロパティーを示します。
その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。

  • "Vision Guide 8.0プロパティー&リザルトリファレンス"
  • Blobオブジェクトのプロパティーリスト

キーポイント


ビジョンシーケンスの実行結果は、外らん光や外部機器ノイズにより影響を受けることがあります。外らん光や外部機器ノイズにより、影響を受けると、取り込み画像が想定外の結果となり、検出位置結果がサーチエリア (検出エリア)内の不特定位置になる可能性があります。MaxArea, MinArea, RejectOnEdgeなどのプロパティー値を適切に設定し、誤検出リスクを軽減してください。

項目 内容
Nameプロパティー

新規に作成されたBlobオブジェクトにデフォルトとして与えられる名称は、“Blobxx”です。xxは、1つのビジョンシーケンス内で複数のBlobオブジェクトを用いるとき、それらのBlobオブジェクトを区別するための番号です。

ビジョンシーケンスで1番目に用いられるBlobオブジェクトには、“Blob01”という名称がデフォルトで設定されます。

名称を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でそのBlobオブジェクト名を表示する場所の全部が、変更後の名称を表示するようになります。

Polarityプロパティー

明るい背景の暗いオブジェクトを検出したい場合と、暗い背景の明るいオブジェクトを検出したい場合があります。この選択をするのが、Polarityプロパティーの基本的な目的です。

デフォルトは、DarkOnLight (明るい背景の暗いオブジェクト)の検出に設定されています。

このデフォルト設定を変更したいときは、Polarityプロパティーの値フィールドをクリックしてください。ドロップダウンリストが表示され、 “Dark on Light” と “Light on Dark” の選択項目が表示されます。選択して、クリックしてください。

MinArea, MaxArea

“Found”とみなされる (Foundリザルトの値が “True”だった)Blobオブジェクトの面積を定義

デフォルトの範囲は、25 ~ 100,000 (MinArea ~ MaxArea)と非常に広く設定されています。つまり、MinAreaプロパティーとMaxAreaプロパティーを調整しないまま、新規作成のBlobオブジェクトを実行すると、ほとんどのブローブは検出されたとして報告されます。通常は、検出対象のブローブに適切な範囲を反映するために、これらのプロパティーを調整します。このようにして、範囲の外側に何らかのブローブが検出された場合は、それは検出対象のブローブではないと判断することができます。

RejectOnEdgeプロパティー このプロパティーによって、サーチウィンドウのエッジにかかって検出されたパーツを除外することができます。通常はこのプロパティーを “True”に設定します。

以上で、Blobオブジェクトのテストができるようになりました。必要となるその他のプロパティーは、テスト後に再び設定することにします。

Step 4: Blobオブジェクトのテストとリザルトの確認
Blobオブジェクトのテストを実行するには、実行パネルのオブジェクトの[Run]ボタンをクリックしてください。Blobオブジェクトのリザルトが表示されます。ここで確認する主要なリザルトは次に示すとおりです。けれども、役に立つリザルトがこれから他にも出てきます。

項目 内容
Foundリザルト

オブジェクトが検出されたかどうかの値を返す

検出されたブローブがMinAreaプロパティーとMaxAreaプロパティーで定義された面積の範囲内にないときは、Foundリザルトは “False”を返します。

Areaリザルト 検出されたブローブの面積 (単位: ピクセル)
Angleリザルト

ブローブの方向角度

副軸の角度から計算し、90° ~ -90°までの範囲の値になります。

Timeリザルト Blobオブジェクトの実行に要した時間
PixelX, PixelY 検出パーツの重心のXY座標位置 (単位: ピクセル)
MinX, MinY, MaxX, MaxY これらの4つの値で、ブローブの外接長方形を定義します。(ブローブの外接点に接触して形成される長方形)

キーポイント


RobotXYU, RobotX, RobotY, RobotUのリザルトとCameraX, CameraY, CameraXYUのリザルトは、この時点で “no cal”を返します。これは、キャリブレーションが実行されていないので、ロボット座標系あるいはカメラ座標系に関して座標リザルトを計算することができなかった、ということを意味しています。詳細は、「ビジョンキャリブレーション」を参照してください。

Step 5: プロパティーの調整と再テスト
Blobオブジェクトを数回実行することにより、ブローブ検出上の問題が見つかったり、プロパティー設定の微調整をする必要が出てくることがあるかもしれません。一般的に生じる問題や、微調整の方法について次に説明します。
問題: BlobオブジェクトのFoundリザルトがFalseを返すときは、次の事項を確認し、調整してください。

  • 暗い背景での明るいオブジェクトを検出するのか、明るい背景での暗いオブジェクトを検出するのかを定義するPolarityプロパティーの値が、実際と異なっているかもしれません。Polarityプロパティーの値を確認し、検出したいオブジェクトと背景との明暗に一致させてください。また、サーチウィンドウ内に表示されるオブジェクトと背景との明暗にも一致していなければなりません。
  • Areaリザルトを確認し、この値とMinAreaプロパティーとMaxAreaプロパティーで定義された値とを比較してください。Areaリザルトが、MinAreaプロパティーとMaxAreaプロパティーで定義された範囲に入っていない場合は、MinAreaプロパティーとMaxAreaプロパティーを調整して、Blobオブジェクトを再実行してください。
  • ヒストグラムを使って、画像イメージ中のグレイスケール値の分布を確認してください。ヒストグラムツールは、ThresholdHighプロパティーとThresholdLowプロパティーを設定するのにとても便利です。ヒストグラムの詳細は、以下を参照してください。
    ヒストグラムツール
    微調整: アプリケーションによっては、Blobオブジェクトの微調整が必要となる場合があります。Blobオブジェクトの微調整に関する主要なプロパティーについて、次に説明します。
  • MinArea, MaxArea - Blobオブジェクトを数回実行してみると、Areaリザルトに返される概略値がわかってきます。MinAreaプロパティーとMaxAreaプロパティーの値を変更するときは、これらの概略値を使ってください。一般的に、MinAreaプロパティーとMaxAreaプロパティーの値は、Foundリザルトを制限するように設定し、検出対象のブローブだけについてTrueのFoundリザルトが返るようにすると好都合です。 (このように設定することによって、検出したいブローブと面積が異なっているブローブを排除することができます。)
  • ThresholdHigh, ThresholdLow - これらのプロパティーは、背景とブローブの一部を識別するために、グレイレベルのしいき値を設定するパラメーターを調整します。これらのプロパティーは、ヒストグラムツールを使って設定するのが、最も適切です。以下を参照してください。
    "Vision Guide 8.0プロパティー&リザルトリファレンス - ThresholdHigh Property, ThresholdLow Property"
    ヒストグラムについては、以下に詳細を説明しています。
    ヒストグラムツール

プロパティーの調整が完了し、Blobオブジェクトのテストを行って満足なリザルトを得ることができたら、ビジョンオブジェクトの作成ステップは完了です。
他のビジョンオブジェクトを作成したり、ビジョンシーケンス全体の設定やテストを行う次のステップに進むことができます。

Blobオブジェクトに関するその他の便利なユーティリティ
この時点で、Vision Guide 8.0のヒストグラム機能を確認することもできます。 [ヒストグラム]ボタンは、サーチウィンドウ内のグレイスケール値の分布をグラフで表示できるので、非常に便利です。Vision Guideヒストグラムツールは、ブローブの一部であるものと背景の一部であるものを定義する、ThresholdLowプロパティーとThresholdHighプロパティーのグレイレベルを設定するのに便利な構造になっています。ブローブの検出に問題があるときは、ヒストグラム機能が有効です。Vision Guideヒストグラムの使用方法の詳細は、以下に説明があります。
概要

また、Blobオブジェクトのリザルトを統計的に確認するのに、 [統計]ボタンを使用することもできます。Vision Guide統計機能の詳細は、以下を参照してください。
統計ツール

ピクセル計数器としてのBlobオブジェクトの使い方
Blobオブジェクトはピクセル計数器として使用できます。ピクセル計数器は、ブローブしきい値の範囲にある画像イメージのピクセルすべてをカウントします。
次のステップにしたがってください。

  1. Blobオブジェクトを作成してください。
  2. 極性を設定してください。
  3. Highしきい値とLowしきい値を設定してください。
  4. NumberToFindを “0”に設定してください。これで、Blobオブジェクトが画像イメージのブローブすべてを検出するようになります。
  5. MinAreaを “1”に、MaxAreaを “999999”に設定してください。1ピクセル以上のブローブをカウントします。
  6. シーケンスを実行してください。
    TotalAreaリザルトを使って、Blobしきい値の範囲にあるピクセルの合計数を読み取ってください。

Edge オブジェクト (エッジ検出)

Edgeオブジェクトの概要
Edgeオブジェクトは、画像イメージ中のエッジの場所を特定するのに使われます。
画像イメージ中のオブジェクトのエッジは、グレイスケール値の暗から明への変化、あるいは明から暗への変化で表されます。このような変化は、数個のピクセルにわたって観察されます。
Edgeオブジェクトでは、Polarityプロパティーによって定義された、明から暗への変化、または暗から明への変化を検出し、検出された位置をシングルエッジのエッジ位置として定義します。EdgeTypeプロパティーを変更してエッジペアを検出することもできます。エッジペアの場合、2つの対極のエッジを検索し、中間点を返します。Edgeオブジェクトは複数のリザルトに対応するため、検出するシングルエッジ、およびエッジペアの数を指定できます。
Edgeオブジェクトは、SearchTypeプロパティーを使って、ラインや円弧に沿って検索するように設定できます。
SearchTypeがLineのEdgeオブジェクトは、検索長さをもつ形状が、Lineオブジェクトに似ています。検索長さとは、Edgeオブジェクトの長さのことです。SearchTypeがLineのEdgeオブジェクトの強力な特徴の1つは、どんな角度でも置けることです。これで、Edgeオブジェクトの角度を変えることにより、エッジを検出したい領域に垂直なEdgeオブジェクトベクトルを維持することができます。通常、作業したい領域とともに動くFrameにEdgeオブジェクトを関連させることにより、これができます。

Edgeオブジェクトのレイアウト
Edge オブジェクトには2つのレイアウトがあります。

  • SearchType がLineの場合
    SearchTypeがLineの場合、Edgeオブジェクトのサーチウィンドウは、Edgeオブジェクトに沿ったラインに相当します。Edgeオブジェクトは、方向インジケーターが示す方向のこのラインに沿って、変化(明から暗へ、または暗から明へ)を検索します。

    Edge オブジェクト(ライン)のレイアウト

    記号 内容
    a シーケンスのステップ番号
    b オブジェクト名
    c サイズと方向ハンドル
    d 方向インジケータ (サーチの方向)

    Edgeオブジェクトは、 (垂直方向、水平方向だけでなく)あらゆる方向を検索するように置くことができます。これは、Edgeオブジェクトのサイズと方向ハンドルを使って、Edgeオブジェクトのいずれかの終点を目的のエッジを検出する方向 (およびユーザー指定間隔ごと)に動かすことでできます。オブジェクト全体を移動するには、ラベルかラインをドラッグします。

  • SearchType がArcの場合
    SearchTypeがArcの場合、EdgeオブジェクトのサーチウィンドウはEdgeオブジェクトに沿った円弧に相当します。Edgeオブジェクトは、方向インジケーターが示す方向のこの円弧に沿って、変化 (明から暗へ、または暗から明へ)を検索します。

    Edge オブジェクト(円弧)のレイアウト

    記号 内容
    a シーケンスのステップ番号
    b オブジェクト名
    c 方向インジケータ (サーチの方向)
    d サイズハンドル

    円弧のサイズを変更するには、終点にあるサイズハンドルのいずれかをドラッグします。半径を変更するには、真ん中のサイズハンドルをドラッグします。.オブジェクト全体を移動するには、ラベルか中心点をドラッグします。

Edgeオブジェクトのプロパティー
下の一覧は、Edgeオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

SearchTypeプロパティーを変更すると、プロパティーは指定したタイプに従って変更を設定します。SearchTypeがLineの場合、以下のプロパティーはVision Guideウィンドウのプロパティーグリッドには表示されません。

  • AngleEnd
  • AngleStart
  • CenterPointObject
  • CenterPntObjResult
  • CenterPntOffsetX
  • CenterPntOffsetY
  • CenterPntRotOffset

SearchTypeがArcの場合、以下のプロパティーは表示されません。

  • X1
  • Y1
  • X2
  • Y2
プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

特徴が検出されたと判定するための形状スコアの値を指定

対象物が検出されたとみなされるためには、スコアの値を超えなくてはなりません。

デフォルト: 100

AngleEnd

円弧をサーチする範囲の終了角度を指定

デフォルト: 135

AngleStart

円弧をサーチする範囲の開始角度を指定

デフォルト: 45

CalRobotPlacePos 設計時とプログラム実行時に RobotPlacePos をキャリブレーションする
Caption

見出しをEdgeオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーからどのリザルトを使うのかを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にEdgeオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

SearchWinTypeがRotatedRectangleに設定されている場合、サーチウィンドウはAngleリザルトにしたがって回転します。

デフォルト: False

CheckClearanceFor クリアランス (隙間)を確認するオブジェクトを設定
ClearanceCondition クリアランス (隙間)の判断方法を指定
ContrastTarget

エッジサーチのためのコントラストを設定

デフォルト: 0 (best contrast)

ContrastVariation

ContrastTargetの許容されるコントラストの変化量を選択

デフォルト: 0

CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

EdgeSort 検出されたエッジ結果のソート方法を設定
EdgeThreshold

この値より低いエッジは無視するという、しきい値を設定

デフォルト: 2

EdgeType

検索するエッジタイプ (シングル、またはペア)を設定

デフォルト: 1 - シングル

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

EndPntObjResult どのリザルトをEndPointObjectから用いるのかを特定
EndPointObject どのビジョンオブジェクトを使って、直線の終点を定義するかを特定
EndPointType どのタイプの終点を使って直線の終点を定義するのかを特定
FailColor

オブジェクトの検出不良時の色を選択

デフォルト: Red

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト:1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

Name

Edgeオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: Edge01

NumberToFind

検出するエッジ数を設定

デフォルト: 1

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

Polarity

Edgeオブジェクトが明から暗への移行を検索するのか、暗から明への移行を検索するのかを指定

デフォルト: 1 - LightToDark

Radius オブジェクトの中心点から、オブジェクトの検索リング外側までの距離を定義
SearchType

直線と円弧検索のどちらを使用するかを設定

デフォルト: Line

ScoreWeightContrast

コントラストによるスコアの割合を設定

デフォルト: 50

ScoreWeightStrength

エッジの強度によるスコアの割合を設定

デフォルト: 50

SearchWidth

エッジサーチの幅を定義

範囲: 3 ~ 99

デフォルト: 3

StartPntObjResult どのリザルトをStartPointObjectから用いるのかを指定
StartPointObject どのビジョンオブジェクトを使って、直線の始点を定義するかを指定
StartPointType どのタイプの始点を使って直線の始点を定義するのかを指定
StrengthTarget

サーチするエッジの強度を設定

デフォルト: 0

StrengthVariation

StrengthTargetの変化量の合計を設定

デフォルト: 0

X1 エッジの始点位置のX座標
X2 エッジの終点位置のX座標
Y1 エッジの始点位置のY座標
Y2 エッジの終点位置のY座標

Edgeオブジェクトのリザルト
下の一覧は、Edgeオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
CameraX カメラ座標系における検出エッジ位置のX座標を返す
CameraY カメラ座標系における検出エッジ位置のY座標を返す
CameraXYU

実行時のみ

カメラ座標系における検出エッジ位置のCameraX座標, CameraY座標, CameraU座標を返す

ClearanceOK クリアランス (隙間)の判断結果を返す
Contrast 検出エッジのコントラストを返す
Found オブジェクトが検出されたかどうか、対象物あるいはパーツがAcceptプロパティーの現在の設定を超える形状スコア値を持っているかどうかの値を戻す
NumberFound

検出されたエッジ数を返す

(最小0個から、最大はNumberToFindプロパティーで設定した検出個数になります。)

Passed 検出結果が良か否かを返す
PixelX 検出Edge位置のX座標をピクセルで返す
PixelY 検出Edge位置のY座標をピクセルで返す
PixelXYU

実行時のみ

検出Edge位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系における検出エッジ位置のX座標を返す
RobotY ロボット座標系における検出エッジ位置のY座標を返す
RobotXYU

実行時のみ

ロボット座標系における検出Edge位置のRobotX座標, RobotY座標, RobotU座標を返す

Score 検出エッジの全般的なスコアを示すINTEGER値を返す
Strength 検出エッジの強度を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)

Edgeオブジェクトの使用方法
ここからは、Edgeオブジェクトの作成と使用の方法を説明します。

  • 新規Edgeオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • Edgeオブジェクトの関連プロパティーの設定
  • Edgeオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。
すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規Edgeオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Edge (エッジ検出)]ボタンをクリックしてください。
  2. 画像イメージ表示部にマウスを動かしてください。マウスポインターがEdgeオブジェクトアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置に来るまで、マウスを動かし続けてください。それから、マウスを左クリックして、オブジェクトを作成してください。
  4. オブジェクト名が自動的に作成されるのに注目してください。この例では、このシーケンスで最初に作成されたEdgeオブジェクトなので、”Edge01”というオブジェクト名になります。 (オブジェクト名の変更方法については後述します。)

Step 2: Edgeオブジェクトの位置決め
画面上には、下図のようなEdgeオブジェクト (a) が表示されています。

新規Edgeオブジェクト

新規Edgeオブジェクトを作成した後、ラインと円弧のどちらに沿って検索するかを SearchTypeプロパティーで設定できます。SearchTypeがLine (デフォルト)の場合、サイズハンドルのどちらかをクリックすることや、ラインの端を新しい位置にドラッグすることで、検索長さや回転を変更できます。SearchTypeがArcの場合、サイズハンドルのどちらかをドラッグすることで円弧を変更できます。半径を変更するには、真ん中のハンドルをドラッグします。
また、Edgeオブジェクトの名称ラベルやエッジラインの周囲をクリックして、マウスを押し続けながら、Edgeオブジェクト全体を画面上の新しい位置にドラッグしてください。位置が決まったら、マウスを離してください。Edgeオブジェクトが画面上の新しい位置にきます。

Step 3: Edgeオブジェクトプロパティーの設定
Edgeオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。あるいは、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、Edgeオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
EdgeType(シングル)

検索するエッジの種類を選択

エッジペアを設定した場合、それぞれの方向のエッジを検索し、中間点を位置として検出します。

Nameプロパティー("Edgexx") 新規に作成されたEdgeオブジェクトに、デフォルトとして与えられるオブジェクト名は “Edgexx”です。xxは、1つのビジョンシーケンス内で複数のEdgeオブジェクトを用いるとき、それらのEdgeオブジェクトで区別するための番号です。ビジョンシーケンスで1番目に用いられるEdgeオブジェクトには、“Edge01”というオブジェクト名がデフォルトで設定されます。オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でEdgeオブジェクト名を表示する場所は、すべて変更後の名称に変わります。
NumberToFind(1) エッジ検索ラインに沿って1つ以上のエッジを検索します。
Polarity (LightToDark) DarkToLight (暗から明へ)のエッジを検索する場合は、Polarityを変更してください。

Step 4: Edgeオブジェクトの実行とリザルトの確認
Edgeオブジェクトを実行するには、次のようにしてください。
実行パネルのオブジェクトの[Run]ボタンをクリックしてください。Edgeオブジェクトのリザルトが表示されます。この時点で確認すべき主要なリザルトは次のとおりです。

リザルト 説明

PixelXリザルト

PixelYリザルト

エッジ検索ラインに沿って検出されたエッジのXY座標位置

(ピクセル単位)

CameraXリザルト

CameraYリザルト

カメラ座標系でEdgeオブジェクトのXY座標を定義

CameraXリザルトとCameraYリザルトは、カメラがキャリブレーションされている場合は値を返すだけです。もしキャリブレーションされていなければ、 “no cal”が返されます。

RobotXリザルト

RobotYリザルト

ロボット座標系でEdgeオブジェクトのXY座標を定義

ロボットにこのXY座標に動くよう命令できます。 (他の変換や手順は必要ありません。) RobotXリザルトとRobotYリザルトは、カメラがキャリブレーションされている場合は値を返すだけです。もしキャリブレーションされていなければ、 “no cal”が表示されます。

Polarオブジェクト (ポーラサーチ)

Polarオブジェクトの概要
Polarオブジェクトでは、デカルト座標を持つ画像イメージを、それに対応する極座標を持つ画像イメージに高速で変換することができます。Polarオブジェクトは、オブジェクトの回転を判定するのに優れたツールです。Polarオブジェクトは信頼性が高く、高速なスピードで実行できるので、オブジェクトの角度回転の計算が必要な場合にご活用ください。

Polarオブジェクトは、回転を判定するツールであるため、オブジェクトの中心回りの回転は計算精度に影響は出ませんが、オブジェクトのx-y平面の平行移動は計算精度の大きく影響するという特性を持っています。つまり、Polarオブジェクトは、オブジェクトの回転の計算を非常に得意としていますが、そのためにまず、オブジェクトの中心位置が動かないことが第一条件です。

このため、Vision Guide 8.0では、PolarオブジェクトにCenterPointプロパティーを装備しています。CenterPointプロパティーでは、Polarオブジェクトの中心点を、CorrelationオブジェクトやBlobオブジェクトなど、他のオブジェクトの位置リザルトにロックすることができます。
つまり、最初にCorrelationオブジェクトやBlobオブジェクトなどでXY位置を検出すると、PolarオブジェクトはそのXY位置を中心点としてオブジェクトの回転を計算することができるのです。

Polarオブジェクトのレイアウト
Polarオブジェクトのレイアウトの外観は、これまで説明してきた他のオブジェクトのレイアウトと全く異なっています。しかし、用途は非常に似ています。Polarオブジェクトは円形を基本とするレイアウトで、中点と半径が表示されます。Polarオブジェクトの位置は、Polarオブジェクト名 (または、外側の周囲を構成する円上のどこか)をクリックし、新規の位置にオブジェクトをドラッグすることによって、移動することができます。

Polar オブジェクトのレイアウト

記号 内容
a オブジェクト名
b

サーチウィンドウ

サイズハンドル

c サーチリング

キーポイント


Polarオブジェクトの中点 (CenterPointプロパティーによって定義される)は、他のオブジェクトの位置を基準として設定することができます。つまり、Polarオブジェクトの位置を調整した場合でも、オブジェクトやシーケンスを実行することによって、Polarオブジェクトの中点が変わることがあります。Polarオブジェクトの詳細は、本章で後述を参照してください。

Polarオブジェクトのサーチウィンドウは円形です。外側の境界線は、上図に示すような外側のサーチリングによって定義されます。内側のリングは、外側のリングより小さく、外側リングのnピクセル内側にあります。ピクセル数は、Thicknessプロパティーによって定義されます。 Thicknessプロパティーを変更すると、“Thickness”、または内側と外側のリングの距離が変わるのがわかります。これは、検索している領域を目に見える表示にしているからです。
Polarオブジェクトサーチウィンドウの外側境界線のサイズを調節するには、4つのサーチウィンドウサイズハンドルの内の1つをクリックし、リングを任意の大きさになるまで内側あるいは外側にドラッグしてください。

Polarオブジェクトのプロパティー
下の一覧は、Polarオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

対象物が検出されたと判定するための形状スコアの値を指定

対象物のスコアが設定値を超えているものを検出します。設定値を低く設定すると、誤検出の原因となります。

デフォルト: 700

AngleOffset

Polarオブジェクトの登録が完了した後、検索の対象物の角度インジケータグラフィックを調整し、Polarオブジェクトに適用されるオフセット角度を定義

デフォルト: 0

CalRobotPlacePos 設計時とプログラム実行時に RobotPlacePos をキャリブレーションする
Caption

見出しをPolarオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーからどのリザルトを使うのかを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にPolarオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

デフォルト: False

CenterX

ポーラーサーチツールの中心点として用いられる位置のX座標を指定

CenterPointObjectプロパティーが他のビジョンオブジェクトに設定されると、自動的に設定されます。

CenterY

ポーラーサーチツールの中心点として用いられる位置のY座標を指定

CenterPointObjectプロパティーが他のビジョンオブジェクトに設定されると、自動的に設定されます。

CheckClearanceFor クリアランス (隙間)を確認するオブジェクトを設定
ClearanceCondition クリアランス (隙間)の判断方法を指定
Confusion

検索する画像イメージ中に予想される複雑さの度合いを指定

これは、検索している実際の対象物ではない対象物で得られる形状スコアの最大値です。

デフォルト: 800

CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出不良時の色を選択

デフォルト: Red

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

ModelObject

検索に使用するモデルを決定

デフォルト: Self

Name

Polarオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: Polar01

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

Radius

オブジェクトの中心点から、オブジェクトの検索リング外側までの距離を定義

デフォルト: 50

SaveTeachImage モデルをティーチするときに、画像ファイルに保存するかを設定
ScoreMode Fail時のリザルトを表示させるための閾値を設定、または返す
ShowModel

教示モデルの内部グレイスケール表示を閲覧

検出マスクを設定

Thickness

Polarオブジェクトの被検索領域である検索リングの厚さを定義

厚さは、Radiusプロパティーで定義されたリング外側から内側に向かってピクセルを測定します。

デフォルト: 5

Polarオブジェクトのリザルト
下の一覧は、Polarオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle 検出されたパーツの回転量を角度で返す
CameraX カメラ座標系におけるPolarオブジェクトCenterPoint位置のX座標を返す
CameraY カメラ座標系におけるPolarオブジェクトCenterPoint位置のY座標を返す
CameraXYU

実行時のみ

カメラ座標系における検出パーツ位置のCameraX座標, CameraY座標, CameraU座標を返す

ClearanceOK クリアランス (隙間)の判断結果を返す
Found オブジェクトが検出されたかどうか、つまり、対象物あるいはパーツがAcceptプロパティーの現在の設定を超える形状スコア値を持っているかどうかの値を戻す
Passed 検出結果が良か否かを返す
PixelX 検出パーツ位置の (モデル原点を基準にした)X座標をピクセルで返す
PixelY 検出パーツ位置の (モデル原点を基準にした)Y座標をピクセルで返す
PixelXYU

実行時のみ

検出パーツ位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系におけるPolarオブジェクトCenterPoint位置のX座標を返す
RobotY ロボット座標系におけるPolarオブジェクトCenterPoint位置のY座標位置を返す
RobotU ロボット座標系におけるPolarオブジェクト角度リザルトのU座標位置を返す
RobotXYU

実行時のみ

ロボット座標系における検出パーツ位置のRobotX座標, RobotY座標, RobotU座標を返す

Score 実行時に検出された対象物が、Polarオブジェクトで検索するモデルに一致する度合いを表すINTEGER数値を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)

キーポイント


X座標とY座標 (CameraX, CameraY, PixelX, PixelY, RobotX, RobotY....)を返すPolarオブジェクトのリザルトはすべて、CenterPointプロパティーからその座標の値を受け取ります。Polarオブジェクトの実行前にCenterPointプロパティーの値が設定されると、それらの値は、Polarオブジェクトのリザルトとして引き渡されます。Polarオブジェクトは、回転角度の計算をするのみで、中心位置のX,Y座標の計算はしませんが、CenterPointプロパティーからのX, Y座標位置を提供しますので、別のビジョンオブジェクトからX, Y座標リザルトを取得する必要はありません。

Polarオブジェクトの基本的知識
Polarオブジェクトの目的は、指定されたオブジェクトやパターンの回転量を検出することです。このために、まず、基本的に特定の厚さを持つ円形リングであるポーラーモデルを登録することが必要です。登録を完了し、Polarオブジェクトを実行すると、円形リングと検出したいパーツの現在の回転とを比較して角度のずれを計算し、Polarオブジェクトのリザルトの1つとして返します。
例えば、中心点のまわりに回転するパーツがあり、ロボットでそのパーツをピックアップしてパレット上に置くとします。このパーツは、さまざまな方向を向いているので、オブジェクトの回転量を判定しない限り、ピックアップするのは困難です。

理解しやすいように、例をあげて説明します。オブジェクトが図Aの黒色と灰色で示すパーツのような物体である場合は、オブジェクトの外側部分を横切るポーラーモデルを定義することができます。
内側リングと外側リングの間にある領域に注目してください。この領域は、このパーツに登録されたPolarオブジェクトのモデルを定義します。リング内のいくつかの領域は、リングの残りの部分と強い特徴差異があるため、非常に識別しやすいということがわかるはずです。これらの領域は、パーツの回転量を検出するための重要なキーとなります。


図A: Polarオブジェクトを使用するパーツ例

記号 内容
a 被検索領域の厚さ
b 外側リング
c 内側リング

図Bは、登録されたモデルの外観を示します。登録されたモデルは、ほとんど白く、一部が黒と灰色のリングです。
Polarオブジェクトを実行すると、Polarオブジェクトは、サーチウィンドウ内でこのタイプのパターン、つまり、一部が黒と灰色でリングの残りの部分が白いパターンを検索します。

図B: 図A に示すパーツのポーラーモデル

記号 内容
a 被検索領域の厚さ
b 外側リング
c 内側リング

図Cでは、モデルに対して約90o回転したパーツを示しています。Polarオブジェクトは、モデルとオブジェクトの新規位置との角度のずれを計算します。


図C: 登録されたモデルから90o回転したパーツ

記号 内容
a 被検索領域の厚さ
b 外側リング
c 内側リング

図D では、初期に0°で登録されたモデルを左図に、登録されたモデルから90o回転したパーツを右図に示しています。


図D: ポーラーモデルと回転したパーツのポーラー

記号 内容
a 被検索領域の厚さ
b 外側リング
c 内側リング

Polarオブジェクトに関連する主要なパラメーター
前述の項目で示した図から、Polarオブジェクトに関連する主要なパラメーターは3つあり、各パラメーターは最適なリザルトを取得する上で重要であることが理解していただけたことと思います。これらのパラメーターは、次のプロパティーによって定義されます。

  • CenterPointプロパティー
  • Radiusプロパティー
  • Thicknessプロパティー
  • AngleOffsetプロパティー

CenterPointプロパティーは、Polarオブジェクトの中心位置を定義します。
前述したように、登録されたモデルの中心点と、回転角度を検索するパーツの中心位置とが完全に一致するように、Polarオブジェクトの中心点を適切な位置に合わせる必要があります。適切な位置に合わせないと、XY平面での並行移動によって、角度リザルトが不正確になる場合があります。
Radiusプロパティーは、Polarオブジェクトの中心点から、オブジェクトの検索リング外側までの距離を定義します。
このプロパティーによって、被検索領域の外側境界が定義されます。

Thicknessプロパティーは、Polarオブジェクトの外側リングから想像上の内側リングまでの距離を (ピクセル単位で)定義します。
実際には被検索領域の厚さを定義します。
AngleOffsetプロパティーは、Polarオブジェクトの回転位置を表示するために使われる、インジケーターグラフィックラインの角度位置を設定するメカニズムを提供します。
このラインは、Polarオブジェクト実行後、時計の3時方向 (0oの位置)に現われます。しかし、検索する対象物の最も関心のある回転位置にインジケーター グラフィックを合わせたい場合は、必要に応じてインジケーター グラフィックの位置を変更することができます。(このAngleOffsetプロパティーについては、通常、モデルの登録とPolarオブジェクトの実行をした後で設定されますので、注意してください。)

オブジェクトの回転を判定する方法
オブジェクトの回転を判定する必要のあるアプリケーションとして、一般的に集積回路の型をロボットでピックアップする例をあげることができますが、この場合、型のXY位置と回転方向を知る必要があります。型は背景と異なるグレイの影で表され、型の表面は、0° ~ 360°までの回転角度を示すグレイレベル情報を含んでいます。
このアプリケーションでは、型の中心を検出するのに、 (“Blob01”というオブジェクト名を持つ)Blobオブジェクトを使います。なお、Blobオブジェクトの代わりにCorrelationオブジェクトを使うこともできます。
Polarオブジェクトを作成し、Polarオブジェクトの中心位置にBlobオブジェクトのX, Y位置リザルトを使用します。これは、PolarオブジェクトのCenterPointプロパティーを “Blob01”にすることで設定されます。
次に、RadiusプロパティーとThicknessプロパティーとして適切な値をPolarオブジェクトに設定します。そして、グレイレベルのポーラーモデルを登録し、0°の型モデルを提供します。
方向の異なる新規の型を検索する場合、まず、ポーラーサーチウィンドウが、Blobオブジェクト“Blob01”からのXY位置リザルトと、RadiusプロパティーおよびThicknessプロパティーの値から構成されます。
次に、このポーラーサーチウィンドウ内で、事前に登録されていたモデルの回転角度に等しい角度が検索されます。そして、モデルが検出された角度が、Angleリザルト(ピクセル単位)とRobotUリザルト(ロボット座標系)として返されます。

キーポイント


重要注意事項: 返されたRobotUリザルトは、ロボット座標系における実際のパーツ回転角度ですが、グリッパーは正確に回転角度0oで装着されているわけではないので注意してください。グリッパーは少なくとも2° ~ 3°ずれているはずです。パーツへの動作では、この点をプログラムで調整してください。

登録されたモデルの角度のずれの調整
ポーラーモデルを登録すると、オリジナルの円形モデルの回転角度は0°とみなされ、このとき、回転角度0oの位置は時計の3時方向で表わされます。下図は、被検索領域がおよそ1時方向にあると登録されたモデルを示しています。このモデルが登録されると、モデルの0°の位置は、すべてのPolarオブジェクトで時計の3時方向となります。
しかし、インジケーター表示したいのは実際のパーツ回転角度ですから、Angleoffsetプロパティーを使用して、ポーラー角度のインジケーター グラフィックの位置を適切に調整しなければなりません。
例えば、およそ1時方向を指すように登録されたパーツには、60°の角度のずれが必要となります。(PolarオブジェクトのAngleOffsetプロパティーには、60°の値を設定しなければなりません。)

AngleOffsetプロパティーに 60°の値を設定したポーラーモデル

Polarオブジェクト実行上の課題
Polarオブジェクトを教示するときに主に配慮しなければならない点は、ポーラーモデルがオブジェクト方向を判定するための情報を非常に多く含んでいるということです。
したがって、Polarオブジェクトの期待精度や実行スピードによって、Polarオブジェクトの検索に使われるポーラーモデルのサイズを決定することになります。
Polarオブジェクトの回転リザルトに1/2°の精度を必要とする場合には、Polarオブジェクトの幅はわずかに180ピクセルしか必要としません。 (1/4ピクセル検索精度と仮定して1ピクセルあたり2°、あるいはPolarオブジェクト解像度単位あたり0.5°)
また、Polarオブジェクトの精度は、モデルのグレイレベル情報によって左右されます。
Polarオブジェクトの厚さ (ピクセル単位)を選択するときは、被検索画像イメージの中心位置の特定にわずかな違いがあった場合でも、角度検出によって信頼性のあるリザルトを出すように、充分な情報を含むようにしなければなりません。
Thicknessプロパティーに1ピクセルを設定すると、画像イメージが1ピクセル分まちがった場所に置かれた場合には、ポーラー変換によって全く異なるピクセルがポーラー画像イメージに転送されることになります。
画像イメージ元の場所にいくらかの余裕を与えるために、Thicknessプロパティーには5の値が設定されますが、この設定によると、画像イメージ元の場所が1ピクセルずれた場合でも、それに対応するポーラー画像イメージのピクセルは、1/5ずれるだけです。(Thicknessプロパティーの最小値を5に設定しているのは、以上のような理由によります。)
PolarオブジェクトのRadiusプロパティーとThicknessプロパティーは、モデル中のグレイ情報量と希望する検索速度に基づいて選択してください。
検索速度は、RadiusプロパティーとThicknessプロパティーの値に比例します。Radiusプロパティーを低い値に設定し、Thicknessプロパティーに5の値を設定した場合に、最高速の検索速度を得ることができます。ただし、多くの場合で、Thicknessプロパティーの設定値として5の値は、ポーラーモデルを正確に検出するのに充分な値ではありません。

Polarオブジェクトの使用方法
ここからは、Polarオブジェクトの作成方法と使用方法を説明します。

  • 新規Polarオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • Polarオブジェクトの関連プロパティーの設定
  • Polarオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト
    次に説明するステップを開始する前に、新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。
    すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
    ビジョンシーケンス

Step 1: 新規Polarオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Polar (ポーラサーチ)]ボタンをクリックしてください。
  2. 画像イメージ表示部にマウスを動かしてください。マウスポインターがPolarオブジェクトアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置に来るまで、マウスを動かし続けてください。それから、マウスを左クリックして、オブジェクトを作成してください。
  4. オブジェクト名が自動的に作成されるのに注目してください。この例では、このシーケンスで最初に作成されたPolarオブジェクトなので、“Polar01”というオブジェクト名になります。 (オブジェクト名の変更方法については後述します。)

Step 2: Polarオブジェクトの位置決め
画面上には、下図のようなPolarオブジェクトが表示されています。

新規Polarオブジェクト

記号 内容
a オブジェクト名
b

サーチウィンドウ

サイズハンドル

c サーチリング

Polarオブジェクトには円形のサーチウィンドウがあります。オブジェクト全体の位置、または半径を変更することができます。
オブジェクト全体を移動するには、オブジェクト名または外側の境界線の周辺をクリックして、マウスの左側ボタンを押し続けながら、オブジェクト全体を画面上の新しい位置にドラッグしてください。位置が決まったら、マウスを離してください。Polarオブジェクトが画面上の新しい位置にきます。
半径を変更するには、マウスポインターをサイズハンドルの1つへ移動させ、マウスの左側ボタンを押して、それからマウスを動かしてください。

Step 3: Polarオブジェクトプロパティーの設定
Polarオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。あるいは、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、Polarオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。

  • "Vision Guide 8.0プロパティー&リザルトリファレンス"
  • 本章のPolarオブジェクトのプロパティー
プロパティー 説明
Nameプロパティー 新規に作成されたPolarオブジェクトに、デフォルトとして与えられるオブジェクト名は “Polarxx”です。xxは、1つのビジョンシーケンス内で複数のPolarオブジェクトを用いるとき、それらのPolarオブジェクトで区別するための番号です。ビジョンシーケンスで1番目に用いられるPolarオブジェクトには、“Polar01”というオブジェクト名がデフォルトで設定されます。オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でPolarオブジェクト名を表示する場所は、すべて変更後の名称に変わります。
CenterPointObjectプロパティー 通常、このプロパティーをシーケンスの前の方で行われるオブジェクトの1つに設定します。これが、実行時のPolarオブジェクトの中心点を決定します。
Thicknessプロパティー 通常、パーツ角度を定めるためのモデル情報を持つのに十分な値に、このプロパティーを設定します。
AngleOffsetプロパティー 通常、このプロパティーを目的位置での最終角度リザルトの位置になるように設定します。例えば、時計の分針を検索している場合、表示された角度が分針にぴったり合うようにAngleOffsetプロパティーを調整します。

Step 4: Polarオブジェクトの実行とリザルトの確認
Polarオブジェクトを実行するには、次のようにしてください。
実行パネルのオブジェクトの[Run]ボタンをクリックしてください。CenterPointObjectが最初に実行されます。
Polarオブジェクトのリザルトが表示されます。この時点で確認すべき主要なリザルトは次のとおりです。

リザルト 説明
Angleリザルト 検出モデルの角度(単位は度)

OCRオブジェクト

OCRオブジェクトの概要
OCRオブジェクト(光学文字認識)は、一列に並んだ文字列を、特定のフォントや文字サイズのイメージとして認識することができます。OCRオブジェクトのGUIには、SEMIスタンダードをもとにフォントを作成したり、ユーザー定義フォントをイメージ中の文字やASCII定義ファイルから作成するフォントウィザードがあります。作成したフォントをディスクへエクスポートしたり、同じプロジェクト内の、あるいは別のプロジェクトのOCRオブジェクトへインポートすることができます。

キーポイント


OCRオブジェクトは、OCRオプションがインストールされており、有効になっている場合のみ使用可能です。

OCRオブジェクトのレイアウト
OCRオブジェクトには、次に示すようにサーチウィンドウとモデルウィンドウがあります。

OCRオブジェクトレイアウト

記号 内容
a オブジェクト名
b サーチウィンドウ
c モデルウィンドウ
d

モデルウィンドウ

サイズハンドル

キーポイント


円弧に沿って並んだ文字列は、“Arc”型サーチウィンドウを使用することで、特定のフォントや文字サイズイメージとして認識することができます。

OCRオブジェクトプロパティー
OCRオブジェクトで使われるプロパティーの一覧を示し、簡単に説明します。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0 プロパティー&リザルトリファレンスマニュアル"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Caption

見出しをOCRオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーからどのリザルトを使うのかを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にOCRオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

デフォルト: False

CurrentResult

オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義

FindChar=Falseの場合は、グレーアウト

デフォルト: 1

Description

ユーザー指定の説明を設定

デフォルト: 空欄

Dictionarymode

辞書モードを指定

デフォルト: All

Direction

円弧に沿って並んだ文字の方向を設定

デフォルト: InsideOut

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

ExportFont 現在のフォントをディスクにエクスポート
FailColor

オブジェクト検出が不良時の色を指定

デフォルト: Red

FindChar

1文字ずつオブジェクトとして扱うかを指定

デフォルト: False

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

Default: 1 - All

ImportFont Vision GuideのGUIから、ファイルダイアログを起動し、フォントファイルをインポート
InvalidChar

Text resultで無効な文字を表すために使われた文字を設定、あるいは返す

デフォルト: “?”

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

ModelWin

実行時のみ

1コールで、モデルウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す

ModelWinAngle モデルウィンドウの角度を定義
ModelWinCenterX モデルウィンドウの中心のX座標値を定義
ModelWinCenterY モデルウィンドウの中心のY座標値を定義
ModelWinLeft モデルウィンドウの最左端の位置を規定
ModelWinHeight

モデルウィンドウの高さを定義

デフォルト: 50

ModelWinTop モデルウィンドウの最上端の位置を規定
ModelWinType モデルウィンドウのタイプを定義
ModelWinWidth

モデルウィンドウの幅を定義

デフォルト: 50

Name

OCRオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: Ocr01

PassColor

オブジェクトの検出良時の色を選択

デフォルト: Light Green

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

Polarity

オブジェクトと背景の差 (明るい背景に暗いオブジェクトか、暗い背景に明るいオブジェクトか)を定義

デフォルト: 1 - DarkOnLight

SearchWin

実行時のみ

1コールで、サーチウィンドウの左端, 上端, 高さ, 幅、または、中心のX座標, 中心のY座標, 円内周の半径サイズ, 円外周の半径サイズのパラメーターを設定、または返す

SearchWinAngleEnd 被検索領域の終了角度を定義
SearchWinAngleStart 被検索領域の開始角度を定義
SearchWinCenterX 被検索領域の中心のX座標値を定義
SearchWinCenterY 被検索領域の中心のY座標値を定義
SearchWinHeight

被検索領域の高さを定義 (単位: ピクセル)

デフォルト: 100

SearchWinLeft 被検索領域の最左端の位置を定義 (単位: ピクセル)
SearchWinRadiusInner 被検索領域の円内径を定義
SearchWinRadiusOuter 被検索領域の円外径を定義
SearchWinTop 被検索領域の最上端の位置を定義 (単位: ピクセル)
SearchWinType 被検査領域のタイプ (Rectangle, Arc)を定義
SearchWinWidth

被検索領域の幅を定義 (単位: ピクセル)

デフォルト: 100

OCRオブジェクトのリザルト
次は、OCRオブジェクトのリザルトを簡単に説明した表です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0 プロパティー&リザルトリファレンスマニュアル"

リザルト 説明
Angle 検出された文字の回転量を角度で返す
Found オブジェクトが検出されたかどうかを返す
Passed 検出結果が良か否かを返す
CameraX カメラ座標系における検出文字のX座標位置を返す
CameraY カメラ座標系における検出文字のY座標位置を返す
NumberFound 検出された文字数を返す
MaxX 文字の外接長方形の最大Xピクセル座標を返す
MaxY 文字の外接長方形の最大Yピクセル座標を返す
MinX 文字の外接長方形の最小Xピクセル座標を返す
MinY 文字の外接長方形の最小Yピクセル座標を返す
PixelX 検出文字位置のX座標をピクセルで返す
PixelY 検出文字位置のY座標をピクセルで返す
RobotX ロボット座標系における検出文字のX座標位置を返す
RobotY ロボット座標系における検出文字のY座標位置を返す
ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

Text サーチ中に検出した文字を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)

OCRオブジェクトの使用方法
OCRオブジェクトを使用するときの手順を、以下に挙げています。次項で詳しく説明します。

  • 新規OCRオブジェクトの作成
  • 新規オブジェクトのフォントの作成、またはインポート
  • フォントのキャリブレーション(必要に応じて)
  • OCRオブジェクトの関連プロパティーの設定
  • OCRオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

下に示す手順を始める前に、新規のビジョンシーケンスを作成しているか、または使用するビジョンシーケンスを選択していなければなりません。もし、ビジョンシーケンスがない場合、 [新規シーケンス]ボタンをクリックすると、新規のビジョンシーケンスを作成することができます。また、Vision Guideウィンドウのシーケンスツリーから以前に作成していたシーケンスをクリックし、OCRオブジェクトをクリックして選択することもできます。

新規OCRオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [OCR]ボタンをクリックしてください。
  2. OCRオブジェクトボタンの上にOCRアイコンが現れます。
  3. OCRアイコンをクリックして、Vision Guideウィンドウのイメージディスプレイへドラッグします。
  4. オブジェクトの名前は自動的に作成されます。例えば、シーケンスに作成された最初のOCRオブジェクトならば、“Ocr01”となります。 (名前の変更方法については、後で説明します。)

    OCRオブジェクトレイアウト
記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サーチウィンドウ
d モデルウィンドウ

フォントの作成
フォントは、読み取る文字画像に合わせて作成する必要があります。他のプロジェクトからフォントをImportFontプロパティーでインポートすることもできます。この場合、フォントを作成する必要がありません。
また、一般的な欧米, 日本語のフォントはシステム内に組み込まれています。入力画像のサイズによってはフォント作成が必要な場合があります。
ユーザー定義フォントは、イメージファイルから作成することができます。

以下の手順に従い、フォントを作成します。

  1. フローチャートからOCRオブジェクトをクリックし、モデルウィンドウを文字に合わせます。
  2. [ティーチ]ボタンをクリックし、[文字のティーチング]ダイアログを表示します。
  3. 新規文字を登録する場合は、[追加登録文字]ボタンを選択し、[ティーチ]ボタンをクリックします。1つの文字に対して複数のイメージを登録することができます。
    登録可能な文字は、日本語 (全角)、半角英数文字、半角記号です。登録済み文字をフォントから削除する場合、[登録済み文字]ボタンを選択後、削除する文字をドロップダウンで選択し、[削除]ボタンをクリックします。

CodeReaderオブジェクト

CodeReaderオブジェクトの概要
CodeReaderオブジェクトは、バーコードや二次元コードを読み取ります。
対応コードは以下のとおりです。

コード 仕様
EAN13 数字0 ~ 9, 固定長
Code39 0 ~ 9, A ~ Z, ./+-%$Spc, 可変長
DataMatrix 二次元コード *1
Interleaved 2 of 5 数字0 ~9, 固定長
Code128 Full ASCII, 可変長
Codabar 数字0 ~ 9, $ - : / . +
PDF417 二次元コード
QR 二次元コード
EAN 8桁 0 ~ 9, 固定長
UPC A 数字0 ~ 9, 固定長
UPC E 数字0 ~ 9, 固定長

*1: ECC200規格のみ対応

CodeReaderオブジェクトレイアウト
CodeReaderオブジェクトには、次に示すようなサーチウィンドウがあります。

CodeReaderオブジェクトレイアウト

記号 内容
a オブジェクト名
b サーチウィンドウ
c サイズハンドル

CodeReaderオブジェクトプロパティー
次の表は、CodeReaderオブジェクトで使われるプロパティーの簡単な説明です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0 プロパティー&リザルトリファレンスマニュアル"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Caption

見出しをCodeReaderオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーからどのリザルトを使うのかを指定Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にCodeReaderオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

デフォルト: False

CodeType

CodeReaderオブジェクトで検索するバーコードまたは2次元コードのタイプを設定、あるいは返す

デフォルト: 0 - Auto

CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出結果が不良時の色を指定します。

デフォルト: Red

Frame

指定したフレームにしたがって、カレントオブジェクトの検索位置を設定

デフォルト: none

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

Name

CodeReaderオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: Code01

NumberToFind

検出するコードの数を設定

最大: 8

デフォルト: 1

Orientation バーコードの向きを設定
PassColor

オブジェクトの検出良時の色を選択

デフォルト: Light Green

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

SearchWin 実行時のみ1コールで、サーチウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す
SearchWinHeight

被検索領域の高さを定義 (単位: ピクセル)

デフォルト: 100

SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinTop 被検索領域の最上端を定義 (単位: ピクセル)
SearchWinWidth

被検索領域の幅を定義 (単位: ピクセル)

デフォルト: 100

CodeReaderオブジェクトのリザルト
次は、CodeReaderオブジェクトのリザルトについて簡単に説明しています。各リザルトについての詳細は、以下を参照してください。
"Vision Guide 8.0 プロパティー&リザルトリファレンスマニュアル"

リザルト 説明
Angle 検出されたコードの傾斜角度を返す
CameraX カメラ座標系における検出パーツ位置の X座標を返す (単位: mm)
CameraY カメラ座標系における検出パーツ位置の Y座標を返す (単位: mm)
Found オブジェクトが検出されたかどうかを返す
FoundCodeType 検出されたコードタイプを返す
NumberFound

検出されたコード数を返す

(最小0個から、最大はNumberToFindプロパティーで設定した検出個数になります。)

Passed 検出結果が良か否かを返す
PixelX 検出パーツ位置のX座標をピクセルで返す
PixelY 検出パーツ位置のY座標をピクセルで返す
PixelXYU

実行時のみ

検出パーツ位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系における検出パーツのX座標位置を返す
RobotY ロボット座標系における検出パーツの Y座標位置を返す
RobotU ロボット座標系における検出パーツのU座標位置を返す
RobotXYU

実行時のみ

ロボット座標系における、検出パーツ位置のRobotX座標, RobotY座標, RobotU座標を返す

ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

Text サーチ中に検出した文字を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)

CodeReaderオブジェクトの使用方法
CodeReaderオブジェクトを使用するときの手順を、以下に挙げています。次項で詳しく説明します。

  • 新規CodeReaderオブジェクトの作成
  • サーチウィンドウの位置とサイズの設定
  • CodeReaderオブジェクトの関連プロパティーの設定
  • CodeReaderオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

下記に示す手順を始める前に、新規のビジョンシーケンスを作成しているか、または使用するビジョンシーケンスを選択していなければなりません。もし、ビジョンシーケンスがない場合、 [新規シーケンス]ボタンをクリックすると、新規のビジョンシーケンスを作成することができます。また、Vision Guideウィンドウのシーケンスツリーから以前に作成していたシーケンスをクリックし、CodeReaderオブジェクトをクリックして選択することもできます。

Step 1: 新規CodeReaderオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [CodeReader]ボタンをクリックしてください。
  2. CodeReaderオブジェクトボタンの上にCodeReaderアイコンが現れます。
  3. CodeReaderアイコンをクリックして、Vision Guideウィンドウのイメージディスプレイへドラッグします。
  4. オブジェクトの名前は自動的に作成されます。例えば、シーケンスに作成された最初のCodeReaderオブジェクトならば、 “Code01”となります。 (名前の変更方法については、後で説明します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上には、下図のようなCodeReaderオブジェクトが表示されます。

新規CodeReaderオブジェクト

記号 内容
a シーケンスのStep番号
b オブジェクト名
c サーチウィンドウ
  1. CodeReaderオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、CodeReaderオブジェクトをドラッグして、サーチウィンドウの左上コーナーを好きな位置に合わせてください。
  2. サイズハンドルをクリックして、マウスをドラッグすると、CodeReaderオブジェクトサーチウィンドウのサイズが変更できますので、適当な大きさに調整してください。 (サーチウィンドウは、ブローブの被検索領域になります。)

キーポイント


バーコードの両側にスペースを設けてください。これがなければ、検索が失敗します。2次元バーコードの場合は、周囲に1セル以上の空白が必要です。

ColorMatch オブジェクト

ColorMatch オブジェクトの概要
CodeMatchオブジェクトは、カラーモデルと一致する色を検出します。
ColorMatch オブジェクトのレイアウト
ColorMatchオブジェクトのレイアウトは長方形, 回転長方形, 円形で、中点や半径があります。ColorMatchオブジェクトの位置は、ColorMatchオブジェクト名またはサーチウィンドウの外周をクリックし、移動させたい場所にドラッグすると、移動することができます。

新規ColorMatchオブジェクト

記号 内容
a オブジェクト名
b サイズハンドル

キーポイント


CenterPointプロパティーで定義するColorMatchオブジェクトの中点は、他のオブジェクトの位置を基準として設定することができます。つまり、ColorMatchオブジェクトの位置を調整した場合でも、オブジェクトやシーケンスを実行することによって、ColorMatchオブジェクトの中点が変わることがあります。

ColorMatchオブジェクトのサーチウィンドウは長方形, 回転長方形, 円形です。
SearchWinTypeがCircleの場合にColorMatchオブジェクトサーチウィンドウの外側境界線のサイズを調節するには、サーチウィンドウサイズハンドルの内の1つをクリックし、内側あるいは外側にドラッグして半径を調整してください。

ColorMatch プロパティー
ColorMatchオブジェクトで使われるプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0 プロパティー& リザルトリファレンスマニュアル"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

対象物が検出されたと判定するためのスコアの値を指定

設定値を低く設定すると、誤検出の原因となります。

デフォルト: 700

Caption

見出しをColorMatchオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーからどのリザルトを使うのかを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にColorMatchオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

SearchWinTypeがRotatedRectangleに設定されている場合、サーチウィンドウはAngleリザルトにしたがって回転します。

デフォルト: False

CenterX オブジェクトの中心点として用いられる位置のX座標を指定CenterPointプロパティーが他のビジョンオブジェクトに設定されると、自動的に設定されます。
CenterY オブジェクトの中心点として用いられる位置のY座標を指定CenterPointプロパティーが他のビジョンオブジェクトに設定されると、自動的に設定されます。
ColorMode

使用する色空間(RGB/HSV)を設定

デフォルト: RGB

CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentModel

実行時のみModelColorプロパティーやVTeachで使用するモデルを指定CurrentModelの値は1から NumberOfModelsです。

デフォルト: 1

CurrentResult

オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義

デフォルト: 1

Description

ユーザー指定の説明を設定

デフォルト: 空欄

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出結果が不良時の色を指定します。

デフォルト: Red

Frame

指定したフレームにしがたって、カレントオブジェクトの検索位置を設定(フレームに対してオブジェクトの位置を決めることができます。)

デフォルト: None

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

ModelColor

実行時のみ実行時にRGBカラー値を直接入力し、モデルを教示

デフォルト: RGB(0, 0, 0)

ModelColorTol

実行時のみモデル色の許容差を設定画素色が許容差の範囲内であれば、画素は変化しません。

デフォルト: 10 (ColorMode = RGB), 0,0,50 (ColorMode = HSV)

ModelName 実行時のみ現在使用しているモデルの名前を設定
ModelObject

検索に使用するモデルを決定

デフォルト: Self

Name

ColorMatchオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: ColorMatch01

NumberOfModels

実行時のみ使用しているカラーモデル数実行中、このプロパティーを設定すると、CurrentModel, VTeachを使用し、カラーモデルを教示できます。

デフォルト: 1

NumberToFind

作業中のサーチウィンドウで検出する対象物の数を定義

デフォルト: 1

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

Radius

オブジェクトの中心点から、オブジェクトの検索リング外側までの距離を定義

デフォルト: 50

SearchWin

実行時のみ

1コールでサーチウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す

SearchWinAngle 被検索領域の角度を定義
SearchWinCenterX 被検索領域の中心のX座標値を定義
SearchWinCenterY 被検索領域の中心のY座標値を定義
SearchWinHeight 被検索領域の高さを定義 (単位: ピクセル)
SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinTop 被検索領域の最上端を定義 (単位: ピクセル)
SearchWinType 被検査領域のタイプ (Rectangle, RotatedRectangle, Circle)を定義
SearchWinWidth 被検索領域の幅を定義 (単位: ピクセル)

ColorMatch リザルト
ColorMatchオブジェクトのリザルトの概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0 プロパティー&リザルトリファレンスマニュアル"

リザルト 説明
CameraX カメラ座標系における検出パーツ位置の (モデル原点を基準にした)X座標を返す (単位: mm)
CameraY カメラ座標系における検出パーツ位置の (モデル原点を基準にした)Y座標を返す (単位: mm)
ColorIndex 検索したカラーモデルのインデックスを返す
ColorName 検索したカラーモデルの名前を返す
ColorValue ColorModeの設定により、検索したカラーモデルのRGB値またはHSV値を返す
CameraXYU 実行時のみカメラ座標系における検出パーツ位置のCameraX座標, CameraY座標, CameraU座標を返す (単位; mm)
Found 色がカラーモデルのどれかと一致したかどうかを返す
NumberFound

検出されたオブジェクト数を返す

(最小0個から、最大はNumberToFindプロパティーで設定した検出個数になります。)

Passed 検出結果が良か否かを返す
PixelX 検出パーツ位置のX座標をピクセルで返す
PixelY 検出パーツ位置のY座標をピクセルで返す
PixelXYU

実行時のみ

検出パーツ位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系における検出パーツのX座標位置を返す
RobotY ロボット座標系における検出パーツの Y座標位置を返す
RobotXYU 実行時のみロボット座標系における検出パーツ位置のRobotX座標, RobotY座標, RobotU座標を返す
Score

実行時に検出された対象物の色が、モデルの色に一致する度合いを表す

0 ~ 1000のINTEGER数値を返す

ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

Time オブジェクト処理に要した時間を返す (単位: ミリ秒)

ColorMatch オブジェクトの使用方法
これまでColorMatchオブジェクトの使い方を理解するための基礎を説明してきました。ここでは、ColorMatchオブジェクトを使う手順を説明します。

  • 新規ColorMatchオブジェクトの作成
  • サーチウィンドウの位置とサイズの設定
  • ColorMatchオブジェクトに関連するプロパティーの設定
  • カラーモデルの教示
  • ColorMatchオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト
  • 単一ColorMatchオブジェクトからの複数検出を使用した作業

Step 1: 新規ColorMatch オブジェクトの作成
Vision Guideツールバー - [全ツール] - [Color Match]ボタンをクリックしてください。
マウスカーソルがColorMatchアイコンに変わります。
マウスカーソルをVision Guideウィンドウの画像表示部まで動かし、マウス左ボタンをクリックします。画像表示部にColorMatchオブジェクトが置かれます。
オブジェクト名は自動的に作成されますので注意してください。ここでは、このシーケンスで最初に作成されたColorMatchオブジェクトなので、 “ColorMatch01”というオブジェクト名になります。 (オブジェクト名の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上には、下図のようなColorMatchオブジェクトが表示されます。

新規ColorMatchオブジェクト

記号 内容
a オブジェクト名
b サイズハンドル
  1. オブジェクト名をクリックし、マウスボタンを押し続けながらColorMatchオブジェクトをドラッグし、サーチウィンドウを好きな位置に合わせてください。
  2. サイズハンドルをクリックし、マウスをドラッグすると、ColorMatchオブジェクトサーチウィンドウのサイズが変更できます。 (サーチウィンドウは、色の被検索領域です。)

Step 3: ColorMatchオブジェクトのモデルの登録
ColorMatchオブジェクトを使用するには、まず検索するためのカラーモデルを登録します。カラーモデルを登録すると、ColorMatchオブジェクトウィンドウ内の全画素から平均色が決定されます。モデル名を自由に付けることができます。

  1. ColorMatchオブジェクトが、現在表示されているオブジェクトであることを確認します。フローチャート、またはシーケンスツリーで、どのオブジェクトが現在作業中になっているかを確認できます。また、画像表示部にマゼンタ色で強調表示されているオブジェクトが現在使用しているオブジェクトです。
  2. 実行パネルにある、[ティーチ]ボタンをクリックしてください。下の画面が表示されます。
    ティーチウィンドウが表示されているあいだ、カラーモデルを登録するため必要に応じてColorMatchオブジェクトの位置を変更することができます。
  3. ColorMatchオブジェクトを登録したい色の上へ置きます。このとき、登録する色をウィンドウ全体に表示させてください。
  4. [追加]ボタンをクリックし、新しいカラーモデルを追加します。
  5. モデルの列をクリックし、登録したいモデルを選択します。
  6. [ティーチ]ボタンをクリックし、色を登録します。
  7. 色に名前を付けます。この名前はColorNameリザルトとして使用しますので、色が分かるように名前を付けてください。
  8. 許容量のデフォルトは、ColorModeがRGBの場合は0、HSVの場合は0, 0, 50です。許容値を変更することで、色の変化が少ない場合や照明が一定でない場合の色の一致に役立ちます。
  9. さらにカラーモデルを登録するには、上の手順 (3)から (8)を繰り返してください。

キーポイント


通常、ColorMatchオブジェクトウィンドウを使用してカラーモデルを登録しますが、ティーチウィンドウでRBG (またはHSV)値を直接入力してカラーモデルを登録することもできます。

LineFinder オブジェクト (直線検出)

LineFinderオブジェクトの概要
LineFinderオブジェクトは、画像イメージ中のラインの場所を特定するのに使われます。
LineFinderオブジェクトは、複数のEdgeオブジェクトを自動的に処理してエッジ位置を特定し、各エッジ位置から特定される直線を求めます。
画像イメージ中のオブジェクトのエッジは、グレイスケール値の暗から明への変化、あるいは明から暗への変化で表されます。このような変化は、数個のピクセルにわたって観察されます。
LineFinderオブジェクトでは、Polarityプロパティーによって定義された、明から暗への変化、または暗から明への変化を検出し、検出された位置をシングルエッジのエッジ位置として定義します。EdgeTypeプロパティーを変更してエッジペアを検出することもできます。エッジペアの場合、2つの対極のエッジを検索し、中間点を返します。

LineFinderオブジェクトのレイアウト
LineFinderオブジェクトは、CorrelationオブジェクトやBlobオブジェクトとは外観が異なります。LineFinderオブジェクトのサーチウィンドウは、Edgeオブジェクトに沿ったラインに相当します。LineFinderオブジェクトは、方向インジケーターが示す方向のこのラインに沿って、変化(明から暗へ、または暗から明へ)を検索します。


LineFinder オブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サイズと方向ハンドル
d 方向インジケータ (サーチの方向)

LineFinderオブジェクトは、 (垂直方向、水平方向だけでなく)あらゆる方向を検索するように置くことができます。BlobオブジェクトのSearchWinType=AngledRectangleと同様に、LineFinderオブジェクトのサーチウィンドウ回転ハンドルを使って、LineFinderオブジェクトを目的のエッジを検出する方向に動かすことでできます。

LineFinderオブジェクトのプロパティー
下の一覧は、LineFinderオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

特徴が検出されたと判定するための形状スコアの値を指定します。対象物が検出されたとみなされるためには、スコアの値を超えなくてはなりません。

デフォルト: 100

AngleBase

基準角度を設定

デフォルト: 0

AngleMode

角度の出力形式を指定

デフォルト: 1-Default

AngleStart 角度サーチの中心を指定
Caption

見出しをLineFinderオブジェクトに割りあてる

デフォルト: 空欄

CenterPntObjResult

CenterPointObjectプロパティーから使用するリザルトを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にLineFinderオブジェクトが適用されます。

CenterPntOffsetX サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す
CenterPntOffsetY サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す
CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

SearchWinTypeがRotatedRectangleに設定されている場合、サーチウィンドウはAngleリザルトにしたがって回転します。

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

CheckClearanceFor クリアランス (隙間)を確認するオブジェクトを設定
ClearanceCondition クリアランス (隙間)の判断方法を指定
ContrastTarget

エッジサーチのためのコントラストを設定

デフォルト: 0 (best contrast)

ContrastVariation

ContrastTargetの許容されるコントラストの変化量を選択

デフォルト: 0

CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

Directed

線の方向を使って角度を設定するかを指定

デフォルト: True

EdgeSort 検出されたエッジ結果のソート方法を設定
EdgeThreshold

この値より低いエッジは無視するという、しきい値を設定

デフォルト: 2

EdgeType

検索するエッジタイプ (シングル、またはペア)を設定

デフォルト: 1 - Single

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出結果が不良時の色を指定

デフォルト: Red

FittingThreshold 直線のフィッティングに使用するエッジリザルトを指定
Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

Name

LineFinderオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: LineFind01

NumberOfEdges

検出するエッジ数を設定

デフォルト: 5

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

Polarity

LineFinderオブジェクトが明から暗への移行を検索するのか、暗から明への移行を検索するのかを指定

デフォルト: 1 - LightToDark

ScoreWeightContrast

コントラストによってスコアの割合を設定

デフォルト: 50

ScoreWeightStrength

エッジの強度によってスコアの割合を設定

デフォルト: 50

SearchWidth

エッジサーチの幅を定義範囲: 3 ~ 99

デフォルト: 3

SearchWin

実行時のみ

1コールでサーチウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す

SearchWinAngle 被検索領域の角度を定義
SearchWinCenterX 被検索領域の中心のX座標値を定義
SearchWinCenterY 被検索領域の中心のY座標値を定義
SearchWinHeight 被検索領域の高さを定義 (単位: ピクセル)
SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinTop 被検索領域の最上端を定義 (単位: ピクセル)
SearchWinWidth 被検索領域の幅を定義 (単位: ピクセル)
StrengthTarget

サーチするエッジの強度を設定

デフォルト: 0

StrengthVariation

StrengthTargetの変化量の合計を設定

デフォルト: 0

X1 エッジの始点位置のX座標
X2 エッジの終点位置のX座標
Y1 エッジの始点位置のY座標
Y2 エッジの終点位置のY座標

LineFinderオブジェクトのリザルト
下の一覧は、Edgeオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle イメージ座標系における検出されたエッジの角度を返す
CameraX1 検出エッジラインの始点X座標をカメラ座標で返す
CameraY1 検出エッジラインの始点Y座標をカメラ座標で返す
CameraX2 検出エッジラインの終点X座標をカメラ座標で返す
CameraY2 検出エッジラインの終点Y座標をカメラ座標で返す
ClearanceOK クリアランス(隙間)の判断結果を返す
Contrast 検出エッジの平均コントラストを返す
EdgeCameraXYU 検索中に検出したエッジの CameraX, CameraY, Angle 位置座標を返す
EdgePixelXYU 検索中に検出したエッジの PixelX, PixelY, Angle 位置座標を返す
EdgeRobotXYU 検索中に検出したエッジの RobotX, RobotY, Angle 位置座標を返す
FitError 各エッジポイントと検出された直線との間の距離を二乗平均平方根 (RMS)で返す
Found オブジェクトが検出されたかどうか、対象物あるいはパーツがAcceptプロパティーの現在の設定を超える形状スコア値を持っているかどうかの値を戻す
Passed 検出結果が良か否かを返す
PixelLine

実行時のみ

X1, Y1, X2, Y2の4つの直線座標をピクセル単位で返す

Length 検出エッジラインの長さをカメラ座標(mm)返す
NumberFound

検出された直線の数を返す

(最小0個から、最大はNumberToFindプロパティーで設定した検出個数になります。)

PixelLength 検出エッジラインの長さ(ピクセル長)を返す
PixelX1 検出エッジラインの始点X座標をイメージ座標で返す
PixelY1 検出エッジラインの始点Y座標をイメージ座標で返す
PixelX2 検出エッジラインの終点X座標をイメージ座標で返す
PixelY2 検出エッジラインの終点Y座標をイメージ座標で返す
RobotX1 検出エッジラインの始点X座標をロボット座標で返す
RobotY1 検出エッジラインの始点Y座標をロボット座標で返す
RobotX2 検出エッジラインの終点X座標をロボット座標で返す
RobotY2 検出エッジラインの終点Y座標をロボット座標で返す
RobotU 検出エッジラインの角度をロボット座標で返す
Strength 検出エッジの平均強度を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)

LineFinderオブジェクトの使用方法
ここからは、LineFinderオブジェクトの作成と使用の方法を説明します。

  • 新規LineFinderオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • LineFinderオブジェクトの関連プロパティーの設定
  • LineFinderオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト
    これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。
    すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
    新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
    ビジョンシーケンス

Step 1: 新規LineFinderオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Line Finder (直線検出)]ボタンをクリックしてください。
  2. 画像イメージ表示部にマウスを動かしてください。マウスポインターがLineFinderオブジェクトアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置にくるまで、マウスを動かし続けてください。それから、マウスを左クリックして、オブジェクトを作成してください。
  4. オブジェクト名が自動的に作成されます。この例では、このシーケンスで最初に作成されたLineFinderオブジェクトなので、 “LineFind01”というオブジェクト名になります。(オブジェクト名の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上には、下図のようなLineFinderオブジェクトが表示されます。

新規LineFinder オブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サイズと方向ハンドル
d 方向インジケータ (サーチの方向)
  1. LineFinderオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、LineFinderオブジェクトをドラッグして、サーチウィンドウの左上コーナーを好きな位置に合わせてください。
  2. サイズハンドルをクリックして、マウスをドラッグすると、LineFinderオブジェクトサーチウィンドウのサイズが変更できますので、適当な大きさに調整してください。

Step 3: LineFinderオブジェクトプロパティーの設定
LineFinderオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。あるいは、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、LineFinderオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"
角度の出力形式は、AngleModeプロパティーで設定します。詳細は、Lineオブジェクトを参照してください。

プロパティー 説明
EdgeType(シングル)

検索するエッジの種類を選択

エッジペアを設定した場合、それぞれの方向のエッジを検索し、中間点を位置として検出します。

Nameプロパティー("LineFindxx") 新規に作成されたLineFinderオブジェクトに、デフォルトとして与えられるオブジェクト名は “LineFindxx”です。xxは、1つのビジョンシーケンス内で複数のLineFinderオブジェクトを用いるとき、それらのLineFinderオブジェクトで区別するための番号です。ビジョンシーケンスで1番目に用いられるLineFinderオブジェクトには、 “LineFind01”というオブジェクト名がデフォルトで設定されます。オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でLineFinderオブジェクト名を表示する場所は、すべて変更後の名称に変わります。
NumberOfEdges(1) エッジ検索ラインに沿って1つ以上のエッジを検索
Polarity (LightToDark) 「暗から明へ(DarkToLight)」のエッジを検索する場合は、Polarityを変更してください。

Step 4: LineFinderオブジェクトの実行とリザルトの確認
LineFinderオブジェクトを実行するには、次のようにしてください。
実行パネルのオブジェクトの[Run]ボタンをクリックしてください。LineFinderオブジェクトのリザルトが表示されます。この時点で確認すべき主要なリザルトは次のとおりです。

リザルト 説明
Angleリザルト 検出されたエッジラインの角度をイメージ座標で返す
Lengthリザルト

検出されたエッジラインの長さをカメラ座標で返す

単位: mm

PixelLengthリザルト

検出されたエッジラインの長さをイメージ座標で返す

単位: ピクセル

PixelX1リザルト

PixelY1リザルト

検出されたエッジラインの始点XY座標位置をイメージ座標で返す

PixelX2リザルト

PixelY2リザルト

検出されたエッジラインの終点XY座標位置をイメージ座標で返す

CameraX1リザルト

CameraY1リザルト

検出されたエッジラインの始点XY座標位置をカメラ座標で返す

もしキャリブレーションされていなければ、”no cal”が返されます。

CameraX2リザルト

CameraY2リザルト

検出されたエッジラインの終点XY座標位置をカメラ座標で返す

もしキャリブレーションされていなければ、”no cal”が返されます。

RobotX1リザルト

RobotY1リザルト

検出されたエッジラインの始点XY座標位置をロボット座標で返す

もしキャリブレーションされていなければ、”no cal”が返されます。

RobotX2リザルト

RobotY2リザルト

検出されたエッジラインの終点XY座標位置をロボット座標で返す

もしキャリブレーションされていなければ、”no cal”が返されます。

RobotUリザルト 検出されたエッジラインの角度をロボット座標で返す

LineInspector オブジェクト (直線検査)

LineInspectorオブジェクトの概要
LineInspectorオブジェクトは、画像イメージ中の直線の検査に使われます。
LineInspctorオブジェクトは、複数のEdgeオブジェクトを自動的に処理して検査する直線上の欠陥を特定します。
画像イメージ中のオブジェクトのエッジは、グレイスケール値の暗から明への変化、あるいは明から暗への変化で表されます。このような変化は、数個のピクセルにわたって観察されます。
LineInspectorオブジェクトでは、Polarityプロパティーによって定義された、明から暗への変化、または暗から明への変化を検出し、検出された位置をシングルエッジのエッジ位置として定義します。EdgeTypeプロパティーを変更してエッジペアを検出することもできます。エッジペアの場合、2つの対極のエッジを検索し、中間点を返します。

LineInspectorオブジェクトのレイアウト
LineInspectorオブジェクトはLineFinderツールに似た形をしています。LineInspectorオブジェクトのサーチウィンドウには複数のエッジ検索ラインがあります。LineInspectorオブジェクトは方向インジケーターが示す方向のこのラインに沿って、変化 (明から暗へ、または暗から明へ)を検索します。エッジ検索によるデータは、ライン周辺の欠陥の特定に使われます。

LineInspectorオブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c エッジ検索ライン
d 位置、サイズ、オフセット ハンドル
e 検査するライン
f 方向インジケータ (サーチの方向)

LineInspectorオブジェクトは、 (垂直方向、水平方向だけでなく)あらゆる方向を検索するように置くことができます。

オブジェクトを回転するには、外側のサイズハンドルを時計回りや反時計回りにドラッグします。検査する直線にLineFinderのリザルトを使用できます。この場合、LineObjectに指定するLineFinderを設定します。

記号 内容
a 外側のサイズハンドル (X1, Y1)
b 外側のサイズハンドル (X2, Y2)

検査する直線の幅を変更するには、外側のサイズハンドルをラインの中心から離したり近づけたりします。
エッジ検索のサイズを変更するには、内側のサイズハンドルをドラッグします。

LineInspectorサーチ
下図は欠陥のあるオブジェクトの一部です。

LineInspectorは下図のように欠陥を検出します。検査するラインからのそれぞれのエッジ検索位置はDefectLevelThreshPosまたはDefectLevelThreshNegプロパティーの値を超えていなければなりません。また、欠陥領域はMinArea以上、MaxArea未満でなければなりません。

記号 内容
a 欠陥
b DefectLevelThreshNeg
c 検査するライン
d DefectLevelThreshPos

LineInspectorオブジェクトのプロパティー
下の一覧は、LineInspectorオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

特徴が検出されたと判定するための形状スコアの値を指定します。対象物が検出されたとみなされるためには、スコアの値を超えなくてはなりません。

デフォルト: 100

CalRobotPlacePos 設計時とプログラム実行時に RobotPlacePos をキャリブレーションする
Caption

見出しをLineInspectorオブジェクトに割りあてる

デフォルト: 空欄

ContrastTarget

エッジサーチのためのコントラストを設定

デフォルト: 0 (best contrast)

ContrastVariation

ContrastTargetの許容されるコントラストの変化量を選択

デフォルト: 0

CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
DefectAreaExtended

欠陥領域補間を拡張するかを設定

デフォルト: False

DefectLevelThreshNeg

直線より下にある欠陥のしきい値を設定

デフォルト: 2

DefectLevelThreshPos

直線より上にある欠陥のしきい値を設定

デフォルト: 2

Description

ユーザー指定の説明を設定

デフォルト: 空欄

EdgeSort 検出されたエッジ結果のソート方法を設定
EdgeThreshold

この値より低いエッジは無視するという、しきい値を設定

デフォルト: 2

EdgeType

検索するエッジタイプ (シングル、またはペア)を設定

デフォルト: 1 - single

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

EndPntObjResult

どのリザルトをEndPointObjectから用いるのかを特定

デフォルト: 1

EndPointObject

どのビジョンオブジェクトを使って、直線の終点を定義するかを特定

デフォルト: Screen

EndPointType

どのタイプの終点を使って直線の終点を定義するのかを特定

デフォルト: 0 - Point

FailColor

オブジェクトの検出結果が不良時の色を指定します。

デフォルト: Red

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

InspectEndOffset

検査を終了するラインの終点からオフセットを設定

デフォルト: 15

InspectStartOffset

検査を開始するラインの始点からオフセットを設定

デフォルト: 15

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent(透明)

LineObject

検査前にラインを検索するオブジェクトを定義

デフォルト: None

LineObjResult

どのリザルトをLineObjectから用いるのかを特定

デフォルト: 1

MaxArea

オブジェクトの上限領域を規定

被検出ブローブが取得するAreaリザルトは、MaxAreaプロパティーに設定された値より低くなければなりません。

デフォルト: 100,000

MinArea

オブジェクトの下限領域を規定

被検出ブローブが取得するAreaリザルトは、MinAreaプロパティーに設定された値より高くなければなりません。

デフォルト: 25

MissingEdgeType

未検出のエッジの処理方法を定義

デフォルト: Interpolate

Name

LineInspectorオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: LineInsp01

NumberOfEdges

検出するエッジ数を設定

デフォルト: 20

NumberToFind

作業中のサーチウィンドウで検出する対象物の数を定義

デフォルト: 1

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: AllNotFound

Polarity

LineInspectorオブジェクトが明から暗への移行を検索するのか、暗から明への移行を検索するのかを指定

デフォルト: 1 - LightToDark

ScoreWeightContrast

コントラストによるスコアの割合を設定

デフォルト: 50

ScoreWeightStrength

エッジの強度によるスコアの割合を設定

デフォルト: 50

SearchWidth

エッジサーチの幅を定義範囲: 3 ~ 99

デフォルト: 3

SearchWinHeight 被検索領域の高さを定義 (単位: ピクセル)
SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinTop 被検索領域の最上端を定義 (単位: ピクセル)
SearchWinWidth 被検索領域の幅を定義 (単位: ピクセル)
SizeToFind

検出する欠陥のサイズを選択

デフォルト: 1 - Largest

StartPntObjResult

どのリザルトをStartPointObjectから用いるのかを特定

デフォルト: 1

StartPointObject

どのビジョンオブジェクトを使って、直線の始点を定義するかを指定

デフォルト: Screen

StartPointType

どのタイプの始点を使って直線の始点を定義するのかを指定

デフォルト: “0 - Point”

StrengthTarget

サーチするエッジの強度を設定

デフォルト: 0

StrengthVariation

StrengthTargetの変化量の合計を設定

デフォルト: 0

X1 エッジの始点位置のX座標
X2 エッジの終点位置のX座標
Y1 エッジの始点位置のY座標
Y2 エッジの終点位置のY座標

LineInspectorオブジェクトのリザルト
下の一覧は、LineInspectorオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Area 欠陥の面積をピクセルで返す
CameraX カメラ座標系における欠陥のX座標位置を返す
CameraY カメラ座標系における欠陥のY座標位置を返す
Contrast 検出エッジの平均コントラストを返す
DefectLevel 欠陥の高さを返す
Found オブジェクトが検出されたかどうか、対象物あるいはパーツがAcceptプロパティーの現在の設定を超える形状スコア値を持っているかどうかの値を戻す
Length 欠陥の長さをmm単位で返す
Passed 検出結果が良か否かを返す
PixelLength 欠陥の長さをピクセル単位で返す
NumberFound

検出された欠陥の数を返す

(最小0個から、最大はNumberToFindプロパティーで設定した検出個数になります。)

PixelX 欠陥のX座標位置を返す
PixelY 欠陥のY座標位置を返す
PixelXYU

実行時のみ

検出欠陥位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系における欠陥のX座標値を返す
RobotY ロボット座標系における欠陥のY座標値を返す
RobotU ロボット座標系における欠陥のU座標値を返す
RobotXYU

実行時のみ

ロボット座標系における、検出欠陥位置のRobotX座標, RobotY座標, RobotU座標を返す

Strength 検出エッジの平均強度を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)
TotalArea 検出した欠陥すべての領域の合計をピクセル単位で返す

LineInspectorオブジェクトの使用方法
ここからは、LineInspectorオブジェクトの作成と使用の方法を説明します。

  • 新規LineInspectorオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • LineInspectorオブジェクトの関連プロパティーの設定
  • LineInspectorオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト
    これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。
    すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
    新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
    ビジョンシーケンス

Step 1: 新規LineInspectorオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Line Inspector (直線検査)]ボタンをクリックしてください。
  2. 画像イメージ表示部にマウスを動かしてください。マウスポインターがLineInspectorオブジェクトアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置にくるまで、マウスを動かし続けてください。それから、マウスを左クリックして、オブジェクトを作成してください。
  4. オブジェクト名が自動的に作成されます。この例では、このシーケンスで最初に作成されたLineInspectorオブジェクトなので、 “LineInsp01”というオブジェクト名になります。(オブジェクト名の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上には、下図のようなLineInspectorオブジェクトが表示されます。

新規LineInspector オブジェクトのレイアウト

  1. LineInspectorオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、LineInspectorオブジェクトをドラッグして、サーチウィンドウの左上コーナーを好きな位置に合わせてください。
  2. サイズハンドルをクリックして、マウスをドラッグすると、LineInspectorオブジェクトサーチウィンドウのサイズが変更できますので、適当な大きさに調整してください。

Step 3: LineInspectorオブジェクトプロパティーの設定
LineInspectorオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。あるいは、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、LineInspectorオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
EdgeType(シングル)

検索するエッジの種類を選択

エッジペアを設定した場合、それぞれの方向のエッジを検索し、中間点を位置として検出します。

Nameプロパティー ("LineInspxx") 新規に作成されたLineInspectorオブジェクトに、デフォルトとして与えられるオブジェクト名は”LineInspxx”です。xxは、1つのビジョンシーケンス内で複数のLineInspectorオブジェクトを用いるとき、それらのLineInspectorオブジェクトで区別するための番号です。ビジョンシーケンスで1番目に用いられるLineInspectorオブジェクトには、“LineInsp01”というオブジェクト名がデフォルトで設定されます。オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でLineInspectorオブジェクト名を表示する場所は、すべて変更後の名称に変わります。
NumberToFind (1) エッジ検索ラインに沿って1つ以上のエッジを検索
Polarity (LightToDark) 「暗から明へ(DarkToLight)」のエッジを検索する場合は、Polarityを変更してください。

Step 4: LineInspectorオブジェクトの実行とリザルトの確認
LineInspectorオブジェクトを実行するには、次のようにしてください。
実行パネルのオブジェクトの[Run]ボタンをクリックしてください。LineInspectorオブジェクトのリザルトが表示されます。この時点で確認すべき主要なリザルトは次のとおりです。

リザルト 説明
Areaリザルト 検出された欠陥の面積をピクセル単位で返す

PixelXリザルト

PixelYリザルト

欠陥のXY座標値 (ピクセル座標系)を返す

CameraXリザルト

CameraYリザルト

カメラ座標系における欠陥のXY座標値を返す

これらのリザルトは、カメラキャリブレーションが完了していない場合は “no cal”を返し、値を返しません。

RobotXリザルト

RobotYリザルト

欠陥のXY座標位置をロボット座標で返す<brもしキャリブレーションされていなければ、”no cal”が返されます。

ArcFinder オブジェクト (円弧/楕円弧検出)

ArcFinderオブジェクトの概要
ArcFinderオブジェクトは、画像イメージ中の円弧/楕円弧エッジの場所を特定するのに使われます。
ArcFinderオブジェクトは、複数のエッジ検索を実行し、円弧の場合は半径と中心点、楕円弧の場合は長径, 短径, および角度を特定し、円弧/楕円弧を検出します。
画像イメージ中のオブジェクトのエッジは、グレイスケール値の暗から明への変化、あるいは明から暗への変化で表されます。このような変化は、数個のピクセルにわたって観察されます。
ArcFinderオブジェクトの各エッジサーチは、Polarityプロパティーによって定義された、明から暗への変化、または暗から明への変化を検出し、検出された位置をシングルエッジのエッジ位置として定義します。EdgeTypeプロパティーを変更してエッジペアを検出することもできます。エッジペアの場合、2つの対極のエッジを検索し、中間点を返します。
検出する円弧/楕円弧タイプは、ArcSearchTypeプロパティーによって指定します。

ArcFinderオブジェクトのレイアウト
ArcFinderオブジェクトは、CorrelationオブジェクトやBlobオブジェクトと異なり、サーチウィンドウは円形であり、始点角、終点角、外半径、内半径の指定もあります。エッジ検索ラインは始点角と終点角の間に均等に広がっています。エッジ検索ラインの数はNumberOfEdgesプロパティーで指定します。Directionプロパティーで検索方向(内径から外径、または外径から内径)を指定できます。

ArcFinder オブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c 方向インジケータ (サーチの方向)
d サイズと方向ハンドル

ArcFinderオブジェクトは、検出する円弧のおおよその中心に中心点を移動し、円弧が検索エリア内に入るようにRadiusInnerプロパティーとRadiusOuterプロパティーを調整することで円弧を検索するように配置します。

ArcFinderオブジェクトのプロパティー
下の一覧は、ArcFinderオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した(不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

特徴が検出されたと判定するための形状スコアの値を指定

対象物が検出されたとみなされるためには、スコアの値を超えなくてはなりません。

デフォルト: 100

AngleEnd

円弧/楕円弧をサーチする範囲の終了角度を指定

デフォルト: 135

AngleStart

円弧/楕円弧をサーチする範囲の開始角度を指定

デフォルト: 45

ArcSearchType 検出する円弧/楕円弧のタイプを指定
CalRobotPlacePos 設計時とプログラム実行時に RobotPlacePos をキャリブレーションする
Caption

見出しをArcFinderオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーをScreenに設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX、PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーから使用するリザルトを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にArcFinderオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

デフォルト: False

CenterX

オブジェクトの中心位置のX座標を指定

CenterPointObjectプロパティーが他のビジョンオブジェクトに設定されると無効になり、自動的に設定されます。

CenterY

オブジェクトの中心位置のY座標を指定

CenterPointObjectプロパティーが他のビジョンオブジェクトに設定されると無効になり、自動的に設定されます。

CheckClearanceFor クリアランス (隙間)を確認するオブジェクトを設定
ClearanceCondition クリアランス (隙間)の判断方法を指定
ContrastTarget

エッジサーチのためのコントラストを設定

デフォルト: 0 (best contrast)

ContrastVariation

ContrastTargetの許容されるコントラストの変化量を選択

デフォルト: 0

CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

Direction

エッジ検索の方向を設定

デフォルト: InsideOut

EdgeSort 検出されたエッジ結果のソート方法を設定
EdgeThreshold

この値より低いエッジは無視するという、しきい値を設定

デフォルト: 2

EdgeType

検索するエッジタイプ (シングル, ペア)を設定

デフォルト: 1 - Single

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出結果が不良時の色を指定

デフォルト: Red

FittingThreshold 円弧のフィッティングに使用するエッジリザルトを指定
Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

Name

ArcFinderオブジェクトに独自のオブジェクト名を割りあてる

デフォルト:ArcFind01

NumberOfEdges

検出するエッジ数を設定

デフォルト: 5

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

Polarity

ArcFinderオブジェクトが明から暗へ (LightToDark)の移行を検索するのか、暗から明へ(DarkToLight)の移行を検索するのかを指定

デフォルト: 1 - LightToDark

RadiusInner 検出範囲の内径を指定
RadiusOuter 検出範囲の外径を指定
ScoreWeightContrast

コントラストによってスコアの割合を設定

デフォルト: 50

ScoreWeightStrength

エッジの強度によってスコアの割合を設定

デフォルト: 50

SearchWidth

エッジサーチの幅を定義

範囲: 3 ~ 99

デフォルト: 3

ShowExtension 被検出エッジラインの両端を延長して表示するかを定義
StrengthTarget

サーチするエッジの強度を設定

デフォルト: 0

StrengthVariation

StrengthTargetの変化量の合計を設定

デフォルト: 0

ArcFinderオブジェクトのリザルト
下の一覧は、ArcFinderオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle 検出楕円弧の角度を返す
Angle1 イメージ座標系における検出エッジの始点角度を返す
Angle2 イメージ座標系における検出エッジの終点角度を返す
CameraX 検出円弧/楕円弧エッジの中心X座標をカメラ座標で返す
CameraY 検出円弧/楕円弧エッジの中心Y座標をカメラ座標で返す
CameraXYU

実行時のみ

カメラ座標系における検出パーツ位置のCameraX座標, CameraY座標, CameraU座標を返す

ClearanceOK クリアランス (隙間)の判断結果を返す
Contrast 検出円弧/楕円弧エッジのコントラストを返す
EdgeCameraXYU 検索中に検出したエッジの CameraX, CameraY, Angle 位置座標を返す
EdgePixelXYU 検索中に検出したエッジの PixelX, PixelY, Angle 位置座標を返す
EdgeRobotXYU 検索中に検出したエッジの RobotX, RobotY, Angle 位置座標を返す
FitError 各エッジポイントと検出された円弧との間の距離を二乗平均平方根 (RMS)で返す
Found オブジェクトが検出されたかどうか、つまり、対象物あるいはパーツがAcceptプロパティーの現在の設定を超える形状スコア値を持っているかどうかの値を返す
FoundMajorDiam 検出楕円弧エッジの長径
FoundMinorDiam 検出楕円弧エッジの短径
FoundRadius 検出円弧エッジの半径
MaxError 検出円弧/楕円弧エッジからの最大ずれをピクセル長で返す
NumberFound 検出した円弧の数を返す
Passed 検出結果が良か否かを返す
PixelMajorDiam ArcFinder で検出された楕円弧の長径長を返す
PixelMinorDiam ArcFinder で検出された楕円弧の短径長を返す
PixelRadius 検出された円弧の半径を返す (単位: ピクセル)
PixelX 検出円弧/楕円弧エッジの中心X座標をイメージ座標で返す
PixelY 検出円弧/楕円弧エッジの中心Y座標をイメージ座標で返す
PixelXYU

実行時のみ

検出円弧/楕円弧エッジの中心位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX 検出円弧/楕円弧エッジの中心X座標をロボット座標で返す
RobotY 検出円弧/楕円弧エッジの中心Y座標をロボット座標で返す
RobotXYU ロボット座標系における、検出円弧/楕円弧エッジの中心位置のRobotX座標, RobotY座標, RobotU座標を返す
Strength 検出エッジの強度を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)

ArcFinderオブジェクトの使用方法
ここからは、ArcFinderオブジェクトの作成と使用の方法を説明します。

  • 新規ArcFinderオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • ArcFinderオブジェクトの関連プロパティーの設定
  • ArcFinderオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。
すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、「ビジョンシーケンス」を参照してください。

Step 1: 新規ArcFinderオブジェクトの作成

  1. Vision Guideツールバー - [Arc Finder (円弧検出)]ボタンをクリックしてください。
  2. 画像イメージ表示部にマウスを動かしてください。マウスポインターがArcFinderオブジェクトアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置に来るまで、マウスを動かしてください。それから、マウスを左クリックして、オブジェクトを作成してください。
  4. オブジェクト名が自動的に作成されるのに注目してください。この例では、このシーケンスで最初に作成されたArcFinderオブジェクトなので、“ArcFind01”というオブジェクト名になります。(オブジェクト名の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上には、下図のようなArcFinderオブジェクトが表示されます。

新規ArcFinderオブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c 方向インジケータ (サーチの方向)
d サイズと方向ハンドル
  1. ArcFinderオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、ArcFinderオブジェクトをドラッグして、サーチウィンドウを好きな位置に合わせてください。
  2. サイズハンドルをクリックして、マウスをドラッグすると、ArcFinderオブジェクトサーチウィンドウのサイズが変更できますので、適当な大きさに調整してください。

Step 3: ArcFinderオブジェクトプロパティーの設定
ArcFinderオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。あるいは、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、ArcFinderオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
EdgeType(シングル)

検索するエッジの種類を選択

エッジペアを設定した場合、それぞれの方向のエッジを検索し、中間点を位置として検出します。

Nameプロパティー("ArcFindxx") 新規に作成されたArcFinderオブジェクトに、デフォルトとして与えられるオブジェクト名は “ArcFindxx”です。xxは、1つのビジョンシーケンス内で複数のArcFinderオブジェクトを用いるとき、それらのArcFinderオブジェクトで区別するための番号です。ビジョンシーケンスで1番目に用いられるArcFinderオブジェクトには、 “ArcFind01”というオブジェクト名がデフォルトで設定されます。オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でArcFinderオブジェクト名を表示する場所は、すべて変更後の名称に変わります。
NumberOfEdges(5) 円弧エッジを検索するために、5個のエッジを検索
Polarity (LightToDark)

エッジ位置を「明から暗へ(LightToDark)」検索

「暗から明へ(DarkToLight)」のエッジを検索する場合は、Polarityを変更してください。

Step 4: ArcFinderオブジェクトの実行とリザルトの確認
ArcFinderオブジェクトを実行するには、次のようにしてください。
実行パネルのオブジェクトの[Run]ボタンをクリックしてください。ArcFinderオブジェクトのリザルトが表示されます。この時点で確認すべき主要なリザルトは次のとおりです。

リザルト 説明
Angle1リザルト 検出された円弧エッジの始点角度をイメージ座標で返す
Angle2リザルト 検出された円弧エッジの終点角度をイメージ座標で返す
FoundRadiusリザルト

検出された円弧エッジの半径をピクセル長で返す

単位: ピクセル

MaxErrorリザルト

検出された円弧エッジからの最大ずれをピクセル長で返す

単位: ピクセル

PixelXリザルト

PixelYリザルト

検出された円弧エッジの中心XY座標位置をイメージ座標で返す

CameraXリザルト

CameraYリザルト

検出された円弧エッジの中心XY座標位置をカメラ座標で返す

もしキャリブレーションされていなければ、 “no cal”が返されます。

RobotXリザルト

RobotYリザルト

検出された円弧エッジの中心XY座標位置をロボット座標で返す

もしキャリブレーションされていなければ、 “no cal”が返されます。

ArcInspectorオブジェクト (円弧/楕円弧検査)

ArcInspectorオブジェクトの概要
ArcInspectorオブジェクトは、円弧/楕円弧沿いの欠陥を検索するのに使われます。
ArcInspectorオブジェクトは、複数のエッジ検索を実行して検査する円弧/楕円弧の異常を検出します。
画像イメージ中のオブジェクトのエッジは、グレイスケール値の暗から明への変化、あるいは明から暗への変化で表されます。このような変化は、数個のピクセルにわたって観察されます。
ArcInspectorオブジェクトの各エッジ検索では、Polarityプロパティーによって定義された、明から暗への変化、または暗から明への変化を検出し、検出された位置をシングルエッジのエッジ位置として定義します。EdgeTypeプロパティーを変更してエッジペアを検出することもできます。エッジペアの場合、2つの対極のエッジを検索し、中間点を返します。

ArcInspectorオブジェクトのレイアウト
ArcInspectorオブジェクトは、ArcFinderオブジェクトに似た形をしています。ArcInspectorオブジェクトは円弧/楕円弧の中心から検査領域の外半径に向かって、ラインに沿ってエッジを検索します。各エッジ検索ラインは方向インジケーターが示す方向のこのラインに沿って、変化(明から暗へ、または暗から明へ)を検索します。検査に使用するエッジ数はNumberOfEdgesプロパティーで設定します。AngleStartプロパティーで検査する円弧の始点角を指定し、AngleEndプロパティーで終点角を指定します。エッジ検索ラインは(AngleStart + InspectStartOffset)と(AngleEnd - InspectEndOffset)の間で均等に配置されます。


ArcInspector オブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c 方向インジケータ (サーチの方向)
d RadiusOuterハンドル
e サイズとオフセットハンドル
f RadiusInnerハンドル

ArcInspectorは、CenterXとCenterYを円弧の中心に配置し、RadiusInnerとRadiusOuterを調整して検査する円弧の半径が検索領域内に入るように検索領域を配置することで、円弧上の欠陥を検索します。ArcInspectorオブジェクトはDirectionの設定に従って、内半径から外径半径 (デフォルト)、またはその逆の方向に向かって欠陥を検索します。
ArcFinderオブジェクトで円弧を検出し、ArcInspectorで検査することもできます。ArcObjectプロパティーでArcFinderを使用するように指定します。

ArcInspectorサーチ
下図は欠陥を持つ円形オブジェクトの一部です。

ArcInspectorは下図のように欠陥を検出します。検査する円弧からのそれぞれのエッジ検索位置はDefectLevelThreshPosまたはDefectLevelThreshNegプロパティーの値を超えていなければなりません。また、欠陥領域はMinArea以上、MaxArea未満でなければなりません。

記号 内容
a 欠陥
b DefectLevelThreshPos
c 検査する円弧
d DefectLevelThreshNeg

ArcInspectorオブジェクトのプロパティー
下の一覧は、ArcInspectorオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

特徴が検出されたと判定するための形状スコアの値を指定

対象物が検出されたとみなされるためには、スコアの値を超えなくてはなりません。

デフォルト: 100

AngleEnd

円弧/楕円弧をサーチする範囲の終了角度を指定

デフォルト: 135

AngleStart

円弧/楕円弧をサーチする範囲の開始角度を指定

デフォルト: 45

ArcObject

検査する円弧/楕円弧を検索するArcFinderを指定

デフォルト: None

ArcObjResult

ArcObject プロパティーから使用するリザルトを指定

デフォルト: 1

ArcSearchType

検査する円弧/楕円弧のタイプを指定

ArcObjectを指定する場合、指定されたArcFinderに設定されているArcTypeと合わせてください。

CalRobotPlacePos 設計時とプログラム実行時に RobotPlacePos をキャリブレーションする
Caption

見出しをArcInspectorオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーをScreenに設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX、PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーから使用するリザルトを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にArcInspectorオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

デフォルト: False

CenterX

オブジェクトの中心位置のX座標を指定

CenterPointObjectプロパティーが他のビジョンオブジェクトに設定されると無効になり、自動的に設定されます。

CenterY

オブジェクトの中心位置のY座標を指定

CenterPointObjectプロパティーが他のビジョンオブジェクトに設定されると無効になり、自動的に設定されます。

ContrastTarget

エッジサーチのためのコントラストを設定

デフォルト: 0 (best contrast)

ContrastVariation

ContrastTargetの許容されるコントラストの変化量を選択

デフォルト: 0

CoordObject リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われませんデフォルト: None
CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

DefectAreaExtended

欠陥領域補間を拡張するかを設定

デフォルト: False

DefectLevelThreshNeg

直線より下にある欠陥のしきい値を設定

デフォルト: 2

DefectLevelThreshPos

直線より上にある欠陥のしきい値を設定

デフォルト: 2

Direction

エッジ検索の方向を設定

デフォルト: InsideOut

EdgeSort 検出されたエッジ結果のソート方法を設定
EdgeThreshold

この値より低いエッジは無視するという、しきい値を設定

デフォルト: 2

EdgeType

検索するエッジタイプ (シングル, ペア)を設定

デフォルト: 1 - Single

EllipseAngle ArcInspector の検査ベースラインの楕円弧の角度を指定
EllipseMajorDiam ArcInspector の検査ベースラインの楕円弧の長径長を指定
EllipseMinorDiam ArcInspector の検査ベースラインの楕円弧の短径長を指定
Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出結果が不良時の色を指定

デフォルト: Red

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

InspectStartOffset

検査を開始する円弧の始点からオフセットを設定

デフォルト: 5

InspectEndOffset

検査を終了するラインの終点からオフセットを設定

デフォルト: 5

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

MaxArea

オブジェクトの面積上限を設定

検出可能な欠陥はMaxAreaプロパティーの設定値より小さく、MinAreaプロパティーの設定値より大きいもののみです。

デフォルト: 100,000

MinArea

オブジェクトの面積下限を設定

検出可能な欠陥はMaxAreaプロパティーの設定値より小さく、MinAreaプロパティーの設定値より大きいもののみです。

デフォルト: 25

MissingEdgeType

未検出のエッジの処理方法を定義

デフォルト: Interpolate

Name

ArcInspectorオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: ArcInsp01

NumberOfEdges

検出するエッジ数を設定

デフォルト: 20

NumberToFind

作業中のサーチウィンドウで検出する対象物の数を定義

デフォルト: 1

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: AllNotFound

Polarity

ArcInspectorオブジェクトが明から暗へ (LightToDark)の移行を検索するのか、暗から明へ(DarkToLight)の移行を検索するのかを指定

デフォルト: 1 - LightToDark

Radius オブジェクトの中心点から、オブジェクトの検索リング外側までの距離を定義
RadiusInner 検出範囲の内径を指定
RadiusOuter 検出範囲の外径を指定
ScoreWeightContrast

コントラストによるスコアの割合を設定

デフォルト: 50

ScoreWeightStrength

エッジの強度によるスコアの割合を設定

デフォルト: 50

SearchWidth

エッジサーチの幅を定義

範囲: 3 ~ 99

デフォルト: 3

SizeToFind

検出する欠陥のサイズを選択

デフォルト: 1 - Largest

StrengthTarget

サーチするエッジの強度を設定

デフォルト: 0

StrengthVariation

StrengthTargetの変化量の合計を設定

デフォルト: 0

ArcInspector Objectのリザルト
下の一覧は、ArcInspectorオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Area 欠陥の面積をピクセルで返す
CameraX カメラ座標系における欠陥のX座標位置を返す
CameraY カメラ座標系における欠陥のY座標位置を返す
CameraXYU

実行時のみ

カメラ座標系における検出欠陥位置のCameraX座標, CameraY座標, CameraU座標を返す

Contrast 検出エッジの平均コントラストを返す
DefectLevel 欠陥の高さを返す
Length 欠陥の長さをmm単位で返す
PixelLength 欠陥の長さをピクセル単位で返す
NumberFound

検出された欠陥の数を返す

(最小0個から、最大はNumberToFindプロパティーで設定した検出個数になります。)

Passed 検出結果が良か否かを返す
PixelX 検出円弧エッジの中心X座標をイメージ座標で返す
PixelY 検出円弧エッジの中心Y座標をイメージ座標で返す
PixelXYU

実行時のみ

検出欠陥位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系における欠陥のX座標値を返す
RobotY ロボット座標系における欠陥のY座標値を返す
RobotU ロボット座標系における欠陥のU座標値を返す
RobotXYU

実行時のみ

ロボット座標系における、検出欠陥位置のRobotX座標, RobotY座標, RobotU座標を返す

Strength 検出エッジの強度を返す
Time オブジェクト処理に要した時間を、ミリ秒単位で返す
TotalArea 検出した欠陥すべての領域の合計をピクセル単位で返す

ArcInspectorオブジェクトの使用方法
ここからは、ArcInspectorオブジェクトの作成と使用の方法を説明します。

  • 新規ArcInspectorオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • ArcInspectorオブジェクトの関連プロパティーの設定
  • ArcInspectorオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。
すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規ArcInspectorオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Arc Inspector (円弧検査)]ボタンをクリックしてください。
  2. 画像イメージ表示部にマウスを動かしてください。マウスポインターがArcInspectorオブジェクトアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置にくるまで、マウスを動かし続けてください。それから、マウスを左クリックして、オブジェクトを作成してください。
  4. オブジェクト名が自動的に作成されます。この例では、このシーケンスで最初に作成されたArcInspectorオブジェクトなので、“ArcInsp01”というオブジェクト名になります。(オブジェクト名の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上には、下図のようなArcInspectorオブジェクトが表示されます。


新規ArcInspector オブジェクトのレイアウト

記号 内容
a 検査する円弧
b RadiusOuterハンドル
c AngleStartハンドル
d RadiusInnerハンドル
e 中心点
f AngleEndハンドル
  1. ArcInspectorオブジェクトの名称ラベルをクリックし、マウスを押しながら、中心点が検査する円弧の中心に近くなるようにArcInspectorオブジェクトをドラッグします。
  2. RadiusOuter、RadiusInner、AngleStart、AngleEndサイズハンドルをクリックして、マウスをドラッグすると、ArcInspectorオブジェクトサーチウィンドウのサイズが変更できますので、適当な大きさに調整してください。

Step 3: ArcInspectorオブジェクトプロパティーの設定
ArcInspectorオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。あるいは、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、ArcInspectorオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail、Graphicsなどのプロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
EdgeType (Single)

検索するエッジの種類を選択

エッジペアを設定した場合、それぞれの方向のエッジを検索し、中間点を位置として検出します。

Name property ("ArcInspxx")

新規に作成されたArcInspectorオブジェクトに、デフォルトとして与えられるオブジェクト名は“ArcInspxx”です。xxは、1つのビジョンシーケンス内で複数のArcInspectorオブジェクトを用いるとき、それらのArcInspectorオブジェクトで区別するための番号です。ビジョンシーケンスで1番目に用いられるArcInspectorオブジェクトには、“ArcInsp01”というオブジェクト名がデフォルトで設定されます。オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。

画面上でArcInspectorオブジェクト名を表示する場所は、すべて変更後の名称に変わります。

NumberOfEdges

欠陥の検出に使用するエッジ検索の数を指定

デフォルトは15、最大で99

Polarity

デフォルトのエッジ検索の極性は「明から暗へ (LightToDark)」

「暗から明へ(DarkToLight)」のエッジを検索する場合は、Polarityを変更してください。

Direction エッジ検索の方向にInsideOut (RadiusInnerからRadiusOuter)、またはOutsideIn (RadiusOuterからRadiusInner)を指定
DefectLevelThreshPos 検査する円弧の始点側の、検出したエッジから円弧までの最短距離を指定
DefectLevelThreshNeg 検査する円弧の終点側の、検出したエッジから円弧までの最短距離を指定
MinArea 欠陥の最小面積をピクセルで指定
MaxArea 欠陥の最大面積をピクセルで指定

Step 4: ArcInspectorオブジェクトの実行とリザルトの確認
ArcInspectorオブジェクトを実行するには、次のようにしてください。
実行パネルのオブジェクトの[Run]ボタンをクリックしてください。
ArcInspectorオブジェクトのリザルトが表示されます。この時点で確認すべき主要なリザルトは次のとおりです。

リザルト 説明
Areaリザルト 検出された欠陥の面積をピクセル単位で返す

PixelXリザルト

PixelYリザルト

欠陥のXY座標値をイメージ座標で返す

CameraXリザルト

CameraYリザルト

カメラ座標系における欠陥のXY座標値を返す

これらのリザルトは、カメラキャリブレーションが完了していない場合は “no cal”を返し、値を返しません。

RobotXリザルト

RobotYリザルト

欠陥のXY座標位置をロボット座標で返す

もしキャリブレーションされていなければ、“no cal”が返されます。

DefectFinder オブジェクト (差分検査)

DefectFinderオブジェクトの概要
DefectFinderオブジェクトは、テンプレート画像イメージと入力画像イメージとの差を特定するのに使われます。
欠陥検索では、はじめにサーチエリアとテンプレート画像イメージの絶対差分イメージが計算処理され、差分画像上でブローブ解析を実行し、欠陥を検出します。
以下の特徴が求められます。

  • 領域と周
  • 重心
  • 主軸と慣性モーメント
  • 連結性
  • 外接長方形
  • ピクセル座標系、カメラ座標系、ロボット座標系での重心の座標位置
  • 欠陥(ブローブ)の穴、ざらつき、コンパクトさ

DefectFinderオブジェクトのレイアウト
DefectFinderオブジェクトのレイアウトは、Blobオブジェクトのような長方形です。しかし、DefectFinderオブジェクトにはモデル(テンプレート)の「ティーチ」が必要になります。モデルのティーチにはサーチウィンドウで定義された領域全体が使用されます。Correlationオブジェクトのようなモデルウィンドウはありません。
サーチウィンドウは、DefectFinerが欠陥 (イメージ差)を検索する領域を定義すると共に、テンプレート画像の範囲を定義します。DefectFinderオブジェクトの例を下に示します。


DefectFinder オブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サーチウィンドウ

DefectFinderオブジェクトのプロパティー
下の一覧は、DefectFinderオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

CalRobotPlacePos 設計時とプログラム実行時に RobotPlacePos をキャリブレーションする
Caption

見出しをDefectFinderオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーから使用するリザルトを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にDefectFinderオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

SearchWinTypeがRotatedRectangleに設定されている場合、サーチウィンドウはAngleリザルトにしたがって回転します。

デフォルト: False

CheckClearanceFor クリアランス (隙間)を確認するオブジェクトを設定
ClearanceCondition クリアランス (隙間)の判断方法を指定
CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentResult

オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義

デフォルト: 1

Description

ユーザー指定の説明を設定

デフォルト: 空欄

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出不良時の色を選択

デフォルト: Red

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: None

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

KernelHeight 登録画像とのイメージ差を計算するときのピクセルずれの許容量(高さ方向)
KernelWidth テンプレート画像とのイメージ差を計算するときのピクセルずれの許容量(横方向)
LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

LuminanceCorrection

輝度変換の前処理の使用を設定

デフォルト: None

MaxArea

欠陥の上限領域を規定

欠陥が取得するAreaリザルトは、MaxAreaプロパティーに設定された値より低くなければなりません。

デフォルト: 100,000

MinArea

欠陥の下限領域を規定

欠陥が取得するAreaリザルトは、MinAreaプロパティーに設定された値より高くなければなりません。

デフォルト: 25

MinMaxArea

実行時のみ

1ステートメントでMinAreaとMaxAreaを設定、または返す

Name

DefectFinderオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: DefFind01

NumberToFind

サーチウィンドウの中で検出するオブジェクトの数を指定

デフォルト: 1

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: AllNotFound

Polarity

検出する欠陥の極性を指定します

デフォルト: Both

RejectOnEdge

Trueに設定すると、サーチウィンドウのエッジにかかって検出された欠陥を無視します。

デフォルト: False

SaveTeachImage モデルをティーチするときに、画像ファイルに保存するかを設定
SearchWin

実行時のみ

サーチウィンドウの左端、上端、高さ、幅のパラメーターを設定、または返す

SearchWinAngle 被検索領域の角度を定義
SearchWinCenterX 被検索領域の中心のX座標値を定義
SearchWinCenterY 被検索領域の中心のY座標値を定義
SearchWinHeight

被検索領域の高さを定義 (単位: ピクセル)

デフォルト: 100

SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinTop 被検索領域の最上端を定義 (単位: ピクセル)
SearchWinType 被検査領域のタイプ (Rectangle, RotatedRectangle, Circle)を定義
SearchWinWidth

被検索領域の幅を定義 (単位: ピクセル)

デフォルト: 100

ShowModel

登録済みイメージ画像を表示します。

検出マスクを設定

SizeToFind

検出する欠陥のサイズを選択します。

デフォルト: 1 - Largest

Sort

オブジェクトのリザルトを並び替える順番を選択

デフォルト: 0 - None

ThresholdHigh

ThresholdLowプロパティーとともに、対象物 (欠陥)、背景、画像イメージのエッジを表すグレイレベル範囲を定義

ThresholdHighプロパティーは、画像イメージの対象物領域のグレイレベル範囲の上限を定義します。ThresholdLowとThresholdHighで定義されたグレイレベル範囲にあてはまる画像イメージがThresholdColorに設定されます。

デフォルト: 128

ThresholdLow

ThresholdHighプロパティーとともに、対象物 (欠陥)、背景、画像イメージのエッジを表すグレイレベル範囲を定義

ThresholdLowプロパティーは、画像イメージの対象物領域のグレイレベル範囲の下限を定義します。ThresholdLowとThresholdHighで定義されたグレイレベル範囲にあてはまる画像イメージがThresholdColorに設定されます。

デフォルト: 0

DefectFinderオブジェクトのリザルト
下の一覧は、DefectFinderオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle 検出された欠陥の回転量を角度で返す
Area 欠陥の面積をピクセルで返す
CameraX カメラ座標系における検出欠陥のX座標位置を返す
CameraY カメラ座標系における検出欠陥のY座標位置を返す
CameraXYU 実行時のみカメラ座標における検出欠陥位置のCameraX座標, CameraY座標, CameraU座標を返す
ClearanceOK クリアランス (隙間)の判断結果を返す
Compactness 欠陥の緊密さを返す
Extrema 実行時のみ欠陥極値のMinXピクセル座標, MaxXピクセル座標, MinYピクセル座標, MaxYピクセル座標を返す
Found 欠陥が検出されたかどうかを返す
FoundOnEdge 検出された欠陥がサーチウィンドウのエッジに接している状態で検出されるとき、Trueを返す
Holes 欠陥内で検出される穴の数を返す
MajorDiameter 検出された欠陥を楕円形に近似した場合の長径を返す
MaxFeretDiameter 検出された欠陥の最大フェレ径を返す
MaxX 欠陥の外接長方形の最大Xピクセル座標を返す
MaxY 欠陥の外接長方形の最大Yピクセル座標を返す
MinorDiameter 検出された欠陥を楕円形に近似した場合の短径を返す
MinX 欠陥の外接長方形の最小Xピクセル座標を返す
MinY 欠陥の外接長方形の最小Yピクセル座標を返す
NumberFound

検出された欠陥の数を返す

(最低0個から、最高はNumberToFindプロパティーで設定したオブジェクト検出個数になります。)

Passed 検出結果が良か否かを返す
Perimeter 検出された欠陥の、外側エッジの端から端までのピクセルの数
PixelX 検出パーツ位置のX座標をピクセルで返す
PixelY 検出パーツ位置のY座標をピクセルで返す
PixelXYU

実行時のみ

検出パーツ位置のPixelX座標, PixelY座標, PixelU座標をイメージ座標で返す

RobotX ロボット座標系における検出パーツのX座標位置を返す
RobotY ロボット座標系における検出パーツのY座標位置を返す
RobotU ロボット座標系における検出パーツのU座標位置を返す
RobotXYU

実行時のみ

ロボット座標系における、検出パーツ位置のRobotX座標, RobotY座標, RobotU座標を返す

Roughness 欠陥の粗さを返す
ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

Time オブジェクト処理に要した時間を返す (単位: ミリ秒)
TotalArea 検出したリザルトすべての欠陥領域の合計を返す

DefectFinderオブジェクトはテンプレート画像とのイメージ差をBlob処理してリザルトを返します。リザルトの詳細はBlobオブジェクトの章を参照してください。

DefectFinderオブジェクトの使用方法
以上、Vision GuideのDefectFinderオブジェクトの使用方法を理解するための基本的知識として、2値検査がどのように動作するのか確認しました。ここでは、DefectFinderオブジェクトの使用方法を説明します。
DefectFinderオブジェクトを使うのに必要なステップは次のとおりです。

  • 新規DefectFinderオブジェクトの作成
  • サーチウィンドウの位置とサイズの設定
  • DefectFinderオブジェクトの関連プロパティーの設定
  • テンプレート画像の登録
  • DefectFinderオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると新規ビジョンシーケンスが作成できます。
すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規DefectFinderオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Defect Finder (欠陥検査)]ボタンをクリックしてください。
  2. 画像イメージ表示部にマウスを動かしてください。マウスポインターがDefectFinderアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置に来るまで、マウスを動かし続けてください。それから、マウスを左クリックして、オブジェクトを作成してください。
  4. オブジェクト名は自動的に作成されますので注意してください。この例では、このシーケンスで最初に作成されたDefectFinderオブジェクトなので、“DefFind01”という名称になります。 (名称の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上には、下図のようなDefectFinderオブジェクトが表示されます。


新規DefectFinderオブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サーチウィンドウ
  1. DefectFinderオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、DefectFinderオブジェクトをドラッグして、サーチウィンドウを好きな位置に合わせてください。
  2. サイズハンドルをクリックして、マウスをドラッグすると、DefectFinderオブジェクトサーチウィンドウのサイズが変更できますので、適当な大きさに調整してください。 (サーチウィンドウは、ブローブの被検索領域になります。)

注意


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

Step 3: DefectFinderオブジェクトプロパティーの設定
このステップでは、DefectFinderオブジェクトのプロパティーを設定することができます。次に、DefectFinderオブジェクトに特有で、よく使用されるプロパティーを示します。
その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。

  • "Vision Guide 8.0プロパティー&リザルトリファレンス"
  • DefectFinderオブジェクトのプロパティーリスト

注意


ビジョンシーケンスの実行結果は、外らん光や外部機器ノイズにより影響を受けることがあります。外らん光や外部機器ノイズにより、影響を受けると、取り込み画像が想定外の結果となり、検出位置結果がサーチエリア (検出エリア)内の不特定位置になる可能性があります。MaxArea, MinArea, RejectOnEdgeなどのプロパティー値を適切に設定し、誤検出リスクを軽減してください。

プロパティー 説明
Nameプロパティー

新規に作成されたDefectFinderオブジェクトにデフォルトとして与えられる名称は、“DefFindxx”です。xxは、1つのビジョンシーケンス内で複数のDefectFinderオブジェクトを用いるとき、それらのDefectFinderオブジェクトを区別するための番号です。

ビジョンシーケンスで1番目に用いられるDefectFinderオブジェクトには、“DefFind01”という名称がデフォルトで設定されます。

名称を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でそのDefectFinderオブジェクト名を表示する場所の全部が、変更後の名称を表示するようになります。

KernelWidth,

KernelHeightプロパティー

登録済みテンプレート画像とのイメージ差を計算するとき、どの程度のピクセルずれを許容量するかを設定

値を大きく設定すると外らんやテンプレート画像とのずれに強くなりますが、小さな欠陥を検出できなくなります。検出する欠陥サイズ、および入力画像のずれ量に合わせて設定してください。

MinArea,

MaxAreaプロパティー

“Found”とみなされる (Foundリザルトの値が “True”だった) DefectFinderオブジェクトの面積を定義

デフォルトの範囲は、25~100,000 (MinArea ~ MaxArea)と非常に広く設定されています。つまり、MinAreaプロパティーとMaxAreaプロパティーを調整しないまま、新規作成のDefectFinderオブジェクトを実行すると、細かい欠陥まで検出されたとして報告されます。通常は、検出対象の欠陥サイズに合わせて、これらのプロパティーを調整します。こうすることで、範囲外の欠陥が見つかっても、それが探していた欠陥ではないことが分かります。

RejectOnEdgeプロパティー サーチウィンドウのエッジにかかって検出された欠陥を除外
PassTypeプロパティー

DefectFinderオブジェクトの検出結果の良否判定方法を設定

通常は欠陥が検出されない状態が良判定です。“AllNotFound”に設定します。

以上で、DefectFinderオブジェクトのテストができるようになりました。必要となるその他のプロパティーは、テスト後に再び設定します。

Step 4:テンプレート画像の登録と確認
DefectFinderオブジェクトのテンプレート画像を登録するには、実行パネルにある、[ティーチ]ボタンをクリックしてください。登録されたテンプレート画像を確認するには、プロパティーリストのShowModelプロパティーをクリックします。

Step 5: DefectFinderオブジェクトのテストとリザルトの確認
DefectFinderオブジェクトのテストを実行するには、実行パネルのオブジェクトの[Run]ボタンをクリックしてください。DefectFinderオブジェクトのリザルトが表示されます。ここで確認する主要なリザルトは次に示すとおりです。けれども、役に立つリザルトがこれから他にも出てきます。

リザルト 説明
Foundリザルト

欠陥が検出されたかどうかの値を返す

検出された欠陥が、MinAreaプロパティーとMaxAreaプロパティーで定義された面積の範囲内にないときは、Foundリザルトは “False”を返します。

Passedリザルト DefectFinderオブジェクトの検出結果の良否を返す
Areaリザルト 検出された欠陥の面積 (単位: ピクセル)
Angleリザルト

欠陥の方向角度

副軸の角度から計算し、+90° ~ -90°までの範囲の値になります。

Timeリザルト DefectFinderオブジェクトの実行に要した時間
PixelX, PixelY 検出欠陥の重心のXY座標位置 (単位: ピクセル)
MinX, MinY, MaxX, MaxY これらの4つの値で、欠陥の外接長方形を返します。

キーポイント


RobotXYU, RobotX, RobotY, RobotUのリザルトとCameraX, CameraY, CameraXYUのリザルトは、この時点で“no cal”を返します。これは、キャリブレーションが実行されていないので、ロボット座標系あるいはカメラ座標系に関して座標リザルトを計算することができなかった、ということを意味しています。詳細は、以下を参照してください。

ビジョンキャリブレーション

Step 6: プロパティーの調整と再テスト
DefectFinderオブジェクトを数回実行することにより、欠陥検出上の問題が見つかったり、プロパティー設定の微調整をする必要が出てくることがあるかもしれません。一般的に生じる問題や、微調整の方法について次に説明します。

問題 :DefectFinderオブジェクトのFoundリザルトが “True”を返すときは、次の事項を確認し、調整してください。

  • Polarityプロパティーで定義された値を見てください。暗い背景の明るいオブジェクトか、明るい背景の暗いオブジェクトのいずれかです。Polarityオブジェクトはサーチウィンドウに表示されている対象物と一致します。
  • Areaリザルトを確認し、この値とMinAreaプロパティーとMaxAreaプロパティーで定義された値とを比較してください。Areaリザルトが、MinAreaプロパティーとMaxAreaプロパティーで定義された範囲に入っていない場合は、MinAreaプロパティーとMaxAreaプロパティーを調整して、Blobオブジェクトを再実行してください。
  • KernelWidth, KernelHeightプロパティーを調整してください。設定値を大きくすることで、小さな欠陥の誤検出を回避できます。
  • ヒストグラムを使用して、画像イメージのグレイスケール値を調べます。ヒストグラムツールはThresholdHighとThresholdLowプロパティーを設定するのに適しています。ヒストグラムについての詳細は、「8. ヒストグラムツール」に記載しています。

微調整 :アプリケーションによっては、DefectFinderオブジェクトの微調整が必要となる場合があります。DefectFinderオブジェクトの微調整に関する主要なプロパティーについて、次に説明します。

  • MinArea, MaxArea - DefectFinderオブジェクトを数回実行してみると、Areaリザルトに返される概略値がわかってきます。MinAreaプロパティーとMaxAreaプロパティーの値を変更するときは、これらの概略値を使ってください。一般的に、MinAreaプロパティーとMaxAreaプロパティーの値は、Foundリザルトを制限するように設定し、検出対象のブローブだけについて“True”のFoundリザルトが返るようにすると好都合です。(このように設定することによって、検出したい欠陥と面積が異なっているブローブを排除することができます。)
  • ThresholdHigh, ThresholdLow - これらのプロパティーは、欠陥を識別するために、グレイレベルのしいき値を設定するパラメーターを調整します。これらのプロパティーは、ヒストグラムツールを使用して設定するのが最適です。以下を参照してください。
    "Vision Guide 8.0プロパティー&リザルトリファレンス - ThresholdHighプロパティー, ThresholdLowプロパティー"

プロパティーの調整が完了し、DefectFinderオブジェクトのテストを行って満足な欠陥検出結果を得ることができたら、ビジョンオブジェクトの作成ステップは完了です。
他のビジョンオブジェクトを作成したり、ビジョンシーケンス全体の設定やテストを行う次のステップに進むことができます。

Frame オブジェクト (フレーム)

Frameオブジェクトの概要
Frameオブジェクトは、ビジョンオブジェクトの一種のダイナミックな基準となります。
新規のFrameオブジェクトを定義すると、その他のビジョンオブジェクトはそのFrameオブジェクトを基準にして位置決めすることができます。そのため、Frameオブジェクトはさまざまな状況で役に立ちます。
また、Frameオブジェクトを利用した場合、大まかな位置が検出され、フレームが定義されると、Frameオブジェクトに基づくその他のビジョンオブジェクトでは、サーチウィンドウを大きくする必要がないので、ビジョンの処理時間を短縮することができます。
Frameオブジェクトは、パーツ上に何らかの共通参照パターン (例えば、プリント回路基板上の基準点など)があり、そのパターンが、その他のビジョンオブジェクトサーチウィンドウによって基準位置として用いられる場合に、最大の利用価値があります。

Frameオブジェクトのレイアウト
Frameオブジェクトは、交差する2本のLineオブジェクトのような外観をしています。
Frameオブジェクトの位置を変更したいときは、Frameオブジェクト名をクリックし、オブジェクトを変更したい位置にドラッグしてください。
Frameオブジェクトの位置と方向は、ほとんどの場合が他のオブジェクトの位置に基づいて設定されます。


Frameオブジェクトのレイアウト

記号 内容
a オブジェクト名

Frameオブジェクトのプロパティー
下の一覧は、Frameオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Caption

見出しをFrameオブジェクトに割りあてる

デフォルト: 空欄

CurrentResult

オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義

デフォルト: 1

Description

ユーザー指定の説明を設定

デフォルト: 空欄

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出不良時の色を選択

デフォルト: Red

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

Name

Frameオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: Frame01

OriginAngleEnabled

ツーポイントFrameの場合のようにOriginPointプロパティーとYaxisPointプロパティー間のベクトルの回転に基づくのではなく、フレームに原点オブジェクトの角度を回転させるシングルポイントフレーム使用を可能にします。

デフォルト: False

OriginPntObjResult

OriginPointプロパティーで指定されたビジョンオブジェクトから使用するリザルトを指定

“All”を指定すると、指定されたビジョンオブジェクトのすべてにFrameオブジェクトが適用されます。

デフォルト: 1 (最初のリザルトを使います)

OriginPoint

Frameオブジェクトの原点として用いるビジョンオブジェクトを定義

デフォルト: Screen

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

ShowExtensions

フレームの延長線を表示するかを設定

デフォルト: False

YAxisPoint

FrameオブジェクトのY軸上のポイントとして用いるビジョンオブジェクトを定義 (Frameオブジェクトの方向を定義します。)

デフォルト: Screen

YAxisPntObjResult

YaxisPointプロパティーで指定されたビジョンオブジェクトから使用するリザルトを指定

デフォルト: 1 (最初のリザルトを使います。)

Frameオブジェクトのリザルト
Frameオブジェクトリザルトの一覧を次に示し、簡単に説明します。
Frameオブジェクトで使われる各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle 検出されたパーツの回転量を角度で返す
Found オブジェクトが検出されたかどうかを返す

ツーポイントフレーム
ツーポイントのFrameオブジェクトは、原点 (OriginPointプロパティーで定義される)とY軸方向 (YAxisPointプロパティーで定義される)を必要とします。原点とY軸方向との組み合わせによって、その他のビジョンオブジェクトが基準とする一種のローカル座標系が定義されます。
Frameオブジェクトの強力な利点は、Frameオブジェクトが移動すると、そのフレーム内で定義されるビジョンオブジェクトのすべてが、Frameオブジェクトと一緒に移動することです。 (つまり、OriginPointと定義されたビジョンオブジェクトのXY変化とYaxisPointプロパティーの移動で作成された回転に基づいて、サーチウィンドウは調整されます。) したがって、サーチウィンドウを小さくしたままで作業ができるため、ビジョンの処理時間を短縮することができます。

Frame オブジェクトの定義
新規のFrameオブジェクトが作成されると、そのFrameオブジェクトには、フレームの原点とY軸上のポイントの基準点として、2つのビジョンオブジェクトが必要になります。
原点とY軸方向は、OriginPointプロパティーとYAxisPointプロパティーによって定義されます。XY位置リザルトを持つビジョンオブジェクトであれば、フレームの原点とY軸上のポイントを定義するのに用いることができます。
つまり、Blob, Correlation, Edge, Polar, Pointのオブジェクトのすべては、FrameオブジェクトのOriginPointプロパティーとYAxisPointプロパティーを定義するのに用いることができます。

シングルポイントフレーム
シングルポイントフレームは、Frameオブジェクトのオプション使用方法です。この使用で、OriginPointプロパティーは、ビジョンオブジェクトをXY位置原点参照として使えるように定義します。
OriginAngleEnabledプロパティーをFalseに設定したとき、原点ポイントとして使われるビジョンオブジェクトのXY位置変更に基づいて、フレームは位置を調節します。回転を考慮する必要はありません。これは、1つのオブジェクト(blobやcorrelationなど)がパーツのXY位置を検出して、フレーム中の残りのオブジェクトはそれに従ってXとYを合わせる場合、簡単にXY移動ができ便利です。
いくつかの場合、フレームの中で回転を説明する必要があるかもしれません。Blobオブジェクトは、パーツのX, Y, U位置 (XY座標+回転)を検出するのに使われると考えてください。そして、他の種類のビジョンオブジェクトは、パーツ上の対象物を検出すると考えてください。Blobオブジェクトはフレームの回転を含むシングルポイントフレームを定義するのに使えます。そして、フレーム中の他のオブジェクトは、X, Yに移動して、Blobオブジェクトが返した回転に基づいて回転します。したがって、1つのビジョンオブジェクトだけでXY移動とパーツの回転の両方を定義しました。これがシングルポイントフレームにYaxisPointプロパティーを必要としない理由です。

Frameオブジェクトの使用方法
ここからは、Frameオブジェクトの作成方法と使用方法を説明します。

  • 新規Frameオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • Frameオブジェクトの関連プロパティーの設定
  • Frameオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規Frameオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Frame (フレーム)]ボタンをクリックしてください。
  2. 画像イメージ表示部にマウスを動かしてください。マウスポインターがFrameオブジェクトアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置に来るまで、マウスを動かし続けてください。それから、マウスを左クリックして、オブジェクトを作成してください。
  4. オブジェクト名が自動的に作成されるのに注目してください。この例では、このシーケンスで最初に作成されたFrameオブジェクトなので、“Frame01”というオブジェクト名になります。 (オブジェクト名の変更方法については後述します。)

Step 2: Frameオブジェクトの位置決め
画面上には、下図のようなFrameオブジェクトが表示されます。


新規Frameオブジェクト

記号 内容
a オブジェクト名

Frameオブジェクトには大きなウィンドウはありません。Frameオブジェクトの名称ラベルや軸の周囲をクリックして、マウスを押し続けながら、Frameオブジェクト全体を画面上の新しい位置にドラッグしてください。位置が決まったら、マウスを離してください。Frameオブジェクトが画面上の新しい位置にきます。

Step 3: Frameオブジェクトプロパティーの設定
Frameオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。あるいは、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、Frameオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。 - "Vision Guide 8.0プロパティー&リザルトリファレンス"

  • Frameオブジェクトのプロパティー
プロパティー 説明
Nameプロパティー 新規に作成されたFrameオブジェクトに、デフォルトとして与えられるオブジェクト名は”Framexx”です。xxは、1つのビジョンシーケンス内で複数のFrameオブジェクトを用いるとき、それらのFrameオブジェクトで区別するための番号です。ビジョンシーケンスで1番目に用いられるFrameオブジェクトには、 “Frame01”というオブジェクト名がデフォルトで設定されます。オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でFrameオブジェクト名を表示する場所は、すべて変更後の名称に変わります。
OriginPointプロパティー

通常、このプロパティーをシーケンスの前の方で行われるオブジェクトの1つに設定

実行時のFrameの原点を決定します。

YAxisPointプロパティー

通常、このプロパティーをシーケンスの前の方で行われるオブジェクトの1つに設定

実行時のFrameのY軸方向を決定します。

Step 4: Frameオブジェクトの実行とリザルトの確認
Frameオブジェクトを実行するには、次のようにしてください。
実行パネルのオブジェクトの[Run]ボタンをクリックしてください。OriginPointプロパティーまたはYAxisPointプロパティーのどちらかがScreenでない場合、それぞれのオブジェクトが最初に実行されます。例えば、OriginPointプロパティーがBlobオブジェクトなら、フレームの原点位置を決定するためにブローブが最初に実行されます。
Frameオブジェクトのリザルトが表示されます。この時点で確認すべき主要なリザルトは次のとおりです。

リザルト 説明
Angle フレームの角度

Line オブジェクト (ライン)

Lineオブジェクトの概要
Lineオブジェクトは、2点間の直線を定義するのに使われます。
2つの点は、画面上の位置あるいは他のビジョンオブジェクトの位置を基準とすることができます。下に示すのは、Lineオブジェクトが作成されるいくつかの状況です。

  • 2つのBlobオブジェクト間
  • 2つのCorrelationオブジェクト間
  • 2つのPointオブジェクト間
  • BlobオブジェクトとCorrelationオブジェクトの間
  • 1つのBlobオブジェクトの2つのリザルト間
  • Blobオブジェクトのリザルト1とCorrelationオブジェクトのリザルト3の間
  • PointオブジェクトとCorrelationオブジェクトの間
  • XY位置リザルトを持つあらゆる組み合わせのビジョンオブジェクト間

Lineオブジェクトは次のような状況で使用すると非常に便利です。

  • ビジョンオブジェクト間の距離 (または、複数のリザルトが使われるときのビジョンオブジェクトのリザルト)を測定したいとき距離は、アプリケーションが必要とする最短距離から最長距離までになるように確認することもできます。
  • 2つのビジョンオブジェクト間の回転量を計算したいとき (RobotUリザルトというロボット座標で返された直線の角度を使います。)
  • 直線の中心点、または2直線の交点を計算するブロックを作成したいとき

Lineオブジェクトのレイアウト
Lineオブジェクトのレイアウトは、文字どおりラインのレイアウトになっています。つまり、始点, 終点, オブジェクト名からなる1本のラインです。Lineオブジェクトの位置を変更したいときは、Lineオブジェクト名(またはライン上)をクリックし、ラインを変更したい位置にドラッグしてください。Lineオブジェクトのサイズを調整するには、ラインの始点あるいは終点(サイズハンドルで示しています)をクリックし、望みのサイズになる位置にドラッグしてください。


Lineオブジェクトのレイアウト

記号 内容
a オブジェクト名
b サイズハンドル

Lineオブジェクトのプロパティー
Lineオブジェクトプロパティーのリストを次に示し、簡単に説明します。
Lineオブジェクトで使われる各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

AngleBase

基準角度を設定

デフォルト: 0

AngleMode

角度の出力形式を指定

デフォルト: 1-Default

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

Caption

見出しをLineオブジェクトに割りあてる

デフォルト: 空欄

CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

Directed

線の方向を使って角度を設定するかを指定

デフォルト:True

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

EndPntObjResult

どのリザルトをEndPointObjectから用いるのかを特定

デフォルト: 1

EndPointObject

どのビジョンオブジェクトを使って、直線の終点を定義するかを特定

デフォルト: Screen

EndPointType

どのタイプの終点を使って直線の終点を定義するのかを特定

デフォルト: 0 - Point

FailColor

オブジェクトの検出不良時の色を選択

デフォルト: Red

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

MaxLength

Lineオブジェクトの長さの上限を定義

Lineが検出されるには、MaxLengthプロパティーに設定されている値より下のLengthリザルトを持たなければなりません。

デフォルト: 9999

MaxPixelLength

Lineオブジェクトのピクセル単位長さの上限を定義

Lineが検出されるには、MaxPixelLengthプロパティーに設定されている値より下のPixelLengthリザルトを持たなければなりません。

デフォルト: 9999

MinLength

Lineオブジェクトの長さの下限を定義

Lineが検出されるには、MinLengthプロパティーに設定されている値より上のLengthリザルトを持たなければなりません。

デフォルト: 0

MinPixelLength

Lineオブジェクトのピクセル単位長さの下限を定義

Lineが検出されるには、MinPixelLengthプロパティーに設定されている値より上のPixelLengthリザルトを持たなければなりません。

デフォルト: 0

Name

Lineオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: Line01

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

ShowExtensions

“True”に設定すると、画像イメージ表示部の端までの延長線をグラフィック表示

デフォルト: False

StartPntObjResult

どのリザルトをStartPointObjectから用いるのかを指定

デフォルト: 1

StartPointObject

どのビジョンオブジェクトを使って、直線の始点を定義するかを指定

デフォルト: Screen

StartPointType

どのタイプの始点を使って直線の始点を定義するのかを指定

デフォルト: “0 - Point”

X1 直線の始点のX座標位置
X2 直線の終点のX座標位置
Y1 直線の始点のY座標位置
Y2 直線の終点のY座標位置

Lineオブジェクトのリザルト
下の一覧は、Lineオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle 時計の3時方向を0oとする位置を基準に、始点と終点で形成される直線の角度を返す
CameraX1 カメラ座標系における直線の始点のX座標位置を返す
CameraX2 カメラ座標系における直線の終点のX座標位置を返す
CameraY1 カメラ座標系における直線の始点のY座標位置を返す
CameraY2 カメラ座標系における直線の終点のY座標位置を返す
Found

オブジェクトが検出されたかどうかの値を戻す

Lineオブジェクトを定義するビジョンオブジェクトが検出されなかった場合は、Lineオブジェクトは検出されません。

Length

直線の長さをミリメートルの単位で返す

あらかじめ、カメラのキャリブレーションをしておいてください。キャリブレーションが完了していない場合は、長さのリザルトとして”no cal”の値が返されます。

LineオブジェクトがMaxLengthとMinLengthの制約で失敗したとき、Lengthリザルトはリザルトリストに赤で表示されます。

NumberFound 検出された直線の数を返す
PixelLength

直線の長さをピクセル単位で返す

LineオブジェクトがMaxPixelLengthとMinPixelLengthの制約で失敗したとき、PixelLengthリザルトはリザルトリストに赤で表示されます。

PixelLine

実行時のみ

X1, Y1, X2, Y2の4つの直線座標をピクセル単位で返す

PixelX1 直線の始点のX座標位置をピクセル単位で返す
PixelX2 直線の終点のX座標位置をピクセル単位で返す
PixelY1 直線の始点のY座標位置をピクセル単位で返す
PixelY2 直線の終点のY座標位置をピクセル単位で返す
RobotX1 検出エッジラインの始点X座標をロボット座標で返す
RobotX2 検出エッジラインの終点X座標をロボット座標で返す
RobotY1 検出エッジラインの始点Y座標をロボット座標で返す
RobotY2 検出エッジラインの終点Y座標をロボット座標で返す
RobotU ロボット座標系において、始点と終点で形成される直線の角度を返す

Lineオブジェクトの使用方法
ここからは、Lineオブジェクトの作成方法と使用方法を説明します。

  • 新規Lineオブジェクトの作成
  • Lineオブジェクトの位置決め
  • Lineオブジェクトのプロパティーの設定
  • Lineオブジェクトの実行とリザルトの確認

次に説明するステップを開始する前に、新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択してください。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規Lineオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Line (ライン)]ボタンをクリックしてください。
  2. 画像イメージ表示部にマウスを動かしてください。マウスポインターがLineオブジェクトアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置に来るまで、マウスを動かし続けてください。それから、マウスを左クリックして、オブジェクトを作成してください。
  4. オブジェクト名が自動的に作成されるのに注目してください。この例では、このシーケンスで最初に作成されたLineオブジェクトなので、“Line01”というオブジェクト名になります。(オブジェクト名の変更方法については後述します。)

Step 2: Lineオブジェクトの位置決め
画面上には、下図のようなLineオブジェクトが表示されています。


新規 Line オブジェクト

記号 内容
a オブジェクト名
b サイズハンドル

Lineオブジェクトにはウィンドウがありません。どちらかのサイズハンドルをクリックし、直線の端を新しい位置にドラッグすることで、長さと回転を変更できます。また、Lineオブジェクトの名称ラベル、または直線周辺をクリックして、マウスを押し続けながら、Lineオブジェクト全体を画面上の新しい位置にドラッグしてください。位置が決まったら、マウスを離してください。Lineオブジェクトが画面上の新しい位置にきます。

Step 3: Lineオブジェクトのプロパティーの設定
Lineオブジェクトプロパティーの設定を行います。プロパティーを設定するには、変更するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。あるいは、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、Lineオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。

  • "Vision Guide 8.0プロパティー&リザルトリファレンス"
  • Lineオブジェクトプロパティー
プロパティー 説明
Nameプロパティー 新規に作成されたLineオブジェクトに、デフォルトとして与えられるオブジェクト名は “Linexx”です。xxは、1つのビジョンシーケンス内で複数のLineオブジェクトを用いるとき、それらのLineオブジェクトで区別するための番号です。ビジョンシーケンスで1番目に用いられるLineオブジェクトには、 “Line01”というオブジェクト名がデフォルトで設定されます。オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でLineオブジェクト名を表示する場所は、すべて変更後の名称に変わります。
StartPointObjectプロパティー

シーケンスの前の方で行われるオブジェクトの1つに設定

実行時のLineオブジェクトの始点を決定します。

EndPointObjectプロパティー

シーケンスの前の方で行われるオブジェクトの1つに設定

実行時のLineオブジェクトの終点を決定します。

角度の出力方式として、AngleModeプロパティーを、“2-UseAngleBase”にすることで、DirectedおよびAngleBaseプロパティーの設定により角度の出力形式を指定することができます。DirectedプロパティーはLineオブジェクトの配置方向に依存した角度であるかどうかを指定します。AngleBaseで指定した角度を基準として、角度を出力します。
たとえば、ティーチング時に指定した角度を中心にして計測を行うとき、AngleBaseにこの角度を指定することで、この角度を中心として計測された角度が出力されます。AngleModeプロパティーを “1-Default”に設定した場合は0から360度の範囲で角度が出力されます。
この場合は、下記のように設定した場合と同じ動作となります。

  • AngleModeプロパティー: 2-UseAngleBase
  • AngleBase: 0
  • Directed: True

Step 4: Lineオブジェクトの実行とリザルトの確認
Lineオブジェクトを実行するには、次のようにしてください。
実行パネルのオブジェクトの[Run]ボタンをクリックしてください。StartPointObjectプロパティーまたはEndPointObjectプロパティーのどちらかがScreenでない場合、それぞれのオブジェクトが最初に実行されます。例えば、StartPointObjectがBlobオブジェクトなら、直線の始点の位置を定義するためにブローブが最初に実行されます。
Lineオブジェクトのリザルトが表示されます。この時点で確認すべき主要なリザルトは次のとおりです。

リザルト 説明
Lengthリザルト

直線のmm単位の長さ

定義されるLengthの直線を含むシーケンスに関連したキャリブレーションが必ずあります。

PixelX1リザルト

PixelY1リザルト

PixelX2リザルト

PixelY2リザルト

直線の両端のXY位置 (単位: ピクセル)
PixelLengthリザルト 直線のピクセル単位の長さ

Point オブジェクト (ポイント)

Pointオブジェクトの概要
Pointオブジェクトは、点を定義するときに使います。Pointオブジェクトは、オブジェクト単独で使うよりも、Lineオブジェクトの中点を定義するために使うなど、通常、他のオブジェクトと一緒に使われます。
Pointオブジェクトは、下記のように、PolarオブジェクトやLineオブジェクトから参照した位置を定義するときに、よく使われます。

オブジェクト 説明
Polarオブジェクト Polarオブジェクトの中心 (CenterXおよびCenterYプロパティー)を定義するときに、Pointオブジェクトが使われます。
Lineオブジェクト 直線の始点, 中心点, 終点, 2直線の交点を定義するときに、Pointオブジェクトが使われます。

Pointオブジェクトのレイアウト
Pointオブジェクトのレイアウトは、十字線のような外観をしています。Pointオブジェクトをクリックし、変更したい位置にドラッグして、位置を変更することができます。ほとんどの場合、他のオブジェクトに付随しているので、関連するオブジェクトの位置に基づいて位置決めされます。


Point オブジェクトのレイアウト

記号 内容
a オブジェクト名

Pointオブジェクトのプロパティー
下の一覧は、Pointオブジェクトのプロパティーを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した (不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

AngleObject

出力する角度をもつオブジェクトを指定

デフォルト: Screen

AngleObjectResult AngleObject プロパティーが使用するリザルトを指定
CalRobotPlacePos 設計時とプログラム実行時に RobotPlacePos をキャリブレーションする
Caption

見出しをPointオブジェクトに割りあてる

デフォルト: 空欄

CenterPntObjResult

CenterPointObjectプロパティーから使用するリザルトを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にPointオブジェクトが適用されます。

CenterPntOffsetX サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す
CenterPntOffsetY サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す
CenterPntRotOffset 中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定
CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

CoordObject リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われませんデフォルト: None
CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出不良時の色を選択

デフォルト: 1 - Red

Frame

使用するフレームを指定

デフォルト: None

FrameResult Frameの何番目のリザルトを使用するかを指定
Graphics

表示するグラフィックスを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

LineObj1Result LineObject1プロパティーに設定されたオブジェクトのどのリザルトを使用するかを設定
LineObj2Result LineObject2プロパティーに設定されたオブジェクトのどのリザルトを使用するかを設定
LineObject1

Pointオブジェクトで、直線の中点を定義するときに、そのLineオブジェクトを指定

また、2つの直線の交点を定義するときに、1番目のLineオブジェクトを指定します。

デフォルト: none

LineObject2

Pointオブジェクトで、2つの直線の交点を定義するときは、2番目のLineオブジェクトを指定

デフォルト: none

Name

Pointオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: Point01

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

PointType

LineObject1やLineObject2で、直線の中点や交点を指定

デフォルト: Screen

X ピクセル座標系におけるPointオブジェクトのX座標
Y ピクセル座標系におけるPointオブジェクトのY座標

Pointオブジェクトのリザルト
下の一覧は、Pointオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle 検出されたポイントの角度を返す
CameraX カメラ座標系における、検出オブジェクトのX座標を返す
CameraY カメラ座標系における、検出オブジェクトのY座標を返す
CameraXYU

実行時のみ

カメラ座標系における検出オブジェクト位置のCameraX座標, CameraY座標, CameraU座標を返す

ColorValue ピクセルのグレイスケール値, カラー値を返す
NumberFound 検出されたポイントの数を返す
Found

オブジェクトが検出されたかどうかを返す

(Pointオブジェクトは、付随するビジョンオブジェクトが検出されなかったとき、検出されません。)

Passed 検出結果が良か否かを返す
PixelX ピクセル座標系における、検出オブジェクトのX座標を返す
PixelY ピクセル座標系における、検出オブジェクトのY座標を返す
PixelXYU

実行時のみ

検出オブジェクト位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系における、検出オブジェクトのX座標を返す
RobotY ロボット座標系における、検出オブジェクトのY座標を返す
RobotU

ロボット座標系における、検出オブジェクトの回転量を返す

(Pointオブジェクトは回転しないため、回転量は常に“0”です。)

RobotXYU

実行時のみ

ロボット座標系における、検出オブジェクト位置のX座標, Y座標, 回転量を返す (Pointオブジェクトは回転しないため、回転量は常に“0”です。)

Pointオブジェクトの基礎知識
Pointオブジェクトは、画面上の位置やLineオブジェクト、または他のビジョンオブジェクトに付随して得られた位置に対して、ユーザーがしるしをつけるために考えられました。
ここでは、Pointオブジェクトを理解するための、2つの基本事項について説明します。

  • Pointオブジェクトの位置を定義する
  • 他のオブジェクトの参照位置にPointオブジェクトを使用する

Pointオブジェクトの位置を定義する
Pointオブジェクトの位置は、Pointオブジェクトを操作する画面上の位置、あるいは、Lineオブジェクトの中点や、2つのLineオブジェクト間の交点を基準として決定することができます。
PointTypeプロパティーによって、Pointオブジェクト位置が基準とする点が定義されます。つまり、PointTypeプロパティーは、“Screen”, “Midpoint”, “Intersection”の選択項目の中からいずれかを選んで設定することができます。

  • PointTypeプロパティーが “Screen”に設定されている場合
    Pointオブジェクトの初期作成時には、PointTypeにはデフォルトの値である“Screen”が設定され、Pointオブジェクトの位置は、Pointオブジェクトが置かれている画面上の位置を基準とします。
    PointTypeプロパティーが“Screen”に設定されている場合には、Pointオブジェクトの位置をマウスで移動したり、XプロパティーやYプロパティーの値を変更しない限り、Pointオブジェクトの位置は変更されません。

  • PointTypeプロパティーを“Midpoint”に設定する方法
    Pointオブジェクトの位置を直線の中点として定義したい場合は、PointTypeプロパティーを“Midpoint”に設定してください。
    ただし、PointTypeプロパティーを“Midpoint”に設定する前に、どの直線を使うか、まず定義しなければなりませんので注意してください。Vision Guide 8.0は、どの直線で中点を計算するかについて情報を持っていません。 LineObject1プロパティーは、中点の計算対象となるLineオブジェクトを定義し、その中点をPointオブジェクトの位置として設定するように定義します。
    ビジョンシーケンスステップ実行リスト内の、Pointオブジェクトの前にある有効Lineオブジェクトは、LineObject1プロパティーのドロップダウンリストから選択することができます。
    実際には、ビジョンシーケンスステップ実行リスト内で、どのLineオブジェクトがPointオブジェクトの前にあるかが自動的にチェックされ、これらのLineオブジェクトだけがLineObject1プロパティーのドロップダウンリスト中に表示されます。これによって、システム操作が簡単にできます。
    LineObject1プロパティーに特定のLineオブジェクトを指定せずに、PointTypeプロパティーを“Midpoint”に設定しようとすると、最初にLineObject1プロパティーに特定の直線を選択するよう指示するエラーメッセージが表示されます。

  • PointTypeプロパティーを“Intersection”に設定する方法
    Pointオブジェクトの位置を2直線の交点として定義したい場合は、まず、2つの直線を定義する必要があります。2つの直線の定義は、LineObject1プロパティーとLineObject2プロパティーで行います。
    LineObject1プロパティーとLineObject2プロパティーには、それぞれ異なるLineオブジェクトを定義しなければなりません。各プロパティーにLineオブジェクトが定義されると、PointTypeプロパティーに“Intersection”を設定することができます。この設定をすることによって、Pointオブジェクトの位置は、LineObject1プロパティーとLineObject2プロパティーで定義された2つの直線の交点となるように規定されます。
    まず、ビジョンシーケンスステップ実行リスト内のPointオブジェクトの前にある有効なLineオブジェクトが、LineObject1プロパティーのドロップダウンリストから選択されて、2直線交点を形成する1番目の直線として規定されます。
    次に、ビジョンシーケンスステップ実行リスト内のPointオブジェクトの前にある残りの有効なLineオブジェクトが、LineObject2プロパティーのドロップダウンリストから選択されて、2直線の交点を形成する2番目の直線となります。
    Vision Guide 8.0は自動的に、LineObject1プロパティー、またはLineObject2プロパティーの値として設定するのに有効なLineオブジェクトだけを、関連するドロップダウンリスト中に表示します。
    LineObject1プロパティーとLineObject2プロパティーの両方に特定のLineオブジェクトを規定せずに、PointTypeプロパティーに“Intersection”を設定しようとすると、エラーメッセージが表示され、PointTypeプロパティーに“Intersection”を設定する前に、まずLineObject1プロパティーあるいはLineObject2プロパティーに特定の直線を定義するように指示します。
    メッセージ内容は、どのLineオブジェクトが定義されていないかによって異なります。

キーポイント


直線の交点によって位置を定義する方法は、物体の中心などを計算するのに便利です。例えば、長方形の物体を想定してみてください。4つの頂点を検出すると、長方形の中心で交わる2つの対角線を作成することができます。この中心点に位置するPointオブジェクトは、長方形の中心に位置します。

他のオブジェクトの参照位置にPointオブジェクトを使用する
Pointオブジェクトの主要な目的は、LineオブジェクトやPolarオブジェクトなど、他のオブジェクトの基準位置として機能することです。
つまり、Pointオブジェクトの位置は、LineオブジェクトやPolarオブジェクトの基準の位置となります。
このような強力な機能によって、2直線の交点として定義されるPointオブジェクトが物体の中心を計算し、それをLineオブジェクトの終点として使い、2つの物体の中心間の距離を計算する、というような場面を実現することができます。

Pointオブジェクトの位置をPolarオブジェクトの基準位置として用いる方法
Polarオブジェクトは、ポーラサーチの基準となるCenterPoint位置を必要とします。Polarオブジェクトを初めてお使いの場合は、画面上の点をCenterPointプロパティーの基準点としてご使用になるかもしれません。しかし、検索対象物は移動するため、Polarオブジェクトは検索対象物のCenterPointと連動して移動するということに、すぐにお気づきになるでしょう。
このような場面で、Pointオブジェクトのような他のビジョンオブジェクトからのXY位置をPolarオブジェクトに適用できる機能が大きなパワーを発揮します。
PolarオブジェクトのCenterPointに、Pointオブジェクトの位置を適用したい場合がよくありますが、適用できるのは、主に次の2つの状況においてです。

  • CenterPointが直線の中心点として定義されている場合
  • CenterPointが2直線の交点として定義されている場合
    例えば、直線の中心点を検出してから、この中心点からポーラサーチを開始したい場合や、ポーラサーチのCenterPointの基準点を、2直線の交点としたい場合です。
    Pointオブジェクトと一緒にPolarオブジェクトを使用するのは、非常に一般的な使用方法です。

Pointオブジェクトの位置をLineオブジェクトの基準点位置として用いる方法
直線は始点と終点を必要とします。多くの場合、直線の始点と終点の位置は、BlobオブジェクトやCorrelationオブジェクトなどの他のビジョンオブジェクトのXY位置リザルトに基づいています。
しかし、直線の基準位置として、Pointオブジェクトの位置を利用することもできます。直線の始点と終点の両方、または、 直線の始点か終点を1つだけPointオブジェクトに基づいて定義することもできます。
Pointオブジェクトの一般的な使用方法のひとつに、Pointオブジェクトを2直線の交点の基準とする方法があります。
下図は、さまざまな高さで交わる2つのLineオブジェクトの例を示しています。直線3は、交点の高さを計算するのに用いられます。Pointオブジェクトは、Line1とLine2の交点の位置に表されています。


Line1とLine2の交点として定義されるPointオブジェクト

記号 内容
a Pointオブジェクト
b 高さ

Pointオブジェクトの使用方法
次の数ページにわたり、Pointオブジェクトの作成方法と使用方法を、下記の項目について説明します。

  • 新規Pointオブジェクトの作成方法
  • 画面上のPointオブジェクトの位置決め
  • Pointオブジェクトの関連プロパティーの設定
  • Pointオブジェクトのテストとリザルトの確認

次に説明するステップを開始する前に、新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。
作業するビジョンシーケンスがない場合は [新規シーケンス]ボタンをクリックすると、新規ビジョンシーケンスが作成できます。
また、すでにビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択することができます。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規Pointオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Point (ポイント)]ボタンをクリックしてください。
  2. [Point (ポイント)]オブジェクトツールバーボタンの上に、Pointアイコンが表示されます。
  3. Pointアイコンをクリックして、Vision Guideウィンドウの画像イメージ表示部にドラッグしてください。
  4. オブジェクト名は自動的に作成されます。この例では、このシーケンスで最初に作成されたPointオブジェクトなので、 “Pnt01”というオブジェクト名になります。(オブジェクト名の変更方法については後述します。)

Step 2: Pointオブジェクトの位置決め
画面上には、下図のようなPointオブジェクトが表示されます。


新規Pointオブジェクトのレイアウト

記号 内容
a オブジェクト名

Pointオブジェクトは、文字どおりの点であり、高さも厚さもないので、サイズ調整をすることはできません。しかし、マウスを操作したり、位置の値をXプロパティーとYプロパティーに設定することによって、Pointオブジェクトの位置を設定することができます。
Pointオブジェクトを作成するときには、PointTypeプロパティーが “0-Screen”に設定されているので、次の手順により、Pointオブジェクトを少し移動させることができます。

  1. Pointオブジェクトのラベル名をクリックし、マウスボタンを押し続けながら、Pointオブジェクトを画面上の新規の場所にドラッグしてください。
  2. 適切な位置でマウスを放すと、Pointオブジェクトは、画面上の新しい位置に設定されます。

Step 3: Pointオブジェクトプロパティーの設定
Pointオブジェクトプロパティーの設定を行います。
プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力してください。または、ドロップダウンリストが表示されている場合は、リスト中の該当項目をクリックしてください。
次に、Pointオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、「Vision Guide 8.0プロパティー&リザルトリファレンス、または本章の「Pointオブジェクトのプロパティー」リストを参照してください。

Pointオブジェクトのレイアウト
Pointオブジェクトのレイアウトは、画面上に十字線で表示されます。Pointオブジェクトは、位置を変更することだけができます。Pointオブジェクトをクリックし、変更したい位置にドラッグしてください。Pointオブジェクトは、ほとんどの場合が他のオブジェクトに付属しているので、関連オブジェクトの位置に基づいて位置が計算されます。


Point オブジェクトのレイアウト

記号 内容
a オブジェクト名

Pointオブジェクトのプロパティー
Pointオブジェクトをテストするときは、これらのプロパティーを設定する必要はありません。テストでは、Pointオブジェクトの位置を、直線の中心点にも2直線の交点にも設定しないため、デフォルト値が適切であるからです。ただし、実際にPointオブジェクトで作業するのが初めての方は、この説明を参考にしてください。

プロパティー 説明
Nameプロパティー("Pointxx") 新規に作成されたPointオブジェクトにデフォルトとして与えられるオブジェクト名は “Pointxx” です。xxは、1つのビジョンシーケンス内で複数のPointオブジェクトを用いるとき、それらのPointオブジェクトを区別するための番号です。ビジョンシーケンスで1番目に用いられるPointオブジェクトには、“Point01”というオブジェクト名がデフォルトで設定されます。名称を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でPointオブジェクト名を表示する場所がすべて、変更後の名称を表示するようになります。
LineObject1 ("None")

PointオブジェクトのPointTypeプロパティーを “Midpoint” (直線の中心点を規定する)に設定すると、どの直線を使用するかを指定

また、PointTypeプロパティーが “Intersection” (2直線の交点を規定する)に設定されている場合は、このプロパティーでは、2直線の1番目の直線を指定します。デフォルトは “None”に設定されています。

LineObject2 ("None")

PointオブジェクトのPointTypeプロパティーを “Intersection” (2直線の交点を規定する)に設定すると、2直線の2番目の直線を指定

また、交点を定義するための1番目の直線は、LineObject1プロパティーによって指定されます。デフォルトは “None”に設定されています。

PointType (Screen)

Pointオブジェクトの位置を定義

画面上の位置、LineObject1プロパティーによって指定される直線の中心点、または、LineObject1プロパティーとLineObject2プロパティーによって指定される2直線の交点を基準とすることができます。

デフォルト: Screen

この例では、Lineオブジェクトが規定されていないので、LineObject1プロパティー, LineObject2プロパティー, PointTypeプロパティーは、デフォルトの値を変更することができません。
なお、直線の中心点をPointオブジェクトの位置としたい場合は、LineObject1プロパティーにLineオブジェクトを規定します。
また、2直線の交点をPointオブジェクトの位置としたい場合は、LineObject1プロパティーに1番目のLineオブジェクトを、LineObject2プロパティーに2番目のLineオブジェクトを規定します。
詳細は、前述の「Pointオブジェクトの位置を定義する」を参照してください。
AngleObjectで指定したオブジェクトの角度を、Pointオブジェクトから出力される角度とすることができます。これは、Pointオブジェクトの出力として、XY位置だけでなく、Pointオブジェクトの前段のオブジェクトの角度を、Pointオブジェクトの角度とすることで、RobotXYUなどのXY位置と角度Uの情報をまとめて取得することができるようになります。

Step 4: Pointオブジェクトの実行とリザルトの確認
Pointオブジェクトは、実行パネルのオブジェクトの[Run]ボタンをクリックするだけで簡単に実行できます。

  1. 実行パネルのオブジェクトの[Run]ボタンをクリックしてください。

Pointオブジェクトが実行されると、リザルトが表示されますので確認してください。この時点で確認すべき主要なリザルトは、次のとおりです。

リザルト 説明

PixelXリザルト

PixelYリザルト

PointオブジェクトのXY位置 (ピクセル座標系)

PointオブジェクトのPointTypeプロパティーが中点に設定されている場合、これらのリザルトは、LineObject1プロパティーによって設定されたLineオブジェクトの中点のXY位置 (ピクセル座標系)を返す

CameraXリザルト

CameraYリザルト

カメラ座標系におけるPointオブジェクトのXY座標を定義

カメラキャリブレーションが完了していない場合は値を返さず、”no cal”を返します。

RobotXリザルト

RobotYリザルト

ロボット座標系におけるPointオブジェクトのXY座標を定義

ロボットは、このXY座標を動作先にできます。その他の変換や処理手順は必要ありません。なお、カメラキャリブレーションが完了していない場合は値を返さず、”no cal”を返します。

BoxFinder オブジェクト (長方形検出)

BoxFinderオブジェクトの概要
BoxFinderオブジェクトは、画像イメージ中の長方形(正方形を含む)エッジの場所を特定するのに使われます。
BoxFinderオブジェクトは、複数のEdgeオブジェクトを自動的に処理してエッジ位置を特定し、各エッジ位置から特定される長方形を求めます。
画像イメージ中のオブジェクトのエッジは、グレイスケール値の暗から明への変化、あるいは明から暗への変化で表されます。このような変化は、数個のピクセルにわたって観察されます。
BoxFinderオブジェクトの各エッジサーチは、Polarityプロパティーによって定義された、明から暗への変化、または暗から明への変化を検出し、検出されたエッジ位置を結ぶ最適な直線を特定します。EdgeTypeプロパティーを変更してエッジペアを検出することもできます。エッジペアの場合、2つの対極のエッジを検索し、中間点を返します。

BoxFinderオブジェクトのレイアウト
BoxFinderオブジェクトは、LineFinderのようにサーチウィンドウ内にエッジのサーチ方向を示す方向インジケーターがあります。LineFinderとの違いは、サーチウィンドウの4辺に各方向の方向インジケーターがあるところです。エッジ検索ラインの数はNumberOfEdgesプロパティーで指定します。Directionプロパティーで検索方向を指定できます。


BoxFinder オブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c

サイズと方向ハンドル

方向インジケータ (サーチの方向)

d 方向インジケータ (サーチの方向)

BoxFinderオブジェクトは、 (垂直方向、水平方向だけでなく)あらゆる方向を検索するように置くことができます。BlobオブジェクトのSearchWinType=AngledRectangleと同様に、BoxFinderオブジェクトのサーチウィンドウ回転ハンドルを使って、BoxFinderオブジェクトを目的のエッジを検出する方向に動かすことができます。

BoxFinderオブジェクトのプロパティー
下の一覧は、BoxFinderオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した(不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

特徴が検出されたと判定するための形状スコアの値を指定

対象物が検出されたとみなされるためには、スコアの値を超えなくてはなりません。

デフォルト: 100

Caption

見出しをBoxFinderオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーから使用するリザルトを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound) にBoxFinderオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

デフォルト: False

ContrastTarget

エッジサーチのためのコントラストを設定

デフォルト: 0 (best contrast)

ContrastVariation

ContrastTargetの許容されるコントラストの変化量を選択

デフォルト: 0

CoordObject
リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われませんデフォルト: None

CurrentResult
オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義

Description

ユーザー指定の説明を設定

デフォルト: 空欄

Direction

エッジ検索の方向を設定

デフォルト: InsideOut

EdgeSort

検出されたエッジ結果のソート方法を設定

デフォルト: Score

EdgeThreshold

しきい値(この値より低いエッジは無視する)を設定

デフォルト: 2

EdgeType

検索するエッジタイプ (シングル, ペア)を設定

デフォルト: 1 - Single

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出結果が不良時の色を指定

デフォルト: Red

FittingThreshold

直線のフィッティングに使用するエッジリザルトを指定

デフォルト: 10

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

MissingEdgeType

未検出エッジの処理方法を設定

デフォルト: Interpolate

Name

BoxFinderオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: BoxFind01

NumberOfEdges

検出するエッジ数を設定

デフォルト: 5

PassColor

オブジェクトの検出が良のときの色を選択

デフォルト: LightGreen

PassType

オブジェクト検出の良否判定の条件を定義

デフォルト: SomeFound

Polarity

BoxFinderオブジェクトが明から暗へ(LightToDark)の移行を検索するのか、暗から明へ(DarkToLight)の移行を検索するのかを指定

デフォルト: 1 - LightToDark

ScoreWeightContrast

コントラストによってスコアの割合を設定

デフォルト: 50

ScoreWeightStrength

エッジの強度によってスコアの割合を設定

デフォルト: 50

SearchLength

エッジをサーチする範囲の長さを定義

下記のSearchLength1~4の値を一括で設定できる

SearchLength1 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のSearchLength1の長さを設定
SearchLength2 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のSearchLength2の長さを設定
SearchLength3 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のSearchLength3の長さを設定
SearchLength4 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のSearchLength4の長さを設定
SearchWidth

エッジサーチの幅を定義

範囲: 3 ~ 99

デフォルト: 3

SearchWin 実行時のみ1コールでサーチウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す
SearchWinAngle 被検索領域の角度を定義
SearchWinCenterX 被検索領域の中心のX座標値を定義
SearchWinCenterY 被検索領域の中心のY座標値を定義
SearchWinHeight 被検索領域の高さを定義 (単位: ピクセル)
SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinTop 被検索領域の最上端を定義 (単位: ピクセル)
SearchWinWidth 被検索領域の幅を定義 (単位: ピクセル)
StrengthTarget

サーチするエッジの強度を設定

デフォルト: 0

StrengthVariation

StrengthTargetの変化量の合計を設定

デフォルト: 0


BoxFinderオブジェクトのプロパティー, リザルトの位置関係

BoxFinderオブジェクトのリザルト
下の一覧は、BoxFinderオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle 検出された長方形の角度を返す
CameraX 検出された長方形エッジの中心X座標をカメラ座標で返す
CameraY 検出された長方形エッジの中心Y座標をカメラ座標で返す
CameraXYU

実行時のみ

カメラ座標系における検出された長方形エッジの中心位置のCameraX座標, CameraY座標, CameraU座標を返す

CameraX1 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner1のX座標をカメラ座標系で返す
CameraY1 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner1のY座標をカメラ座標系で返す
CameraX2 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner2のX座標をカメラ座標系で返す
CameraY2 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner2のY座標をカメラ座標系で返す
CameraX3 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner3のX座標をカメラ座標系で返す
CameraY3 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner3のY座標をカメラ座標系で返す
CameraX4 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner4のX座標をカメラ座標系で返す
CameraY4 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner4のY座標をカメラ座標系で返す
Contrast 検出された長方形エッジのコントラストを返す
FitError 各エッジポイントと検出された長方形との間の距離を二乗平均平方根(RMS)で返す
Found オブジェクトが検出されたかどうか、つまり、対象物あるいはパーツがAcceptプロパティーの現在の設定を超える形状スコア値を持っているかどうかの値を返す
MaxError 検出された長方形エッジからの最大ずれをピクセル長で返す
Passed 検出結果が良か否かを返す
Perimeter 検出された長方形の外周のピクセルの数を返す
PixelX 検出された長方形エッジの中心X座標をイメージ座標で返す
PixelY 検出された長方形エッジの中心Y座標をイメージ座標で返す
PixelX1 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner1のX座標をイメージ座標で返す
PixelY1 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner1のY座標をイメージ座標で返す
PixelX2 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner2のX座標をイメージ座標で返す
PixelY2 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner2のY座標をイメージ座標で返す
PixelX3 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner3のX座標をイメージ座標で返す
PixelY3 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner3のY座標をイメージ座標で返す
PixelX4 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner4のX座標をイメージ座標で返す
PixelY4 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner4のY座標をイメージ座標で返す
PixelXYU 検出された長方形エッジの中心位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す
RobotX 検出された長方形エッジの中心X座標をロボット座標で返す
RobotY 検出された長方形エッジの中心Y座標をロボット座標で返す
RobotU 検出された長方形エッジの中心U座標をロボット座標で返す
RobotXYU

実行時のみ

ロボット座標系における、検出された長方形エッジの中心位置のRobotX座標, RobotY座標, RobotU座標を返す

RobotX1 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner1のX座標をロボット座標で返す
RobotY1 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner1のY座標をロボット座標で返す
RobotX2 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner2のX座標をロボット座標で返す
RobotY2 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner2のY座標をロボット座標で返す
RobotX3 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner3のX座標をロボット座標で返す
RobotY3 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner3のY座標をロボット座標で返す
RobotX4 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner4のX座標をロボット座標で返す
RobotY4 図「BoxFinderオブジェクトのプロパティー, リザルトの位置関係」のCorner4のY座標をロボット座標で返す
ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

Strength 検出エッジの強度を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)

BoxFinderオブジェクトの使用方法
BoxFinderオブジェクトの作成と使用の方法を説明します。

  • 新規BoxFinderオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • BoxFinderオブジェクトの関連プロパティーの設定
  • BoxFinderオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス]ボタンをクリックし、新規ビジョンシーケンスを作成します。
ビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択します。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規BoxFinderオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Box Finder (長方形検出)]ボタンをクリックします。
  2. 画像イメージ表示部にマウスを動かします。マウスポインターがBoxFinderオブジェクトアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置に来るまで、マウスを動かします。
  4. マウスを左クリックして、オブジェクトを作成します。
  5. オブジェクト名が自動的に作成されます。この例では、このシーケンスで最初に作成されたBoxFinderオブジェクトなので、“BoxFind01”というオブジェクト名になります。(オブジェクト名の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面上に、下図のようなBoxFinderオブジェクトが表示されます。


新規BoxFinderオブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サイズと方向ハンドル
d 方向インジケータ (サーチの方向)
  1. BoxFinderオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、BoxFinderオブジェクトをドラッグして、サーチウィンドウを好きな位置に合わせます。
  2. サイズハンドルをクリックし、マウスをドラッグすると、BoxFinderオブジェクトサーチウィンドウのサイズが変更できます。適当な大きさに調整します。

Step 3: BoxFinderオブジェクトプロパティーの設定
BoxFinderオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力します。または、ドロップダウンリストが表示されている場合は、リストから選択します。
次に、BoxFinderオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
Nameプロパティー

新規に作成されたBoxFinderオブジェクトに、デフォルトとして与えられるオブジェクト名は “BoxFind**” です。**は、1つのビジョンシーケンス内で複数のBoxFinderオブジェクトを用いるとき、それらのBoxFinderオブジェクトを区別するための番号です。

ビジョンシーケンスで1番目に用いられるBoxFinderオブジェクトには、“BoxFind01”というオブジェクト名がデフォルトで設定されます。

名称を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でBoxFinderオブジェクト名を表示する場所がすべて、変更後の名称を表示するようになります。

EdgeType(シングル)

検索するエッジの種類を選択

エッジペアを設定した場合、それぞれの方向のエッジを検索し、中間点を位置として検出します。

NumberOfEdges(5) エッジを検索するために、サーチウィンドウの各辺で5個のエッジを検索
Polarity (LightToDark)

エッジ位置を「明から暗へ(LightToDark)」検索

「暗から明へ(DarkToLight)」のエッジを検索する場合は、Polarityを変更してください。

Step 4: BoxFinderオブジェクトの実行とリザルトの確認
BoxFinderオブジェクトを実行する方法を説明します。
実行パネルのオブジェクトの[Run]ボタンをクリックします。BoxFinderオブジェクトのリザルトが表示されます。この時点で確認すべき主要なリザルトは次のとおりです。

リザルト 説明
Angleリザルト 検出された長方形の角度をイメージ座標で返す
MaxErrorリザルト 検出された長方形エッジからの最大ずれを返す (単位: ピクセル)

PixelXリザルト

PixelYリザルト

検出された長方形エッジの中心XY座標位置をイメージ座標で返す

CameraXリザルト

CameraYリザルト

検出された長方形エッジの中心XY座標位置をカメラ座標で返すXY座標位置がキャリブレーションされていない場合は、“no cal”が返されます。

RobotXリザルト

RobotYリザルト

検出された長方形エッジの中心XY座標位置をロボット座標で返すXY座標位置がキャリブレーションされていない場合は、“no cal”が返されます。

CornerFinder オブジェクト (コーナー検出)

CornerFinderオブジェクトの概要
CornerFinderオブジェクトは、画像イメージ中の2直線の交点(コーナー)の場所を特定するのに使われます。
CornerFinderオブジェクトは、複数のEdgeオブジェクトを自動的に処理してエッジ位置を特定し、各エッジ位置から特定される2直線の交点を求めます。
画像イメージ中のオブジェクトのエッジは、グレイスケール値の暗から明への変化、あるいは明から暗への変化で表されます。このような変化は、数個のピクセルにわたって観察されます。
CornerFinderオブジェクトの各エッジサーチは、Polarityプロパティーによって定義された、明から暗への変化、または暗から明への変化を検出し、検出されたエッジ位置を結ぶ最適な直線を特定します。EdgeTypeプロパティーを変更してエッジペアを検出することもできます。エッジペアの場合、2つの対極のエッジを検索し、中間点を返します。

CornerFinderオブジェクトのレイアウト
CornerFinderオブジェクトには、LineFinderのようにサーチウィンドウ内にエッジのサーチ方向を示す方向インジケーターがあります。LineFinderとの違いはサーチウィンドウの2辺に各方向の方向インジケーターがあるところです。エッジ検索ラインの数はNumberOfEdgesプロパティーで指定します。Directionプロパティーで検索方向を指定できます。


CornerFinder オブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サイズと方向ハンドル
d 方向インジケータ (サーチの方向)

CornerFinderオブジェクトは、(垂直方向, 水平方向だけでなく)あらゆる方向を検索するように置くことができます。BlobオブジェクトのSearchWinType=AngledRectangleと同様に、CornerFinderオブジェクトのサーチウィンドウ回転ハンドルを使って、CornerFinderオブジェクトを目的のエッジを検出する方向に動かすことができます。

CornerFinderオブジェクトのプロパティー
下の一覧は、CornerFinderオブジェクトプロパティーの概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した(不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

Accept

特徴が検出されたと判定するための形状スコアの値を指定対象物が検出されたとみなされるためには、スコアの値を超えなくてはなりません。

デフォルト: 100

Caption

見出しをCornerFinderオブジェクトに割りあてる

デフォルト: 空欄

CenterPointObject

オブジェクトの中心点として使用する位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できます。他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

デフォルト: Screen

CenterPntObjResult

CenterPointObjectプロパティーから使用するリザルトを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にCornerFinderオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

デフォルト: 0

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

デフォルト: 0

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

デフォルト: False

ContrastTarget

エッジサーチのためのコントラストを設定

デフォルト: 0 (best contrast)

ContrastVariation

ContrastTargetの許容されるコントラストの変化量を選択

デフォルト: 0

CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルトまたは、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

Direction

エッジ検索の方向を設定

デフォルト: InsideOut

EdgeSort

検出されたエッジ結果のソート方法を設定

デフォルト: Score

EdgeThreshold

しきい値(この値より低いエッジは無視する)を設定

デフォルト: 2

EdgeType

検索するエッジタイプ(シングル, ペア)を設定

デフォルト: 1 - Single

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor

オブジェクトの検出結果が不良時の色を指定

デフォルト: Red

FittingThreshold

直線のフィッティングに使用するエッジリザルトを指定

デフォルト: 10

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent (透明)

MissingEdgeType

未検出エッジの処理方法を設定

デフォルト: Interpolate

Name

CornerFinderオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: CornerFind01

NumberOfEdges

検出するエッジ数を設定

デフォルト: 5

PassColor

オブジェクトの検出が、良のときの色を選択

デフォルト: LightGreen

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

Polarity

CornerFinderオブジェクトが、明から暗へ(LightToDark)の移行を検索するのか、暗から明へ(DarkToLight)の移行を検索するのかを指定

デフォルト: 1 - LightToDark

ScoreWeightContrast

コントラストによってスコアの割合を設定

デフォルト: 50

ScoreWeightStrength

エッジの強度によってスコアの割合を設定

デフォルト: 50

SearchLength

エッジをサーチする範囲の長さを定義

下記のSearchLength1,2の値を一括で設定できる

SearchLength1 図「CornerFinderオブジェクトのプロパティーの位置関係」のSearchLength1の長さを設定
SearchLength2 図「CornerFinderオブジェクトのプロパティーの位置関係」のSearchLength2の長さを設定
SearchWidth

エッジサーチの幅を定義

範囲: 3 ~ 99

デフォルト: 3

SearchWin

実行時のみ

1コールでサーチウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す

SearchWinAngle 被検索領域の角度を定義
SearchWinCenterX 被検索領域の中心のX座標値を定義
SearchWinCenterY 被検索領域の中心のY座標値を定義
SearchWinHeight 被検索領域の高さを定義 (単位: ピクセル)
SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinTop 被検索領域の最上端を定義 (単位: ピクセル)
SearchWinWidth 被検索領域の幅を定義 (単位: ピクセル)
StrengthTarget

サーチするエッジの強度を設定

デフォルト: 0

StrengthVariation

StrengthTargetの変化量の合計を設定

デフォルト: 0


CornerFinderオブジェクトのプロパティーの位置関係

CornerFinderオブジェクトのリザルト
下の一覧は、CornerFinderオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle 検出されたコーナーの角度を返す
CameraX 検出コーナーのX座標をカメラ座標で返す
CameraY 検出コーナーのY座標をカメラ座標で返す
CameraXYU

実行時のみ

カメラ座標系における検出コーナー位置のCameraX座標, CameraY座標, CameraU座標を返す

Contrast 検出エッジのコントラストを返す
FitError 各エッジポイントと検出されたコーナーとの間の距離を二乗平均平方根(RMS)で返す
Found オブジェクトが検出されたかどうか、つまり、対象物あるいはパーツがAcceptプロパティーの現在の設定を超える形状スコア値を持っているかどうかの値を返す
MaxError 検出直線エッジからの最大ずれをピクセル長で返す
Passed 検出結果が良か否かを返す
PixelX 検出コーナーのX座標をイメージ座標で返す
PixelY 検出コーナーのY座標をイメージ座標で返す
PixelXYU

実行時のみ

検出コーナー位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX 検出コーナーのX座標をロボット座標で返す
RobotY 検出コーナーのY座標をロボット座標で返す
RobotU 検出コーナーのU座標をロボット座標で返す
RobotXYU

実行時のみ

ロボット座標系における、検出コーナー位置のRobotX座標, RobotY座標, RobotU座標を返す

ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

Strength 検出エッジの強度を返す
Time オブジェクト処理に要した時間を返す (単位: ミリ秒)

CornerFinderオブジェクトの使用方法
CornerFinderオブジェクトの作成と使用の方法を説明します。

  • 新規CornerFinderオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • CornerFinderオブジェクトの関連プロパティーの設定
  • CornerFinderオブジェクトのテストとリザルトの確認
  • プロパティーの調整と再テスト

これらのステップを開始する前に、まず新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。作業するビジョンシーケンスがない場合は、 [新規シーケンス] ボタンをクリックし、新規ビジョンシーケンスを作成します。
ビジョンシーケンスを作成済みの場合は、Vision Guideウィンドウのシーケンスツリーをクリックして、作成済みのビジョンシーケンスを選択します。
新規ビジョンシーケンスの作成方法、または作成済みビジョンシーケンスの選択方法の詳細は、以下を参照してください。
ビジョンシーケンス

Step 1: 新規CornerFinderオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [CornerFinder (コーナー検出)] ボタンをクリックします。
  2. 画像イメージ表示部にマウスを動かします。マウスポインターがCornerFinderオブジェクトアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置に来るまで、マウスを動かします。
  4. マウスを左クリックして、オブジェクトを作成します。
  5. オブジェクト名が自動的に作成されます。この例では、このシーケンスで最初に作成されたCornerFinderオブジェクトなので、“CornerFind01”というオブジェクト名になります。(オブジェクト名の変更方法については後述します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面には、下図のようなCornerFinderオブジェクトが表示されます。


新規CornerFinderオブジェクトのレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サイズと方向ハンドル
d 方向インジケータ (サーチの方向)
  1. CornerFinderオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、CornerFinderオブジェクトをドラッグして、サーチウィンドウを好きな位置に合わせます。
  2. サイズハンドルをクリックして、マウスをドラッグし、CornerFinderオブジェクトサーチウィンドウのサイズを変更します。適当な大きさに調整します。

Step 3: CornerFinderオブジェクトプロパティーの設定
CornerFinderオブジェクトプロパティーの設定を行います。プロパティーを設定するには、関連するプロパティーの設定値フィールドをクリックし、新規の値を入力します。または、ドロップダウンリストが表示されている場合は、リストから選択します。
次に、CornerFinderオブジェクトで一般的に使われるプロパティーのいくつかを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
Nameプロパティー

新規に作成されたCornerFinderオブジェクトに、デフォルトとして与えられるオブジェクト名は “CornerFind**” です。**は、1つのビジョンシーケンス内で複数のCornerFinderオブジェクトを用いるとき、それらのCornerFinderオブジェクトを区別するための番号です。

ビジョンシーケンスで1番目に用いられるCornerFinderオブジェクトには、“CornerFind01”というオブジェクト名がデフォルトで設定されます。

名称を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でCornerFinderオブジェクト名を表示する場所がすべて、変更後の名称を表示するようになります。

EdgeType(シングル)

検索するエッジの種類を選択

エッジペアを設定した場合、それぞれの方向のエッジを検索し、中間点を位置として検出します。

NumberOfEdges(5) エッジを検索するために、サーチウィンドウの各辺で5個のエッジを検索
Polarity (LightToDark)

エッジ位置を「明から暗へ(LightToDark)」検索

「暗から明へ(DarkToLight)」のエッジを検索する場合は、 “Polarity”を変更してください。

Step 4: CornerFinderオブジェクトの実行とリザルトの確認
CornerFinderオブジェクトを実行する方法を説明します。
実行パネルのオブジェクトの[Run]ボタンをクリックします。CornerFinderオブジェクトのリザルトが表示されます。この時点で確認すべき主要なリザルトは次のとおりです。

リザルト 説明
Angleリザルト 検出されたコーナーの角度をイメージ座標で返す
MaxErrorリザルト 検出された直線からの最大ずれを返す(単位: ピクセル)

PixelXリザルト

PixelYリザルト

検出されたコーナーのXY座標位置をイメージ座標で返す

CameraXリザルト

CameraYリザルト

検出されたコーナーのXY座標位置をカメラ座標で返すXY座標位置がキャリブレーションされていない場合は、“no cal”が返されます。

RobotXリザルト

RobotYリザルト

検出されたコーナーのXY座標位置をロボット座標で返すXY座標位置がキャリブレーションされていない場合は、“no cal”が返されます。

Contour オブジェクト (輪郭抽出)

Contourオブジェクトの概要
Contourオブジェクトは、ワークの輪郭を沿う軌跡を出力します。ロボットのハンドをワークの輪郭に沿わせて動かしたい場合に、画像情報から簡単に経路を取得できます。
Contourオブジェクトには、軌跡の取得方法が3種類あり、用途に合わせて使い分けが可能です。取得方法は、ContourModeプロパティーを変えることで切り替わり、各モードでGUIや有効なプロパティーも異なります。
各モードの特徴を簡単に説明します。

  • Blob形式
    配置したサーチウィンドウ内にある対象ワークのブローブを検出し、その輪郭を取得します。複雑な形状を持つワークから輪郭を取得する場合に使用します。

    記号 内容
    a シーケンスのステップ番号
    b オブジェクト名
    c サーチウィンドウ
  • Line形式
    横に並ぶ複数のエッジ探索ラインで輪郭を取得します。対象ワークの一部から、起伏の少ない輪郭を簡単に取得する場合に便利です。

    記号 内容
    a シーケンスのステップ番号
    b オブジェクト名
    c サイズと方向ハンドル
    d 方向インジケータ (サーチの方向)
  • Arc形式
    放射状に並ぶ複数のエッジ探索ラインで輪郭を取得します。対象ワークの一部から、起伏の少ない円弧上の輪郭を簡単に取得する場合に便利です。

    記号 内容
    a シーケンスのステップ番号
    b オブジェクト名
    c 方向インジケータ (サーチの方向)
    d サイズと方向ハンドル

Contour オブジェクトのプロパティー
下の一覧は、Contourオブジェクトのプロパティーを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

また、ContourModeの値により有効なプロパティーが異なります。一覧には、各プロパティーが有効になるContourModeの値を記載しています。

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した(不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

対応形式: Blob, Line, Arc

Accept

特徴が検出されたと判定するための形状スコアの値を指定対象物が検出されたとみなされるためには、スコアの値を超えなくてはなりません。

デフォルト: 100

対応形式: Line, Arc

AngleEnd

円弧をサーチする範囲の終了角度を指定

デフォルト: 135

対応形式: Arc

AngleStart

円弧をサーチする範囲の開始角度を指定

デフォルト: 45

対応形式: Arc

Caption

見出しをContourオブジェクトに割りあてる

デフォルト: 空欄

対応形式: Blob, Line, Arc

CenterPointObject

オブジェクトの中心点として用いられる位置を指定このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

対応形式: Blob, Line, Arc

CenterPntObjResult

CenterPointObjectプロパティーから使用するリザルトを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にContourオブジェクトが適用されます。

デフォルト: 1

対応形式: Blob, Line, Arc

CenterPntOffsetX

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す

対応形式: Blob, Line, Arc

CenterPntOffsetY

サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す

対応形式: Blob, Line, Arc

CenterPntRotOffset

中心点のXYオフセット値 (CenterPntOffsetX, CenterPntOffsetY)を、CenterPointObjectのAngleリザルトにしたがって回転するか否かを指定

SearchWinTypeがRotatedRectangleに設定されている場合、サーチウィンドウはAngleリザルトにしたがって回転します。

CenterX

オブジェクトの中心点として用いられる位置のX座標を指定CenterPointプロパティーが他のビジョンオブジェクトに設定されると、自動的に設定されます。

対応形式: Arc

CenterY

オブジェクトの中心点として用いられる位置のY座標を指定CenterPointプロパティーが他のビジョンオブジェクトに設定されると、自動的に設定されます。

対応形式: Arc

ContourMode Contour オブジェクトのエッジ検出方式を定義
ContrastTarget

エッジサーチのためのコントラストを設定

デフォルト: 0 (best contrast)

対応形式: Line, Arc

ContrastVariation

ContrastTargetの許容されるコントラストの変化量を選択デフォルト: 0

対応形式: Line, Arc

CoordObject

リザルトをコピーするCoordinatesオブジェクトを指定コピー処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト: None

CurrentResult

オブジェクトウィンドウのリザルトリストに表示するリザルトまたは、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義

対応形式: Blob, Line, Arc

Description

ユーザー指定の説明を設定

デフォルト: 空欄

Direction

エッジ検索の方向を設定

デフォルト: InsideOut

対応形式: Arc

EdgeThreshold

しきい値(この値より低いエッジは無視する)を設定

デフォルト: 2

対応形式: Line, Arc

EdgeType

検索するエッジタイプ(シングル, ペア)を設定

デフォルト: 1 - single

対応形式: Line, Arc

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

対応形式: Blob, Line, Arc

EndPntObjResult

どのリザルトをEndPointObjectから用いるのかを特定

デフォルト: 1

対応形式: Blob, Line, Arc

EndPointObject

どのビジョンオブジェクトを使って、直線の終点を定義するかを特定

デフォルト: Screen

対応形式: Blob, Line, Arc

EndPointType

どのタイプの終点を使って直線の終点を定義するのかを特定

デフォルト: 0 - Point

対応形式: Blob, Line, Arc

FailColor

オブジェクトの検出結果が不良時の色を指定

デフォルト: Red

対応形式: Blob, Line, Arc

FillHoles

2値画像の穴を埋めるかを選択

デフォルト: False

対応形式: Blob

FittingThreshold

直線、または円弧のフィッティング閾値を定義

対応形式: Line, Arc

Frame

どの位置に置いたフレームを使用するのかを指定

デフォルト: none

対応形式: Blob, Line, Arc

FrameResult

Frameの何番目のリザルトを使用するかを指定

デフォルト: 1

対応形式: Blob, Line, Arc

Graphics

表示するグラフィックを指定

デフォルト: 1 - All

対応形式: Blob, Line, Arc

LabelBackColor

オブジェクトラベルの背景の色を設定

デフォルト: Transparent(透明)

対応形式: Blob, Line, Arc

LineDirection

輪郭点を出力する方向を定義

デフォルト: LeftToRight

対応形式: Line

MaxArea

オブジェクトの上限領域を規定

デフォルト: 100,000

対応形式: Blob

MinArea

オブジェクトの下限領域を規定

デフォルト: 25

対応形式: Blob

MinMaxArea

実行時のみ

1ステートメントでMinAreaとMaxAreaを設定、または返す

Name

Contourオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: Contour01

対応形式: Blob, Line, Arc

NumberOfEdges

検出するエッジ数を設定

デフォルト: 20

対応形式: Line, Arc

NumberToFind

出力する輪郭点の最大個数を定義

デフォルト: 1

対応形式: Blob, Line, Arc

PassColor

オブジェクトの検出が、良のときの色を選択

デフォルト: LightGreen

対応形式: Blob, Line, Arc

PassType

オブジェクト検出時の良否判定の条件を定義

デフォルト: SomeFound

対応形式: Blob,Line,Arc

Polarity

Contourオブジェクトが、明るい背景の暗いオブジェクト(DarkOnLight)を検索するのか、暗い背景の明るいオブジェクト (LightOnDark)を検索するのか、明から暗へ (LightToDark)の移行を検索するのか、暗から明へ (DarkToLight)の移行を検索するのかを指定

デフォルト_Blob: 1 - DarkOnLight

デフォルト_Line /Arc: 1 - LightToDark

対応形式: Blob, Line, Arc

RadiusInner

検出範囲の内径を指定

対応形式: Arc

RadiusOuter

検出範囲の外径を指定

対応形式: Arc

RejectOnEdge

“True”に設定すると、サーチウィンドウのエッジにかかって検出されたブローブを無視します

デフォルト: False

対応形式: Blob

RotationDirection

輪郭点の回転方向を指定

デフォルト: 0 - CW

対応形式: Blob, Arc

RuntimeContour

オブジェクト実行時に輪郭点を検出するかを指定

デフォルト: True (実行時に検出)

対応形式: Blob, Line, Arc

SamplingPitch

輪郭点を削減する度合いを設定

デフォルト:0 (削減しない)

対応形式: Blob, Line, Arc

SaveTeachImage モデルをティーチするときに、画像ファイルに保存するかを設定
ScoreWeightContrast

コントラストによるスコアの割合を設定

デフォルト: 50

対応形式:Line, Arc

ScoreWeightStrength

エッジの強度によるスコアの割合を設定

デフォルト: 50

対応形式: Line, Arc

SearchWidth

エッジサーチの幅を定義

範囲: 3 ~ 99

デフォルト: 3

対応形式: Line, Arc

SearchWin

実行時のみ

1コールでサーチウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す

対応形式: Blob, Line

SearchWinAngle

被検索領域の角度を定義

対応形式: Blob, Line

SearchWinCenterX

被検索領域の中心のX座標値を定義

対応形式: Blob, Line

SearchWinCenterY

被検索領域の中心のY座標値を定義

対応形式: Blob, Line

SearchWinHeight

被検索領域の高さを定義 (単位: ピクセル)

デフォルト: 100

対応形式: Blob, Line

SearchWinLeft

被検索領域の最左端を定義 (単位: ピクセル)

対応形式: Blob, Line

SearchWinTop

被検索領域の最上端を定義 (単位: ピクセル)

対応形式: Blob, Line

SearchWinType

被検査領域のタイプ (Rectangle, RotatedRectangle, Circle)を定義

対応形式: Blob

SearchWinWidth

被検索領域の幅を定義 (単位: ピクセル)

デフォルト: 100

対応形式: Blob

SizeToFind

検出する欠陥のサイズを選択

デフォルト: 1 - Largest

対応形式: Blob

ShowModel

輪郭の教示モデルを表示

対応形式: Blob

Sort

オブジェクトのリザルトを並び替える順番を選択

対応形式: Blob

StartPntObjResult

どのリザルトをStartPointObjectから用いるのかを指定

デフォルト: 1

対応形式: Blob, Line, Arc

StartPointObject

どのビジョンオブジェクトを使って、直線の始点を定義するかを指定

デフォルト: Screen

対応形式: Blob, Line, Arc

StartPointType

どのタイプの始点を使って直線の始点を定義するのかを指定

デフォルト: “0 - Point”

対応形式: Blob, Line, Arc

StrengthTarget

サーチするエッジの強度を設定

デフォルト: 0

対応形式: Line, Arc

StrengthVariation

StrengthTargetの変化量の合計を設定

デフォルト: 0

対応形式: Line, Arc

ThresholdAuto

対象物(オブジェクト), 背景, 画像イメージのエッジを表すグレイレベルのしきい値を自動設定するか否かを設定

デフォルト: 無効

対応形式: Blob

ThresholdBlockSize

ThresholdMethodプロパティーをLocalAdaptiveに設定したときに使用する、しきい値を決定するために近傍領域を参照する範囲を定義

デフォルト: 1/16ROI

対応形式: Blob

ThresholdColor

しきい値の範囲内にあるピクセルの色を定義

デフォルト: 黒色

対応形式: Blob

ThresholdHigh

ThresholdLowプロパティーとともに、対象物(オブジェクト), 背景, 画像イメージのエッジを表すグレイレベル範囲を定義

ThresholdHighプロパティーは、画像イメージの対象物領域のグレイレベル範囲の上限を定義

ThresholdLowとThresholdHighで定義されたグレイレベル範囲にあてはまる画像イメージは、どの部分もピクセルの重みづけ1が割りあてられます。(つまり、対象物の一部分です。)

ThresholdAutoが“True”で、かつThresholdColorが“White”の場合、本プロパティー値は“255”に設定され、変更できなくなります。

デフォルト: 128

対応形式: Blob

ThresholdLevel

ThresholdMethodプロパティーをLocalAdaptiveに設定したときに使用する、近傍領域との輝度差の割合を定義

デフォルト: 15%

対応形式: Blob

ThresholdLow

ThresholdHighプロパティーとともに、対象物(オブジェクト), 背景, 画像イメージのエッジを表すグレイレベル範囲を定義

ThresholdLowプロパティーは、画像イメージの対象物領域のグレイレベル範囲の下限を定義

ThresholdLowとThresholdHighで定義されたグレイレベル範囲にあてはまる画像イメージは、どの部分もピクセルの重みづけ1が割りあてられます。(つまり、対象物の一部分です。)

ThresholdAutoが“True”で、かつThresholdColorが“Black”の場合、本プロパティー値は“0”に設定され、変更できなくなります。

デフォルト: 0

対応形式: Blob

ThresholdMethod 2値化の処理方法を設定
ContourTolerance

輪郭点を削減する時の許容値を設定します。

デフォルト: 0

対応形式: Blob, Line, Arc

Contour オブジェクトのリザルト
下の一覧は、Contourオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
CameraX カメラ座標系における輪郭点のX座標位置を返す
CameraY カメラ座標系における輪郭点のY座標位置を返す
CameraXYU

実行時のみ

カメラ座標系における輪郭点のCameraX座標, CameraY座標, CameraU座標を返す

Found オブジェクトが検出されたかどうかを返す
NumberFound 輪郭点の総数を返す
Passed 検出結果が良か否かを返す
PixelX 輪郭点位置のX座標をピクセルで返す
PixelY 輪郭点位置のY座標をピクセルで返す
PixelXYU

実行時のみ

輪郭点位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系における輪郭点のX座標位置を返す
RobotY ロボット座標系における輪郭点のY座標位置を返す
RobotXYU

実行時のみ

ロボット座標系における輪郭点のX座標位置, Y座標位置, U座標位置を返す

ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

Time オブジェクト処理に要した時間を返す (単位: ミリ秒)

輪郭抽出の原理
輪郭抽出は、大別して2つの手順があります。各手順の内容は、下記のとおりです。

  • 初期輪郭点作成
    • ブローブ検出 (Blob)
    • 輪郭トレース (Blob)
    • エッジ検出 (Line/Arc)
  • 輪郭点編集
    • 輪郭点削減
    • 輪郭取得

ブローブ検出 (Blob)
ContourModeの設定値が“Blob”の場合、Blobオブジェクトと同じ機能を用いて、サーチウィンドウ内のブローブを検出します。ブローブの検出原理は、下記を参照してください。
Blob オブジェクト(2値検査)-2値検査の原理
Contourオブジェクトでは、サーチウィンドウ内にあるブローブを全て検出し、次のステップに進みます。

輪郭トレース (Blob)
ContourModeの設定値が“Blob”の場合、「ブローブ検出」ステップの後に輪郭トレースのステップが実行されます。「ブローブ検出」ステップで検出されたブローブの1つ目のリザルトのブローブに対して輪郭をトレースして、初期輪郭点を作成します。そのため輪郭を取得したいワークが1つ目のリザルトとして検出されるように、サーチウィンドウの位置調整や、Sort, MinArea, MaxAreaなどのプロパティー調整が必要です。
初期輪郭点は、隙間のない連続した軌跡として出力されます。また、初期輪郭点はStartPointObjectで指定する座標位置に最も近い点から始まり、EndPointObjectで指定する座標位置に最も近い点で終わります。

エッジ検出 (Line/Arc)
ContourModeの設定値が“Line”、または“Arc”の場合、エッジ探索ラインの検出結果を初期輪郭点とします。初期輪郭点は、StartPointObjectで指定する座標位置に最も近い点から始まり、EndPointObjectで指定する座標位置に最も近い点で終わります。

輪郭点削減
初期輪郭点の作成後、不要な点の削減が行われます。輪郭点の削減はSamplingPitchとContourToleranceの値に従います。SamplingPitchの値からは、何個の初期輪郭点ごとに1つの輪郭点を取得するかが決まります。例えば、“10”に設定した場合は、最大で10個の初期輪郭点から1個の輪郭点を抽出します。また、ContourToleranceの値からは、初期輪郭点を削減するときの誤差の許容値が決まります。この値が大きいほど、対象ワークの形に従わない輪郭点の削減も許可されます。

輪郭取得
前のステップで削減された輪郭点をリザルトデータとして取得するステップです。取得するとき、RotationDirection / LineDirectionの設定値で軌跡の方向が決まります。
また、Blob形式の場合は、RejectOnEdgeを“False”にすると、対象ワークがサーチウィンドウからはみ出すことがあります。この場合は、サーチウィンドウの枠線は輪郭として取得しません。軌跡の途中でサーチウィンドウの枠に触れた部分で軌跡は終わりとします。サーチウィンドウにより取得可能な軌跡が複数に分かれた場合は、StartPointObject, EndPointObjectが設定されていない限り、軌跡の中から最も長いものを取得します。

Step 1: 新規Contourオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Contour (輪郭取得)]ボタンをクリックします。
  2. 画像イメージ表示部にマウスを動かします。マウスポインターがContourアイコンに変わります。
  3. アイコンが画像イメージ表示部の目的の位置に来るまで、マウスを動かし続けます。
  4. マウスを左クリックして、オブジェクトを作成します。
  5. オブジェクト名は、自動的に作成されます。この例では、このシーケンスで最初に作成されたContourオブジェクトなので、 “Contour01”という名称になります。 (名称の変更方法については後述します。)
    得たい軌跡の特徴に合わせてContourModeを変更します。ContourModeの選択については、下表を参照してください。
    ContourModeの設定値 判断基準
    Blob 対象ワークを一周する軌跡を取得したい。複雑な形状の軌跡を取得したい。
    Line ワークの一部分の軌跡を取得したい。凹凸の少ない単純な線の軌跡を取得したい。
    Arc ワークの一部分の軌跡を取得したい。凹凸の少ない円弧上の軌跡を取得したい。

Step 2: 輪郭検出位置の設定 (ContourMode:Blobの場合)
ContourModeがBlobの場合、画面には下図のようなContourオブジェクトが表示されます。


新規Contourオブジェクト(ContourMode:Blob)のレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サーチウィンドウ
  1. Contourオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、Contourオブジェクトをドラッグして、サーチウィンドウの左上コーナーを好きな位置に合わせます。
  2. サイズハンドルをクリックし、マウスをドラッグすると、Contourオブジェクトサーチウィンドウのサイズが変更できます。適当な大きさに調整します。 (サーチウィンドウは、ブローブの被検索領域になります。)

Step 2: 輪郭検出位置の設定 (ContourMode: Lineの場合)
ContourModeがLineの場合、画面には下図のようなContourオブジェクトが表示されます。


新規Contour オブジェクト(ContourMode:Line)のレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サイズと方向ハンドル
d 方向インジケータ (サーチの方向)
  1. Contourオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、Contourオブジェクトをドラッグして、サーチウィンドウの左上コーナーを好きな位置に合わせます。
  2. サイズハンドルをクリックして、マウスをドラッグすると、Contourオブジェクトサーチウィンドウのサイズが変更できます。適当な大きさに調整します。画面には、Edgeオブジェクトが表示されています。

Step 2: 輪郭検出位置の設定 (ContourMode:Arcの場合)
ContourModeがArcの場合、画面には下図のようなContourオブジェクトが表示されます。


新規Contourオブジェクト(ContourMode:Arc)のレイアウト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c 方向インジケータ (サーチの方向)
d サイズと方向ハンドル
  1. Contourオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、Contourオブジェクトをドラッグして、サーチウィンドウを好きな位置に合わせます。
  2. サイズハンドルをクリックして、マウスをドラッグすると、Contourオブジェクトサーチウィンドウのサイズが変更できます。適当な大きさに調整します。

Step 3: Contourオブジェクトプロパティーの設定 (ContourMode:Blobの場合)
Contourオブジェクト(ContourMode: Blobの場合)のプロパティーの設定を行います。ContourModeが“Blob”に設定されているときに、よく使用されるプロパティーを示します。
その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。

  • "Vision Guide 8.0プロパティー&リザルトリファレンス"
  • Contourオブジェクトのプロパティーリスト

注意


ビジョンシーケンスの実行結果は、外らん光や外部機器ノイズにより影響を受けることがあります。外らん光や外部機器ノイズにより、影響を受けると、取り込み画像が想定外の結果となり、検出位置結果がサーチエリア (検出エリア)内の不特定位置になる可能性があります。MaxArea, MinArea, RejectOnEdgeなどのプロパティー値を適切に設定し、誤検出リスクを軽減してください。

プロパティー 説明
Nameプロパティー

新規に作成されたContourオブジェクトに、デフォルトとして与えられる名称は、“Contour xx”です。xxは、1つのビジョンシーケンス内で複数のContourオブジェクトを用いるとき、それらのContourオブジェクトを区別するための番号です。

ビジョンシーケンスで1番目に用いられるContourオブジェクトには、“Contour 01”という名称がデフォルトで設定されます。

名称を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でそのContourオブジェクト名を表示する場所の全部が、変更後の名称で表示されます。

Polarityプロパティー

明るい背景の暗いオブジェクトを検出したい場合と、暗い背景の明るいオブジェクトを検出したい場合があります。この選択をするのが、Polarityプロパティーの基本的な目的です。

デフォルトは、DarkOnLight (明るい背景の暗いオブジェクト)の検出に設定されています。

このデフォルト設定を変更したいときは、Polarityプロパティーの値フィールドをクリックします。ドロップダウンリストが表示され、 “Dark on Light” と “Light on Dark” の選択項目が表示されます。選択して、クリックしてください。

MinArea, MaxArea

輪郭抽出の対象とするブローブの面積を定義します。

デフォルトの範囲は、25 ~ 100,000 (MinArea ~ MaxArea)です。非常に広く設定されています。つまり、MinAreaプロパティーとMaxAreaプロパティーを調整しないまま、新規作成のBlobオブジェクトを実行すると、ほとんどのブローブは検出されたとして報告されます。通常は、検出対象のブローブに適切な範囲を反映するために、これらのプロパティーを調整します。このようにして、範囲の外側に何らかのブローブが検出された場合は、それは検出対象のブローブではないと判断することができます。

RejectOnEdgeプロパティー サーチウィンドウのエッジにかかって検出されたパーツを除外通常は、“True”に設定します。
RuntimeContour オブジェクト実行時に輪郭を抽出するかを定義ワークの形状が変化する場合は“True”に設定します。ワークの形状変化がない場合は、“False”に設定して、オブジェクト実行前に輪郭情報のティーチを行ってください。ティーチされた形状はShowModelプロパティーから確認できます。

以上で、Blobオブジェクトのテストができるようになりました。必要となるその他のプロパティーは、テスト後に再び設定することにします。

Step 3: Contourオブジェクトプロパティーの設定 (ContourMode: Lineの場合)
Contourオブジェクト(ContourMode: Lineの場合)のプロパティーを設定します。ContourModeが“Line”に設定されているときに、よく使用されるプロパティーを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
EdgeType(シングル)

検索するエッジの種類を選択

エッジペアを設定した場合、それぞれの方向のエッジを検索し、中間点を位置として検出します。

Nameプロパティー("Contourxx")

新規に作成されたContourオブジェクトに、デフォルトとして与えられるオブジェクト名称は“Contour xx”です。xxは、1つのビジョンシーケンス内で複数のContourオブジェクトを用いるとき、それらのContourオブジェクトで区別するための番号です。

ビジョンシーケンスで1番目に用いられるContourオブジェクトには、“Contour01”というオブジェクト名がデフォルトで設定されます。

オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でContourオブジェクト名を表示する場所は、すべて変更後の名称に変わります。

NumberOfEdges(1) エッジ検索ラインに沿って1個以上のエッジを検索
Polarity (LightToDark)

エッジ位置を「明から暗へ(LightToDark)」検索

「暗から明へ(DarkToLight)」のエッジを検索する場合は、Polarityを変更してください。

Step 3: Contourオブジェクトプロパティーの設定 (ContourMode: Arcの場合)
Contourオブジェクト(ContourMode: Arcの場合)のプロパティーを設定します。ContourModeが“Arc”に設定されているときに、よく使用されるプロパティーを示します。その他、さまざまなビジョンオブジェクトの多くで使われるAbortSeqOnFail, Graphicsなどのプロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
EdgeType(シングル)

検索するエッジの種類を選択

エッジペアを設定した場合、それぞれの方向のエッジを検索し、中間点を位置として検出します。

Nameプロパティー("Contourxx") 新規に作成されたContourオブジェクトに、デフォルトとして与えられるオブジェクト名称は“Contourxx”です。xxは、1つのビジョンシーケンス内で複数のContourオブジェクトを用いるとき、それらのContourオブジェクトで区別するための番号です。ビジョンシーケンスで1番目に用いられるContourオブジェクトには、“Contour01”というオブジェクト名がデフォルトで設定されます。オブジェクト名を変更したい場合は、Nameプロパティーの設定値フィールドをクリックして、変更後の名称を入力し、リターンキーを押してください。画面上でContourオブジェクト名を表示する場所は、すべて変更後の名称に変わります。
NumberOfEdges(5) 円弧エッジを検索するために、5個のエッジを検索
Polarity (LightToDark)

エッジ位置を「明から暗へ(LightToDark)」検索

「暗から明へ(DarkToLight)」のエッジを検索する場合は、Polarityを変更してください。

Step 4: 輪郭点に関わるプロパティーの設定
軌跡の正確さ、輪郭点の個数などを調整するプロパティーを設定します。使用されるプロパティーを示します。その他、プロパティーの詳細は以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
SamplingPitch

輪郭点を削減する最大個数を定義

“5”を設定した場合、個数が初期検出個数から最大で1/5程度になります。

ContourTolerance

輪郭点を削減するときの許容値を定義

この値が小さいほどワーク形状に反する輪郭点の削減を許可しません。オブジェクト実行結果を確認しながら、必要な精度に合わせて調整してください。

StartPointObject, EndPointObject

軌跡の開始位置と終了位置を指定

設定する場合は、Pointオブジェクトを作成し、Contourオブジェクトより前に実行されるよう、ビジョンシーケンス内の順序を調整します。Pointオブジェクトは、軌跡を開始/終了したい位置付近に配置します。

RotationDirection, LineDirection 軌跡の方向を指定ContourModeがBlobとArcの場合は軌跡の回転方向(CW/ CCW)を設定します。ContourModeがLineの場合は、エッジ探索ラインが垂直下方向を向いている場合を基準として、左右方向(LeftToRight/ RightToLeft)を指定します。

Step 5: Contourオブジェクトのテストとリザルトの確認
Contourオブジェクトのテストを実行するには、実行パネルのオブジェクトの[Run]ボタンをクリックします。Contourオブジェクトのリザルトが表示されます。ここで確認する主要なリザルトは、次に示すとおりです。

リザルト 説明
PixelX, PixelY 検出された輪郭点位置 (単位: ピクセル)
CameraX, CameraY カメラ座標を基準とした輪郭点位置 (単位: mm)
RobotX, RobotY ロボット座標を基準とした輪郭点位置 (単位: mm)
Timeリザルト Contourオブジェクトの実行に要した時間

キーポイント


RobotX, RobotYのリザルトとCameraX, CameraYのリザルトは、この時点で“no cal”を返します。これは、「キャリブレーションが実行されていないので、ロボット座標系あるいはカメラ座標系に関して座標リザルトを計算することができなかった。」ということを意味しています。詳細は、以下を参照してください。

ビジョンキャリブレーション

Textオブジェクト

Text オブジェクトの概要
Textオブジェクトは、ビジョンオブジェクトの実行結果を、文字として画面上に描画します。

Textオブジェクトのレイアウト
Textオブジェクトには、下に示すように画像イメージ処理ウィンドウがあります。

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c

画像イメージ

処理ウィンドウ

Textオブジェクトのプロパティー
Textオブジェクトで使われるプロパティーの一覧を次に示し、簡単に説明します。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
AbortSeqOnFail

オブジェクトの実行に失敗した(不良判定になった)とき、直ちにシーケンス全体を中断し、それ以降のオブジェクトを処理しないように指定

デフォルト: False

CenterPointObject

オブジェクトの中心点として用いられる位置を指定

このプロパティーを“Screen”に設定すると画面上の任意の位置にオブジェクトを配置できますが、他のビジョンオブジェクトを指定した場合、そのオブジェクトのPixelX, PixelYリザルトに中心点が設定されます。

CenterPntObjResult

CenterPointObjectプロパティーからどのリザルトを使うのかを指定

Allを指定すると、指定されたビジョンオブジェクトリザルトのすべて (NumberFound)にTextオブジェクトが適用されます。

デフォルト: 1

CenterPntOffsetX サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Xオフセットを設定、または返す
CenterPntOffsetY サーチウィンドウの中心をCenterPointObjectプロパティーで位置決めしたあとに、Yオフセットを設定、または返す
Caption

見出しをTextオブジェクトに割りあてる

デフォルト: 空欄

CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

FailColor オブジェクトの検出不良時の色を選択
Font 描画する文字の書式を設定します。
FontBold フォントを太字にします。 (SPEL+プログラムからのみ有効)
FontItalic フォントをイタリックにします。(SPEL+プログラムからのみ有効)
FontName フォントの名前を設定します。(SPEL+プログラムからのみ有効)
FontSize フォントのサイズをポイントで設定します。(SPEL+プログラムからのみ有効)
Graphics

表示するグラフィックを指定

デフォルト: 1 - All

LabelBackColor オブジェクトラベルの背景の色を設定
TextBackColor

文字の背景の色を設定

デフォルト: Transparent (透明)

Name

Textオブジェクトに独自のオブジェクト名を割りあて

デフォルト: Text01

PassColor

オブジェクトの検出良時の色を選択

デフォルト: LightGreen

ResultObject 描画するビジョンオブジェクトを指定
ResultText1 描画するリザルトを指定
ResultText2 描画するリザルトを指定
ResultText3 描画するリザルトを指定
ShowLabel 文字列にラベルを付与するかを指定
SearchWin

実行時のみ

1コールでサーチウィンドウの左端, 上端, 高さ, 幅のパラメーターを設定、または返す

SearchWinHeight 被検索領域の高さを定義 (単位: ピクセル)
SearchWinLeft 被検索領域の最左端を定義 (単位: ピクセル)
SearchWinTop 被検索領域の最上端を定義 (単位: ピクセル)
SearchWinWidth 被検索領域の幅を定義 (単位: ピクセル)
UserText ユーザー任意文字列を設定します

Textオブジェクトリザルト
下の一覧は、Textオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Passed 検出結果が良か否かを返す
Found リザルトが取得できたかどうかを返す
PixelX 文字列描画位置のX座標をピクセルで返す
PixelY 文字列描画位置のY座標をピクセルで返す

Textオブジェクトの使用方法
Vision Guide Textオブジェクトの使い方を理解するための基礎を説明してきました。
Textオブジェクトを使用するのに必要な手順は、次のとおりです。

  • 新規Textオブジェクトの作成方法
  • サーチウィンドウの位置とサイズの設定
  • 文字列を設定
  • Textオブジェクトの実行と画面の確認

Step 1: 新規Textオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Text]ボタンをクリックします。
  2. Textオブジェクトボタンの上に[Text]アイコンが表示されます。
  3. [Text]アイコンをクリックして、Vision Guideウィンドウのイメージディスプレイへドラッグします。オブジェクトの名前は、自動的に作成されます。例えば、シーケンスに作成された最初のTextオブジェクトの場合は、4. “Text01”となります。(名前の変更方法については、後で説明します。)

Step 2: サーチウィンドウの位置とサイズの設定
画面には、下図のようなTextオブジェクトが表示されます。


新規Textオブジェクト

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サーチウィンドウ
  1. Textオブジェクトの名称ラベルをクリックし、マウスを押し続けながら、Textオブジェクトをドラッグして、文字列を描画したい位置へサーチウィンドウの左上コーナーを合わせます。
  2. サイズハンドルをクリックして、マウスをドラッグすると、Textオブジェクトサーチウィンドウのサイズが変更できます。適当な大きさに調整します。(サーチウィンウの左上を基準に文字列が描画されます)

Step 3: 文字列を設定

  1. 描画したいリザルトを持つビジョンオブジェクトをResultObjectで指定します。 ResultObjectで選択できるビジョンオブジェクトは、ビジョンシーケンス内でTextオブジェクトよりも前に実行される必要があります。
  2. ResultText1 ~ 3から、描画したいリザルト名を選択します。
  3. リザルト以外の文字列を描画する場合は、UserTextプロパティーを編集します。
  4. Fontプロパティーを編集し、フォントを調整します。Fontプロパティーを開くと、次の設定ウィンドウが表示されます。フォントの書体, 大きさ, スタイルが設定できます。

Step 4: Textオブジェクトの実行と画面の確認
実行パネルのオブジェクトの[Run]ボタンをクリックします。Textオブジェクトに設定された文字列が画面に描画されます。描画される文字に問題がある場合は、プロパティーの調整を行ってください。

Textオブジェクトで描画される文字列
Textオブジェクトで描画される文字列のフォーマットは、下記の通りです。

記号 内容
a シーケンスのステップ番号
b オブジェクト名
c サーチウィンドウ
d UserText
e ResultText1
f ResultText2
g ResultText3

文字列は、上からUserText, ResultText1, ResultText2, ResultText3の順番で描画されます。UserTextが空欄の場合や、ResultText1~3の値が、“None”の場合は、その部分は描画されません。文字列がサーチウィンドウに入りきらない場合、その部分は描画されません。

Decisionオブジェクト

Decisionオブジェクトの概要
Decisionオブジェクトは、指定したビジョンオブジェクトの成功または失敗に基づいてシーケンス実行のフローを制御するために使用されます。

Decisionオブジェクトのプロパティー
Decisionオブジェクトで使われるプロパティーの一覧を次に示し、簡単に説明します。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
ConditionObject

同一シーケンス内のDecisionオブジェクトより前にあるビジョンオブジェクトを指定します。

その結果を用いて、DecisionオブジェクトのTrue分岐またはFalse分岐のどちらかのシーケンスフローを使用するかを決定します。

Description

ユーザー指定の説明を設定

デフォルト: 空欄

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

Name

Decisionオブジェクトに独自のオブジェクト名を割りあて

デフォルト: Decision01

TrueCond

ConditionObject で指定したビジョンオブジェクトのPassedリザルトを用いて、True分岐に進む条件を指定します。

TargetPassed: PassedリザルトがTrueの場合、True分岐に進みます。TargetFailed: PassedリザルトがFalseの場合、False分岐に進みます。TargetNoExec: ビジョンオブジェクトが実行されなかった場合に、True分岐に進みます。

デフォルト: 0-TargetPassed

Decisionオブジェクトリザルト
Decisionオブジェクトにリザルトはありません。

Decisionオブジェクトの使用方法
Vision Guide Decisionオブジェクトの使い方を理解するための基礎を説明してきました。
Decisionオブジェクトを使用するのに必要な手順は、次のとおりです。

  • 新規Textオブジェクトの作成方法
  • 条件分岐の設定
  • 実行オブジェクトの設定と実行
  • Coordinates オブジェクトの使い方

Step 1: 新規Decisionオブジェクトの作成

  1. DecisionオブジェクトのConditionObjectプロパティーに設定するオブジェクトを事前に追加します。この例では、Geometricオブジェクトを追加します。
    Decisionオブジェクトは、Decisionオブジェクトの前に実行する必要があるConditionObjectを設定しないと使用できないため、シーケンスの先頭には追加することができません。
  2. Vision Guideツールバー - [全ツール] - [Decision]ボタンをクリックします。
  3. [Decision]アイコンをクリックして、Vision Guideウィンドウの画像表示部へドラッグします。
    オブジェクトの名前は、自動的に作成されます。例えば、シーケンスに作成された最初のDecisionオブジェクトの場合は、“Decision01”となります。(オブジェクト名の変更方法については後述します。)Decisionオブジェクトはサーチウィンドウを持たないため、フローチャートやシーケンスツリーからステップ位置を確認してください。

Step 2: 条件分岐の設定

  1. DecisionオブジェクトのConditionObjectプロパティーのドロップダウンリストから結果を確認するオブジェクトを選択します。ConditionObject は、シーケンス内でDecisionオブジェクトよりも前に実行されるオブジェクトのみ設定できます。この例では、ConditionObjectをGeom01に設定します。
  2. DecisionオブジェクトのTrueCondプロパティーを設定して、(1)で選択したオブジェクトのPassedリザルトの値を用いて、True分岐に進む条件を指定します。
    デフォルトの0-TargetPassedを指定されている場合は、(1)のオブジェクトのPassedリザルトがTrueの時に、True分岐に進んでビジョンオブジェクトが実行されます。
    PassedリザルトがFalseの時に、True分岐に進んでビジョンオブジェクトを実行したければ、TrueCondプロパティーをTargetFailedに指定します。

Step 3: オブジェクト追加と実行

  1. DecisionオブジェクトのTrue及びFalse 分岐で実行するオブジェクトを追加します。
    Vision Guideツールバーから追加したいオブジェクトを選択した後、それをフローチャートにドラッグして、Decisionオブジェクトの分岐内に配置します。各分岐には、必要な数のオブジェクトを配置できます。分岐内には、Decisionオブジェクトを配置することはできません。
  2. Decisionオブジェクトの分岐合流後に、オブジェクトを追加します。
    必要に応じて、Decisionオブジェクトが分岐合流後、シーケンスにオブジェクトを追加できます。
  3. ビジョンシーケンスの動作を確認する。
    DecisionオブジェクトのCondicionObjectで指定されたオブジェクトのリザルトと、TrueCondプロパティーの設定値の組み合わせにより、実行する分岐が変化します。シーケンス全体を実行することも、シーケンスをステップ実行して動作を確認することもできます。

Step 4: Coordinates オブジェクトの使い方
場合によっては、DecisionオブジェクトのTrueまたはFalse分岐でのオブジェクト処理に基づいて、ピクセル、カメラ、またはロボットの座標の取得が必要になります。そのような場合、座標結果を提供するオブジェクトの結果をCoordinatesオブジェクトに保存してから、プログラムでCoordinatesオブジェクトの結果から座標にアクセスできます。

  1. Coordinatesオブジェクトをシーケンスに追加します。
  2. 座標を保存するオブジェクトのCoordObjectプロパティーを設定します。任意の数のオブジェクトが同じCoordinatesオブジェクトに座標を格納できます。 CoordObjectを使用する各オブジェクトが実行されると、座標が上書きされます。この例では、Geom01とCorr01の両方でCoordObjectがCoords01に設定されています。
  3. プログラムで、VGetを使用してCoordinatesオブジェクトから座標を取得します。この例では、Geom01がパスした場合、Geom01座標結果がCoords01にコピーされます。 Geom01がパスしない場合、Corr01が実行されます。 Corr01がパスした場合、Corr01座標結果がCoords01にコピーされます。SPELプログラムでは、Coords01からロボットの座標を取得することできます。
    VGet test.Coords01.RobotXYU, found, x, y, u  
    

Coordinatesオブジェクト

Coordinatesオブジェクトの概要
Coordinatesオブジェクトは、他のオブジェクトのリザルトを格納するために使用します。主に、Decisionオブジェクトを含むシーケンスで使用されます。
Decisionオブジェクトを持つシーケンスでは、分岐機能の実行に応じて、目的のリザルトが得られるオブジェクトが変化します。各分岐のオブジェクトに、座標結果を格納するためのCoordinatesオブジェクトを設定することで、Coordinatesオブジェクトから目的の結果を取得することができます。
Coordinatesオブジェクトは、リザルトを格納したいオブジェクトから指定します。下記のプロパティーからCoordinatesオブジェクトを選択します。

プロパティー 説明
CoordObject

リザルトを格納するCoordinatesオブジェクトを指定格納処理はオブジェクトが実行される時に行われ、Decisionの分岐機能などで実行されなかった場合、コピー処理は行われません

デフォルト:None

CoordObjectプロパティーを指定できるオブジェクトはPixel、Camera、及び、Robot X、Y、Uを持つオブジェクトのみです。CoordObjectプロパティーに指定するCoordinatesオブジェクトは、設定するオブジェクトのステップの前後を問わずどこのステップでも指定可能です。Coordinatesオブジェクトは複数オブジェクトのCoordObjectプロパティーから指定できます。この場合、各オブジェクトが実行されるたびに格納プロセスが実行されて、格納されたリザルトが上書きされます。

Coordinatesオブジェクトのプロパティー
下の一覧は、Coordinatesオブジェクトのプロパティーを簡単に説明した概略です。各プロパティーの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

プロパティー 説明
CurrentResult オブジェクトウィンドウのリザルトリストに表示するリザルト、または、1つのサーチウィンドウ内にある対象物などの複数のリザルトを、システムが検出する設定のときにデータを返すリザルトを定義
Description

ユーザー指定の説明を設定

デフォルト: 空欄

Enabled

このオブジェクトを実行するかを指定

デフォルト: True

Name

Coordinatesオブジェクトに独自のオブジェクト名を割りあてる

デフォルト: Coords01

Coordinatesオブジェクトのリザルト
下の一覧は、Coordinatesオブジェクトリザルトを簡単に説明した概略です。各リザルトの詳細は、以下を参照してください。
"Vision Guide 8.0プロパティー&リザルトリファレンス"

リザルト 説明
Angle 検出されたポイントの角度を返す
CameraX カメラ座標系における、検出オブジェクトのX座標を返す
CameraY カメラ座標系における、検出オブジェクトのY座標を返す
CameraXYU

実行時のみ

カメラ座標系における検出オブジェクト位置のCameraX座標, CameraY座標, CameraU座標を返す

NumberFound 検出されたポイントの数を返す
Found オブジェクトが検出されたかどうかを返す
Passed 検出結果が良か否かを返す
PixelX ピクセル座標系における、検出オブジェクトのX座標を返す
PixelY ピクセル座標系における、検出オブジェクトのY座標を返す
PixelXYU

実行時のみ

検出オブジェクト位置のPixelX座標, PixelY座標, PixelU座標をピクセルで返す

RobotX ロボット座標系における、検出オブジェクトのX座標を返す
RobotY ロボット座標系における、検出オブジェクトのY座標を返す
RobotU ロボット座標系における、検出オブジェクトの回転量を返す
RobotXYU

実行時のみ

ロボット座標系における、検出オブジェクト位置のX座標, Y座標, 回転量を返す

ShowAllResults

特定のビジョンオブジェクトのリザルトすべてを、表形式でダイアログに表示

リザルトの比較が簡単にできます。

Coordinatesオブジェクトの使用方法
Coordinatesオブジェクトの作成方法と使用方法を、下記の項目について説明します。

  • 新規Coordinatesオブジェクトの作成方法
  • CoordObjectの設定
  • シーケンスの実行
    次に説明するステップを開始する前に、新規ビジョンシーケンスを作成するか、使用するビジョンシーケンスを選択してください。

Step 1: 新規Coordinatesオブジェクトの作成

  1. Vision Guideツールバー - [全ツール] - [Coordinates]ボタンをクリックしてください。
  2. [Coordinates]オブジェクトツールバーボタンの上に、Coordinatesアイコンが表示されます。
  3. Coordinatesアイコンをクリックして、Vision Guideウィンドウの画像イメージ表示部にドラッグしてください。
  4. オブジェクト名は自動的に作成されます。この例では、このシーケンスで最初に作成されたCoordinatesオブジェクトなので、 “Coords 01”というオブジェクト名になります。(オブジェクト名の変更方法については後述します。)

Step 2: CoordObjectの設定
Coordinatesオブジェクトにリザルトを格納したいオブジェクトを追加します。前述でCoordinatesオブジェクトを追加しましたが、リザルトをコピーしたいオブジェクトとCoordinatesオブジェクトのステップ位置の前後関係に制約は無いため、状況に応じてステップ位置を入れ替えてください。
オブジェクトを追加後、CoordObjectプロパティーからCoordinatesオブジェクトを選択し、指定します。

Step 3: シーケンスの実行
シーケンスを実行します。
シーケンス実行後、Coordinatesオブジェクトのリザルトを確認してください。CoordinatesオブジェクトをCoordObjectに設定したオブジェクトのリザルトが格納されています。
以下に示すフローチャートの例では、Geom01とCorr01の両方のCoordsObjectプロパティーがCoords01に設定されています。 Blob01がパスした場合、Geom01が実行されて、リザルトがCoords01に格納されます。 Blob01がパスしない場合、Corr01が実行されて、リザルトがCoords01に格納されます。 SPELプログラムでは、Coords01からロボットの座標を取得することできます。

VGet test.Coords01.RobotXYU, found, x, y, u  

1つのオブジェクトから複数のリザルトを返す

Blob, Geometric, Edge, Correlation, DefectFinderオブジェクトは、単一のサーチウィンドウ内で1つ以上の対象物を検索することができます。
ビジョンオブジェクトの複数のリザルトで作業する方法を理解していただくために、次の事項について説明します。

  • CurrentResult プロパティー
  • NumberToFind プロパティー
  • NumberFound リザルト
  • ShowAllResults リザルト

ビジョンオブジェクトのデフォルトの対象物数と設定可能な最大対象物数
Blob, Geometric, Edge, Correlation, DefectFinderオブジェクトは、デフォルトプロパティーの設定では、サーチウィンドウ内に1つの対象物しか検索することができません。これは、NumberToFindプロパティーのデフォルトが “1”に設定されているからです。
NumberToFindプロパティーを “1”より大きい数に設定すると、ビジョンオブジェクトは、設定された数と同じ数の対象物を検出しようとします。
NumberToFindプロパティーを “All”に設定するとオブジェクトの最大検出数(100個)までの検出を試みます。

NumberToFindプロパティーを設定し、ビジョンオブジェクトを実行してください。現在の画像イメージ中の容認基準を満たす複数の対象物が検出されて表示されます。(foundオブジェクトに返された位置を示す十字線がある緑色のボックス) また、検出されたブローブの内で、CurrentResultとみなされたブローブが、その他のブローブに比べてより明るい緑色で強調表示されます。

検出された対象物のソート順番
複数検出のオブジェクトの初回実行時には、CurrentResultプロパティーは自動的に “1”に設定され、ビジョンオブジェクトの複数リザルトについて1番目のリザルトが、オブジェクトウィンドウのリザルトリストに表示されることになります。
Correlation、Geometricオブジェクトの場合、1番目のリザルトは最高スコアを持つリザルトです。(このCorrelationオブジェクトの検出されたすべての対象物を比べて) 2番目のリザルトは2番目に高いスコアを持つリザルトになります。
Blob、DefectFinderオブジェクトの場合、1番目のリザルトはSizeToFindプロパティーとSortプロパティーの値に基づいて返されたリザルトになります。(例えば、SizeToFindを “Largest”に設定すると、1番目のリザルトは検出された最大のオブジェクトになります。) リザルトのソートの詳細は、Vision Guide 8.0プロパティー&リザルトリファレンス「SizeToFindプロパティーとSortプロパティー」を参照してください。

ビジョンオブジェクトの複数リザルトを確認する方法
リザルトリストのヘッダーを注意深く見てみると、“1/10”と表示されている場所があるのに気がつきます。(この場合、例として、BlobオブジェクトのNumberToFindプロパティーを “10”に設定していると想定してください。)
この表示は、CurrentResultが10個の検索対象物(NumberToFindプロパティーで定義されている)のうちの1番目であるということを示しています。
リザルトリストのヘッダーに表示されている“1/10”の中の2番目の数値(ここでは “10”という数値)は、NumberToFindプロパティーに設定されている値であり、実際に検出された対象物の個数ではない、ということに注意してください。
10個の対象物を検出したい場合に、検出個数が5個とされる場合があります。この場合、検出された対象物の上位10個までがリザルトとして計算され表示されるべきなのに、なぜ5個の対象物だけしか表示されないのかと、疑問に思われるでしょう。ここで説明する方法によって、どうして他の5つの対象物が検出されなかったかを調べることができます。
見たいブローブを表示するようにCurrentResultプロパティーの値を変更することによって、検出したい複数ブローブのうちのどのブローブについても、そのリザルトを確認することができます。
このようなリザルトを確認するには、CurrentResultプロパティーの設定値フィールドに直接、番号を入力してください。または、CurrentResultプロパティーの設定値フィールドにカーソルを動かして、[Shift]キー + [↓]キー、または[Shift]キー + [↑]キーを使ってリザルト内を検索してください。
CurrentResultプロパティーの値、またはリザルトリストのヘッダーを参照することによって、どの順番のリザルトがリザルトリストに表示されているかを知ることができます。NumberToFindを10に設定すると、1番目のリザルトは“1/10”と表示されます。2番目のリザルトは“2/10”、3番目のリザルトは“3/10”などとなります。

注意


CurrentResultプロパティーの値を変更すると、プログラムでVGetした結果も変更されます。例えば、SPEL+プログラム中で、ビジョンオブジェクトからの値をVGetで取得するとき、CurrentResultプロパティーには3の値が設定されているとすると、VGetの命令は、RobotXYU値の3番目を返すことになります。このように、CurrentResultの設定変更は、SPEL+プログラムの結果にも影響しますので、注意してください。

ヒント: 複数リザルトを取得する場合には、VGet命令に指定するリザルト名で明示的にリザルト番号を指定してください。

VGet seqname.objname.RobotXYU(1), found, X, Y, U  

NumberFoundリザルトの使用方法
NumberFoundプロパティーは、実際に検出されたブローブの個数を表示することができるため、非常に便利です。このリザルトは、SPEL+言語からも利用できるので、SPEL+プログラムを使って、適切な個数のリザルトが検出されたことを確認し、あるいは検出された個数を計算し、あるいは他のものがどのくらいあるかを計算することができます。以下の例をご覧ください。
検出されたリザルトの数が5未満であるかを調べるためのコードの一部分を示します。

VGet seqname.objname.NumberFound, numfound  
If numfound < 5 Then  
     'put code to handle this case here  

ビジョンが1つのVRunでできるだけ多くのパーツを検出するのに使われるという状況を考えてください。ロボットはすべての検出したパーツがコンベアに乗せられるまで、一つ一つパーツを取ります。この例は、ロボットに検出した各パーツを取り上げて、それから作動中のコンベア上の同じ位置に1つずつ落とすようにさせるコードの一部分を示しています。

VRun seqname  
VGet seqname.objname.NumberFound, numfound  
For i = 1 to numfound  
  VGet seqname.objname.RobotXYU(i), found, X, Y, U  
If found = True Then  
   'Set coordinates found from vision  
    VPick = XY(X, Y, -100.000, U)  
  Else  
    Print "Vision Error: part not found"  
  EndIf  
  
  Jump Vpick           'Jump to Vision Pickup position  
  On Gripper           'Turn on vacuum  
  Wait .1  
  Jump Vconvey         'Jump to Conveyor Position to drop part  
  Off Gripper          'Turn off vacuum  
  Wait .1             
Next count  

複数リザルトを一度にすべて確認する方法
BlobオブジェクトとCorrelationオブジェクトの複数リザルト機能に関する、非常に便利な機能のひとつに、ShowAllResultリザルトがあります。
例えば、それぞれのリザルトの最高スコアと2番目のスコアを比較して見たい場合、また、3番目の対象物が検出された後で、大きなスコアの落差が見つかる場合などで、ShowAllResultsリザルトを使うと、すべてのリザルトを一度に全部確認することができます。
ShowAllResultsリザルト値のフィールドをクリックすると、1個のボタンが表示されます。そのボタンをクリックするとダイアログが表示されて、現在のビジョンオブジェクトのリザルト全部を表示します。

ShowAllResultsリザルトの例

複数リザルトを使用して検索上の問題を解決する方法
同一生産ロットであっても、ときには作業対象のパーツに明らかな相違がある場合や、1つのパーツに類似する2つ以上の対象物がある場合があります。
このような場合、Acceptプロパティーに適切な値を設定したと思っても、他のパーツを間違えて検索してしまうことがあります。こうした問題は、原因が判明しづらく、また、Acceptプロパティーの適切な値を予想するのも困難です。
リザルトダイアログは、上記の問題やその他のさまざまな問題を解決するために作成されました。
1つのパーツ上の1つの対象物を検出したい場合は、複数リザルトを表示することによって、なぜ検出したい主要な対象物として、二次的な対象物を返すのか確認することができます。このような問題は、一般的に次のような理由によって生じます。

  1. サーチウィンドウ中の2つ以上の対象物が非常に類似しているために、Scoreリザルトが非常に近い値を持つ場合
  2. Confusionプロパティー、またはAcceptプロパティーが十分高く設定されていないため、本来検出したい対象物よりも低いスコアを持つ他の対象物がAcceptプロパティーの設定値を満たしてしまう場合

以上の2つの状況は、Vision Guideを初めてご使用になる方にとって、サーチウィンドウ内で1つの対象物を検索する場合に極めて混同しやすいので、ご注意ください。
ときには本来検出したい対象物が検出され、またときには別の対象物が検出されるような場合には、リザルトダイアログを使って問題を特定してください。問題の原因を調べるための手順を、次に示します。

  1. NumberToFindプロパティーを “3”以上に設定してください。
  2. Vision Guide 8.0開発環境からビジョンオブジェクトを実行してください。
  3. ShowAllResultsプロパティーの設定値フィールドにあるボタンをクリックして、検出結果ダイアログを表示してください。
  4. 検出された上位3つ、あるいはそれ以上の対象物のスコアを確認してください。
  5. 対象物が1つ、または2つだけ検出された場合 (Vision Guide 8.0は検出されたとみなされる対象物のスコアを設定するだけです)は、対象物が “1”より多く検出されるようにAcceptプロパティーを少なくして、ビジョンオブジェクトを再度実行してください。(Acceptレベルは、ShowAllResultsダイアログを確認したあとで、元に戻すことができます。)
  6. [ShowAllResultsプロパティー]ボタンをクリックして、検出結果ダイアログを開いてください。
  7. 検出された上位3つ、あるいはそれ以上の対象物のスコアを確認してください。

上述のように、検出された上位3つ、あるいはそれ以上の対象物のスコアを確認すると、問題の原因が明確になります。ほとんどの場合、このような問題は、次に示すどちらかの場合に発生します。

  • 検出されたそれぞれの対象物が、Acceptプロパティーの設定値より大きいスコアを持っている場合
    このような場合には、Confusionプロパティーをより高く設定し、適切な対象物だけを常に強制的に検出するようにして、Acceptプロパティーのしきい値に一致するようなその他の対象物は返されないようにしてください。また、Acceptプロパティーの値を変更することもできます。
  • それぞれの対象物のスコアが非常に近接している場合このような場合には、次の処理を行って、本来検出したい対象物が区別できるようにしてください。
    • サーチウィンドウを再調整し、検出対象物としてランダムに返される対象物がサーチウィンドウ内部に入らないようにします。
    • 本来検出したい対象物を再度、モデルに登録します。
    • アプリケーションの照明条件を調整して、本来検出したい対象物が、まちがって検出してしまう対象物のスコアより高いスコアを取得するようにしてください。

SPEL+ 言語から複数リザルトにアクセスする方法
すでに説明したとおり、CurrentResultプロパティーによって、どのリザルトがリザルトリストに表示されるかを指定することができます。
また、このプロパティーによって、リザルトとして何番目のリザルトを返すかを指定することができます。言い換えると、Blobオブジェクトから返される3番目のリザルトからAreaリザルトを得たい場合は、CurrentResultプロパティーを3に設定しなければなりません。
オブジェクトウィンドウのプロパティーリストを使ってCurrentResultプロパティーを設定する方法については、すでに説明したとおりです。ここでは、SPEL+言語から複数リザルトにアクセスする方法について説明します。
SPEL+言語から複数リザルトへのアクセスは、得られるResultの隣に添字番号をもつCurrentResultプロパティーが参照をつけられる配列の型のように、Resultを扱います。下の1番目の例は、3番目のAreaリザルトを得て、それをSPEL+言語から領域という変数に入れる方法を示します。

VGet seqname.objname.Area(3), area  

下の2番目の例は、同じく3番目のAreaリザルトを得ますが、今回はそれをArea()と呼ばれる配列の第3要素の値として代入する方法を示します。

VGet seqname.objname.Area(3), area(3)  

変数名はまた、上の2番目の例のように固定された要素としてよりも、配列の要素を表すのに使われます。”var”という変数はAreaリザルトの添字として使われることに注目してください。

VGet seqname.objname.Area(var), area(var)  

4番目の例は、1つのビジョンオブジェクトを使って、パーツのようなまとまり (10までとします) を検出すると仮定してください。ロボットでそれらのパーツ (例えばペンだとします) を選ぶとすると、検出された各パーツの座標値を表すために、X座標, Y座標, U座標を変数に入れる必要があります。下のコードは、これらの座標をRobotXYUリザルトから取り出して、あとでロボットを動かすのに使われるX配列, Y配列, U配列の中に座標を入れることができます。

Function test  
  Boolean found(10)  
  Integer numfound, i  
  Real X(10), Y(10), U(10)  
  
  Jump camshot   'move camera into position snap shot  
  
  VRun seq01     'run the vision sequence to find the pens  
  
  VGet seq01.blob01.NumFound, numfound     'how many found  
  
  For i = 1 to numfound    'get robot coords  
    VGet seq01.blob01.RobotXYU(I), found(i), X(i), Y(i), Z(i)  
  Next i  
  'Add code for robot motion here……  
Fend  

自動マルチオブジェクト検索

いくつかのビジョンオブジェクトには、複数のオブジェクトを使った自動検索を実行できます。検索に使用するオブジェクトは、他のオブジェクトからのすべてのリザルトを使用すると指定した場合、自動的に作成されます。この機能により、特徴物の検索に1つ以上のオブジェクトを設定し、実行時に親オブジェクトのすべてのリザルトに対してオブジェクトを自動的に作成、実行できます。
複数オブジェクトの自動検索は、CenterPointObjectおよびFrameと併用できます。

使用例: CenterPointObject

  1. シーケンスを作成し、Blobオブジェクトを追加します。NumberToFindに“10”を設定します。

  2. Polarオブジェクトを作成します。CenterPointObjectにBlobオブジェクトを設定し、CenterPntObjResultに“All”を指定します。

  3. Polarオブジェクトをティーチします。

  4. シーケンスを実行します。検出したブローブにPolarオブジェクトのインスタンスを作成、実行します。10個のブローブが検出されると、Blobオブジェクトのリザルトを中心に10個のPolarオブジェクトが作成されます。以下の図では、検出したブローブに対して、7つのPolarオブジェクトが作成されています。

自動マルチオブジェクト検索で、子オブジェクトが複数のリザルトを検出できる場合、子オブジェクトのそれぞれのインスタンスに対して1つのリザルトが検出されます。
自動マルチオブジェクト検索には、Line, Edge, LineInspectorオブジェクトも使用できます。
StartPointObjectとEndPointObjectを指定し、StartPntObjResultとEndPntObjResultに“All”を設定します。

例:

  1. 新規シーケンスを作成し、ImageFileに平行する2列のブローブを選択します。 (下図参照)

  2. Blob01を作成し、NumberToFindに“3”を、Sortに“PixelX”を設定します。1列目を検出できるようにサイズと位置を調整します。

  3. Blob01をコピー、ペーストしてBlob02を作成します。2列目のブローブを検出できるようにサイズと位置を調整します。

  4. Lineオブジェクトを作成します。 StartPointObjectを“Blob01”に、StartPntObjResultを“All”に設定します。EndPointObjectを“Blob02”に、EndPntObjResultを“All”に設定します。

  5. シーケンスを実行します。StartPointObjectとEndPointObjectの結果の各ペアに対してLineオブジェクトのインスタンスが作成されます。

使用例: CheckClearanceFor
2点支持のグリッパーでワーク両端を把持するアプリケーションで使用するシーケンスを例にして、自動検索の1つであるCheckClearanceFor機能を説明します。シーケンスは、ワークを検出する“Geometric”と、把持干渉せずグリッパーを入れる隙間の有無を判定する“Blob”などの2種類のオブジェクトから構成されます。

グリッパー可動範囲に他のワークがあり、グリッパーがワークと干渉するため、ワークを把持することができない。 グリッパー可動範囲に他のワークがなく、他のワークに干渉せずにグリッパーが入る隙間があるため、ワーク (a)を把持することができる。

例:

  1. ワークを検出する親オブジェクトとしてGeometric (Geom01)を作成し、モデルウィンドウの位置とサイズを設定します。(下図参照)
    あわせて、関連するプロパティーの設定を行います。この例では、複数ワークを検出するため、NumberToFindを“All”に設定します。
    CheckClearanceFor機能で使用できる親オブジェクトは、Vision Guide 8.0 プロパティー&リザルトリファレンスを参照してください。

  2. 把持干渉を判定する子オブジェクトとしてBlob (Blob01, Blob02)を作成し、Geometricのモデルウィンドウの両端に配置します。(下図参照)
    あわせて、関連するプロパティーの設定を行います。

    キーポイント


    親オブジェクトで検出するワークが回転する場合は、子オブジェクトのSearchWinTypeを“RatatedRectangle”に設定してください。“Rectangle”の場合、サーチウィンドウが回転できずに、回転角度が追従できなくなります。

    子オブジェクトであるBlob01とBlob02のプロパティーを設定します。

    1. CheckClearanceForを“Geom01” に設定します。(下図参照)
      この機能により、シーケンス実行時に、親オブジェクトのすべてのリザルトに対して子オブジェクトを自動的に作成し、実行します。

      CheckClearanceFor機能で使用できる子オブジェクトは、Vision Guide 8.0 プロパティー&リザルトリファレンスを参照してください。

      キーポイント


      CheckClearanceForを設定した子オブジェクトは、他のオブジェクトからは設定することができません。(この例では、Blob01のCheckClearanceForを “Geom01”に設定した場合、Blob02のCheckClearanceForのドロップダウンリストにBlob01は表示されません。)

    2. ClearanceConditionを設定します。
      子オブジェクトの検出結果による把持判定を設定します。ClearanceConditionを“NotFound”に設定して、Foundリザルトが“False”になった場合、自身のClearanceOKを“True”として、把持可能と判定します。“Found”に設定した場合は、逆の判定となります。
      この例では、ワークの両端に物体がなく、グリッパーを入れる隙間があることを確認したいので、“NotFound”に設定にします。(下図参照)

    3. シーケンスを実行します。
      下図のように緑色の実線と赤色の破線で囲まれた親オブジェクトGeom01の検出結果が表示されます。緑色の実線で囲まれた検出結果は、把持可能なワークを示します。(子オブジェクトが把持可能と判定されました。)赤色の破線で囲まれた検出結果は、把持不可と判定されたワークを示します。

      把持可能なワークかどうかを値として確認する場合は、親オブジェクトGeom01のClearanceOKを参照してください。

    キーポイント


    CheckClearanceFor機能を使用し把持判定を行う場合は、必ずシーケンス実行させてから、親オブジェクトのClearanceOKを参照してください。親オブジェクトのClearanceOKは、子オブジェクトが実行されて初めて決定されます。

すべてのビジョンオブジェクトラベルの表示、非表示の切り替え

全ラベル非表示 (ビジョンツールバーのみ)

[全ラベル非表示]ボタンは、1つのシーケンス中の複数のビジョンオブジェクトで作業するときに、画面が混雑するのを防ぐのに便利な機能です。
Vision Guideツールバーの[全ラベル非表示]ボタンは、オンオフボタンです。ボタンを押すと、選択されているビジョンオブジェクト以外のラベルが消え、表示されているオブジェクトが見やすくなります。
[全ラベル非表示]ボタンが出ているとき (押されていない状態)は、画像イメージ表示部に表示されているビジョンオブジェクトのそれぞれについてラベルが表示されます。

キーポイント


  • [全ラベル非表示]ボタンの機能は、[全グラフィック表示]ボタンの機能と一緒に使われることがあります。この場合、[全グラフィック表示]ボタンを押してあっても、[全ラベル非表示]ボタンが押されていれば、ラベルは表示されません。
  • ビジョンシーケンスで作業しているとき、[全ラベル非表示]ボタンを押していないのに表示されないビジョンオブジェクトがある場合は、そのビジョンオブジェクトのGraphicsプロパティーが “none”に設定されている可能性があります。このプロパティーが “none”になっていると、そのオブジェクトの全部についてグラフィックを表示しない、という設定になります。

作業中のプロジェクトにビジョンシーケンスがない場合は、[全ラベル非表示]ボタンが薄い灰色になっていて、アクセス不可能となっています。

すべてのビジョンオブジェクトグラフィックの表示

全グラフィック表示 (ビジョンツールバーのみ)

[全グラフィック表示]ボタンは、作業中のビジョンシーケンスのビジョンオブジェクトについて、すべてのグラフィック (サーチウィンドウ, モデル原点, モデルウィンドウ, 直線, ラベル)の表示を、ボタンのクリック操作だけで迅速に行う機能を備えています。
このボタンは、個々のビジョンオブジェクトのGraphicsプロパティーの設定に優先するので、各ビジョンオブジェクトのGraphicsプロパティーをそれぞれ修正しなくても、すべてのビジョンオブジェクトを迅速に表示することができます。

キーポイント


[全ラベル非表示]ボタンの機能は、[全グラフィック表示]ボタンの機能と一緒に使われることがあります。この場合、[全ラベル非表示]ボタンが優先です。[全グラフィック表示]ボタンを押してあっても、[全ラベル非表示]ボタンが押してあれば、ラベルは表示されません。

作業中のプロジェクトにビジョンシーケンスがない場合は、[全グラフィック表示]ボタンが薄い灰色になっていて、アクセス不可能となっています。

カレントオブジェクトのみ表示

カレントオブジェクト表示 (ビジョンツールバーのみ)

シーケンスに複数のオブジェクトがある場合、必要なオブジェクトを選択し作業することが難しい場合があります。[カレントオブジェクト表示]ボタンをクリックすると、現在選択中のオブジェクトのみ表示されます。再度すべてのオブジェクトを表示するには、もう一度ボタンをクリックします。カレントオブジェクトのみ表示する場合、オブジェクトリストでどのオブジェクトを表示するかを選択できます。