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)
    b
    a = 0 ~ 511
    0
    Unknown
    1
    X座標値
    2
    Y座標値
    3
    角度(※)
    4
    Unknown
    5
    Unknown
    6
    Unknown
    7
    Unknown
    8
    Unknown
    9
    Unknown

    ※処理範囲を扇(モード=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
'