Operation プロパティー

適用
ビジョンオブジェクト: ImageOp

解説
どの画像イメージ操作を実行するかを設定します。一部の操作ではIterationsプロパティーで繰返し回数を設定することができます。

用法

VGet  Sequence.Object.Operation, var
VSet  Sequence.Object.Operation, value
Sequence
シーケンス名かシーケンス名を示す文字列変数
Object
オブジェクト名かオブジェクト名を示す文字列変数。オブジェクトは指定されたシーケンスに存在していなければなりません。
var
プロパティーの値を示す整数変数
value
プロパティーの新しい値を示す整数または式


  • 1 - Open
    • ビジョン定数: VISION_OPERATION_OPEN
    • 収縮(3 - Erode)の次に膨張(4 - Dilate)を行うモフォロジ処理です。収縮(3 - Erode)処理で対象物と同系色の小さい画素群を消去できるため、ノイズや小さな傷、汚れなどをエッジがぼやけることなく除去できます。
      背景に対する対象物の明るさをPolarityプロパティーで設定してください。
      処理前画像

      処理後画像

      Iterations: 1

  • 2 - Close
    • ビジョン定数: VISION_OPERATION_CLOSE
    • 膨張(4 - Dilate)の次に収縮(3 - Erode)を行うモフォロジ処理です。膨張(4 - Dilate)処理で対象物と反対色の小さい画素群を消去できるため、ノイズや小さな傷、汚れなどをエッジがぼやけることなく除去できます。
      背景に対する対象物の明るさをPolarityプロパティーで設定してください。
      処理前画像

      処理後画像

      Iterations: 1

  • 3 - Erode
    • ビジョン定数: VISION_OPERATION_ERODE
    • 収縮処理を行います。対象物を細くする効果があり、照明環境などで太く見えてしまった物体を補正したり、連結している物体を意図的に分離したりできます。OCRの前処理として、文字を分離させる手段として用いることができます。
      背景に対する対象物の明るさをPolarityプロパティーで設定してください。
      処理前画像

      処理後画像

      Iterations: 1

  • 4 - Dilate
    • ビジョン定数: VISION_OPERATION_DILATE
    • 膨張処理を行います。対象物を太くする効果があり、照明環境などで細く見えてしまった物体を補正したり、隣接している物体を意図的に連結したりできます。OCRの前処理として、線分が切れてしまった文字の連結に用いることができます。
      背景に対する対象物の明るさをPolarityプロパティーで設定してください。
      処理前画像

      処理後画像

      Iterations: 1

  • 5 - Smooth
    • ビジョン定数: VISION_OPERATION_SMOOTH
    • 平滑化処理を行います。撮像環境や設定の影響で、隣接画素間での値の違いが大きい、ノイズが多いなどの場合に隣接画素間の値を平滑化し、画素値の変化を小さくします。ノイズ全般の除去に対して有効です。Iterationsプロパティーの設定によっては、エッジが、ぼやけてしまいます。注意してください。
      処理前画像

      処理後画像

      Iterations: 20

  • 6 - Sharpen1
    • ビジョン定数: VISION_OPERATION_SHARPEN1
    • シャープネス処理を行います。垂直、水平、斜め方向の輝度変化を見て、エッジを強調します。ぼやけてしまった画像を鮮鋭化することができます。7 - Sharpen2と比較し、斜め方向の輝度変化も見るため、エッジが、さらに強調される場合があります。
      処理前画像

      処理後画像

      Iterations: 1

  • 7 - Sharpen2
    • ビジョン定数: VISION_OPERATION_SHARPEN2
    • シャープネス処理を行います。垂直、水平方向の輝度変化を見て、エッジを強調します。ぼやけてしまった画像を鮮鋭化することができます。
      処理前画像

      処理後画像

      Iterations: 1

  • 8 - HorizEdge
    • ビジョン定数: VISION_OPERATION_HORIZEDGE
    • 水平エッジを強調します。垂直方向の輝度差からエッジを抽出します。Blobなどと組み合わせることで、水平方向の傷検査などに使用できます。
      下図の処理後画像の例では、右側の傷は水平方向のため強調され、左側の傷は垂直方向のためあまり強調されていません。
      処理前画像

      処理後画像

      Iterations: 1

  • 9 - VertEdge
    • ビジョン定数: VISION_OPERATION_VERTEDGE
    • 垂直エッジを強調します。水平方向の輝度差からエッジを抽出します。Blobなどと組み合わせることで、垂直方向の傷検査などに使用できます。
      下図の処理後画像の例では、右側の傷は水平方向のためあまり強調されず、左側の傷は垂直方向のため強調されています。
      処理前画像

      処理後画像

      Iterations: 1

  • 10 - EdgeDetect1
    • ビジョン定数: VISION_OPERATION_EDGEDETECT1
    • エッジを抽出します。注目画素付近に重みを付加するガウシアン平滑化を行い、エッジを検出します。平滑化を行うため、ノイズを除去しながらエッジを検出できます。方向性を問わない傷検査などに使用できます。
      処理前画像

      処理後画像

      Iterations: 1

  • 11 - EdgeDetect2
    • ビジョン定数: VISION_OPERATION_EDGEDETECT2
    • エッジを抽出します。注目画素周辺を均一にする平均化処理を行い、エッジを検出します。平均化を行うため、ノイズを除去しながらエッジを検出できます。方向性を問わない傷検査などに使用できます。
      処理前画像

      処理後画像

      Iterations: 1

  • 12 - LaPlaceEdge1
    • ビジョン定数: VISION_OPERATION_LAPLACE1
    • エッジを強調します。垂直、水平方向の輝度値を2次微分してエッジを強調します。10 - EdgeDetect1や11 - EdgeDetect2に使用用途は似ていますが、この処理は、輝度変化方向に関係なく、均一にエッジを強調できます。ただし、平滑化を行わないため、ノイズが目立つ場合があります。
      処理前画像

      処理後画像

      Iterations: 1

  • 13 - LaPlaceEdge2
    • ビジョン定数: VISION_OPERATION_LAPLACE2
    • エッジを強調します。垂直、水平、斜め方向の輝度値を2次微分してエッジを強調します。12 - LaPlaceEdge1の処理に加え、斜め方向の輝度変化を見るため、よりエッジが強調されて表示されます。
      処理前画像

      処理後画像

      Iterations: 1

  • 14 - Thin
    • ビジョン定数: VISION_OPERATION_THIN
    • 画像のブローブを薄くします。3 - Erodeと似た処理ですが、こちらは対象物の骨格を保持しながら細くする細線化処理です。Iterationsの回数によって対象物の領域が消滅したり、連結した物体を分離したりすることはありません。
      処理前画像

      処理後画像

      Iterations: 1

  • 15 - Thicken
    • ビジョン定数: VISION_OPERATION_THICKEN
    • 画像のブローブを厚くします。4 - Dilateと似た処理ですが、こちらは対象物の骨格を保持しながら太くする太線化処理です。形状を保持した状態で太くできるため、分離した物体同士が連結することはありません。
      処理前画像

      処理後画像

      Iterations: 1

  • 16 - Binarize
    • ビジョン定数: VISION_OPERATION_BINARIZE
    • ThresholdLowとThresholdHighの設定にしたがって、画像を2値化します。対象物の輝度値の範囲をThresholdLowとThresholdHighに設定することで、対象物と同輝度の領域のみを抽出します。ノイズやその他の必要のない領域を除去することで、Geometricなどの物体認識の精度、速度向上に繋がります。
      処理前画像 処理後画像
  • 17 - Rotate
    • ビジョン定数: VISION_OPERATION_ROTATE
    • AngleObjectまたはRotationAngleの設定に従って画像を回転させます。AngleObjectが"Screen"の場合、回転角度は、RotationAngleプロパティーによって決まります。それ以外の場合は、回転角度は、AngleObjectのAngleリザルトによって決まります。回転方向は、角度値が正の場合に反時計回りになります。OCRやCodeReaderの前処理として使用することで、対象物を正対させ認識率を上げることができます。
      処理前画像

      処理後画像

      RotationAngle: 45

  • 18 - FlipHoriz
    • ビジョン定数: VISION_OPERATION_FLIPHORIZ
    • 画像の左右を反転します。印刷や鋳造の製造仕様により反転した文字やワーク形状を、元の姿勢に補正することが可能です。
      処理前画像 処理後画像
  • 19 - FlipVert
    • ビジョン定数: VISION_OPERATION_FLIPVERT
    • 画像の上下を反転します。印刷や鋳造の製造仕様により反転した文字やワーク形状を、元の姿勢に補正することが可能です。
      処理前画像 処理後画像
  • 20 - FlipBoth
    • ビジョン定数: VISION_OPERATION_FLIPBOTH
    • 画像の左右、および上下を反転します。印刷や鋳造の製造仕様により反転した文字やワーク形状を、元の姿勢に補正することが可能です。
      処理前画像 処理後画像
  • 21 - ColorFilter
    • ビジョン定数: VISION_OPERATION_COLORFILTER
    • カラーモデルを使用して画像をフィルターします。指定した画素値の領域を抽出することが可能です。16 - Binarizeと異なり、抽出した画素の値をそのまま保持でき、除去した領域(背景)の色を任意の値に指定できます。グレースケール画像も扱うことができます。
      処理前画像

      処理後画像

      背景色: 255, 255, 255

      フィルターカラー: 35, 35, 255

      許容値: 100

  • 22 - SubtractAbs
    • ビジョン定数: VISION_OPERATION_SUBTRACTABS
    • ImageBuffer1とImageBuffer2との絶対差分画像を返します。ImageBuffer1とImageBuffer2の画素値を引き算し、差分値を出力します。同一カメラでの撮像ごとのワークの色変化の確認や、接着剤や塗料などの塗布判定などで使用できます。ImageBuffer1、ImageBuffer2の設定方法は、以下を参照してください。
      ImageBuffer1 プロパティー
      ImageBuffer2 プロパティー

      ImageBuffer1/ImageBuffer2 絶対差分画像
  • 23 - Zoom
    • ビジョン定数: VISION_OPERATION_ZOOM
    • 画像を拡大、縮小します。指定した倍率に画像を拡大、縮小することで、大きく(もしくは小さく)映りすぎる対象物の大きさを補正することができます。モニタリング時に適正なサイズで処理画像を表示する場合に使用できます。
      処理前画像

      処理後画像

      ZoomFactor: 3

  • 24 - ColorStretch
    • ビジョン定数: VISION_OPERATION_COLORSTRETCH
    • 画像のカラー値をMinRGBからMaxRGBの範囲で引き伸ばします。MinRGBの値を"0"、MaxRGBの値を"255"になるように画像のヒストグラムを引き伸ばし、コントラストの大きい画像を生成します。コントラストが小さい画像を補正したい場合に有効です。対象物の輝度値周辺をMinRGB、MaxRGBに設定することでノイズなどを除去でき、認識率を上げることができます。グレースケール画像も扱うことができます。
      処理前画像

      処理後画像

      MaxRGB: 202,202,202

      MinRGB: 87,87,87

  • 25 - Shift
    • ビジョン定数: VISION_OPERATION_SHIFT
    • ShiftObjectまたはShiftX、ShiftYの設定に従って画像をシフトさせます。
      ShiftObjectが"None"の場合、シフト量は、ShiftXプロパティー、ShiftYプロパティーによって決まります。それ以外の場合は、ShiftObjectに設定されたオブジェクトの検出位置によってシフト処理が行われます。22 - SubtractAbsなどで差分を取る場合の画像の位置合わせに用います。
      処理前画像

      処理後画像

      ShiftX: 100

      ShiftY: 100

  • 26 - DetectFocus
    • ビジョン定数: VISION_OPERATION_DETECTFOCUS
    • 画像の相対的なフォーカスレベルを検出します。エッジがぼやけている、つまりレンズのピントが合っていない状況では、FocusValueの値は大きくなります。FocusValueの値を確認することで、カメラとワークとの距離が適切かを判断できます。
      フォーカスレベルは以下を参照してください。
      FocusValue リザルト
      FocusValue: 7.265 FocusValue: 1.196
  • 27 - BinarizeAdaptive
    • ビジョン定数: VISION_OPERATION_BINARIZEADAPT
    • ThresholdBlockSizeと、ThresholdLevelの設定にしたがって、画像を2値化します。16 - Binarizeと異なり、ピクセルごとにしきい値を変化させて2値化をします。そのため、画像内で対象物の輝度値が一定でない状況での、対象物の領域抽出処理に使用できます。
      処理前画像 処理後画像

