VISEDGE
(ステートメント)

ウィンドウ内のエッジを計測します。

VISEDGE<ウィンドウ番号>,<X座標>,<Y座標>,<ステップ>,<処理対象>,
<レベル>[,<モード>[,<2値下限>[,<2値上限>]]]

<ウィンドウ番号>
ウィンドウの番号を指定します。(0~511)
<X座標>
X座標を指定します。(0~511)(Ver. 1.6以降:-16384~16383)
<Y座標>
Y座標を指定します。(0~479)(Ver. 1.6以降:-16384~16383)

画面外を指定した場合、「ウィンドウ異常」になります。
<ステップ>
エッジの走査方向と間引き間隔を指定します。(-511~511)

<処理対象>
計測する対象を指定します。(0~2)
0: 黒から白への変化点(エッジ)
1: 白から黒への変化点
2: 変化点(0、1の両エッジ)

<レベル>
エッジを検出するレベルを指定します。(0~512)
<モード>
エッジの検出方法を指定します。省略時は0が指定されます。
0: 平均輝度の絶対値
1: 平均輝度の差分値
2: 面積の絶対値
3: 面積の差分値

<2値下限>
2値化する際の下限レベルを指定します。(0~254 下限 < 上限)
省略時は0が指定されます。
<2値上限>
2値化する際の上限レベルを指定します。(1~255 下限 < 上限)
省略時255を指定します。

-
処理範囲をウィンドウで指定します。○:可 ×:不可直線(2点指示)Windmake P○直線(長さ、角度)Windmake L○円Windmake C×楕円Windmake E×扇Windmake S○四角Windmake R○
-
指定したウィンドウの位置が画面をはみ出す場合、実行結果はエラーになります。
-
以下は処理結果取得関数で得ることができるデータです。VISSTATUS (n)n項目0実行結果 0=正常 -1=異常1エッジ検出数2実行時間
VISGETNUM(a、b)ba = 0 ~ 5110Unknown1X座標値2Y座標値3角度(※)4Unknown5Unknown6Unknown7Unknown8Unknown9Unknown
※処理範囲を扇(モード=0)ウィンドウで指定した場合にのみ計測結果(角度)を得ることができます。 -
処理画面はVISWORKPLNで確定した画面になります。
-
本命令はロボットコントローラではμVisionボード(オプション)が必要です。
-
ステップ数を大きくした場合、検出時間は短縮されますが、検出分解能は低くなります。
-
扇ウインドウで360°以上を設定した場合、360°以上の部分の解析を行ないます。

VISSCREEN 1,0,1
|
'描画画面0番に即時描画します。
|
VISPLNOUT 0
|
'
|
VISCLS 0
|
'
|
WINDMAKE R,1,300,20,0,0
|
'ウィンドウ1番を矩形ウィンドウに設定します。
|
CAMIN 2
|
'カメラ映像を格納メモリに取得します。
|
VISWORKPLN 0
|
'対象を格納メモリ0番に指定します。
|
VISPLNOUT 0
|
'
|
VISEDGE 1,100,100,1,0,128
|
'エッジを計測します。
|
WINDDISP 1
|
'
|
I1 = VISSTATUS(0)
|
'
|
IF I1 = 0 THEN
|
'
|
FOR I1 = 0 TO VISSTATUS(1)-1
|
|
VISCROSS VISPOSX(I1),VISPOSY(I1)
|
|
NEXT I1
|
'
|
I1 = VISSTATUS(1)
|
'
|
IF I1 = 0 THEN
|
'
|
VISLOC 10,10
|
'
|
VISPRINT "エッジは見つかりません。"
|
|
END IF
|
'
|
ELSEIF I1 <> 0 THEN
|
'
|
VISLOC 10,10
|
'
|
VISPRINT "計測できません。"
|
'
|
END IF
|
'
|
|
|