Operation屬性

套用至
視覺物件:ImageOp

說明
設定要執行的影像操作。部分操作可藉由Iteration屬性來決定重複次數。

用途

VGet  Sequence.Object.Operation, var
VSet  Sequence.Object.Operation, value
Sequence
序列名稱或表示序列名稱的字串變數
Object
物件名稱或表示物件名稱的字串變數。物件必須存在於指定序列中。
var
表示屬性值的整數變數
value
表示新屬性值的整數或運算式

數值

  • 1 - Open
    • 視覺常數:VISION_OPERATION_OPEN
    • 執行開放式型態操作。此為先侵蝕(3 - Erode)後膨脹(4 - Dilate)的方式。由於Erosion (3 - Erode)操作能清除顏色與目標物件相似的小影像群組,因此可去除雜訊、小刮痕及髒汙,而不會模糊邊緣。
      利用Polarity屬性設定物件相對於背景的亮度。
      執行操作前的影像

      執行操作後的影像

      Iterations:1

  • 2 - Close
    • 視覺常數:VISION_OPERATION_CLOSE
    • 執行封閉式型態操作。此為先膨脹(4 - Dilate)後侵蝕(3 - Erode)的方式。由於Dilation (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
    • 將影像中的Blob細線化。儘管此操作與3 - Erode相似,但這是在維持物件框架的同時所進行的薄化過程。在此操作中,物件區域不會根據重複次數而消失,且連接的物件也不會分離。
      執行操作前的影像

      執行操作後的影像

      Iterations:1

  • 15 - Thicken
    • 視覺常數:VISION_OPERATION_THICKEN
    • 將影像中的Blob加厚。儘管此操作與4 - Dilate相似,但這是在維持物件框架的同時所進行的厚化過程。在此操作中,可在保持物件形狀的情況下使其變厚,因此分離的物件將不會互相連接。
      執行操作前的影像

      執行操作後的影像

      Iterations:1

  • 16 - Binarize
    • 視覺常數:VISION_OPERATION_BINARIZE
    • 依據ThresholdLow及ThresholdHigh設定對影像進行二值化。將亮度值範圍設定為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設定對影像進行二值化。與16 - Binarize不同,閾值會隨著每個像素變更以進行二值化。當物件的亮度值在影像中不穩時,這可用於物件的區域擷取處理。
      執行操作前的影像 執行操作後的影像

預設:1 - Open

詳細說明
操作設定可分類為以下類別:

型態
Open、Close、Erode、Dilate
型態操作會使用灰階影像,並藉由膨脹、侵蝕或結合兩者來變更影像。Polarity屬性會判定要操作的陰影為何:Dark或Light。例如,若您在淺色背景上放入深色物件,那您應將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操作中設定移動量。
二值化
Binarize
ThresholdLow及ThresholdHigh為判定哪些灰值為黑色及哪些數值為白色的界線。所有介於閾值間的灰值會是黑色,其他則為白色。
BinarizeAdaptive
此為會自動計算適當閾值的自適性二值化處理,無須固定二值化閾值。使用ThresholdBlockSize屬性及ThresholdLevel屬性來執行自適化閾值,這可隨著影像動態變更二值化閾值。
像素間操作
SubtractAbs
計算ImageBuffer1屬性和ImageBuffer2屬性設定的影像緩衝區之間的差異影像(絕對值)。
色彩濾波器
ColorFilter
可教導一或多種濾波器顏色及一種背景顏色。執行階段期間,ImageOp工具會檢查影像ROI中的各像素顏色。若像素顏色落在任一濾波器顏色的指定公差內,像素不會改變。否則,像素顏色會設為指定的背景顏色。
色彩延展
ColorStretch
本操作透過將MinRGB及MaxRGB之間的RGB值對應至0至255的方式,變更影像中的色彩值。KeepRGBRatio屬性也會影響數值延展的方式。
焦點等級
DetectFocus
偵測焦點等級。偵測到的焦點等級會變成FocusValue結果值。

參考
ImageOp物件、Iterations屬性、MinRGB屬性、MaxRGB屬性、KeepRGBRatio屬性、ImageBuffer1屬性、ImageBuffer2屬性