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
    • 强调边缘轮廓。对垂直和水平方向的亮度进行二阶微分,强调边缘轮廓。10-EdgeDetect1和11-EdgeDetect2的用途很相似,但是此处理与亮度的方向无关,而是均匀的凸显边缘。需要注意的是,由于没有进行平滑度处理,所以噪音可能会增加。
      图像处理前

      图像处理后

      Iterations: 1

  • 13-LaPlaceEdge2
    • 视觉常数:VISION_OPERATION_LAPLACE2
    • 强调边缘轮廓。对垂直、水平和对角线方向的亮度进行二阶微分,强调边缘轮廓。相较于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函数,进行图像二值化处理。利用ThresholdLow和ThresholdHigh设置了被检测对象的亮度范围后,可以只提取出和对象物相同亮度值的区域。去除噪声和其他不需要的区域,可以提高对象识别(Geometric等)的速度和准确性。
      图像处理前 图像处理后
  • 17-Rotate
    • 视觉常数:VISION_OPERATION_ROTATE
    • 使用AngleObject或RotationAngle函数旋转图像。如果AngleObject为“Screen”时,旋转角度则由RotationAngle属性确定。除此之外,旋转角度根据RotationAngle属性确定。当角度值为正值时则逆时针旋转。作为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结果
      FocusValue: 7.265 FocusValue: 1.196
  • 27-BinarizeAdaptive
    • 视觉常数:VISION_OPERATION_BINARIZEADAPT
    • 根据ThresholdBlockSize和ThresholdLevel的设置,对图像进行二值化处理。和16-Binarize不同的是,阈值针对每个像素进行更改并进行二值化。因此,当目标对象的亮度值在图像中不恒定时,可以用于处理目标对象的区域提取。
      图像处理前 图像处理后

默认:1-Open

详细说明
操作设定可进行如下分组:

图像形态学
Open、Close、Erode、Dilate
图像形态学使用灰度图像,通过侵蚀、膨胀或两种方式的组合来更改图像。Polarity属性来设置操作的亮度:Dark或Light。例如,在深色背景上处理浅色对象,则需将Polarity属性设为1-DarkOnLight。如果在相同图像将Polarity设为2-LightOnDark,则在执行Erode时,被检测对象的浅色部分会被侵蚀,而深色部分则会膨胀。Iterations属性确定执行操作的次数。
图像卷积
Smooth、Sharpen1、Sharpen2、HorizEdge、VertEdge、EdgeDetect1 EdgeDetect2、LaPlaceEdge1、LaPlaceEdge2、Thin、Thicken
图像卷积是通过执行特定的过滤来更改图像。Polarity属性可设置操作Thin和Thicken时的亮度。Iterations属性确定执行操作的次数。
图像操作
Rotate、FlipHoriz、FlipVert、FlipBoth
可旋转、翻转、缩放、移动图像。Rotate设置旋转角度,Zoom设置缩放率,Shift设置位移量。
二值化阙值设定
Binarize
ThresholdLow和ThresholdHigh是确定哪些灰度值为黑色以及哪些值为白色的分界线。阈值之间的所有灰度值为黑色,其他全部为白色。
BinarizeAdaptive
是一种自适应型二值化处理,可自动找到合适的阈值,而无需固定二值化的阈值。使用ThresholdBlockSize和ThresholdLevel未每个像素计算相应的阈值。
像素间运算
SubtractAbs
计算设置在ImageBuffer1属性中的图像缓冲区与设置在ImageBuffer2属性中的图像缓冲区之间的差异图像(绝对值)。
颜色滤光片
ColorFilter
可以示教需过滤的颜色和背景色。运行时,ImageOp工具确认图像ROI中的各像素颜色。如果像素颜色在一个滤光片颜色的指定容差内,则该像素不改变。否则,像素颜色将变为指定的背景颜色。
颜色拉伸
ColorStretch
将MinRGB和MaxRGB之间的RGB值设定为0~255,也可以更改图像的颜色值。此外,KeepRGBRatio属性也影响值的拉伸方法。
对焦等级
DetectFocus
检测图像的对焦等级。检测出的对焦等级将成为FocusValue结果的值。

参照
ImageOp 对象, Iterations属性, MinRG属性, MaxRG属性, KeepRGBRatio 属性,ImageBuffer1 属性, ImageBuffer2 属性