デフォルト: 1 - Open

詳細説明
操作設定は、下記のようにグループ分けできます。

モフォロジ
Open、Close、Erode、Dilate
モフォロジ処理は、グレースケール画像を使い、画素の膨張、収縮、もしくはその両方を組み合わせて、画像を変化させる処理です。DarkまたはLightの、どの明度で操作するかは、Polarityプロパティーで設定します。例えば、明るい背景で暗いオブジェクトを扱う場合は、Polarityプロパティーを"1 - DarkOnLight"に設定します。同じ画像でPolarityを"2 - LightOnDark"に設定すると、Erodeを実行したときに、オブジェクトの明るい部分が消え、オブジェクトの暗い部分が結果的に広がって見えるために、Dilateのように見えます。操作の実行回数は、Iterationsプロパティーで設定します。
コンボリューション
Smooth、Sharpen1、Sharpen2、HorizEdge、VertEdge、EdgeDetect1、EdgeDetect2、LaPlaceEdge1、LaPlaceEdge2、Thin、Thicken
コンボリューション処理では、特定のフィルタリングを行うことで、画像を変化させます。Polarityプロパティーで、ThinおよびThicken操作時にどの明度で操作するか設定します。操作の実行回数は、Iterationsプロパティーで設定します。
画像操作
Rotate、FlipHoriz、FlipVert、FlipBoth、Zoom、Shift
画像の回転、反転、ズーム、シフト処理を行います。Rotateでは回転角度、Zoomではズーム率、Shiftではシフト量を設定できます。
2値化のしきい値設定
Binarize
ThresholdLowとThresholdHighによって、グレースケールのどの範囲が黒または白になるかが決定されます。2つのしきい値の間のグレースケール値は、すべて黒になり、その他の値は白になります。
BinarizeAdaptive
2値化のしきい値を固定せず、自動的に適切なしきい値を求める適応型2値化処理です。ThresholdBlockSizeとThresholdLevelを使用することで、画素ごとに異なるしきい値を算出します。
画素間演算
SubtractAbs
ImageBuffer1プロパティーに設定されている画像バッファーと、ImageBuffer2プロパティーに設定されている画像バッファーとの差分画像(絶対値)を算出します。
カラーフィルター
ColorFilter
フィルター色と、背景色を教示できます。実行中は、ImageOpツールが各画素色を画像ROIで確認します。画素色がフィルター色の指定した許容範囲内であれば画素は変化しません。許容範囲外であれば、画素色は指定した背景色になります。
カラーストレッチ
ColorStretch
MinRGBからMaxRGB間のRGB値を0~255に設定することで、画像のカラー値を変更します。また、KeepRGBRatioプロパティーは値を引き伸ばす方法に影響します。
フォーカスレベル
DetectFocus
フォーカルレベルを検出します。検出したフォーカスレベルは、FocusValueリザルトの値になります。

参照
ImageOpオブジェクト, Iterations プロパティー, MinRGB プロパティー, MaxRGB プロパティー, KeepRGBRatio プロパティー, ImageBuffer1 プロパティー, ImageBuffer2 プロパティー