使用Vision物件
本節說明Vision物件的詳細內容,例如:各種不同的Vision物件配置,以及操作方法的差異。
注意
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。建立影像處理序列,所使用的物件務必要使用必要值以下的搜尋區域。
ImageOp物件
ImageOp物件說明
ImageOp物件可讓您為關注區域執行形態操作(包括開啟、關閉、縮小、放大)、摺積(包括尖銳化、平滑化)、翻轉、二值化及旋轉。
其他放置在ImageOp關注區域的Vision物件,將會在ImageOp的輸出上執行其操作。例如您可透過ImageOp工具,在整體視訊影像上執行縮小比例操作,然後將Blob物件放置在ImageOp搜尋視窗內,以搜尋縮小的影像。
ImageOp物件配置
Image物件具有一個影像處理視窗,如下所示。
ImageOp物件屬性
下列清單是ImageOp物件屬性及其簡短說明的摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(即:非合格的PassType),整個序列會中止或不再處理其他的物件。 |
AngleObject | 用於定義從哪個物件執行自動旋轉。 影像會使用指定物件的Angle結果,進行反時鐘方向旋轉。Operation屬性必須設定為Rotation,否則將會忽略本屬性。 預設:None |
AngleObjectResult | 用於指定AngleObject屬性要使用的結果。 |
Caption | 用於為ImageOp物件指定一個標題。 預設:空白 |
ColorMode | 設定供色彩運算使用的色域 (RGB/HSV)。 預設:RGB |
CurrentModel | 僅執行時間。 當Operation設定為ColorFilter時,可用於針對ModelColor屬性以及VTeach指定所要使用的模型。當CurrentModel = 0時,會選擇背景色。 預設:0 |
Description | 設定使用者指定的説明 預設: 空白 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 用於選擇物件不合格時的物件色彩。 |
Frame | 用於指定所要使用的位置框。 預設:none |
FillHoles | 指定是否填滿二元影像中的小孔洞 Operation設為Binarize時會顯示此屬性。 預設:False |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
ImageBuffer1 | 用於在Operation屬性設定為SubtractAbs時,依緩衝區編號指定第一個影像。 SubtractAbs可計算(第一個影像第二個影像)的絕對值影像。 |
ImageBuffer1File | 將ImageBuffer1設定為 “File” 時,指定要緩衝的影像檔的路徑。 預設:None |
ImageBuffer2 | 用於在Operation屬性設定為SubtractAbs時,依緩衝區編號指定第二個影像。 |
ImageBuffer2File | 將ImageBuffer2設定為 “File” 時,指定要緩衝的影像檔的路徑。 預設:None |
Iterations | 定義執行指定操作的次數 預設:1 |
KeepRGBRatio | 用於指定是否維持ColorStretch運算的 RGB 率。 預設:True |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
MaxRGB | 定義 ColorStretch 運算的最大色彩值。 預設:255、255、255 |
MinRGB | 定義 ColorStretch 運算的最小色彩值。 預設:0、0、0 |
ModelColor | 僅執行時間。在Operation屬性設定為ColorFilter時,本屬性可用來在執行時間直接設定RGB色彩值,藉此以手動方式來教導模型或背景色。 預設:RGB(0, 0, 0) |
ModelColorTol | 僅執行時間。本屬性是用來在執行時間設定模型色彩的色彩容許值。若畫素色彩在模型色彩的容許值範圍內,則畫素會維持不變。 預設:10 (ColorMode = RGB),0、0、50 (ColorMode = HSV) |
ModelName | 僅執行時間。本屬性是用來在執行時間設定目前模型的名稱。 |
ModelWin | 僅執行時間。 在單一呼叫中設定或回傳模型視窗的左邊、上方、高度、寬度等參數。 |
ModelWinHeight | 用於定義模型視窗的高度。 |
ModelWinLeft | 用於定義模型視窗最左邊的位置。 |
ModelWinTop | 用於定義模型視窗最上方的位置。 |
ModelWinWidth | 用於定義模型視窗的寬度。 |
Name | 用於對ImageOp物件指定一個獨特名稱。 預設:ImgOp01 |
NumberOfModels | 僅執行時間。這是所使用色彩模型的數量。在執行時間,您可以設定NumberOfModels,然後使用CurrentModel和VTeach來教導每個色彩模型。 預設:1 |
Operation | 設定執行的影像處理類型。 若想了解Operation屬性詳情,請參考以下章節。 「Vision Guide 8.0 Properties and Results Reference」 預設:Open |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 |
Polarity | 用於定義物件及背景之間的差異性。(「Dark Object on Light Background」或「Light Object on Dark Background」 )。 |
RotationAngle | 用於定義在將Operation屬性設定為Rotation時,要將影像旋轉多少度。 預設:0 |
RotationDirection | 用於指定輪廓點的旋轉方向。 |
SearchWin | 僅執行時間。用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數。 |
SearchWinAngle | 用於針對要搜尋的區域,定義其角度。 |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 預設:100 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊的位置(單位:畫素)。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方的位置(單位:畫素)。 |
SearchWinType | 用於針對要搜尋的區域,定義其類型(亦即Rectangle、RotatedRectangle、Circle)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 預設:100 |
ShiftObject | 設定處理Shift的物件。 |
ShiftX | 設定X方向的Shift量。 |
ShiftY | 設定Y方向的Shift量。 |
ThresholdAuto | 指定是否自動設定代表特徵(或物件)、背景及影像邊緣的灰階臨界值。 |
ThresholdBlockSize | 將Operation屬性設定為BinarizeAdaptive時,用於定義參考鄰域設定臨界值的範圍。 預設:1/16ROI |
ThresholdColor | 用於定義在臨界值內指定給畫素的色彩。 預設:黑色 |
ThresholdHigh | 將Operation屬性設定為Binarize時,用於定義所使用的上臨界值保留設定值。 預設:128 |
ThresholdLevel | 將Operation屬性設定為BinarizeAdaptive時,用於定義鄰域和亮度差之間的比率。 預設:15% |
ThresholdLow | 將Operation屬性設定為Binarize時,用於定義所使用的下臨界值保留設定值。 預設:0 |
ThresholdMethod | 設定二值化處理的方法 |
ZoomFactor | 將Operation屬性設定為Zoom時,用於定義所使用的縮放值。 預設:1 |
ImageOp物件結果
下列清單是ImageOp物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下章節。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Passed | 用於回傳是否接受物件偵測結果。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
FocusValue | 回傳相對焦點等級。 數值達到最小值時為最佳焦點。 Operation屬性設為DetectFocus時會顯示此結果。 |
使用ImageOp物件
現在我們已設定好各項基礎要素,可用於了解如何使用Vision Guide ImageOp物件。下一節將說明使用ImageOp物件所需要的步驟,如下所示:
- 如何建立一個新的ImageOp物件
- 針對搜尋視窗進行定位和調整大小
- 針對與ImageOp相關的物件,設定其屬性
- 測試ImageOp物件,並檢查結果
- 調整屬性後再次測試
在開始進行下列的步驟之前,您應該已建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下Vision Guide工具列上的 [New Sequence] 按鈕,以建立一個新的視覺序列。您也可以在Vision Guide視窗的[Sequence]頁籤上按一下,並按一下位於[Sequence]頁籤上方的下拉式清單方塊,以選擇一個先前已建立的序列。請參考以下內容以深入了解如何建立一個新的視覺序列,或是如何選擇一個之前已定義的序列。
建立一個新的視覺序列
步驟1:建立一個新的ImageOp物件
- 按一下Vision Guide工具列上的[All Tools] - [New ImageOp]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成ImageOp物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「ImgOp01」,因為這是為本序列所建立的第一個ImageOp物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
會出現一個與下列所示類似的ImageOp物件:
新ImageOp物件配置
- 在ImageOp物件的名稱標籤按一下,同時按下滑鼠,將ImageOp物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 必要時,可使用搜尋視窗調整大小把手,來調整ImageOp物件搜尋視窗的大小。將滑鼠指標移至調整大小把手上,然後同時按下滑鼠左鍵,拖曳把手以調整視窗大小。
步驟3:設定ImageOp物件屬性
現在要為ImageOp物件設定屬性值。以下說明ImageOp物件專屬的一些常用屬性。您可以在 Vision Guide 8.0 Properties and Results Reference Manual 或在ImageOp物件屬性清單中,針對Graphics等在許多不同的Vision物件中使用的其他屬性,查看其說明。
項目 | 說明 |
---|---|
Name屬性 | 新建立的ImageOp物件之預設名稱為「ImgOp**」。其中,**是用來辨別相同視覺序列中複數ImageOp物件的編號。 若這是本視覺序列的第一個ImageOp物件,預設名稱就會是「ImgOp01」。 若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。在變更Name屬性之後,所有顯示ImageOp物件名稱的地方都會更新,以反映新名稱。 |
Operation屬性 | 決定要執行哪個影像操作。這是ImageOp物件最重要的屬性。 |
Iterations屬性 | 決定要執行的迴圈數。 |
Polarity屬性 | 決定是否將在黑暗物件或光亮物件上執行操作。 預設設定值為黑暗物件。若您想要加以變更,按一下Polarity屬性上的Value欄位,您就會看到一個含有2個選項的下拉式清單:DarkOnLight或LightOnDark。按一下您想要使用的選項。 |
您可以測試ImageOp物件,然後返回並在後續依需要設定任何其他屬性。
步驟4:對ImageOp物件教導色彩
當Operation屬性設定為ColorFilter時,您就必須教導連同背景色過濾出一或多種色彩。Vision Guide視窗上的[Teach]按鈕會啟用,並會在ImageOp主視窗內出現一個矩形模型視窗。
按一下[Teach]按鈕時,會顯示下列的無模式對話框:
按一下[Add]按鈕可新增一個預設色彩為黑色的新過濾色彩。在選擇背景色或一種過濾色彩之後,按一下[Teach]按鈕以使用模型視窗內畫素的平均色彩,或您可以直接輸入色彩的RGB值。
此對話框開啟時,可變更模型視窗的大小及位置。因此您可以新增色彩,調整視窗大小及位置,然後按一下[Teach],即可在不關閉對話框的情況下教導新色彩。
當教導對話框開啟時,您可變更 ColorMode 屬性。
當 ColorMode 為 RGB 時,各色的容許值只有一個數值。當 ColorMode 為 HSV 時,各色的容許值有三個數值 (hTol、sTol、vTol)。
[Delete]按鈕可用來刪除過濾色彩。背景色無法刪除。
步驟5:測試ImageOp物件
若想執行ImageOp物件,請按一下位於[Object]頁籤左下角的[Run Object]按鈕。您將可以看到您的ImageOp工具在影像上的效果。
步驟6:調整屬性後再次測試
在執行ImageOp物件幾次之後,您可能會遇到一些問題,或想要微調某些屬性設定值。以下說明一些常見的微調技巧:
某些應用可能需要微調ImageOp物件。微調ImageOp物件的主要相關屬性說明如下:
項目 | 說明 |
---|---|
Iterations | 用於針對目標的影像操作,決定執行次數。 |
ThresholdColor、ThresholdLow、ThresholdHigh、ThresholdAuto | 這些屬性可用來針對Binarize操作調整其參數。 請參考 Vision Guide 8.0 Properties and Results Reference Manual 中關於這些屬性的說明。 |
一旦您完成對屬性進行的調整,並已測試過ImageOp,直到您滿意其結果時,即完成本視覺物件的創建工作,並可開始創建其他視覺物件,或設定及測試整個視覺序列。
Geometric物件
Geometric物件說明
Geometric物件會依據幾何圖形特性尋找一個模型。其使用一種演算方法,使用邊緣式幾何圖形特徵來尋找模型,而非使用畫素對畫素的關聯點比對。以此而言,相較於關聯點樣本比對,Geometric物件有以下幾項優點,包括光線變化容許值(包括光面反射)較大、模型、以及延展及角度的變化。
Geometric物件通常可找出物件上的特徵,藉此判定物件的位置及方位。這通常可用來找出零件位置,以協助引導機器人前往取放的位置。
Geometric物件配置
Geometric物件有一個搜尋視窗及一個模型視窗,如下所示。
Geometric物件屬性
下列表格列出Geometric物件屬性的一般說明。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Accept | 指定用於判斷已找到特徵的形狀分數的值 尋找分數超過設定值的特徵。若該值過小,可能會造成偵測錯誤。 預設:700 |
AngleEnable | 用於指定Geometric搜尋是否要以角度進行搜尋(旋轉)。 請在教導Geometric物件的模型之前進行指定。 |
AngleOffset | 指定旋轉的偏移值。 預設:0.000 |
AngleRange | 用於指定對一系列旋轉模型進行訓練的範圍。 |
AngleStart | 用於指定角度搜尋的中心。 |
CalRobotPlacePos | 在設計和執行程式時校正RobotPlacePos。 |
Caption | 用於為Geometric物件指定一個標題。 |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,Geometric物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 若SearchWinType設定為RotatedRectangle,搜尋視窗會依據Angle結果進行旋轉。 預設:False |
CheckClearanceFor | 設定物件以確認間隙。 |
ClearanceCondition | 指定間隙的判斷方法。 |
Confusion | 用於針對要搜尋的影像,表示預期的混淆量。 這是一個特徵所能得到的最高形狀分數(且非搜尋中特徵的實例)。 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設:空白 |
DetailLevel | 用於選擇在搜尋過程中將某個邊緣視為已找到的等級。 |
EditWindow | 定義被搜索區域中不要緊的圖元 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 用於選擇物件不合格時的物件色彩。 |
Frame | 用於針對指定的框,定義目前物件的搜尋位置。 (用於將Geometric物件設定在某個框的相對位置)。 |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 |
LabelBackColor | 用於針對物件的標籤來設定背景色。 |
ModelObject | 用於決定要使用哪個模型進行搜尋。 |
ModelOrgAutoCenter | 模型具有一個固定的參考點,指示模型在模型視窗中的位置。此點稱為模型的原點。ModelOrgAutoCenter屬性可將模型原點放置在模型視窗的中央。 |
ModelOrgFindCenter | 將模型原點設定在已登錄模型邊緣的中心。 |
ModelOrgX | 包含模型原點的X座標值。(可以使用子像素) |
ModelOrgY | 包含模型原點的Y座標值。(可以使用子像素) |
ModelWin | 僅執行時間。 在單一呼叫中設定或回傳模型視窗的左邊、上方、高度、寬度等參數。 |
ModelWinAngle | 用於定義模型視窗的角度。 |
ModelWinCenterX | 用於定義模型視窗中心的X座標值。 |
ModelWinCenterY | 用於定義模型視窗中心的Y座標值。 |
ModelWinHeight | 用於定義模型視窗的高度。 |
ModelWinLeft | 用於定義模型視窗最左邊的位置。 |
ModelWinTop | 用於定義模型視窗最上方的位置。 |
ModelWinType | 用於定義模型視窗的類型。 |
ModelWinWidth | 用於定義模型視窗的寬度。 |
Name | 用於為Geometric物件指定一個獨特名稱。預設:Geom01 |
NumberToFind | 用於定義要在目前搜尋視窗中尋找的物件數量。 (Geometric物件可同時尋找1個以上的物件)。 |
PassColor | 用於選擇合格物件的色彩。 |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
RejectOnEdge | 用於決定若在搜尋視窗的邊緣找到,是否要拒絕接受零件。 本屬性通常會設定為True,以避免因零件並未完全位於搜尋視窗內而造成的偵測錯誤。 |
SaveTeachImage | 設置示教模型時,是否保存圖像文檔。 |
ScaleEnable | 用於啟用延展。 |
ScaleFactorMax | 用於設定或回傳將套用至ScaleTarget值的最大延展係數。 |
ScaleFactorMin | 用於設定或回傳將套用至ScaleTarget值的最小延展係數。 |
ScaleTarget | 用於針對所搜尋的模型,設定或回傳其預期延展係數。 |
ScaleTargetPriority | 用於設定或回傳是否優先偵測靠近ScaleTarget的物件。 |
ScoreMode | 設置或返回閾值以顯示Fail時的結果。 |
SearchReducedImage | 用於設定或回傳搜尋時是否使用尺寸縮減影像。 |
SearchPolarity | 設定或回復搜尋極性。 |
SearchWin | 僅執行時間。 用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數,或中心X坐標、中心Y坐標、圓内周的半徑大小、圓外周的半徑大小。 |
SearchWinAngle | 用於針對要搜尋的區域,定義其角度。 |
SearchWinAngleEnd | 用於針對要搜尋的區域,定義其結束角度。 |
SearchWinAngleStart | 用於針對要搜尋的區域,定義其開始角度。 |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinPolygonPointX1 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第1個頂點的X坐標值 |
SearchWinPolygonPointY1 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第1個頂點的Y坐標值 |
SearchWinPolygonPointX2 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第2個頂點的X坐標值 |
SearchWinPolygonPointY2 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第2個頂點的Y坐標值 |
SearchWinPolygonPointX3 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第3個頂點的X坐標值 |
SearchWinPolygonPointY3 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第3個頂點的Y坐標值 |
SearchWinPolygonPointX4 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第4個頂點的X坐標值 |
SearchWinPolygonPointY4 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第4個頂點的Y坐標值 |
SearchWinPolygonPointX5 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第5個頂點的X坐標值 |
SearchWinPolygonPointY5 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第5個頂點的Y坐標值 |
SearchWinPolygonPointX6 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第6個頂點的X坐標值 |
SearchWinPolygonPointY6 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第6個頂點的Y坐標值 |
SearchWinPolygonPointX7 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第7個頂點的X坐標值 |
SearchWinPolygonPointY7 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第7個頂點的Y坐標值 |
SearchWinPolygonPointX8 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第8個頂點的X坐標值 |
SearchWinPolygonPointY8 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第8個頂點的Y坐標值 |
SearchWinPolygonPointX9 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第9個頂點的X坐標值 |
SearchWinPolygonPointY9 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第9個頂點的Y坐標值 |
SearchWinPolygonPointX10 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第10個頂點的X坐標值 |
SearchWinPolygonPointY10 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第10個頂點的Y坐標值 |
SearchWinPolygonPointX11 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第11個頂點的X坐標值 |
SearchWinPolygonPointY11 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第11個頂點的Y坐標值 |
SearchWinPolygonPointX12 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第12個頂點的X坐標值 |
SearchWinPolygonPointY12 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第12個頂點的Y坐標值 |
SearchWinRadiusInner | 用於針對要搜尋的區域,定義其圓弧内徑。 |
SearchWinRadiusOuter | 用於針對要搜尋的區域,定義其圓弧外徑。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 |
SearchWinType | 用於針對要搜尋的區域,定義其類型(亦即Rectangle、RotatedRectangle、Circle、Arc、Polygon)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 |
SeparationAngle | 用於設定或回傳已找到物件之間所允許的最小角度。 |
SeparationMinX | 用於設定或回傳找到物件之間所允許沿著X軸的最小距離。 |
SeparationMinY | 用於設定或回傳找到物件之間所允許沿著Y軸的最小距離。 |
SeparationScale | 用於設定或回傳已找到物件之間所允許的最小延展差。 |
SharedEdges | 用於設定或回傳是否可在已找到物件之間共用邊緣。 |
ShowModel | 以各種縮放設定顯示先前教導的模型。 可用於變更模型原點且不注意畫素。 |
SkewFitEnable | 指定是否對模型採用傾斜。 預設:False |
Smoothness | 用於針對幾何圖形邊緣擷取過濾器,設定或回傳其平滑化等級。 |
Sort | 用於選擇物件結果所使用的排序順序。 |
Timeout | 用於設定或回傳Geometric物件的最大搜尋時間。 |
Geometric物件結果
下列表格列出Geometric物件結果的一般說明。若想了解每個結果的詳情,請參考以下章節。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於針對已找到的零件,回傳相關旋轉量。 (即:這可用於定義零件相對於原始教導方位的旋轉量。) |
CameraX | 用於針對在攝影機的座標系統中所找到零件的位置,回傳其X座標位置(以模型原點為參考)。 |
CameraY | 用於針對在攝影機的座標系統中所找到零件的位置,回傳其Y座標位置(以模型原點為參考)。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內所找到的零件位置,回傳CameraX、CameraY和CameraU座標。 |
ClearanceOK | 回傳間隙的判斷结果。 |
Found | 用於回傳是否找到物件。(即:特徵或零件是否具有超過Accept屬性目前設定值的形狀分數。) |
FoundOnEdge | 當發現Geometric物件太接近搜尋視窗的邊緣時,可用於回傳為True。 在FoundOnEdge為True時,Found結果會設為False。 |
NumberFound | 用於回傳找到的物件數量。 (偵測到的數字範圍下限為0,上限為以NumberToFind屬性所設定的數字。) |
Overlapped | 在偵測到物件重疊時回傳為True。 |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於針對所找到零件的位置,回傳其X座標位置(以模型原點為參考),單位為畫素。 |
PixelY | 用於針對所找到零件的位置,回傳其Y座標位置(以模型原點為參考),單位為畫素。 |
PixelXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
Reversed | 用於所偵測到的物件具有和模型相反的極性時,回傳為True。 |
RobotX | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的X座標位置(以模型原點為參考)。 |
RobotY | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的Y座標位置(以模型原點為參考)。 |
RobotU | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的U座標位置。 |
RobotXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其相對於機器人座標系統的RobotX、RobotY和RobotU座標位置。 |
Scale | 回傳延展係數。 ScaleEnabled必須設定為True,本結果才會有效。 |
Score | 用於回傳一個Integer值,該數值表示在執行時間所找到的特徵,符合Geometric所搜尋的模型。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
SkewDirection | 回傳執行期間偵測到的物件傾斜方向。 |
SkewRatio | 回傳執行期間偵測到的物件傾斜比率。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
TimedOut | 用於回傳物件執行是否因逾時而終止。 |
了解Geometric搜尋
Geometric物件的用途是找出之前在搜尋視窗中所訓練的模型。Geometric物件可用來尋找零件、偵測有無零件或特徵、偵測缺陷,以及許多其他不同的廣泛功能。
本節將會說明Geometric物件的基本概念。本節將會討論下列主題:
- Geometric物件模型及特徵
- 基本搜尋概念
- 設定Accept及Confusion屬性
- 其他搜尋參數
- 使用多個結果對話框來為搜尋問題除錯
- Geometric物件及旋轉
- Geometric物件及延展
- 角度搜尋的模型訓練
- 搜尋重複性及精確性
- 校正攝影機與被攝對象的距離
Geometric物件模型及特徵
在使用Geometric物件時,必須了解特徵和模型之間的差異。特徵是搜尋視窗中任何特定邊緣的圖樣。特徵可以是區域中的只有幾個畫素的單一邊緣,或是區域中由數萬畫素組成的複雜圖樣。Geometric操作可測量搜尋視窗中的特徵,是否符合之前所教導的特徵模型。特徵是實際搜尋視窗中的屬性,而非特徵的理想化表現方式的模型或範本。
通常會從一個搜尋視窗訓練一個代表性模型,以用來搜尋該搜尋視窗中的類似特徵。下圖顯示一個包含關注特徵(十字叉)的搜尋視窗。若想訓練一個十字叉的模型,請定義一個模型視窗,然後按一下執行面板上的[Teach]按鈕。(若想了解教導模型的詳情,請參考 使用Geometric物件 一節)。
因為,會在圖片的右邊建立一個模型,並可用來搜尋搜尋視窗內的其他十字叉。
搜尋視窗包含幾項關注特徵(左),以及由影像所訓練出的模型(右)
雖然依據幾何圖形特徵尋找模型是一項穩健而可靠的技巧,但在配置您的模型時,應了解一些易犯的錯誤,才能選擇出最佳的模型。
確保您的影像有足夠的對比
對於以次像素精確度辨識您模型來源和目標影像的邊緣來說,對比是必要的。應避免對比不佳的影像,因為Geometric搜尋工具使用的是幾何圖形邊緣式的搜尋演算法;對比越弱,可用來執行搜尋的邊緣資訊其數量及精確性就會愈少。因此,建議您避免使用含有平滑漸層灰階值的模型。在背景和影像的邊緣之間,灰階值應至少維持10的差異。避免不良的幾何圖形模型
不良的幾何圖形模型往往缺乏清楚定義的幾何圖形特性,或是其幾何圖形特性難以與其他影像特徵區隔。這些模型可能會造成不可靠的結果。
簡單的曲線缺乏具可辨識的特徵,可能會造成錯誤的比對。不良的幾何圖形模型
某些類型的幾何圖形模型會在位置、角度及延展方面提供模糊的結果。
位置模糊的模型通常是僅由一或多組平行線段構成的。應避免僅由平行線段構成的模型,因為無法建立精確的位置。因為在任何特定線段中的實際線段,理論上來說其數量是無限的,因此可以找到無數的符合項目。線段應隨時包含一些可辨識輪廓,用於區分本身和其他影像細節。
應避免使用由多組平行線段構成的模型(缺乏可辨識特徵)。應對由小部份物件所構成的模型進行測試,以確認這些模型不會在延展時變得模糊。例如:轉角各自獨立的所構成的模型,在延展時會變得模糊。
透過某範圍的延展搜尋時,這會成為模糊的候選物件。若缺乏辨識性的幾何圖形特性,會製造出多餘的結果。
對稱的模型常會因為其在特徵上的相似性,而在角度方面較為模糊。例如圓形在角度方面是完全模糊的。其他簡單的對稱模型(如方形和三角形),則會有某些角度的模糊。
近乎模糊的模型
當模型的主要部份包含模糊的特徵時,可能會因為所發現的邊緣涉及模糊特徵的百分比大到足以被視為是符合,而可能會發生錯誤的比對結果。為避免這種情況,請確保您的模型具有足夠的獨特特徵,能將模型與其他目標影像特徵進行區分。這可以確保只會將正確的比對回傳為發現事件。例如下方的模型會因為模型中的作用邊緣有很大的部份是由平行直線段構成(而非由可辨識的曲線所構成),而容易造成錯誤比對結果。
基本搜尋概念
搜尋是藉由尋找搜尋視窗內與模型最為相似的區域,來找出特徵的。下圖顯示一個模型和一個搜尋視窗,以及搜尋視窗內與模型最為相似的區域。與下列所示相似的模型,或許可以用來搜尋像是印刷電路板上基準標記的特徵。機器人可接著使用搜尋功能所回傳的位置資料來尋找電路板的位置,以放置元件或放置電路板本身。
設定Accept及Confusion屬性臨界值
Accept及Confusion屬性是Geometric物件主要的搜尋參數。Accept屬性可告知何時在場景的特定區域進行搜尋,藉此改變搜尋速度。當Accept屬性設定為「高」時,特徵必須與模型極為相似。因此,許多區域可藉由粗略檢驗而不進一步執行的方式予以排除。若Accept屬性設定為低數值,僅與模型稍微相似的特徵可能會超過Accept屬性臨界值,因此必須對場景中的較多區域進行詳細檢驗。因此,增加Accept屬性可以加快速度。(即:較高的Accept屬性值可加速Geometric物件的執行。)
Confusion屬性會與預期影響搜尋速度的結果數量互相影響。合併使用Confusion屬性與預期的結果數,可讓系統在探索影像的所有可能區域之前結束搜尋。
設定Accept屬性,使系統能針對您所願意接受的「最糟情況品質降級」,尋找其實例的特徵。品質降級可能是由瑕疪、延展、旋轉或視訊雜訊造成的。在Vision Guide 8.0中,Accept屬性的預設值為700。這對於許多應用程式來說,通常是良好的開始點。但實驗及修正將可協助您導向適合您情況的最佳數值。請注意,應用程式並非一定要取得完美或近乎完美的分數,才能運作良好。依據特徵的變形程度不同,200分的形狀分數即可為某些應用程式提供良好的位置資訊。
請依據您預期會取得的「最糟形狀」的最大值 (加上錯誤的差數),設定Confusion屬性。Confusion屬性臨界值應大於或等於Accept屬性臨界值。若將Confusion屬性設定為較高的值,將會增加搜尋時間,但為確保能找到正確的特徵,可能需要如此設定。Confusion屬性預設值為800,但應依特定應用程式需求加以調整。
下圖顯示一個不易混淆的場景:其中圓圈與標記(十字交叉)並不太相似。因此,Confusion屬性可以設定為相當低的值(約700)。Accept屬性通常會依據您願意接受的品質降級量,設定為較Confusion屬性低或相等。假設本場景只具有少許的品質降級,應可預期920的形狀分數。
下圖顯示一個容易混淆的場景:其中導通孔和IC墊片皆與圓圈相似。因此,Confusion屬性應設定為相當高的值(約820)。
具有一個恆定灰值區域的搜尋視窗,將會在該區域內一直獲得一個0 Geometric值。若場景具有一個主要為統一的背景(例如一片白紙),因此在大部份地方都不會是Geometric,您可以將Confusion屬性設定為偏低的值,這是因為若Geometric物件找到任何物件,就一定會是您要搜尋的特徵。
Accept及Confusion屬性可視為一種提示,您將這種提示提供給系統,以便使其更快找出特徵。一般而言,這些屬性應該以較為保守的方式設定,但不需要精確設定。最為保守的設定值是低的Accept屬性,配合高的Confusion屬性。當您對於您所要搜尋的場景所知極有限時,請使用高度保守的設定;搜尋將會較為仔細但緩慢。(在使用Geometric屬性位置結果提供機器人進行移動時,這一點極為重要。)
當您十分清楚您所要搜尋的場景時,可使用較為自由的設定值。例如若您了解您要尋找一項特徵,且場景的其餘部份為空白,就不需要仔細搜尋;可使用較為自由的設定,搜尋也會較為快速。
其他Geometric搜尋參數
DetailLevel | DetailLevel會在搜尋時判定何者為邊緣。 邊緣是由相鄰畫素之間的灰階值轉換所定義的。Medium預設設定值針對具有對比變化、有雜訊和有不均勻照明的影像中,提供可靠的作用邊緣偵測功能。與影像中的高對比區域相比,若關注物件的對比極低時,可能會遺漏某些低對比的邊緣。若您的影像包含低對比物件,應使用High的DetailLevel設定值,以確保能偵測出影像中的所有重要邊緣。VeryHigh設定值會執行詳細的邊緣擷取,包括極低對比的邊緣。但應注意的是,本模式對雜訊非常敏感。 |
ScaleTargetPriority | 用於指定是否優先偵測靠近ScaleTarget的物件。在偵測工廠產品等尺寸差異較小的物件時,請將本屬性設定為True。 預設:True |
SearchReducedImage | 在執行粗略物件偵測時,用於降低輸入影像的大小。本屬性可在輸入影像具有許多特徵時(例如:邊緣)降低搜尋時間。 預設:False |
Smoothness | Smoothness屬性可讓您控制邊緣擷取過濾器的平滑等級。平滑化操作可將粗糙的邊緣變得平滑,並消除雜訊。本控制的範圍從0 (無平滑)到100 (極為平滑)。 預設:50 |
SharedEdges | 您可以藉由將SharedEdges設定為True,選擇讓多個結果共用邊緣。否則,邊緣若為超過一個結果的一部份時,會被視為是最高分數結果的一部份。 |
TimeOut | 在有時間限制的應用中,您可以毫秒為單位,針對Geometric物件設定時間限制,以尋找指定模型的發生事件。若到達時間限制之前未找到所要求的發生事件數,搜尋就會停止。對於所找到的發生事件,仍會以結果回傳。但將無法預測在時間限制之前,會找到哪些發生事件。 預設:2000毫秒 |
使用多個結果對話框來為搜尋問題除錯
有時您想要處理的零件可能會有極大的差異(即使是相同生產批號所生產的),而且一個零件上有時可能會有2個或更多相似的特徵。這可能會導致極難判定良好的Accept屬性值。當您認為您已將Accept屬性設為良好的值時,其他的零件卻可能會讓系統失靈。在這種情況下,很難了解真正發生的狀況。
[Show All Results]對話框的建立目的就是為了解決上述和其他問題。儘管您可能只關注一個零件的1項特徵,要求多項結果卻可協助您了解為何Vision Guide 8.0有時會將次要的特徵當成是您所關注的主要特徵進行回傳。通常會以幾種不同的方式發生:
- 當搜尋視窗內有2個或更多的特徵非常相似,並因此具有非常接近的Score結果時。
- 當Confusion或Accept屬性的設定值不夠高,因此使得比您所關注的特徵低分的其他特徵符合Accept屬性設定值時。
上述兩種情況對於在搜尋視窗內搜尋單一特徵的Vision Guide 8.0新進使用者來說,會覺得頗為困惑。
若您發生有時可以找到您想要搜尋的特徵,但有時候卻會找到其他特徵的情況,請使用Show All Results對話框來嘗試解決問題。請依照下列步驟嘗試釐清情況:
- 將您的NumberToFind屬性設定為3或更高。
- 從Vision Guide 8.0開發環境執行Vision物件。
- 按一下[ShowAllResults]屬性按鈕,以呼叫出Results對話框。
- 檢查所找到的前3項或更多特徵的分數。
一旦您依上述方式檢查過所找到的前3項或更多特徵的分數,您就會清楚發生什麼情況。在大部份的情況下,您會看到這兩種情況的其中一種。
- 所找到的每項特徵,其分數高於Accept屬性設定值。 若是這樣的情況,只要調高您的Confusion屬性值,以強制永遠找出最佳的特徵,而不會因為符合Accept臨界值而回傳其他特徵。您也可能會想要調整Accept屬性設定值。
- 每項特徵的分數都非常接近。若是這樣的情況,您可能必須採取某些行動,以區隔出您主要關注的特徵,像是:
- 重新調整搜尋視窗,讓隨機回傳為「已找到的特徵」的特徵不再包含在視窗內。
- 再次教導模型,了解您最想要搜尋的特徵。
- 調整您應用的照明,讓您最關注的特徵能比目前擾亂系統的其他特徵獲得較高的分數。
若想了解使用多個結果的詳情,請參考 6.2.24 以單一物件處理多個結果。
Geometric物件及分離
一項發生事件若要被視為明顯時(符合),可指定其他發生事件明顯區隔的最低分離量。基本上,這可以用來判定相同模型發生事件的可能重疊量。
您可以為四項準則設定最低分離,包括:X位置、Y位置、角度及延展。對於與其他明顯不同的發生事件,只需要符合其中一項的最低分離條件即可。例如若符合角度的最低分離條件,那麼發生事件就會視為明顯,無論位置或延展的分離條件為何。但可以個別停用這些分離準則,以便在判定有效的發生事件時不予考量。
最低位置分離屬性SeparationMinX和SeparationMinY可用於判定相同模型的兩個發生事件所找到的位置應距離多遠。本分離條件指定為標稱延展 下模型尺寸的百分比。
預設值為10%。0%的值則會停用該屬性。例如:如您的模型在ScaleTarget為100畫素寬,若要將SeparationMinX設定為10%時,要求發生事件必須在X方向距離至少10畫素遠,方可視為獨特和分離的發生事件。
最低角度分離(SeparationAngle)則用來判定發生事件之間的最低角度差。本數值是以絕對角度值加以指定的。預設值為10.0。0的值則會停用該屬性。
最低延展分離(SeparationScale)則用來將發生事件之間的最低延展差判定為延展係數。預設值為1.1。1.0的值則會停用該屬性。
Geometric物件及延展
模型的延展可用來確立您希望在目標影像中尋找的模型大小。若預期的發生事件比模型小或比模型大,您可以依據支援的延展係數設定延展。預期的延展是使用ScaleTarget屬性加以設定的。(範圍0.5 至 2.0。)
依預設,透過延展範圍進行搜尋的功能是停用的。若有需要,您也可以將ScaleEnable設定為True,以啟用透過延展範圍進行搜尋。這可以讓您從指定的ScaleTarget,透過不同大小的範圍尋找目標影像中的模型,無論其較大或較小。若想指定延展範圍,請使用ScaleFactorMin和ScaleFactorMax。ScaleFactorMin (0.5 至 1.0)和ScaleFactorMax (1.0 至 2.0) 互相配合,可判定由標稱ScaleTarget開始的延展範圍。
最大及最小係數會以下列方式套用至ScaleTarget設定值:
max scale = ScaleTarget x ScaleFactorMax
min scale = ScaleTarget x ScaleFactorMin
請注意,其範圍是以係數定義的,因此若您改變預期的延展(ScaleTarget),無需修改範圍。透過延展範圍的搜尋是以並行方式執行的,這代表某個發生事件的實際延展,與會先找到哪個發生事件並無關係。但延展範圍越大,搜尋就會變得越慢。
Geometric物件及旋轉
Geometric物件非常適合用來尋找旋轉的零件。因為所搜尋的是邊緣的幾何圖形圖樣,一般而言會遠比其他視覺工具更能可靠地找出旋轉的零件。
若想使用Geometric物件的角度功能搜尋,必須以將AngleEnable屬性設定為True的方式教導Geometric物件的Model。也必須設定AngleStart和AngleRange屬性。
角度搜尋的模型訓練
若想以角度測量搜尋,您必須先設定想要進行角度搜尋的Geometric物件。將AngleEnable屬性設定為True,並使用AngleRange屬性,針對要教導的模型來指定角度範圍,即可完成操作。您也可以設定AngleStart屬性,藉此變更角度搜尋的中心。這是AngleRange所根據的角度。例如,若AngleStart為45而AngleRange為10,將會從35至55對模型進行搜尋。
請記住,在以角度訓練模型時,搜尋視窗必須夠大到足以讓模型旋轉,而不致使模型的任何部份超出搜尋視窗以外才行。
搜尋重複性及精確性
搜尋重複性和精確性會受到模型的大小及細節(形狀、特徵的粗糙度及模型的對稱性),以及在搜尋視窗中所看到的特徵的品質降級(雜訊、瑕疪及旋轉和延展效果)所影響。
若測量雜訊對位置的影響效果,您可以在包含無品質降級特徵的特定搜尋視窗中執行搜尋,然後在不改變物件位置的情況下再執行完全相同的搜尋 (將第二個影像擷取至圖形畫面緩衝區中),然後比較所測量的位置。執行下列步驟即可輕易完成:
- 按兩次或更多次執行面板的[Run]按鈕
- 按一下[Statistics]按鈕
- 接著就可以使用Statistics對話框,來查看2次物件搜尋之間的位置差異
對於無品質降級特徵的大型模型(30 x 30)而言,報告的位置可以重複至1/20畫素。然而多數情況下,較為實際的是只達成低於1畫素的結果。(1/2、1/3或1/4畫素)
可在包含無品質降級的特徵的特定搜尋視窗內執行搜尋,將物件移動一段精確的距離,然後比較報告位置與實際位置的差異,藉此測量搜尋的精確性。若您擁有大型模型(30 x 30或更大)、無品質降級、無旋轉或延展錯誤,並在X和Y方向都有足夠的邊緣,搜尋可精準到1/4畫素程度。(請記住,上述的搜尋精確性僅適用於視覺系統,對於機器人本身的所有不精確性不產生任何作用。因此,若您想要嘗試以機器人移動零件,您也必須考量機器人設計本身的不精確性。)
校正攝影機與被攝對象的距離
若想獲得最佳的搜尋結果,在搜尋時間中影像內特徵的大小,應該與在教導模型時相同。假設使用相同的攝影機和鏡頭,若攝影機與被攝對象的距離在訓練模型的時間及執行搜尋的時間之間有變化,搜尋視窗中的特徵將會有不同的外觀尺寸。也就是說,若攝影機較靠近特徵,看起來會較大;若攝影機離得較遠,看起來會較小。
若攝影機與被攝對象的距離改變,您應重新訓練模型。
使用Geometric物件
現在我們已檢視過標準化Geometric物件和搜尋的運作方式,也已大致了解如何使用Vision Guide 8.0 Geometric物件。
本節將說明使用Geometric物件所需要的步驟,如下所示:
- 建立一個新的Geometric物件
- 針對搜尋視窗進行定位和調整大小
- 針對模型視窗進行定位和調整大小
- 針對模型原點進行定位
- 設定與Geometric物件相關的屬性
- 教導模型
- 測試Geometric物件及檢查結果
- 調整屬性後再次測試
- 以單一的Geometric物件處理多個結果的作業
在開始進行上述步驟之前,您需要建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的Geometric物件
- 按一下Vision Guide工具列上的[All Tools] - [New Geometric]按鈕。
- 將會在[New Geometric]按鈕上出現一個Geometric圖示。
- 按一下Geometric圖示,並拖曳至Vision Guide視窗的影像顯示區。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這會稱為「Geom01」,因為這是為本序列所建立的第一個Geometric物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您會看到一個與下列所示類似的Geometric物件:
新Geometric物件配置
- 在Geometric物件的名稱標籤按一下,同時按住滑鼠,然後將Geometric物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 必要時,可使用搜尋視窗調整大小把手,來調整Geometric物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)(搜尋視窗是將會進行搜尋的區域。)
注意
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。建立影像處理序列,所使用的物件務必要使用必要值以下的搜尋區域。
步驟3:針對模型視窗進行定位和調整大小
- 您想要處理的Geometric物件搜尋視窗會以反白顯示,且您可以在搜尋視窗上看到大小調整把手。若您看不到大小調整把手,請按一下Geometric物件的名稱欄位。若您可以看到大小調整把手,請略過本項目,並移至下一個項目。
- 按一下構成模型視窗方塊的其中一個線段。如此會反白選取模型視窗。(現在您應該可以在模型視窗上看到大小調整把手)。
- 將滑鼠指標移到構成模型視窗方塊的其中一個線段上,同時按下滑鼠,將模型視窗拖曳至您想要讓模型視窗停留的左上方位置。
- 在大小調整把手上按一下,並拖曳滑鼠來調整模型視窗的大小。對於您想要教導以作為本Geometric物件模型的特徵,模型視窗現在應該會為其加上外框。
Geometric物件配置現在看起來應該會如下列實例般,其中搜尋視窗會涵蓋要搜尋的區域,而模型視窗則會將您想要搜尋的特徵加上外框。雖然實際的搜尋視窗和模型視窗可能會有少許差異,但可大致反映出目前為止的預期進展情況。
在設定好搜尋及模型視窗位置及調整大小之後的Geometric物件
提示
為模型視窗設定適當大小及位置的提示:
模型視窗的大小及位置是非常重要的,因為模型視窗用來定義您所要搜尋的特徵。在為Geometric物件創建一個模型視窗時,您必須留意 2 個主要的事項:
- 要搜尋的區域,即模型視窗,可以透過使其盡可能小來減少搜尋時間。另外,若您預期零件會有大幅旋轉,則模型越小越佳,因為其所需要的搜尋視窗較小。
- 讓模型視窗儘可能接近搜尋視窗的大小,如此可以縮短執行時間。
當兩個物件彼此相鄰且幾乎接觸時,請將模型視窗設定為比實際特徵稍大些。這可以較為容易辨別物件。
請注意,最佳的模型視窗大小會依據不同的視覺應用而有不同。
步驟4:針對模型原點進行定位
模型原點定義的位置為:當您執行Geometric物件時,模型上將會傳回特徵位置的位置。也就是說,若位置資料相當重要時,應將模型原點放置在重要的位置。
例如:在使用Geometric物件尋找機器人所要取放的零件時,模型原點位於機器人能夠輕鬆抓取零件的位置是很重要的,因為這將會是機器人依據RobotX、RobotY、RobotU或RobotXYU結果進行移動的位置。
在新增一個Geometric物件時,ModelOrgAutoCenter屬性會設定為True(預設值)。這表示模型原點會自動設定成模型視窗的中心,且不能手動移動。若您想要手動移動模型原點,您必須先將ModelOrgAutoCenter屬性設定為False。以下是進行上述操作及實際設定模型原點位置的步驟。
- 按一下Vision Guide視窗的流程圖上的Geometric物件。尋找物件視窗的屬性清單中的ModelOrgAutoCenter屬性,並按一下數值欄位。
- 您將會看到一個有2個選擇的下拉式清單:True 和False。按一下False選項。現在ModelOrgAutoCenter屬性設定為False,並可使用滑鼠來移動模型原點。
- 按一下模型視窗以反白選取模型視窗。
- 按一下模型原點並持續按住滑鼠鍵,將模型原點拖曳至新位置。模型原點只能放置在模型視窗的界限內。
步驟5:設定Geometric物件的屬性
請使用步驟4中顯示於前景的Object頁籤,設定Geometric物件屬性。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些Geometric物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參閱 Geometric物件屬性。在測試Geometric物件時,並不需要設定這些屬性。但若您是第一次處理Geometric物件,本節可當成良好的參考。
注意
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。正確配置Accept、RejectOnEdge和其他屬性,以降低偵測錯誤的風險。
項目 | 說明 |
---|---|
Name屬性 | 新建立的Geometric物件之預設名稱為「Geomxx」。其中,xx是用來辨別相同視覺序列中複數Geometric物件的編號。 若這是本視覺序列的第一個Geometric物件,預設名稱就會是「Geom01」。 若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。 在變更名稱屬性之後,所有顯示Geometric物件名稱的地方都會更新,以反映新名稱。 |
Accept屬性 | Accept屬性設定某項特徵必須等於或超過多少形狀分數,才能視為Found。 會回傳至Score結果的值,將與本Accept屬性值相比較。 預設:700 |
Confusion屬性 | 若在搜尋視窗內有許多看來相似的特徵,Confusion屬性能協助「追蹤」您想要尋找的真正特徵。 預設:800 |
ModelOrgAutoCenter屬性 | 若您想要變更模型原點的位置,您必須先將ModelOrgAutoCenter屬性設定為False。 預設:True |
Frame屬性 | Frame屬性可讓您選擇之前已定義過的Frame物件,以作為Geometric物件的參考框。 在 Frame物件 中會說明Frame的詳細內容。 |
NumberToFind屬性 | 您可以依據您想要尋找的特徵數,將NumberToFind屬性設成大於1。這可以讓Geometric物件在一個搜尋視窗內尋找多項特徵。 |
AngleEnable屬性 | 若您想使用Geometric模型以角度搜尋時,請將本屬性設定為True。若想以角度搜尋多個模型,在為Geometric物件教導模型之前,請將屬性設為True。 |
AngleRange屬性 | 本屬性可搭配AngleEnable屬性使用,以角度搜尋Geometric模型。 |
RejectOnEdge屬性 | 使用本屬性,您可藉此排除接觸到搜尋視窗邊界的零件。 本屬性通常應設定為True。 |
可以將屬性保持其預設值,並前往下一步驟。可在之後有需要時再設定本屬性。
步驟6:為Geometric物件教導模型
Geometric物件需要一個模型來搜尋,這必須先經過一個稱為「教導模型」的程序。您應該已為Geometric物件設定好模型視窗的位置,如此可針對您想要用來作為模型的特徵加上外框。請以下列步驟教導模型:
- 確保Geometric物件是目前所顯示的物件。查看流程圖或物件樹,以查看哪個物件是您目前正在處理的物件。此外,您也可以檢查影像顯示區,以查看哪個物件以紫紅色顯目顯示。
- 在執行面板上的[Teach]按鈕上按一下。教導模型。在大部份的情況下,需要幾秒的時間來教導模型。然而,若您在將AngleEnable屬性設定為“True”時教導模型,則可能需要較多的時間來教導模型,這是因為系統會分別以些微的角度偏差來教導許多模型。
步驟7:測試Geometric物件及檢查結果
若想執行Geometric物件,在執行面板上物件的[Run]按鈕上按一下即可。
現在將會顯示Geometric物件的結果。這時主要的檢查結果為:
項目 | 說明 |
---|---|
Found結果 | 回傳是否找到Geometric物件。 若找到您所搜尋的特徵,本結果就會回傳為True。若找不到特徵,Found結果會回傳為False,並以紅色醒目顯示。若找不到特徵,請參考步驟8,以了解更多為何找不到Geometric物件的常見理由。 |
FoundOnEdge結果 | 若所找到的特徵中有一部份接觸到搜尋視窗的邊界時,本結果會回傳為True。 在這種情況下,Found結果會回傳為False。 |
Score結果 | 這可用來顯示最接近模型的特徵與模型有多相似。 Score結果的範圍從0至1000,1000是最符合的分數。在執行Geometric物件之後檢查Score結果,是您評測所找到的特徵是否夠理想的主要方式。 |
Time結果 | Geometric物件所需要的執行時間。 請記住,小型搜尋視窗和小型Model能協助加快搜尋時間。 |
NumberFound結果 | 在搜尋超過一個的Geometric物件時,NumberFound結果會回傳符合Geometric物件模型的特徵數量。 |
Angle結果 | Geometric所定位的角度。 這是依據模型的原始角度而計算的。然而,本數值有時在數值上會較為粗略,並不是非常可靠。 我們強烈建議使用Polar物件來尋找角度。尤其是在機器人引導時。 |
PixelX結果 PixelY結果 | 特徵的XY位置 (單位:畫素)。 請記住,這是模型原點相對於所找到特徵的位置。若您想要回傳不同的位置,您必須先重新設定模型原點位置,然後重新教導模型。 |
CameraX結果 CameraY結果 | 針對攝影機座標系統中找到的特徵,可用於定義其XY位置。 若未執行校正,將會回傳「no cal」。 |
RobotX結果 RobotY結果 | 針對機器人座標系統中找到的特徵,可用於定義其XY位置。 可用來告知機器人移動至本XY位置。(不需要其他轉換或其他步驟。) 本數值是模型原點相對於所找到特徵的位置。若您想要回傳不同的位置,您必須先重新設定模型原點位置,然後重新教導模型。若未執行校正,將會回傳「no cal」。 |
RobotU結果 | 這是所找到的特徵轉換成機器人座標系統時所回傳的角度。 若未經過校正,則RobotU結果將會回傳「no cal」。 |
ShowAllResults | 若您正在處理多個結果,您可能會想要在ShowAllResults值欄位的按鈕上按一下。這會呼叫出一個對話框,讓您檢查目前Vision物件的所有結果。 |
提示
RobotX、RobotY、RobotU、RobotXYU和CameraX、CameraY、CameraU、CameraXYU結果在此時將會回傳「no cal」,因為在上述實例步驟中並未進行校正。這表示因為未執行校正,視覺系統無法計算相對於機器人座標系統或攝影機座標系統的座標結果。請參考 校正 了解詳情。
步驟8:調整屬性後再次測試
在執行Geometric物件幾次之後,您可能會遇到一些尋找Geometric的問題,或只想要微調某些屬性設定值。在下一節 Geometric物件問題 中,將會說明一些常見的問題及微調技巧。
Geometric物件問題
若Geometric物件回傳為False的Found結果:
- 請試著將Accept屬性變更為較低的值(例如:低於目前的分數結果),並再次執行Geometric物件。
- 查看FoundOnEdge結果是否回傳為True的值。若其結果為True,表示已找到特徵,但所找到的特徵有一部份接觸到搜尋視窗。這會造成Found結果回傳為False。若想修正此情況,請將搜尋視窗變大,或若在無法變大的情況,請試著變更攝影機的位置,或調整模型視窗大小。
若Geometric物件找到錯誤的特徵: - 檢查Accept屬性是否已設定為足夠高。若設定為極低,可能會造成找到其他的特徵,使您所關注的特徵被取代。
- Confusion屬性的設定值是否夠高?Confusion屬性通常應設定為等於或高於Accept屬性的值。然而,若在搜尋視窗中有一些特徵與您所關注的特徵相似時,則必須將Confusion屬性設定為較高的值,以確保能找到您要的特徵,而不是其他的特徵。
- 調整搜尋視窗,以便更接近地區隔出您所關注的特徵。
Geometric物件微調
微調Geometric物件的目的,通常是為了要讓物件能夠正確運作。下列是與微調 Geometric 物件及新增模型相關的主要屬性說明:
項目 | 說明 |
---|---|
Accept屬性 | 當您將Accept屬性設定為較低時,Geometric物件可以執行地較快。然而,較低的Accept屬性值也可能會造成所找到的特徵並非您想要尋找的特徵。一旦您執行了 Geometric 物件幾次並且對 Score 結果中傳回的形狀分數值有了很好的了解,請嘗試調整 Accept 屬性的值。請透過幾次的試驗執行尋找出適當的值,以便以最佳的執行速度找到可靠的特徵。 |
Confusion屬性 | 若在搜尋視窗中有許多看起來相似的多個特徵時,您必須將Confusion屬性設定為相對較高的值。這將可確保找到您所關注的特徵,而不是找到混淆的特徵。但較高混淆值的代價就是執行速度。若在搜尋視窗內沒有多個看來相似的特徵時,您可以將Confusion屬性設定為較低,以幫助縮短執行時間。 |
新增其他範本 | 在執行與目前模型視窗相同尺寸的模型視窗教導時,可選擇「新增其他範本」。模型有些微變更(形狀或圖案稍微不同、陰影顯示不同等)時,選擇變更的模型來新增模型,即可穩定物件執行時獲得的分數。若角度大幅超出位置,或因有明顯差異而無法新增模型時,將保留原始模型。 |
當您完成調整並測試 Geometric 物件直到滿意結果後,即完成建立此Vision物件。請繼續建立其他Vision物件,或設定及測試整個視覺序列。
Geometric物件的其他工具
在此時,您可能會考慮檢查Vision Guide 8.0的直方圖功能。直方圖是相當實用的,因為能以圖像方式表示搜尋視窗內灰階值的分佈情況。了解Vision Guide直方圖的使用詳情後,可用統計方式檢查Geometric物件的結果。
Correlation物件
Correlation物件說明
Correlation物件是Vision Guide 8.0中最常使用的工具。一旦Correlation物件受過訓練,就可針對之前訓練過的特徵,非常快速而可靠地尋找及測量其品質。Correlation物件通常可用於下列的應用類型:
項目 | 說明 |
---|---|
Alignment | 用於藉由找出物件上的特徵(例如:註冊標章),判斷已知物件的位置及方位。這通常可用來找出零件位置,以協助引導機器人前往取放的位置。 |
Gauging | 尋找零件上的特徵,如直徑、長度、角度及其他零件檢測的重要尺寸。 |
Inspection | 尋找簡單的缺陷,如遺失的零件或模糊不清的列印。 |
Correlation物件配置
Correlation物件有一個搜尋視窗及一個模型視窗,如下所示。
Correlation物件屬性
下列清單是Correlation物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Accept | 用於指定某項特徵必須等於或超過多少形狀分數, 尋找分數超過設定值的特徵。若該值過小,可能會造成偵測錯誤。 預設:700 |
AngleAccuracy | 用於以度數指定角度搜尋的目標精確性。 預設:1 |
AngleEnable | 用於指定關聯點比對搜尋是否要以角度進行搜尋(旋轉)。 請在教導Correlation物件的模型之前進行指定。 預設:False |
AngleMaxIncrement | 教導一個關聯點比對模型以角度搜尋時的最大角度遞增量。 最大值為10。 預設:10 |
AngleOffset | 指定旋轉的偏移值。 預設:0.000 |
AngleRange | 用於指定對一系列旋轉模型進行訓練的範圍。 最大值為45。 預設:10 |
AngleStart | 用於指定角度搜尋的中心。 預設:0 |
CalRobotPlacePos | 在設計和執行程式時校正RobotPlacePos。 |
Caption | 用於為Correlation物件指定一個標題。 預設:空白 |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,Correlation物件將會針對指定Vision物件的結果,套用至全部的 (NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 若SearchWinType設定為RotatedRectangle,搜尋視窗會依據Angle結果進行旋轉。 預設:False |
CheckClearanceFor | 設定物件以確認間隙。 |
ClearanceCondition | 指定間隙的判斷方法。 |
Confusion | 用於針對要搜尋的影像,表示預期的混淆量。 這是一個特徵所能得到的最高形狀分數(且非搜尋中特徵的實例)。 預設:800 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。預設: None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 預設:1 |
Description | 設定使用者指定的説明 預設: 空白 |
EditWindow | 定義被搜索區域中不要緊的圖元 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 用於選擇物件不合格時的物件色彩。 預設:Red |
Frame | 用於針對指定的框,定義目前物件的搜尋位置。 將Correlation物件設定在某個框的相對位置。 預設:None |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
ModelObject | 用於決定要使用哪個模型進行搜尋。 預設:Self |
ModelOrgAutoCenter | 模型具有一個固定的參考點,可讓我們用來描述其在模型視窗中的位置。此點稱為模型的原點。ModelOrgAutoCenter屬性可將模型原點放置在模型視窗的中央。 預設:True |
ModelOrgX | 包含模型原點的X座標值。(可以使用子像素) |
ModelOrgY | 包含模型原點的Y座標值。(可以使用子像素) |
ModelWin | 僅執行時間。 在單一呼叫中設定或回傳模型視窗的左邊、上方、高度、寬度等參數。 |
ModelWinAngle | 用於定義模型視窗的角度。 |
ModelWinCenterX | 用於定義模型視窗中心的X座標值。 |
ModelWinCenterY | 用於定義模型視窗中心的Y座標值。 |
ModelWinLeft | 用於定義模型視窗最左邊的位置。 |
ModelWinHeight | 用於定義模型視窗的高度。 預設:50 |
ModelWinTop | 用於定義模型視窗最上方的位置。 |
ModelWinType | 用於定義模型視窗的類型。 |
ModelWinWidth | 用於定義模型視窗的寬度。 |
Name | 用於為Correlation物件指定一個唯一的名稱。 預設:Corr01 |
NumberToFind | 用於定義要在目前搜尋視窗中尋找的物件數量。 預設:1 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
RejectOnEdge | 用於決定若在搜尋視窗的邊緣找到,是否要拒絕接受零件。通常會將屬性設定為True。零件若未完全位於搜尋視窗時,這可用於避免因此造成的錯誤偵測。 預設:False |
SaveTeachImage | 設置示教模型時,是否保存圖像文檔。 |
ScoreMode | 設置或返回閾值以顯示Fail時的結果。 |
SearchWin | 僅執行時間。 用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數,或中心X坐標、中心Y坐標、圓内周的半徑大小、圓外周的半徑大小。 |
SearchWinAngle | 用於針對要搜尋的區域,定義其角度。 |
SearchWinAngleEnd | 用於針對要搜尋的區域,定義其結束角度。 |
SearchWinAngleStart | 用於針對要搜尋的區域,定義其開始角度。 |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 預設:100 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinPolygonPointX1 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第1個頂點的X坐標值 |
SearchWinPolygonPointY1 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第1個頂點的Y坐標值 |
SearchWinPolygonPointX2 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第2個頂點的X坐標值 |
SearchWinPolygonPointY2 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第2個頂點的Y坐標值 |
SearchWinPolygonPointX3 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第3個頂點的X坐標值 |
SearchWinPolygonPointY3 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第3個頂點的Y坐標值 |
SearchWinPolygonPointX4 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第4個頂點的X坐標值 |
SearchWinPolygonPointY4 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第4個頂點的Y坐標值 |
SearchWinPolygonPointX5 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第5個頂點的X坐標值 |
SearchWinPolygonPointY5 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第5個頂點的Y坐標值 |
SearchWinPolygonPointX6 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第6個頂點的X坐標值 |
SearchWinPolygonPointY6 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第6個頂點的Y坐標值 |
SearchWinPolygonPointX7 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第7個頂點的X坐標值 |
SearchWinPolygonPointY7 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第7個頂點的Y坐標值 |
SearchWinPolygonPointX8 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第8個頂點的X坐標值 |
SearchWinPolygonPointY8 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第8個頂點的Y坐標值 |
SearchWinPolygonPointX9 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第9個頂點的X坐標值 |
SearchWinPolygonPointY9 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第9個頂點的Y坐標值 |
SearchWinPolygonPointX10 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第10個頂點的X坐標值 |
SearchWinPolygonPointY10 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第10個頂點的Y坐標值 |
SearchWinPolygonPointX11 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第11個頂點的X坐標值 |
SearchWinPolygonPointY11 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第11個頂點的Y坐標值 |
SearchWinPolygonPointX12 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第12個頂點的X坐標值 |
SearchWinPolygonPointY12 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第12個頂點的Y坐標值 |
SearchWinRadiusInner | 用於針對要搜尋的區域,定義其圓弧内徑。 |
SearchWinRadiusOuter | 用於針對要搜尋的區域,定義其圓弧外徑。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 |
SearchWinType | 用於針對要搜尋的區域,定義其類型(亦即Rectangle、RotatedRectangle、Circle、Arc、Polygon)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 預設:100 |
ShowModel | 以各種縮放設定顯示先前教導的模型。 可用於變更模型原點且不注意畫素。 |
SkewFitEnable | 指定是否對模型採用傾斜。 預設:False |
Sort | 用於選擇物件結果所使用的排序順序。 預設:0 - None |
Timeout | 用於設定或回傳Correlation件的最大搜尋時間。 |
Correlation物件結果
下列清單是Correlation物件結果及其簡短說明的摘要。在 Vision Guide 8.0 Properties and Results Reference Manual 中會詳述每個結果。
結果 | 說明 |
---|---|
Angle | 用於回傳所找到零件的旋轉度數。 |
CameraX | 用於針對在攝影機的座標系統中所找到零件的位置,回傳其X座標位置(以模型原點為參考)。(單位:mm) |
CameraY | 用於針對在攝影機的座標系統中所找到零件的位置,回傳其Y座標位置(以模型原點為參考)。(單位:mm) |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內所找到的零件位置,回傳CameraX、CameraY和CameraU座標。 |
ClearanceOK | 回傳間隙的判斷结果。 |
Found | 用於回傳是否找到物件。(即:關於您所查看的特徵或零件,是否具有超過Accept屬性目前設定值的形狀分數。) |
FoundOnEdge | 當發現Correlation物件太接近搜尋視窗的邊緣時,可用於回傳為“True”。 在RejectOnEdge為True時,Found結果會設為False。 |
NumberFound | 用於回傳找到的物件數量。 (偵測到的數字範圍下限為0,上限為以NumberToFind屬性所設定的數字。) |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於針對所找到零件的位置,回傳其X座標位置(以模型原點為參考),單位為畫素。 |
PixelY | 用於針對所找到零件的位置,回傳其Y座標位置(以模型原點為參考),單位為畫素。 |
PixelXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的X座標位置(以模型原點為參考)。 |
RobotY | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的Y座標位置(以模型原點為參考)。 |
RobotU | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的U座標位置。 |
RobotXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其相對於機器人座標系統的RobotX、RobotY和RobotU座標位置。 |
Scale | 回傳執行期間偵測到的物件縮放值。 |
Score | 用於回傳一個介於0-1000的INTEGER值,該數值表示在執行時間所找到的特徵的等級,符合Correlation所搜尋的模型。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
SkewDirection | 回傳執行期間偵測到的物件傾斜方向。 |
SkewRatio | 回傳執行期間偵測到的物件傾斜率。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
TimedOut | 用於回傳物件執行是否因逾時而終止。 |
了解標準化關聯點比對搜尋
Correlation物件的用途是找出在搜尋視窗中一或多個之前訓練過的特徵,並評測其品質。Correlation物件可用來尋找零件、偵測有無零件或特徵、偵測缺陷,以及許多其他不同的廣泛功能。
雖然Vision Guide 8.0具有多種不同的Vision物件工具,但由於Correlation物件具有速度及整體可靠性,所以是最常使用的工具。
例如:在許多應用中,Edge Tools可用來尋找物件的邊緣。然而,若在相同區域內有許多潛在的邊緣可能會讓Edge工具混淆,那麼就可以使用Correlation物件來尋找邊緣的位置。
在某些情況下也會使用Correlation物件來取代Blob物件 (在可對模型教導時),因為上述物件較為可靠。
後續幾頁將說明搜尋工具的基本原理,以及如何套用至Correlation物件。以下各節將包括下列資訊:
- 特徵及模型:說明
- 基本搜尋概念
- 標準化關聯點比對
- 標準化關聯點比對形狀分數
- 標準化關聯點比對最佳化(Accept及Confusion)
- 設定Accept及Confusion屬性值
- 關於Accept及Confusion屬性的其他提示
- Correlation物件及旋轉
- 角度搜尋的模型訓練
- 搜尋重複性及精確性
- 校正攝影機與被攝對象的距離
Correlation物件模型及特徵
在使用Correlation物件時,必須了解特徵和模型之間的差異。
特徵是指搜尋視窗中灰階的任何特定圖樣。特徵可以是區域中的只有幾個畫素的單一邊緣,或是區域中由數萬畫素組成的複雜圖樣。
關聯點比對操作可測量搜尋視窗中的特徵,是否符合之前所教導的特徵模型。
特徵是實際搜尋視窗中的屬性,而非特徵的理想化表現方式的模型或範本。
模型是用來表示特徵的一個灰階圖樣,相當於範本比對系統中的範本。
若模型有兩個灰階,則為二進位模型。若有超過兩個的灰階,則為灰色模型。
Vision Guide 8.0所使用的所有模型皆為灰色模型,因為灰色模型較為強大,所以能比二進位模型更精確地表現出真正的特徵。如此可以協助得到更可靠的結果。
通常會從一個搜尋視窗訓練一個代表性模型,以用來搜尋該搜尋視窗中的類似特徵。下圖顯示一個內含關注特徵(即十字叉)的搜尋視窗。
若想訓練一個十字叉的模型,請定義一個模型視窗,然後按一下執行面板上的[Teach]按鈕。
(若想了解教導模型的詳情,請參考本章之後的 使用Correlation物件。)
因此,會在圖片的右邊建立一個模型,並可用來搜尋搜尋視窗內的其他十字叉。
搜尋視窗包含幾項關注特徵(左),以及由影像所訓練出的模型(右)
基本搜尋概念
搜尋是藉由尋找搜尋視窗內與模型最為相似的區域,來找出特徵的。下圖顯示一個模型和一個搜尋視窗,以及搜尋視窗內與模型最為相似的區域(頂點)。與圖中所示相似的模型,或許可以用來搜尋像是印刷電路板上基準標記的特徵。機器人可接著使用搜尋功能所回傳的位置資料來尋找電路板的位置,以放置元件或放置電路板本身。
有多種策略可用來搜尋一個搜尋視窗內的模型。最常用的方法是使用徹底搜尋方法來尋找相符的模型。在徹底搜尋方法中,會評估搜尋視窗中每個可能會位置的模型。然後回傳搜尋視窗內具有最大相似性的位置。儘管這種搜尋方法可以返回可靠的結果,但速度可能非常慢。舉例來說,假設搜尋視窗為36平方畫素(36 x 36)、模型為6平方畫素。若想找出符合的模型,將會評估所有961個可能位置的相似性。
Vision Guide 8.0搜尋方式對於徹底搜尋有極為重大的改善。首先,會掃描搜尋視窗,以找出可能符合的位置。接著僅對這些候選位置進行相似性評估。然後回傳最符合的候選項目。這項技巧能比徹底搜尋所達成的執行時間快上數千倍。
標準化關聯點比對
標準化關聯點比對可用來評測影像和模型之間的幾何圖形相似性,而不受搜尋視窗或模型亮度的任何線性差異所影響。
由於標準化關聯點比對的功能強大且穩固,所以可用來作為Vision Guide 8.0的Correlation物件的搜尋演算法。標準化關聯點比對值在下列任何情況皆不會變更:
- 若所有搜尋視窗或模型畫素乘以某些常數。
- 若對所有搜尋視窗或模型畫素加上一個常數。
標準化關聯點比對最重要的特性之一,是關聯點比對值不會受到Search視窗或Model內線性亮度變化的影響。這點非常重要,
因為影像的整體亮度及對比的判定因素包括:照明強度、場景反射率、攝影機光圈、感應器增益及偏移(包括可能的自動增益控制電路),以及影像數位器的增益及偏移等因素。在大部份的生產環境中,上述因素都極為難以控制。例如燈泡使用年限、周圍照明等級可能會在一天之間有不同的變化,攝影機及數位器可能有缺陷及必須更換,以及所檢測物件的反射率可能各有不同。
標準化關聯點比對的另一項重要特性是形狀分數值(請參考下一頁的標準化關聯點比對形狀分數小標),形狀分數值極為重要;也就是說,您可以針對所有模型及搜尋視窗,定義一個相同的完美符合比對。
其不僅不受影像亮度及對比影響,也不受限於模型亮度、對比及大小。這項屬性可以將形狀分數作為特徵品質的評測指標,用於各類檢測應用。
若為搜尋視窗及模型所計算出的形狀分數為900,表示非常相似。
若值為100,則代表並不相似。
即使在對模型或搜尋視窗區域一無所知的情況,這些敘述仍是有效的。這代表關聯點比對係數具有絕對的意義。
標準化關聯點比對形狀分數
在標準化關聯點比對時,特徵的形狀分數(即與模型的相似程度)會定義為介於0到1000之間的值。形狀分數愈高,特徵和模型之間的相似性愈高。(1000的形狀分數代表完全相符。)
形狀分數是由Correlation物件所回傳的值,此值為Score結果。(在 Vision Guide 8.0 Properties and Results Reference Manual 中會說明Score結果的其他補充資訊。)
標準化關聯點比對最佳化(Accept及Confusion)
對於多數實用的搜尋應用來說,傳統的範本比對速度太慢。這是因為其基礎為每一可能搜尋位置的徹底關聯點比對。
本問題的解決方式是使用適當的引導式搜尋。在引導式搜尋中,會使用在搜尋過程中所得到的資料,來將搜尋引導至較有可能的位置,遠離較不可能的位置。
這種搜尋使用的是稱為爬山演算法的改良式引導式搜尋。爬山演算法的構想為:一直向陡峭坡度的方向移動,藉此完全由本地資料找出一或多個變數的函式的頂點。在找到每個相鄰點低於該點的點時,即代表搜尋到頂點。
單獨使用爬山演算法在某些情況下可能會失敗:
- 可能會將斜坡的頂點錯認為錯誤的最大值。
- 若搜尋到高原,將無法判定該向哪個方向繼續進行搜尋。
爬山演算法的另一個問題是判定起點:太少的考察可能會遺失重要的斜坡;若太多又會造成從不同的方向爬同一個斜坡,從而抵消爬山演算法所提供的速度優勢。
可依據搜尋視窗面積及Model對斜坡算出一些估計值,以協助克服這些問題。
Correlation搜尋函式在數學上的運作方式相當於過濾操作:關聯點比對函式是特定已知過濾器(模型)的輸出,該過濾器可擴大特定空間頻率,並使其他頻率衰減。此外,若搜尋視窗特定部份的頻率內容與模型的頻率內容並不相似,就不需要在該區域進行爬山演算法考察。
藉由檢查模型的轉移函式,系統可以估計關聯點比對函式的空間頻率內容,並估計出斜坡的最小間距及大小。知道最小間距後,可讓系統規畫從何處開始爬山演算法考察。知道最小的大小後,可讓系統避免被錯誤頂點困住。
除了從模型取得的資訊外,並可指定兩個Vision Guide屬性(即:Accept及Confusion屬性),藉此控制搜尋。
Accept屬性指定某項特徵必須等於或超過,才能被搜尋軟體視為「Found」的形狀分數(即:Found結果回傳為True)。若斜坡高度的粗略估計值不超過搜尋視窗特定區域的Accept屬性值,就會終止該區域的爬山演算法。
Confusion屬性代表在搜尋視窗中的預期混淆數量。具體地說,這是一個特徵所能得到的最高形狀分數,且其非搜尋中特徵的實例。Confusion屬性為系統提供欲搜尋場景的相關重要提示;也就是說,若某項特徵獲得超過混淆臨界值的形狀分數,就必定是欲搜尋特徵的實例。
系統使用Confusion屬性及結果數量(由NumberToFind屬性所指定),來判定應該爬和不爬哪個斜坡。具體地說,對於Confusion屬性臨界值及Accept屬性的臨界值,在找到形狀分數超過其特徵的預期數量時,搜尋就會終止。
若要開啟搜尋,會從Model的轉移函式所決定的位置開始,並行執行多個爬山演算法考察。隨著爬山演算法的進行,對於每一斜坡的高度,會產生愈來愈多的精確估計值,直到找到實際的頂點為止。
斜坡是以並行方式一次一個步階攀爬的,一直到沒有任何斜坡的估計高度超過Confusion屬性所設定的臨界值為止。若考察達到Confusion屬性臨界值,斜坡會立即攀爬至其頂點。
設定Accept及Confusion屬性臨界值
Accept和Confusion屬性皆會影響Correlation物件的搜尋速度。
Accept屬性可告知何時在場景的特定區域進行搜尋,藉此改變搜尋速度。
當Accept屬性設定為「高」時,特徵必須與模型極為相似。因此,許多區域可藉由粗略檢驗而不進一步執行的方式予以排除。
若Accept屬性設定為低數值,僅與模型稍微相似的特徵可能會超過Accept屬性臨界值,因此必須對場景中的較多區域進行詳細檢驗。
增加Accept屬性可以加快速度 (即:較高的Accept屬性值可加速Correlation物件的執行)。
Confusion屬性會與預期影響搜尋速度的結果數量互相影響。合併使用Confusion屬性與預期的結果數,可讓系統在探索影像的所有可能區域之前結束搜尋。
設定Accept屬性,使系統能針對您所願意接受的「最糟情況品質降級」,尋找其實例的特徵。品質降級可能是由瑕疪、延展、旋轉或視訊雜訊造成的。
在Accept屬性部份,在Vision Guide 8.0中的預設值設定為700。這對於許多應用程式來說,通常是良好的開始點。但實驗及修正將可協助您導向適合您情況的最佳數值。
請注意,應用程式並非一定要取得1000或近乎的分數,才能運作良好。依據特徵的品質降級類型不同,即使200的形狀分數也能為某些應用提供良好的位置資訊。然而,對於多數的應用來說,通常建議應對Accept屬性使用超過500的形狀分數。
請依據您預期會取得的「最糟形狀」的最大值 (加上錯誤的差數),設定Confusion屬性。
混淆屬性臨界值應大於或等於Accept屬性臨界值。若將Confusion屬性設定為較高的值,將會增加搜尋時間,但為確保能找到正確的特徵,可能需要如此設定。
Confusion屬性預設值為800,但應依特定應用程式需求加以調整。
下圖顯示一個不易混淆的場景:其中圓圈與標記(十字交叉)並不太相似。因此,Confusion屬性可以設定為相當低的值(約500)。
Accept屬性通常會依據您願意接受的品質降級量,設定為較Confusion屬性低或相等。假設本場景只具有少許的品質降級,應可預期920的形狀分數。
不易混淆的場景
下圖顯示一個容易混淆的場景:其中導通孔和IC墊片皆與圓圈相似。因此,Confusion屬性應設定為相當高的值(約820)。
高度混淆的場景
關於Accept及Confusion屬性的其他提示
具有一個恆定灰值區域的搜尋視窗,將會在該區域內一直獲得一個0關聯點比對值。若場景基本上具有統一背景(例如:一張白紙),則在大部份的區域不會有任何關聯點比對。因此,若Correlation物件找到任何零件,您可以將Confusion屬性設為低值,這是因為找到的零件應該就是您要搜尋的特徵。
Accept及Confusion屬性可視為一種提示,您將這種提示提供給系統,以便使其更快找出特徵。
一般而言,這些屬性應該以較為保守的方式設定,但不需要精確設定。最為保守的設定值是低的Accept屬性,配合高的Confusion屬性。
當您對於您所要搜尋的場景所知極有限時,請使用高度保守的設定;搜尋將會較為仔細但緩慢。
(在使用Correlation屬性位置結果提供機器人進行移動時,這一點極為重要。)
當您十分清楚您所要搜尋的場景時,可使用較為自由的設定值。例如若您了解您要尋找一項特徵,且場景的其餘部份為空白,就不需要仔細搜尋;可使用較為自由的設定,搜尋也會較為快速。
使用多個結果對話框來為搜尋問題除錯
有時您想要處理的零件可能會有極大的差異(即使是相同生產批號所生產的),而且一個零件上有時可能會有2個或更多相似的特徵。這可能會導致極難判定良好的Accept屬性值。當您認為您已將Accept屬性設為良好的值時,其他的零件卻可能會讓系統失靈。在這種情況下,很難了解真正發生的狀況。
ShowAllResults對話框就是為了解決這些及其他問題所設計的。
儘管您可能只關注一個零件的1項特徵,要求多項結果卻可協助您了解為何Vision Guide 8.0有時會將次要的特徵當成是您所關注的主要特徵進行回傳。通常會以幾種不同的方式發生:
- 當搜尋視窗內有2個或更多的特徵非常相似,並因此具有非常接近的Score結果時。
- 當Confusion或Accept屬性的設定值不夠高,因此使得比您所關注的特徵低分的其他特徵符合Accept屬性設定值時。
上述兩種情況對於在搜尋視窗內搜尋單一特徵的Vision Guide 8.0新進使用者來說,會覺得頗為困惑。
若您發生有時可以找到您想要搜尋的特徵,但有時候卻會找到其他特徵的情況,請使用Show All Results對話框來嘗試解決問題。請依照下列步驟嘗試釐清情況:
- 將您的NumberToFind屬性設定為3或更高。
- 從Vision Guide 8.0開發環境執行Vision物件。
- 按一下[ShowAllResults]屬性按鈕,以呼叫出Results對話框。
- 檢查所找到的前3項或更多特徵的分數。
- 若只找到一或兩個特徵(Vision Guide 8.0將只會針對被視為已找到的特徵設定分數),請降低您的Accept屬性,以便能找到一個以上的特徵,並再次執行Vision物件。(您可以在檢查ShowAllResults對話框之後,再改回原來的Accept等級)
- 按一下[ShowAllResults]屬性按鈕,以呼叫出Results對話框。
- 檢查所找到的前3項或更多特徵的分數。
一旦您依上述方式檢查過所找到的前3項或更多特徵的分數,您就會清楚發生什麼情況。在大部份的情況下,您會看到這兩種情況的其中一種。
- 所找到的每項特徵,其分數高於Accept屬性設定值。若是這樣的情況,只要調高您的Confusion屬性值,以強制永遠找出最佳的特徵,而不會因為符合Accept臨界值而回傳其他特徵。您也可能會想要調整Accept屬性設定值。
- 每項特徵的分數都非常接近。若是這樣的情況,您可能必須採取某些行動,以區隔出您主要關注的特徵,像是:
- 重新調整搜尋視窗,讓隨機回傳為「已找到的特徵」的特徵不再包含在視窗內。
- 再次教導模型,了解您最想要搜尋的特徵。
- 調整您應用專案的照明,讓您最關注的特徵能比目前擾亂系統的其他特徵獲得較高的分數。
若想了解使用多個結果的詳情,請參考 6.2.24 以單一物件處理多個結果。
Correlation物件及旋轉
與任何範本比對流程相同,若特徵的大小或角度與模型的大小或角度不同,會造成形狀分數及位置精確性的品質降級。若差異很大,形狀分數將會非常低,或搜尋操作無法找到特徵。
角度及大小變化的精確容許值依模型而異,但通常對角度來說,介於3至10之間;對於大小來說,介於2至5個百分比之間。
例外情況包括旋轉對稱模型,像是圓圈,圓圈沒有任何角度從屬性;以及簡單的邊緣及稜角模型,這些沒有任何大小從屬性。
在一個搜尋視窗內,對兩個不同的場景進行視覺化。
第一個場景是一張人臉的圖片,並將人臉中的鼻子教導為模型。鼻子並不視為XY對稱,因此旋轉會大幅影響本特徵位置的精確性。第二個場景是一片印刷電路板,基準標記(與圖形中的類似)是模型。在這種情況下,基準標記(十字交叉)為XY對稱,因此旋轉對於本特徵位置的精確性,並沒有立即的破壞性影響。
基本上,擁有眾多細微特徵(像是鼻子,以及花朵、樹或其他物品的圖片)的模型,對於旋轉的容許值較低。愈對稱的特徵(如十字交叉),對旋轉的容許值越高。
正因為如此,我們強烈建議您使用Polar物件來判定旋轉角度。Correlation物件可用來尋找XY位置,而Polar物件則可以與Correlation物件相互關聯,以便使用XY位置作為中心,來找出特徵的角度。請參考本章的 Polar物件 ,以深入了解如何將Polar物件與Correlation及其他Vision物件相互關聯。
對於預期會有大幅角度或延展變化的情況,可使用許多不同的技巧加以解決。主要技巧為:
- 將複雜的特徵分解為較小、較簡單的特徵。一般而言,和較大且較複雜的模型相比,小而簡單的模型對於延展及角度變化較不敏感。
- 在使用Correlation物件時,可使用與角度相關的屬性 (AngleEnable、AngleRange和AngleMaxIncrement) 來協助尋找旋轉角度。
這對於找出複雜場景中的複雜特徵,尤其是在無法將這些特徵分解成較為簡單的特徵時頗為適合。本功能是以一系列具有各種不同角度的模型加以實行的。這可能會比一般搜尋慢上數倍之久。
提示
若想使用Correlation物件的角度功能搜尋,必須以將AngleEnable屬性設定為True的方式教導Correlation物件的模型。如此即會以由AngleRange和AngleMaxIncrement屬性所定義的各種不同的角度,來教導Correlation物件。
使用Polar物件搭配Correlation物件,來判定一個零件的旋轉角度。若想了解詳情,請參考本章的 Polar物件 。
角度搜尋的模型訓練
若想以角度測量方式進行搜尋,您必須先讓系統教導一系列旋轉的模型。
將AngleEnable屬性設定為True,並使用AngleRange屬性針對要教導的模型,指定其角度範圍,即可完成操作。當您以這種方式教導旋轉的模型時,搜尋會自動建立一組模型,這組模型在該範圍內以相等的角度增量,並以各種不同角度旋轉。
您也可以指定一個最大角度增量,其在角度範圍內用來教導模型。您可以藉由對Correlation物件的AngleMaxIncrement屬性設定一個增量值來完成上述操作。
然而,請記住以下一些關於AngleMaxIncrement屬性的特性:
- 若您提供一個最大角度增量,模型訓練功能會自動選擇一個角度增量,並使用自動選取的增量及您所提供的最大角度增量中的較小者。
- 若您將AngleMaxIncrement屬性設定為0,模型教導功能會自動選擇一個角度增量,並使用該角度增量。在這種情況下,系統通常會將角度增量設定在2至5之間。
這可以達到最小的模型儲存需求及最快速的搜尋時間,但可能會產生出比您所想稍為粗糙的結果。
若您希望精確測量角度,您應將AngleMaxIncrement屬性設定為一個對應至目標精準度的增量值。
請記住,角度增量越小,模型會需要越多的儲存空間,而搜尋時間也會變得越慢。
提示
我們建議儘可能使用Polar物件來判斷角度。使用視覺進行機器人的引導時,這能為提供較為可靠及精確的結果。
請記住,在以角度訓練模型時,搜尋視窗必須夠大到足以讓模型旋轉,而不致使模型的任何部份超出搜尋視窗以外才行。
搜尋重複性及精確性
搜尋重複性和精確性是一種功能,會受到模型的大小及細節(形狀、特徵的粗糙度及模型的對稱性),以及在搜尋視窗中所看到的特徵的品質降級(雜訊、瑕疪及旋轉和延展效果)所影響。
若要評測未關聯點比對的雜訊對位置的影響,您可以在包含無品質降級特徵的特定搜尋視窗中執行搜尋,然後在不改變物件位置的情況下,再執行完全相同的搜尋(將第2個影像擷取至圖形畫面緩衝區中),然後比較所測量的位置。
執行下列步驟即可輕易完成:
- 按兩次或更多次執行面板的[Run]按鈕
- 按一下[Statistics]按鈕
- 接著就可以使用Statistics對話框,來查看2次物件搜尋之間的位置差異
對於無品質降級特徵的大型模型(30 x 30)而言,報告的位置可以重複至1/20畫素。然而多數情況下,較為實際的是只達成低於1畫素的結果。(1/2、1/3或1/4畫素)
可在包含品質降級特徵的特定搜尋視窗內執行搜尋,將物件移動一段精確的距離,然後比較報告位置與實際位置的差異,藉此測量搜尋的精確性。
若您擁有大型模型(30 x 30或更大)、無品質降級、無旋轉或延展錯誤,並在X和Y方向都有足夠的邊緣,搜尋可精準到1/4畫素程度。(請記住,上述的搜尋精確性僅適用於視覺系統,對於機器人本身的所有不精確性不產生任何作用。因此,若您想要嘗試以機器人移動零件,您也必須考量機器人設計本身的不精確性。)
搜尋精確性的旋轉及延展效果視模型而異:
- 對稱旋轉的模型效果較佳。
- 具有精細特徵及不對稱的模型效果較差。
校正攝影機與被攝對象的距離
若想獲得最佳的搜尋結果,在搜尋時間中影像內特徵的大小,應該與在教導模型時相同。
假設使用相同的攝影機和鏡頭,若攝影機與被攝對象的距離在訓練模型的時間及執行搜尋的時間之間有變化,搜尋視窗中的特徵將會有不同的外觀尺寸。也就是說,若攝影機較靠近特徵,看起來會較大;若攝影機離得較遠,看起來會較小。
提示
若攝影機與被攝對象的距離改變,您應重新訓練模型。
使用Correlation物件
現在已檢視過標準化關聯點比對和搜尋的運作方式,我們也已具備了解如何使用Vision Guide 8.0 Correlation物件的基礎了。
本節將說明使用Correlation物件所需要的步驟,如下所示:
- 建立一個新的Correlation物件
- 針對搜尋視窗進行定位和調整大小
- 針對模型視窗進行定位和調整大小
- 針對模型原點進行定位
- 設定與Correlation物件相關的屬性
- 教導模型
- 測試Correlation物件及檢查結果
- 調整屬性後再次測試
- 以單一的Correlation物件處理多個結果的作業
在開始進行上述步驟之前,您需要建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的Correlation物件
- 按一下Vision Guide工具列上的[All Tools] - [New Correlation]按鈕。
- 滑鼠游標將會變成一個Correlation圖示。
- 將滑鼠游標移至Vision Guide視窗的影像顯示區,並按一下滑鼠左鍵,將Correlation物件放置在影像顯示區上。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Corr01」,因為這是為本序列所建立的第一個Correlation物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您會看到一個與下列所示類似的Correlation物件:
新Correlation物件配置
- 在Correlation物件的名稱標籤(或在其中一邊上)按一下,同時按下滑鼠,將比對物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 必要時,可使用搜尋視窗調整大小把手,來調整Correlation物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)(搜尋視窗是將會進行搜尋的區域。)
注意
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。建立影像處理序列,所使用的物件務必要使用必要值以下的搜尋區域。
步驟3:針對模型視窗進行定位和調整大小
- 您想要處理的Correlation物件的搜尋視窗的顏色應該是紫紅色,並可在搜尋視窗的四個角及每一邊的中間看到大小調整把手。若您看不到大小調整把手,請按一下Correlation物件的名稱欄位。一旦您看到您想要處理的Correlation物件大小調整把手,且呈現紫紅色時,請前往步驟2。
- 按一下構成模型視窗方塊的其中一個線段。如此會反白選取模型視窗。(現在您應該可以在模型視窗上看到大小調整把手)。
- 對於您想要教導以作為本Correlation物件模型的特徵,模型視窗將為其加上外框。將滑鼠指標移到構成模型視窗方塊的其中一個線段上,同時按下滑鼠,將模型視窗拖曳至您想要讓模型視窗停留的左上方位置。
- 使用模型視窗大小調整把手,依您的需要調整模型視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)(對於您想要教導以作為本Correlation物件模型的特徵,模型視窗現在應該會為其加上外框。)
Correlation物件配置現在看起來應該會如下圖中的實例般,其中搜尋視窗會涵蓋要搜尋的區域,而模型視窗則會將您想要搜尋的特徵加上外框。您的搜尋視窗和Model當然是不一樣的,這只是用來幫助您了解目前為止的預期操作結果而已。
在設定好搜尋及模型視窗位置及調整大小之後的Correlation物件
提示
為模型視窗設定適當大小及位置的提示:
模型視窗的大小及位置是非常重要的,因為模型視窗用來定義您所要搜尋的特徵。在為Geometric物件創建一個模型視窗時,您必須留意 2 個主要的事項:
- 要搜尋的區域,即模型視窗,可以透過使其盡可能小來減少搜尋時間。另外,若您預期零件會有大幅旋轉,則模型越小越佳,因為其所需要的搜尋視窗較小。
- 讓模型視窗儘可能接近搜尋視窗的大小,如此可以縮短執行時間。
有時讓模型視窗只比您關注的實際特徵稍大一點,也是不錯的作法。這可以為特徵提供一些邊框,有助於將本物件與物件區分。尤其是在兩個物件彼此緊靠並接觸時特別實用。然而,此額外的邊框應僅限於幾個畫素的寬度。
請注意,最佳的模型視窗大小會依據不同的視覺應用而有不同。
步驟4:針對模型原點進行定位
模型原點定義的位置為:當您執行Correlation物件時,模型上將會傳回特徵位置的位置。也就是說,若位置資料相當重要時,應將模型原點放置在重要的位置。
例如:在使用Correlation物件偵測機器人所要取放的零件時,模型原點必須位於機器人能夠輕鬆抓取零件的位置,
因為這將會是機器人依據RobotX、RobotY、RobotU、RobotXYU結果移動的位置。
在新增一個Correlation物件時,ModelOrgAutoCenter屬性會設定為True。(True是ModelOrgAutoCenter屬性的預設值) 這表示模型原點會自動設定成模型視窗的中心,且不能手動移動。
若您想要手動移動模型原點,您必須先將ModelOrgAutoCenter屬性設定為False。以下是進行上述操作及實際設定模型原點位置的步驟。
- 按一下Vision Guide視窗的流程圖上的Correlation物件。尋找物件視窗的屬性清單中的ModelOrgAutoCenter屬性,並按一下數值欄位。
- 您將會看到一個有2個選擇的下拉式清單:True 和False。按一下False選項。現在ModelOrgAutoCenter屬性設定為False,並可使用滑鼠來移動模型原點。
- 按一下模型視窗以反白選取模型視窗。
- 按一下模型原點並持續按住滑鼠鍵,將模型原點拖曳至新位置。模型原點只能放置在模型視窗的界限內。
步驟5:設定Correlation物件的屬性
現在可為Correlation物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些Correlation物件較為常用的屬性。
在測試Correlation物件時,並不需要設定這些屬性。但若您是第一次處理Correlation物件,本節可當成良好的參考。
關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
- 「Correlation物件屬性清單」
- 「Vision Guide 8.0 Properties and Results Reference」
注意
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。正確配置Accept、RejectOnEdge和其他屬性,以降低偵測錯誤的風險。
項目 | 說明 |
---|---|
Name屬性 | 新建立的Correlation物件之預設名稱為「Corrxx」。其中,xx是用來辨別相同視覺序列中複數Correlation物件的編號。 若這是本視覺序列的第一個Correlation物件,預設名稱就會是「Corr01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現在修改名稱屬性之後,所有顯示Correlation物件名稱的地方都會更新,以反映新名稱。 |
Accept屬性 | Accept屬性設定某項特徵必須等於或超過多少形狀分數,才能視為Found。 會回傳至Score結果的值,將與本Accept屬性值相比較。在第一次嘗試執行Correlation物件時,700的預設值應該是可行的。 |
Confusion屬性 | 若在搜尋視窗內有許多看來相似的特徵,Confusion屬性能協助「追蹤」您想要尋找的真正特徵。在第一次嘗試執行Correlation物件時,800的預設值應該是可行的。 |
ModelOrgAutoCenter屬性 | 若您想要變更模型原點的位置,您必須先將ModelOrgAutoCenter屬性設定為False。 預設:True |
Frame屬性 | 用於選擇之前已定義過的Frame物件,以作為Correlation物件的參考框。在本章節的 Frame物件 中定義Frame的詳細內容。 |
NumberToFind屬性 | 您可以依據您想要尋找的特徵數,將NumberToFind屬性設成大於1。這可以讓Correlation物件在一個搜尋視窗內尋找多項特徵。 |
AngleEnable屬性 | 若您想使用Correlation模型以角度搜尋時,必須本屬性設定為True。在您教導Model時,必須設定為True,才能設定多個模型。 |
AngleMaxIncrement和AngleRange屬性 | 在使用Correlation模型以角度搜尋時,可將這些屬性搭配AngleEnable屬性使用。 |
RejectOnEdge屬性 | 使用本屬性,您可藉此排除接觸到搜尋視窗邊界的零件。本屬性通常應設定為True。 |
可以將屬性保持其預設值,並前往下一步驟。可在之後有需要時再設定本屬性。
步驟6:為Correlation物件教導模型
Correlation物件需要一個模型來搜尋,這必須先經過一個稱為教導模型的程序。您應該已為Correlation物件設定好模型視窗的位置,如此可針對您想要用來作為模型的特徵加上外框。請以下列步驟教導模型:
- 確保Correlation物件是目前所顯示的物件。查看流程圖或物件樹,以查看哪個物件是您目前正在處理的物件。此外,您也可以檢查影像顯示區,以查看哪個物件以紫紅色顯目顯示。
- 在執行面板上的[Teach]按鈕上按一下。教導模型。在大部份的情況下,需要幾秒的時間來教導模型。但若您在將AngleEnable屬性設定為True時教導模型,則可能需要好幾秒的時間來教導模型,因為系統會分別以與之前模型些微偏差的角度實際教導許多模型。
步驟7:測試Correlation物件及檢查結果
若想執行Correlation物件,在執行面板上物件的[Run]按鈕上按一下即可。
現在將會顯示Correlation物件的結果。這時主要的檢查結果為:
項目 | 說明 |
---|---|
Found結果 | 用於回傳是否找到Correlation。 若找到您所搜尋的特徵本結果就會回傳為True。若找不到特徵,Found結果會回傳為False,並以紅色醒目顯示。若找不到特徵,請閱讀步驟8,以了解某些為何找不到Correlation物件的常見理由。 |
FoundOnEdge結果 | 若所找到的特徵中有一部份接觸到搜尋視窗的邊界時,本結果會回傳為True。 在這種情況下,Found結果會回傳為False。 |
Score結果 | 這可用來透過與模型最接近的特徵,以此告知與模型的相似程度。 Score結果的範圍從0至1000,1000是最符合的分數。在執行Correlation物件之後檢查Score結果,是您評測所找到的特徵是否夠理想的主要方式。 |
Time結果 | Correlation物件所需要的執行時間。 請記住,小型搜尋視窗和小型模型視窗能協助加快搜尋時間。 |
NumberFound結果 | 在搜尋超過1個以上的Correlation物件時,NumberFound結果會回傳符合Correlation物件模型的特徵數量。 |
Angle結果 | Correlation所定位的角度。 這是依據模型的原始角度而計算的。然而,本數值有時在數值上會較為粗略,並不是非常可靠。我們強烈建議使用Polar物件來尋找角度。尤其是在機器人引導時。 |
PixelX結果 PixelY結果 | 特徵的XY位置 (單位:畫素)。 請記住,這是模型原點相對於所找到特徵的位置。若您想要回傳不同的位置,您必須先重新設定模型原點位置,然後重新教導模型。 |
CameraX結果 CameraY結果 | 針對攝影機座標系統中找到的特徵,可用於定義其XY位置。 若未經過校正,則會回傳「No Cal」。 |
RobotX結果 RobotY結果 | 針對機器人座標系統中找到的特徵,可用於定義其XY位置。 可用來告知機器人移動至本XY位置。(不需要其他轉換或其他步驟。) 本數值是模型原點相對於所找到特徵的位置。若您想要回傳不同的位置,您必須先重新設定模型原點位置,然後重新教導模型。若未執行校正,將會回傳「no cal」。 |
RobotU結果 | 這是所找到的特徵轉換成機器人座標系統時所回傳的角度。 若未經過校正,則RobotU結果將會回傳「no cal」。 |
ShowAllResults | 若您正在處理多個結果,您可能會想要在ShowAllResults值欄位的按鈕上按一下。這會呼叫出一個對話框,讓您檢查目前Vision物件的所有結果。 |
提示
RobotX、RobotY、RobotU、RobotXYU和CameraX、CameraY、CameraU、CameraXYU結果在此時將會回傳「no cal」,因為在上述實例步驟中並未進行校正。這表示因為未執行校正,視覺系統無法計算相對於機器人座標系統或攝影機座標系統的座標結果。若想了解詳情,請參考以下章節。
步驟8:調整屬性後再次測試
在執行Correlation物件幾次之後,您可能會遇到一些尋找Correlation的問題,或只想要微調某些屬性設定值。
在下一節「Correlation物件問題」中,將會說明一些常見的問題及微調技巧。
Correlation物件問題
若Correlation物件回傳為False的Found結果
- 請查看所回傳的Score結果。分數結果是否低於Accept屬性設定值。若Score結果較低,請試著將Accept屬性調低一些(例如:低於目前的分數結果),並再次執行Correlation物件。
- 查看FoundOnEdge結果是否回傳為True的值。若其結果為True,表示已找到特徵,但所找到的特徵有一部份接觸到搜尋視窗。這會造成Found結果回傳為False。若想修正此情況,請將搜尋視窗變大,或若在無法變大的情況,請試著變更攝影機的位置,或調整模型視窗大小。
若Correlation物件尋找到錯誤的特徵
- 檢查Accept屬性是否已設定為足夠高。若設定為極低,可能會造成找到其他的特徵,使您所關注的特徵被取代。
- Confusion屬性的設定值是否夠高?Confusion屬性通常應設定為等於或高於Accept屬性的值。然而,若在搜尋視窗中有一些特徵與您所關注的特徵相似時,則必須將Confusion屬性設定為較高的值,以確保能找到您要的特徵,而不是其他的特徵。
- 調整搜尋視窗,以便更接近地區隔出您所關注的特徵。
Correlation物件微調
通常需要對Correlation物件進行微調,以便得到合適的對象。
下列是與微調Correlation物件及新增模型相關的主要屬性說明:
項目 | 說明 |
---|---|
Accept屬性 | 若將Accept屬性調低,Correlation物件的執行速度會加快。然而,較低的Accept屬性值也可能會造成所找到的特徵並非您想要尋找的特徵。在您執行Correlation物件幾次之後,您就會了解Score結果所回傳的形狀分數。請嘗試調整Accept屬性值。請透過幾次的試驗執行尋找出適當的值,以便以最佳的執行速度找到可靠的特徵。 |
Confusion屬性 | 若在搜尋視窗中有許多看起來相似的多個特徵時,您必須將Confusion屬性設定為相對較高的值。這將可確保找到您所關注的特徵,而不是找到混淆的特徵。但較高混淆值的代價就是執行速度。若在搜尋視窗內沒有多個看來相似的特徵時,您可以將Confusion屬性設定為較低,以幫助縮短執行時間。 |
新增其他範本 | 在執行與目前模型視窗相同尺寸的模型視窗教導時,可選擇「新增其他範本」。模型有些微變更(形狀或圖案稍微不同、陰影顯示不同等)時,選擇變更的模型來新增模型,即可穩定物件執行時獲得的分數。若角度大幅超出位置,或因有明顯差異而無法新增模型時,將保留原始模型。 |
當您完成調整並測試Geometric物件直到滿意結果後,即已完成創建此視覺物件,
請繼續建立其他Vision物件,或設定及測試整個視覺序列。
可搭配Correlation物件使用的其他實用工具
在此時,您可能會考慮檢查Vision Guide 8.0的直方圖功能。
直方圖是相當實用的,因為能以圖像方式表示搜尋視窗內灰階值的分佈情況。關於如何使用Vision Guide直方圖的詳情,請參考以下內容。
概觀
您可能也會想要使用Vision Guide的統計功能,以統計方式來查驗比對物件的結果。
關於Vision Guide的統計功能,請參考以下內容。
使用Vision Guide統計
Blob物件
Blob物件說明
Blob物件可計算出影像的幾何、拓蹼及其他特徵。
Blob物件對於判斷影像中特徵的存在/不存在、大小及方位非常實用。例如:對於矽晶圓上的墨點,Blob物件可用來偵測其存在、大小及位置,以判定一個元件的方位,或甚至將其用於機器人引導。(但是,建議使用Polar物件確定旋轉方向。)
Blob物件所能計算出的某些特徵包括:
- 面積及周長
- 重心
- 主要軸及運動
- 連通性
- 極值
- 畫素座標系統、攝影機及機器人座標系統中重心的座標位置
- Blob物件的孔、粗糙度及緊密度
Blob物件配置
Blob物件配置為矩形,與比對物件一樣。但Blob物件沒有模型。這代表Blob物件的配置不需要模型視窗或模型原點。如下所示,Blob物件只有一個物件名稱及一個搜尋視窗。搜尋視窗可用於定義出搜尋值檢出的區域。Blob物件配置如下所示:
Blob物件屬性
下列清單是Blob物件的屬性摘要。在 Vision Guide 8.0 Properties and Results Reference Manual 中會詳述每個屬性。
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
CalRobotPlacePos | 在設計和執行程式時校正RobotPlacePos。 |
Caption | 用於為Blob物件指定一個標題。 預設:空白 |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,Blob物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 若SearchWinType設定為RotatedRectangle,搜尋視窗會依據Angle結果進行旋轉。 預設:False |
CheckClearanceFor | 設定物件以確認間隙。 |
ClearanceCondition | 指定間隙的判斷方法。 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 預設:1 |
Description | 設定使用者指定的説明 預設: 空白 |
EditWindow | 定義被搜索區域中不要緊的圖元 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 用於選擇物件不合格時的物件色彩。 預設:Red |
FillHoles | 指定是否填滿二元影像中的孔洞。 預設:False |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
MaxArea | 定義物件的上限面積。 為檢測到Blob設置的Area結果,必須小於MaxArea屬性的設定值。 預設:100,000 |
MinArea | 定義物件的下限面積。 為檢測到Blob設置的Area結果,必須大於MinArea屬性的設定值。 預設:25 |
MinMaxArea | 僅執行時間。用於以單一敘述同時設定或回傳MinArea和MaxArea。 |
Name | 用於對Blob物件指定一個獨特名稱。 預設:Blob01 |
NumberToFind | 用於定義要在搜尋視窗中尋找的Blob物件數量。 預設:1 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
Polarity | 用於定義物件及背景之間的差異性。(「Dark Object on Light Background」或「Light Object on Dark Background」 )。 預設:1 - DarkOnLight |
RejectOnEdge | 用於決定若在搜尋視窗的邊緣找到,是否要拒絕接受零件。 預設:False |
SearchWin | 僅執行時間。 用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數,或中心X坐標、中心Y坐標、圓内周的半徑大小、圓外周的半徑大小。 |
SearchWinAngle | 用於針對要搜尋的區域,定義其角度。 |
SearchWinAngleEnd | 用於針對要搜尋的區域,定義其結束角度。 |
SearchWinAngleStart | 用於針對要搜尋的區域,定義其開始角度。 |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 預設:100 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinPolygonPointX1 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第1個頂點的X坐標值 |
SearchWinPolygonPointY1 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第1個頂點的Y坐標值 |
SearchWinPolygonPointX2 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第2個頂點的X坐標值 |
SearchWinPolygonPointY2 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第2個頂點的Y坐標值 |
SearchWinPolygonPointX3 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第3個頂點的X坐標值 |
SearchWinPolygonPointY3 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第3個頂點的Y坐標值 |
SearchWinPolygonPointX4 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第4個頂點的X坐標值 |
SearchWinPolygonPointY4 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第4個頂點的Y坐標值 |
SearchWinPolygonPointX5 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第5個頂點的X坐標值 |
SearchWinPolygonPointY5 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第5個頂點的Y坐標值 |
SearchWinPolygonPointX6 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第6個頂點的X坐標值 |
SearchWinPolygonPointY6 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第6個頂點的Y坐標值 |
SearchWinPolygonPointX7 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第7個頂點的X坐標值 |
SearchWinPolygonPointY7 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第7個頂點的Y坐標值 |
SearchWinPolygonPointX8 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第8個頂點的X坐標值 |
SearchWinPolygonPointY8 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第8個頂點的Y坐標值 |
SearchWinPolygonPointX9 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第9個頂點的X坐標值 |
SearchWinPolygonPointY9 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第9個頂點的Y坐標值 |
SearchWinPolygonPointX10 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第10個頂點的X坐標值 |
SearchWinPolygonPointY10 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第10個頂點的Y坐標值 |
SearchWinPolygonPointX11 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第11個頂點的X坐標值 |
SearchWinPolygonPointY11 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第11個頂點的Y坐標值 |
SearchWinPolygonPointX12 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第12個頂點的X坐標值 |
SearchWinPolygonPointY12 | 將SearchWinType設定為“Polygon”時,定義被搜索區域的第12個頂點的Y坐標值 |
SearchWinRadiusInner | 用於針對要搜尋的區域,定義其圓弧内徑。 |
SearchWinRadiusOuter | 用於針對要搜尋的區域,定義其圓弧外徑。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方的位置(單位:畫素)。 |
SearchWinType | 用於針對要搜尋的區域,定義其類型(亦即Rectangle、RotatedRectangle、Circle、Arc、Polygon)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 預設:100 |
SizeToFind | 用於選擇要尋找的值檢出大小。 預設:1 - Largest |
Sort | 用於選擇物件結果所使用的排序順序。 預設:0 - None |
ThresholdAuto | 指定是否自動設定代表特徵(或物件)、背景及影像邊緣的灰階臨界值。 預設:Disables |
ThresholdBlockSize | 將ThresholdMethod屬性設定為LocalAdaptive時,用於定義參考鄰域設定臨界值的範圍。 預設:1/16ROI |
ThresholdColor | 用於定義在臨界值內指定給畫素的色彩。 預設:黑色 |
ThresholdHigh | 和ThresholdLow屬性配合使用,以定義代表影像的特徵(或物件)的灰階區域、背景及邊緣。 ThresholdHigh屬性針對影像的特徵區域,用於定義其灰階區域的上限。 若有任何影像部份介於ThresholdLow和ThresholdHigh所定義的灰階區域內,皆會將其畫素權重指定為1。(即:是特徵的一部份。) 若ThresholdAuto屬性為”True”且ThresholdColor屬性為「White」,此屬性值將會設定為255,且不可變更。 預設:128 |
ThresholdLevel | 將ThresholdMethod屬性設定為LocalAdaptive e時,用於定義鄰域和亮度差之間的比率。 預設:15% |
ThresholdLow | 和ThresholdHigh屬性配合使用,以定義代表影像的特徵(或物件)的灰階區域、背景及邊緣。 ThresholdLow屬性用於定義影像的特徵區域的灰階區域的下限。 若有任何影像部份介於ThresholdLow和ThresholdHigh所定義的灰階區域內,皆會將其畫素權重指定為1。(即:是特徵的一部份。) 若ThresholdAuto屬性為”True”且ThresholdColor屬性為「Black」,此屬性值將會設定為0,且不可變更。 預設:0 |
ThresholdMethod | 設定二值化處理的方法 |
Blob物件結果
下列清單是Blob物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下章節。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於回傳所找到零件的旋轉度數。 |
Area | 用於回傳值檢出的面積(單位:畫素)。 |
CameraX | 用於針對在攝影機的座標系統中所找到零件的位置,回傳其X座標位置。 |
CameraY | 用於針對在攝影機的座標系統中所找到零件的位置,回傳其Y座標位置。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內所找到的零件位置,回傳CameraX、CameraY和CameraU座標。 |
ClearanceOK | 回傳間隙的判斷结果。 |
Compactness | 用於回傳值檢出的緊密度。 |
Extrema | 僅執行時間。 用於回傳值檢出Extrema的MinX、MaxX、MinY、MaxY畫素座標。 |
Found | 用於回傳是否找到物件。 (即:找到的Connected Blob,且其Area結果介於MinArea和MaxArea屬性之間。) |
FoundOnEdge | 在找到的Blob物件太接近搜尋視窗的邊緣時,回傳為True。 |
Holes | 用於回傳Blob內所找到的孔數量。 |
MajorDiameter | 用於回傳所找到值檢出的類似情況下的大直徑。 |
MaxFeretDiameter | 用於回傳所找到值檢出的最大Feret直徑。 |
MaxX | 用於回傳值檢出Extrema的最大X畫素座標(單位:畫素)。 |
MaxY | 用於回傳值檢出Extrema的最大Y畫素座標(單位:畫素)。 |
MinorDiameter | 用於回傳所找到值檢出的類似情況下的小直徑。 |
MinX | 用於回傳值檢出Extrema的最小X畫素座標(單位:畫素)。 |
MinY | 用於回傳值檢出Extrema的最小Y畫素座標(單位:畫素)。 |
NumberFound | 用於回傳搜尋視窗內所找到的值檢出數量。 (本數字範圍下限為0,上限為您要求Blob物件以NumberToFind屬性所尋找的值檢出數量。) |
Passed | 用於回傳是否接受物件偵測結果。 |
Perimeter | 此畫素數表示所找到值檢出的外緣。 |
PixelX | 用於針對所找到零件的位置,回傳其X座標位置(單位:畫素)。 |
PixelY | 用於針對所找到零件的位置,回傳其Y座標位置(單位:畫素)。 |
PixelXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於回傳機器人座標系統中所偵測到的物件的X座標。 |
RobotY | 用於回傳機器人座標系統中所偵測到的物件的Y座標。 |
RobotU | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的U座標位置。 |
RobotXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其相對於機器人座標系統的RobotX、RobotY和RobotU座標位置。 |
Roughness | 用於回傳值檢出的粗糙度。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
TotalArea | 用於針對所找到的所有結果,回傳其面積的總和。 |
值檢出分析的運作方式
值檢出分析會以下列步驟進行:
- 細分,包含
- 二值化
- 連通性分析
- Blob結果計算
細分
為測量一個物件的特徵,值檢出分析必須先判定物件在影像中的何處:也就是說,必須先將物件與影像中的其他部份分離。將影像分割成物件及背景的程序稱為細分。
Blob物件係用於可以每一畫素的灰階值為依據進行細分的影像上。這種細分程序的簡單例子為二值化。
雖然在本章中所說明的Blob物件即使在無法以灰階值細分的任意灰階影像上,也能產生清楚定義的結果,但這種情況通常效用有限,因為結果會受到定義影像的視窗大小所影響。
若想進行整體影像值檢出分析,關注特徵必須是影像中擁有某一特別灰階的唯一物件。若影像中有其他的物件具有相同的灰階值,就無法成功細分影像。圖A到圖D顯示能夠及無法以灰階值細分(目的為進行整體影像值檢出分析)的圖片。
圖A:可藉由灰階值進行細分的場景
A 顯示攝影機的視野(左邊)。使用Blob物件的待處理場景,位於標示為「Blob01」的搜尋視窗內。在依灰階值細分之後,物件和背景就會如圖A的右側所示般輕易區分。
圖B:圖A的場景搭配較大的搜尋視窗
變更搜尋視窗的大小(以如圖B所示)會改變背景的大小。而對於值檢出的特徵無任何影響,
圖C和圖D顯示同一影像相似的視野。然而,本場景無法以灰階值細分,因為在影像中有兩個物件具有相同的灰階值。
只有消除搜尋視窗中的其中一個或另一個,才能將這些物件分離。雖然圖C中的影像可以灰階值細分,但若如圖D所示般放大搜尋視窗,會完全改變已細分的影像。在本場景中,背景區域和所測量的值檢出特徵,皆會依據搜尋視窗及其所包覆的影像部份的大小而改變。
圖C:無法藉由灰階值進行細分的場景
圖D:放大的搜尋視窗包覆住具有相同灰階值的兩個物件
您也應該仔細觀察圖E中所顯示的情況。在本實例中,內部值檢出及部份的背景是相連的。這會形成一個大型值檢出,其特徵與欲細分的原始中央值檢出極為不同。
圖E:物件和背景相連接
二值化
Blob物件使用二值化來決定影像中每個畫素的權重。
使用兩種使用者定義的臨界值:ThresholdLow和ThresholdHigh。其灰階值介於臨界值之間的畫素會指定1的畫素權重,其他畫素則會指定0。
對於權重1的畫素,ThresholdColor屬性可用來定義其色彩。這是介於臨界值之間的色彩(黑色或白色)。
Blob物件以這些得出的畫素權重為基礎,將影像細分成特徵(具有權重1的畫素)和背景(具有權重0的畫素)。Polarity屬性則是用來設定Blob物件,以尋找包含黑色或白色畫素的值檢出。當Polarity為DarkOnLight時,則值檢出包含黑色畫素。當Polarity為LightOnDark時,則值檢出包含白色畫素。
使用直方圖來判定臨界值
藉由使用Vision Guide 8.0 直方圖工具,使用者可以判定ThresholdLow和ThresholdHigh要使用的值。
舉例來說,請設想一個在白色背景上有黑色值檢出的理想二進位影像。下圖顯示的正是這樣的一個影像及其直方圖。
理想的二進位影像及其直方圖
請注意,在本直方圖中只有兩個灰階值,並沒有任何非零值的內容:值檢出的灰階值及背景的灰階值。
真實的影像絕不會有像這樣的直方圖。來自各種不同來源(例如:不平均的列印、不穩定的照明及電子雜訊)的雜訊效應結合,會使頂點擴散。下圖顯示一個較為真實的直方圖。
使用直方圖 來設定臨界值
在上圖的直方圖中,每個頂點都是非常清楚明顯的。頂點區與之前的理想直方圖具有相同的比例,但每個頂點現在皆會擴散,並包含超過一個灰階值。
在兩個主要頂點之間較低陷的灰階值代表值檢出的邊緣,這些部份並非全暗或全亮。
您應調整臨界值,好讓值檢出特徵具有1畫素權重。
連通性(相連的值檢出分析)
連通性可定義為一種分析,其以具有非零權重的相連畫素為基礎。簡單地說,連通性可用來尋找一群相連畫素,這群相連畫素歸類成值檢出。
連通性是由Blob物件自動執行的,其中執行連通性後,會為找到的值檢出計算測量值。Blob物件的連通性會依據執行Blob物件之前所設定的NumberToFind屬性,回傳所找到的值檢出數量。
Blob結果計算
一旦完成值檢出分析的所有其他步驟,就會為所找到的值檢出計算結果。在本節前述的 Blob物件結果 小節中,針對Blob物件所回傳的所有結果,顯示一份清單。
若想了解Vision物件的所有結果詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
在 Vision Guide 8.0 Properties and Results Reference Manual 中所說明的某些結果適用於許多不同的Vision物件,像是Found、Time或PixelX等結果。雖然Found和Time等結果十分普遍,且一般而言在所有Vision物件上皆一體適用,但某些結果(如位置相關的結果)在套用至Blob物件時,則具有特殊意義。茲說明如下:
MinX、MinY、MaxX、MaxY結果
MinX、MinY、MaxX、MaxY結果在結合在一起時,可用來建立「值檢出的Extrema」。Extrema是「值檢出的最小包覆矩形」的座標。最容易了解的方式是查看下列圖形。
主要軸、重心和Extrema
機器人座標系統、攝影機座標系統及畫素位置資料
Blob物件的座標位置結果會回傳重心的位置。請記住,重心並不一定是零件的中心。
因此若您試著使用重心來抓取零件,可能會在某些零件遇到麻煩。若您使用Blob物件的RobotX、RobotY和RobotU座標位置結果作為抓取位置,請確認能夠以重心抓取零件。
若您不想要以重心抓取零件,您可能需要計算偏差,或使用其他的Vision物件(像是Correlation物件)來尋找零件,並回傳更實用的位置。
TotalArea結果
TotalArea結果是一項總和值,代表所有找到結果的面積。這對於畫素計數是相當實用的。只要將NumberToFind設定為0,Blob物件就會尋找所有面積介於MinArea和MaxArea之間的值檢出。然後TotalArea會顯示所有結果的總面積。
Blob物件的角度結果限制
要提醒您的是,Blob物件的Angle結果是受到其範圍所限制的。
Blob物件的Angle結果會回傳範圍從+90°至-90°的角度值。Blob物件並無法回傳範圍涵蓋整個360°的角度結果。
提示
應注意的是,Blob物件並無法永遠回傳像Polar物件般可靠的結果。因為Blob物件Angle結果的範圍是受限的,在某些情況下並不可靠,因此我們不建議使用Blob物件Angle結果進行機器人引導。
相反地,我們強烈建議使用Polar物件來計算一個零件的角度方位。
Polar物件可以使用所找到的X、Y位置作為Blob物件的重心,然後依據Blob物件的重心計算角度。在後續的 Polar物件 中會詳加說明。
使用Blob物件
現在已檢視過值檢出分析的運作方式,我們也已具備了解如何使用Vision Guide 8.0 Blob物件的基礎了。這裡將說明如何使用Blob物件。
使用Blob物件所需要的步驟,如下所示:
- 建立一個新的Blob物件
- 針對搜尋視窗進行定位和調整大小
- 針對與Blob相關的物件,設定其屬性
- 測試Blob物件及檢查結果
- 調整屬性後再次測試
在開始進行上述步驟之前,您需要建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,您可以按一下Vision Guide工具列上的 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的Blob物件
- 按一下Vision Guide工具列上的[All Tools] - [New Blob]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成Blob圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Blob01」,因為這是為本序列所建立的第一個Blob物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的Blob物件:
新的Blob物件配置
- 在Blob物件的名稱標籤按一下,同時按下滑鼠,將Blob物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 必要時,可使用搜尋視窗調整大小把手,來調整Blob物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)(搜尋視窗是將會針對Blob進行搜尋的區域。)
注意
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。建立影像處理序列,所使用的物件務必要使用必要值以下的搜尋區域。
步驟3:設定Blob物件屬性
現在可為Blob物件設定屬性值。以下顯示一些Blob物件較為常用的屬性。
關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
- 「Vision Guide 8.0 Properties and Results Reference」
- 「Blob物件屬性清單」
提示
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。正確設定MaxArea、MinArea、RejectOnEdge及其他屬性可降低偵測錯誤的風險。
項目 | 說明 |
---|---|
Name屬性 | 新建立的Blob物件之預設名稱為「Blobxx」。其中,xx是用來辨別相同視覺序列中複數Blob物件的編號。 若這是本視覺序列的第一個Blob物件,預設名稱就會是「Blob01」。 若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發所有顯示Blob物件名稱的地方都會更新,以反映新名稱。 |
Polarity屬性 | 在淺色背景偵測深色物件,或在深色背景偵測淺色物件。進行這樣的選擇就是Polarity屬性的基本目的。 預設為偵測DarkOnLight (淺色背景上的深色物件)。 若您想要加以變更,按一下Polarity屬性上的Value欄位,您就會看到一個下拉式清單,顯示「DarkOnLight」和「LightOnDark」。按一下您想要使用的選項。 |
MinArea、MaxArea | 這些屬性可用來定義將Blob物件視為「Found」的面積限制。(即:Found結果回傳為True) 預設範圍設定為25至100,000(MinArea至MaxArea),這是非常寬廣的範圍。這表示在調整MinArea和MaxArea屬性之前,當您第一次執行新Blob物件時,大部份的值檢出都會報告為Found。通常您會想要修改這些屬性,以針對您嘗試尋找的值檢出,反映其合理範圍。透過這樣的方式,若您找到一個超出範圍的值檢出,您就會知道其並非您想要尋找的值檢出。 |
RejectOnEdge屬性 | 使用本屬性,您可藉此排除接觸到搜尋視窗邊界的零件。本屬性通常應設定為True。 |
您現在可以測試Blob物件,然後返回並在之後依需要設定任何其他屬性。
步驟4:測試Blob物件及檢查結果
若想執行Blob物件,按一下位於執行面板上的物件[Run]按鈕。現在將會顯示Blob物件的結果。這時主要的檢查結果如下所示。日後您會發現有些十分實用。
項目 | 說明 |
---|---|
Found結果 | 用於回傳是否找到值檢出。 若所找到的值檢出不符合MinArea和MaxArea屬性所定義的面積限制,那麼Found結果就會回傳為False。 |
Area結果 | 所找到的值檢出的面積。(單位:畫素) |
Angle結果 | Blob所定位的角度。 這是由次要軸的角度所計算出的,將會是一個介於+/-90°之間的值。 |
Time結果 | Blob物件所需要的執行時間。 |
PixelX、PixelY | 針對所找到值檢出的重心,表示其XY位置。(單位:畫素) |
MinX、MinY、MaxX、MaxY | 結合這4個值,以定義檢出的Extrema。(這是透過與值檢出的最外部各點相接觸而形成的一個矩形)。 |
提示
RobotXYU、RobotX、RobotY、RobotU和CameraX、CameraY、CameraXYU等結果會回傳「no cal」。這表示因為未執行校正,視覺系統無法計算相對於機器人座標系統或攝影機座標系統的座標結果。請參見 視覺校正,以了解更多資訊。
步驟5:調整屬性後再次測試
在執行Blob物件幾次之後,您可能會遇到一些尋找Blob的問題,或只想要微調某些屬性設定值。以下說明一些常見的問題和微調技巧:
問題:若Blob物件回傳為False的Found結果,應立即檢查幾個地方。
- Polarity屬性的值定義是否偵測深色背景上的淺色物件或淺色背景上的深色物件,可能會因實際影像而異。檢查Polarity屬性值,並確認該數值符合您要偵測的物件淺色及深色部分及物件背景。此外,該值必須符合搜尋視窗中顯示的物件淺色及深色部分及物件背景。
- 查看Area結果,並將本面積與MinArea和MaxArea屬性所定義的值相比較。若Area結果並不在MinArea和MaxArea屬性所定義的限制之間,那麼您可能需要調整這些屬性,並再次執行Blob物件。
- 請使用直方圖來檢查影像中的灰階值的分佈情況。直方圖工具非常適合用來設定ThresholdHigh和ThresholdLow屬性。若想了解直方圖詳情,請參考以下章節。
直方圖工具
微調:某些應用可能需要微調Blob物件。微調Blob物件的主要相關屬性茲說明如下: - MinArea、MaxArea-在您執行Blob件幾次之後,您就會熟悉Area結果所回傳的約略數值。請使用這些值來判定如何為MinArea和MaxArea屬性輸入新值。一般而言,將MinArea和MaxArea屬性設定為「限制Found結果僅回傳您所關注的值檢出,並讓Found結果等於True」的值,會較為理想。(這可以幫助消除與想要的值檢出面積不同且不想要的值檢出。)
- ThresholdHigh、ThresholdLow-這些屬性可用於調整設定灰階臨界值的參數,以分辨哪些地方是背景,哪些是值檢出的一部份。直方圖工具,是設定以上屬性的最佳方法。若想了解,請參考以下章節。
Vision Guide 8.0 Properties and Results Reference Manual 中關於ThresholdHigh和ThresholdLow屬性的說明
關於直方圖,請參考以下的說明。
直方圖工具
一旦您完成對屬性進行的調整,並已測試過Blob,直到您滿意其結果時,即完成本視覺物件的創建工作,
並可開始創建其他視覺物件,或設定及測試整個視覺序列。
可搭配Blob物件使用的其他實用工具
在此時,您可能會考慮檢查Vision Guide 8.0的直方圖功能。直方圖是相當實用的,因為能以圖像方式表示搜尋視窗內灰階值的分佈情況。Vision Guide的直方圖工具能提供一種實用的機制,以便為ThresholdLow和ThresholdHigh屬性設定灰階,以定義將哪些部份視為值檢出的一部份,以及哪些視為背景的一部份。當您在尋找值檢出發生問題時,直方圖功能可發揮極大的效用。關於如何使用Vision Guide直方圖的詳情,請參考以下內容。
概觀
您可能也會想要使用Vision Guide工具列上的 [Statistics]按鈕,以統計檢查Blob物件的結果。關於Vision Guide的統計功能,請參考以下內容。
使用Vision Guide統計
使用Blob物件作為畫素計數器
Blob物件可以用來當成畫素計數器。對於值檢出臨界值的影像,畫素計數器會對其所有畫素進行計數。
請依下列步驟操作:
- 建立一個Blob物件。
- 設定想要的極性。
- 設定High和Low臨界值。
- 將NumberToFind設定為0。這會使Blob物件尋找影像中的所有值檢出。
- 將MinArea設為1,MaxArea設為999999。一個以上畫素的Blob將納入計數。
- 執行序列。
使用TotalArea結果來讀取介於值檢出臨界值內的總畫素數。
Edge物件
Edge物件說明
Edge物件可用來找出影像中的邊緣。
對於影像中的物件,其邊緣的灰度值會從深至淺,或從淺至深產生變化。本項變更可能會跨越數個畫素。
Edge物件會依照Polarity屬性的定義,從Light to Dark或Dark to Light尋找轉換,並將該位置定義為單一邊緣的邊緣位置。您也可以變更EdgeType屬性,以搜尋成對邊緣。對於成對邊緣,將會搜尋兩個反向的邊緣,並將中點回傳為結果。Edge物件可支援多個結果,因此您可以指定您想要尋找多少個單一邊緣或成對邊緣。
可設定Edge物件以使用SearchType屬性沿線段或弧線搜尋。
具有SearchType = Line的Edge物件,其在搜尋長度的形狀上與Line物件相似。Edge物件的搜尋長度亦即Edge物件的長度。含SearchType = Line的Edge物件的其中一項強大的功能,是能夠以任何角度定位。這可以讓使用者變更Edge物件的角度,以維持一個與您想要尋找邊緣的區域垂直的Edge物件向量。針對跟著隨關注區域一起移動的Frame,通常只要讓Edge物件和其保持相對關係,即可完成上述操作。
Edge物件配置
Edge物件具有兩種不同的配置。
SearchType為Line時的配置
當SearchType = Line時,Edge物件的搜尋視窗為沿著Edge物件搜尋的線段。Edge物件會依Direction of Search Indicator所指定的方向,沿著本線段搜尋轉換(由淺至深或由深至淺)。
Edge物件線段配置符号 說明 a 序列中的步驟編號 b 物件名稱 c 大小及方向把手 d 方向指標(搜尋方向) Edge物件可設定在以任何方向搜尋的位置(不只是沿著垂直或水平方向)。在尋找關注邊緣時,可使用Edge物件的大小及方向把手,將Edge物件沿著必要的方向移動。若想移動整個物件,請拖曳標籤或線段。
SearchType為Arc時的配置
SearchType = Arc時,Edge物件的搜尋視窗為沿著Edge物件搜尋的弧線。Edge物件會依Direction of Search Indicator所指定的方向,沿著本弧線搜尋轉換(由淺至深或由深至淺)。
Edge物件弧線配置符号 說明 a 序列中的步驟編號 b 物件名稱 c 方向指標(搜尋方向) d 大小調整把手 若欲變更弧線的尺寸,請拖曳弧線任一端的尺寸把手之一。若欲變更半徑,請拖曳中間的尺寸把手。若欲移動整個物件,請拖曳標籤或中心點。
Edge物件屬性
下列清單是Edge物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
請注意,當您變更SearchType屬性時,屬性設定會依據所指定的類型而變化。當SearchType為Line時,在Vision Guide視窗屬性資料格中看不見下列屬性:
- AngleEnd
- AngleStart
- CenterPointObject
- CenterPntObjResult
- CenterPntOffsetX
- CenterPntOffsetY
- CenterPntRotOffset
當SearchType為Arc時,看不見下列屬性:
- X1
- Y1
- X2
- Y2
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Accept | 用於指定某項特徵必須等於或超過多少形狀分數,才能視為已找到。 若該值過小,可能會造成偵測錯誤。 預設:100 |
AngleEnd | 用於針對執行圓弧搜尋的範圍,指定其結束角度。 預設:135 |
AngleStart | 用於針對執行圓弧搜尋的範圍,指定其起始角度。 預設:45 |
CalRobotPlacePos | 在設計和執行程式時校正RobotPlacePos。 |
Caption | 用於為Edge物件指定一個標題。 預設:空白 |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,Edge物件將會針對指定Vision物件的結果,套用至全部的 (NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 若SearchWinType設定為RotatedRectangle,搜尋視窗會依據Angle結果進行旋轉。 預設:False |
CheckClearanceFor | 設定物件以確認間隙。 |
ClearanceCondition | 指定間隙的判斷方法。 |
ContrastTarget | 用於為邊緣搜尋設定想要的對比。 預設:0(最佳對比) |
ContrastVariation | 用於為ContrastTarget選擇允許的對比變化量。 預設:0 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設: 空白 |
EdgeSort | 用於設定對檢測到的邊緣結果排序的方法。 |
EdgeThreshold | 用於設定一個臨界值,所有低於此值的邊緣將被忽略。 預設:2 |
EdgeType | 用於針對要搜尋的邊緣,選擇其類型:單一或一對。 預設:1 - Single |
Enabled | 指定是否執行該物件。 預設:True |
EndPntObjResult | 用於指定要使用EndPointObject的哪個結果。 |
EndPointObject | 用於指定使用哪一Vision物件來定義檢測線段的終點。 |
EndPointType | 用於針對將用來定義線段終點的終點,定義其類型。 |
FailColor | 用於選擇物件不合格時的物件色彩。 預設:Red |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
Name | 用於對Edge物件指定一個獨特的名稱。 預設:Edge01 |
NumberToFind | 用於針對要尋找的邊緣,定義其數量。 預設:1 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
Polarity | 用於定義Edge物件是否應該搜尋LightToDark或DarkToLight轉換。 預設:1 - LightToDark |
Radius | 用於定義從物件的CenterPoint到物件最外圈搜尋環的距離。 |
SearchType | 設定是否使用線段或弧線搜尋。 預設:Line |
ScoreWeightContrast | 用於針對以對比為依據的分數,設定其百分比。 預設:50 |
ScoreWeightStrength | 用於針對以邊緣強度為依據的分數,設定其百分比。 預設:50 |
SearchWidth | 用於定義邊緣搜尋的寬度。 範圍:3 - 99 預設:3 |
StartPntObjResult | 用於指定要使用StartPointObject的哪個結果。 |
StartPointObject | 用於指定使用哪一Vision物件來定義檢測線段的起點。 |
StartPointType | 用於針對將用來定義線段起點的起點,定義其類型。 |
StrengthTarget | 用於針對想要搜尋的邊緣,設定其強度。 預設:0 |
StrengthVariation | 用於設定StrengthTarget的變化量。 預設:0 |
X1 | 邊緣起點的X座標位置。 |
X2 | 邊緣終點的X座標位置。 |
Y1 | 邊緣起點的Y座標位置。 |
Y2 | 邊緣終點的Y座標位置。 |
Edge物件結果
下列清單是Edge物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下章節。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
CameraX | 用於針對在攝影機的座標系統中所找到邊緣位置,回傳其X座標位置。 |
CameraY | 用於針對在攝影機的座標系統中所找到邊緣位置,回傳其Y座標位置。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內所找到的零件位置,回傳CameraX、CameraY和CameraU座標。 |
ClearanceOK | 回傳間隙的判斷结果。 |
Contrast | 用於回傳找到Edge的對比。 |
Found | 用於回傳是否找到物件。(即:關於您所查看的特徵或零件,是否具有超過Accept屬性目前設定值的形狀分數。) |
NumberFound | 用於回傳找到的Edge數。 (偵測到的數字範圍下限為0,上限為以NumberToFind屬性所設定的數字。) |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於針對所找到邊緣的位置,回傳其X座標位置(單位:畫素)。 |
PixelY | 用於針對所找到邊緣的位置,回傳其Y座標位置(單位:畫素)。 |
PixelXYU | 僅執行時間。 用於針對所找到Edge的位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於針對所找到Edge的位置,回傳其相對於機器人座標系統的X座標位置。 |
RobotY | 用於針對所找到Edge的位置,回傳其相對於機器人座標系統的Y座標位置。 |
RobotXYU | 僅執行時間。 用於針對所找到Edge的位置,回傳其相對於機器人座標系統的RobotX、RobotY和RobotU座標位置。 |
Score | 用於回傳一個INTEGER值,其代表所找到邊緣的整體分數。 |
Strength | 用於針對偵測到的邊緣,回傳其強度。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
使用Edge物件
接下來的幾個小節將會引導您了解如何建立及使用Edge物件。
- 如何建立一個新的Edge物件
- 針對搜尋視窗進行定位和調整大小
- 針對與Edge相關的物件,設定其屬性
- 測試Edge物件及檢查結果
- 調整屬性後再次測試
在開始進行上述步驟之前,您需要建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的Edge物件
- 按一下Vision Guide工具列上的[All Tools] - [New Edge]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成Edge物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Edge01」,因為這是為本序列所建立的第一個Edge物件。(將會在後續說明如何變更物件名稱。)
步驟2:設定Edge物件位置
現在您可以看到一個與下列所示類似的Edge物件(a):
新Edge物件
於建立新的Edge物件後,您即可藉由設定SearchType屬性以改變是否沿著線段或弧線搜尋。當SearchType為Line(預設)時,您可以按下任一大小調整把手以變更搜尋長度及旋轉,然後將線段的該端拖曳至新的位置。當SearchType為Arc時,您可藉由拖曳弧線各端的把手以變更弧線。若欲變更半徑,請拖曳中間的把手。
您也可以按一下Edge物件的名稱標籤或邊緣線段的任何地方,同時按住滑鼠,將整個Edge物件拖曳至畫面上的新位置。當您找到您想要的位置時即可放開滑鼠,Edge物件就會停留在畫面中的這個新位置。
步驟3:為Edge物件設定屬性
現在可為Edge物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些Edge物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
EdgeType (Single) | 用於針對要搜尋的邊緣,選擇其類型。 對成對邊緣來說,會從每個方向找到一個邊緣,並會將一對邊緣的中心報告為位置。 |
Name屬性 (「Edgexx」) | 新建立的Edge物件其預設名稱為「Edgexx」,其中xx是用來辨別相同視覺序列中多個Edge物件的編號。若這是本視覺序列的第一個Edge物件,預設名稱就會是「Edge01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現在修改名稱屬性之後,所有顯示Edge物件名稱的地方都會更新,以反映新名稱。 |
NumberToFind (1) | 您可以沿著搜尋線段搜尋1或多個邊緣。 |
Polarity (LightToDark) | 若您想要尋找DarkToLight邊緣,請變更極性。 |
步驟4:執行Edge物件及檢查結果
若想執行Edge物件,請依下列方式操作:
在執行面板上物件的[Run]按鈕上按一下。現在將會顯示Edge物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
PixelX結果 PixelY結果 | 沿著邊緣搜尋線段所找到的邊緣的XY位置。 (單位:畫素) |
CameraX結果 CameraY結果 | 針對在攝影機座標系統中的Edge物件,可用於定義其XY位置。 若攝影機已經過校正,CameraX和CameraY結果將只會回傳一個值。若未經過校正,則會回傳「no cal」。 |
RobotX結果 RobotY結果 | 針對在機器人座標系統中的Edge物件,可用於定義其XY位置。 可用來告知機器人移動至本XY位置。(不需要其他轉換或其他步驟。)若攝影機已經過校正,RobotX 和RobotY結果將只會回傳一個值。若未經過校正,則會顯示「no cal」。 |
Polar物件
Polar物件說明
Polar物件的提供一種快速的方法,將具有笛卡爾座標的影像轉換成具有極座標的相對應影像。Polar物件是用來判定物件旋轉的出色工具。因為Polar物件的可靠性及速度,所以強烈建議當您需要計算物件的角度旋轉時加以使用。
Polar物件是判斷旋轉的工具,因此圍繞物件的中心旋轉不會影響計算精度,但物件的x-y平面平移會顯著影響計算的精度。這表示Polar物件很適合用來計算物件的旋轉,但只有在該物件的中心位置不移動的情況下才行。
因此,Vision Guide 8.0為Polar物件提供一個CenterPoint屬性。CenterPoint屬性可讓使用者將Polar物件的中心點鎖定於像是Correlation和Blob物件等其他物件的位置結果。
這表示若您先找出Correlation或Blob物件的XY位置,接著就可以將Polar物件的中心置於XY位置,然後用來計算物件的旋轉。
Polar物件配置
Polar物件的配置與目前所述其他物件的配置看來頗為不同。但其使用方式是十分相似的。Polar物件具有圓形的基本配置,因此具有一個中心及半徑。按一下Polar物件的名稱(或在構成外部周長的圓圈的任何地方按一下),然後將物件拖曳至新位置,即可移動Polar物件的位置。
Polar物件配置
符号 | 說明 |
---|---|
a | 物件名稱 |
b | 搜尋視窗 大小調整把手 |
c | 搜尋環 |
提示
Polar物件的中心位置(由CenterPoint屬性所定義)也可以其他物件的位置為準。這表示即便您可以重新設定Polar物件的位置,一旦您執行物件或Sequence,Polar物件的中心位置也可能變更。想了解更多細節,請參見本章後續的Polar物件。
Polar物件的搜尋視窗是圓形的。其外部邊界是由如下圖所示的外環所定義的。其內環是一個尺寸比外環稍小,並位於外環n個畫素內的圓形。畫素數是由Thickness屬性加以定義的。若您變更Thickness屬性,您將會注意到內環和外環之間的「厚度」或距離也隨之變更。這可以為您要搜尋的區域提供視覺指示。
若想調整Polar物件的搜尋視窗外部邊界的大小,請按一下4個搜尋視窗大小調整把手的其中一個,並依需要向內或向外拖曳搜尋環即可。
Polar物件屬性
下列清單是Polar物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Accept | 用於指定某項特徵必須等於或超過多少形狀分數, 尋找分數超過設定值的特徵。若該值過小,可能會造成偵測錯誤。 預設:700 |
AngleOffset | 透過您要搜尋的特徵進行教導,以調整角度指示器圖形後,本屬性可針對套用至Polar物件的偏差角度進行調整。 預設:0 |
CalRobotPlacePos | 在設計和執行程式時校正RobotPlacePos。 |
Caption | 用於為Polar物件指定一個標題。 預設:Empty String |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,Polar物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 預設:False |
CenterX | 用於指定作為Polar Search Tool中心點的X座標位置。 CenterPointObject屬性設定為其他Vision物件時,將會自動填入本屬性。 |
CenterY | 用於指定作為Polar Search Tool中心點的Y座標位置。 CenterPointObject屬性設定為其他Vision物件時,將會自動填入本屬性。 |
CheckClearanceFor | 設定物件以確認間隙。 |
ClearanceCondition | 指定間隙的判斷方法。 |
Confusion | 用於針對要搜尋的影像,表示預期的混淆量。 這是一個特徵所能得到的最高形狀分數(且非搜尋中特徵的實例)。 預設:800 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設: 空白 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 用於選擇物件不合格時的物件色彩。 預設:Red |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
ModelObject | 用於決定要使用哪個模型進行搜尋。 預設:Self |
Name | 用於對Polar物件指定一個獨特名稱。 預設:Polar01 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
Radius | 用於定義從物件的CenterPoint到物件最外圈搜尋環的距離。 預設:50 |
SaveTeachImage | 設置示教模型時,是否保存圖像文檔。 |
ScoreMode | 設置或返回閾值以顯示Fail時的結果。 |
ShowModel | 對於所教導的模型,可讓使用者查看內部灰階的表現方式。 設置不要緊的圖元。 |
Thickness | 用於針對Polar物件的搜尋區域,定義搜尋環的厚度。 厚度是指從Polar物件的Radius所定義的外環開始測量起的畫素數。 預設:5 |
Polar物件結果
下列清單是Polar物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下章節。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於回傳所找到零件的旋轉度數。 |
CameraX | 用於針對在攝影機的座標系統中Polar物件的CenterPoint位置,回傳其X座標位置。 |
CameraY | 用於針對在攝影機的座標系統中Polar物件的CenterPoint位置,回傳其Y座標位置。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內所找到的零件位置,回傳CameraX、CameraY和CameraU座標。 |
ClearanceOK | 回傳間隙的判斷结果。 |
Found | 用於回傳是否找到物件。(即:關於您所查看的特徵或零件,是否具有超過Accept屬性目前設定值的形狀分數。) |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於針對所找到零件的位置,回傳其X座標位置(以模型原點為參考),單位為畫素。 |
PixelY | 用於針對所找到零件的位置,回傳其Y座標位置(以模型原點為參考),單位為畫素。 |
PixelXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於針對所找到Polar物件的CenterPoint位置,回傳其相對於機器人座標系統的X座標位置。 |
RobotY | 用於針對所找到Polar物件的CenterPoint位置,回傳其相對於機器人座標系統的Y座標位置。 |
RobotU | 用於針對所找到Polar物件的Angle結果,回傳其相對於機器人座標系統的U座標位置。 |
RobotXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其相對於機器人座標系統的RobotX、RobotY和RobotU座標位置。 |
Score | 用於回傳一個INTEGER值,該數值表示在執行時間所找到的特徵,符合Polar所搜尋的模型。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
提示
Polar物件的所有結果,在回傳X和Y位置座標(CameraX、CameraY、PixelX、PixelY、RobotX、RobotY…)時,都是從CenterPoint屬性接收這些座標值的。無論在執行Polar物件之前將CenterPoint屬性設定為何,之後都會以給Polar物件的結果來傳遞。Polar物件並不會計算X和Y中心位置。然而,其所提供的X和Y位置結果,能簡單從Polar物件取得X和Y結果,而非從一個Vision物件取得X和Y結果。
了解Polar物件
Polar物件的用途是用來尋找特定物件或圖樣的旋轉量。您可以先教導一個基本上為圓形環,並具有指定厚度的極性模型。在教導之後,我們可以接著執行Polar物件,圓形環就會與關注零件的目前旋轉進行比較,並計算出角度位移,然後當作以Polar物件的其中一項結果進行回傳。
請參考實例,以幫助您更容易了解。請設想一個會繞著中心點旋轉,並必須由機器人取放托盤上的零件。
因為本零件永遠會有不同的方位位置,因此除非能判定物件的旋轉,否則將會很難抓取。若本物件看起來與圖A中所顯示的黑色和灰色零件相似,就可以定義一個和物件外部相交會的Polar Model。
請注意在內環及外環之間的區域。本區域針對用來教導本零件的Polar物件,定義其模型。您應該可以看到環內的某些區域是非常獨特的,因為這些區域具有與環的其他部份不同的強烈特徵差異。這些區域將會是找出零件旋轉量的關鍵。
圖A:使用Polar物件的範例零件
符号 | 說明 |
---|---|
a | 搜尋區域的厚度 |
b | 外環 |
c | 內環 |
圖B顯示教導模型的外觀,是一個大部份為白色,但有一小節為黑色和灰色的環。
在執行Polar物件時,會在搜尋視窗中搜尋這種類型的圖樣,也就是有一小節為黑色和灰色,而環的其他部份為白色的圖樣。
圖B:圖A零件的Polar Model表現方式
符号 | 說明 |
---|---|
a | 搜尋區域的厚度 |
b | 外環 |
c | 內環 |
在圖C中,顯示原始零件與模型相比已旋轉約90°。Polar物件將會針對模型和物件的新位置,計算兩者之間的角度位移。
圖C:由原始教導的模型旋轉90°的零件
符号 | 說明 |
---|---|
a | 搜尋區域的厚度 |
b | 外環 |
c | 內環 |
圖D的左邊顯示以0°教導的原始模型,右邊則顯示零件已旋轉90°。
圖D:原始Polar Model和已旋轉過的零件的Polar表現方式
符号 | 說明 |
---|---|
a | 搜尋區域的厚度 |
b | 外環 |
c | 內環 |
Polar物件的主要相關參數
在您看過上一節的Figures之後或許可以看出,Polar物件有3個主要的相關參數,對於達成最佳結果都非常重要。這些參數是以下列屬性定義的:
- CenterPoint屬性
- Radius屬性
- Thickness屬性
- AngleOffset屬性
CenterPoint屬性定義Polar物件的中心位置。
如先前所述,必須正確對準Polar物件的中心點,以便讓教導模型的中心點和您要搜尋角度偏差的零件的中心點完全對準。否則XY空間的移動會造成角度結果不精確。
Radius屬性可針對從Polar物件的中心到Polar物件最外環,定義兩者之間的距離。
這同時也可定義外Search Area的邊界。
Thickness屬性定義從外環到想像內環之間的距離(單位:畫素)。
這實際上就是Search Area的厚度。
AngleOffset屬性提供一個機制,可讓使用者為圖形線段來設定角度值,其可用於顯示Polar物件的旋轉位置。
在執行Polar物件之後,可以在3點鐘方向看到本線段(0°位置)。然而,對於您最關注的特徵,您可能希望該特徵的旋轉位置能有一個圖形指示器,Angle Offset屬性可讓您依據您的需求,重新定位此圖形指示器。(請記住,本AngleOffset屬性通常是在Teaching a Model及執行Polar物件之後才設定的。)
判定物件旋轉
以機器人抓取積體電路晶粒是一種需要判定物件旋轉的典型應用,其必須知道晶粒的XY位置和其旋轉的方位。晶粒具有與背景不同的灰色調,而晶粒的表面包含可顯示其從0至360°旋轉的灰階資訊。
對於這種應用,可使用一個Blob物件(稱為「Blob01」)來尋找晶粒的中心。或者,您也可以使用Correlation物件。
使用Blob物件的XY位置結果作為Polar物件的中心,以建立一個Polar物件。只要將Polar物件的CenterPoint屬性設為「Blob01」即可。
接著為Polar物件設定適當的Radius和Thickness屬性值。然後提供一個晶粒在0°的模型,藉此訓練灰階Polar Model。
在以不同的方位搜尋新晶粒時,會從Blob物件「Blob01」的XY位置結果,以及Radius和Thickness等屬性來建構出一個Polar搜尋視窗。
接著,對於之前所教導的模型,本搜尋視窗會搜尋其旋轉當量。對於找到模型的角度,之後會以Angle結果(單位:畫素)及RobotU結果(在機器人座標)進行回傳。
提示
雖然回傳的RobotU結果將會是零件在機器人世界座標的實際旋轉,但請記得,您可能無法以完全0°的旋轉來組裝您的夾具。可能至少會有2° ~ 3°的偏差。因此在移動至零件時,請務必在您的程式中進行調整。
調整教導模型的角度偏差
在教導一個Polar Model時,原始圓形模型會被視為0°,而0°位置是在3點鐘方向。下圖顯示一個被教導的模型,其關注區約在1點鐘方向。在教導此模型時,模型的0°位置將會與所有Polar Model一樣在3點鐘方向。
然而,對於零件的實際旋轉,若要查看其視覺指示,則必須使用Angle Offset來適度調整極性角度指示器的定位。
例如:指向約1點鐘方向所教導的零件,需要約60°的Angle Offset。(Polar物件的AngleOffset屬性應設定為60°。)
在AngleOffset屬性設定為60°時的Polar Model
Polar物件的效能問題
在教導Polar物件時,主要的重點是Polar Model是否包含足以判定物件方位的資訊。
因此,Polar物件的目標精確性及執行速度,將會判定用來進行Polar物件搜尋的Polar Model的大小。
若Polar物件的旋轉結果要精確至1/2度,那麼Polar物件只需要180畫素寬(每個畫素2°或每個Polar物件解析度單位0.5°,並假設1/4的畫素搜尋精確性)。
Polar物件的精確性也需要仰賴Model中的灰階資訊。
在選擇Polar Model的厚度(單位:畫素)時,必須要能包含足夠的資訊,如此一來,即使所搜尋影像的中心點位置有些微變化,旋轉簽署仍能得到可靠的結果。
選擇Thickness屬性1的設定值,代表若影像錯置了一個畫素,極性轉換就會對極性影像傳送完全不同的畫素。
為了對來源影像位置提供一些容許值,可將Thickness屬性設為5;那麼即使來源影像位置偏移一個畫素,相對應的極性影像畫素只會偏移五分之一。(這也是為何Thickness屬性的最小值為5的原因。)
在選擇Polar物件的Radius和Thickness屬性時,應依據Model中的灰階資訊量,以及目標搜尋速度而定。
搜尋速度與Radius和Thickness屬性成正比。在Thickness屬性設為5的情況下,要達到最快的搜尋時間就得選擇小的Radius屬性設定值。但在大部份的情況下,將Thickness屬性設為5可能不足以精確地尋找Polar Model。
使用Polar物件
接下來的幾個小節將會引導您了解如何建立及使用Polar物件。
- 如何建立一個新的Polar物件
- 針對搜尋視窗進行定位和調整大小
- 針對與Polar相關的物件,設定其屬性
- 測試Polar物件及檢查結果
- 調整屬性後再次測試
在開始進行下列的步驟之前,您應該已建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的Polar物件
- 按一下Vision Guide工具列上的[All Tools] - [Polar]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成Polar物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Polar01」,因為這是為本序列所建立的第一個Polar物件。(將會在後續說明如何變更物件名稱。)
步驟2:設定Polar物件的位置
現在您可以看到一個與下列所示類似的Polar物件:
新Polar物件
符号 | 說明 |
---|---|
a | 物件名稱 |
b | 搜尋視窗 大小調整把手 |
c | 搜尋環 |
Polar物件具有一個圓形的搜尋視窗。您可以變更整個物件的位置或變更其半徑。
若想移動整個物件,按一下物件名稱或沿著外部圓周的任何地方按一下,同時按住滑鼠左鍵,並將整個物件拖曳至畫面上的新位置。當您找到您想要的位置時即可放開滑鼠,Polar物件就會停留在畫面中的這個新位置。
若想變更半徑,請將滑鼠指標移至其中一個大小調整把手上,按下滑鼠左鍵,然後移動滑鼠以變更半徑的大小。
步驟3:為Polar物件設定屬性
現在可為Polar物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些Polar物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
- 「Vision Guide 8.0 Properties and Results Reference」
- 本節的「Polar物件屬性」
屬性 | 說明 |
---|---|
Name屬性 | 新建立的Point物件其預設名稱為「Polarxx」,其中xx是用來辨別相同視覺序列中多個Polar物件的編號。若這是本視覺序列的第一個Polar物件,預設名稱就會是「Polar01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現在修改名稱屬性之後,所有顯示Polar物件名稱的地方都會更新,以反映新名稱。 |
CenterPointObject屬性 | 通常您會將本屬性設定為一個先前已在序列中執行的物件。這將可在執行時間判定Polar物件的中心點。 |
Thickness屬性 | 通常會將本屬性設定為一個大到能夠包含充足的模型資訊,以找出零件角度的值。 |
AngleOffset屬性 | 通常會將本屬性設定為能將最終角度結果放置在目標位置的值。例如:若您打算尋找手錶的分針,您會調整AngleOffset,以便讓顯示的角度符合分針。 |
步驟4:執行Polar物件及檢查結果
若想執行Polar物件,請依下列方式操作:
在執行面板上物件的[Run]按鈕上按一下。將會先執行CenterPointObject。
現在將會顯示Polar物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
Angle結果 | 所找到模型的角度,單位為度。 |
OCR物件
OCR物件說明
OCR物件(光學文字辨識)可針對影像的單行字元字串,辨識其中的特定字型及字元大小。OCR物件圖形使用者介面包括一個Font精靈,可用來依據SEMI標準建立字型,或依據影像或ASCII描述檔中的字型建立一個使用者定義的字型。您可以將您所建立的字型匯出至磁碟,並匯入至相同專案或其他專案中的其他OCR物件。
提示
OCR物件只有在已安裝及啟用OCR選購品時才能運作。
OCR物件配置
OCR物件有一個搜尋視窗及一個模型視窗,如下所示。
OCR物件配置
符号 | 說明 |
---|---|
a | 物件名稱 |
b | 搜尋視窗 |
c | 模型視窗 |
d | 模型視窗 大小調整把手 |
提示
使用“Arc”類型搜尋視窗,可以識別沿著圓弧排列的字串,是特定的字型或文字大小的圖像。
OCR物件屬性
下列清單是OCR物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference Manual」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Caption | 用於為OCR物件指定一個標題。 預設:空白 |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,OCR物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 預設:False |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 當FindChar = False時變灰 預設:1 |
Description | 設定使用者指定的説明 預設: 空白 |
Dictionarymode | 指定字典模式 預設:All |
Direction | 用於為沿圓弧排列的字串設定方向。 預設:InsideOut |
Enabled | 指定是否執行該物件。 預設:True |
ExportFont | 將目前的字型匯出至磁碟。 |
FailColor | 用於選擇物件不合格時的物件色彩。 預設:Red |
FindChar | 指定是否將各字元視為個別物件 預設:False |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
ImportFont | 用於從Vision Guide圖形使用者介面執行一個檔案對話框,讓您匯入一個字型檔。 |
InvalidChar | 用於設定或回傳在Text結果中代表無效字元的字元。 預設:「?」 |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
ModelWin | 僅執行時間。 在單一呼叫中設定或回傳模型視窗的左邊、上方、高度、寬度等參數。 |
ModelWinAngle | 用於定義模型視窗的角度。 |
ModelWinCenterX | 用於定義模型視窗中心的X座標值。 |
ModelWinCenterY | 用於定義模型視窗中心的Y座標值。 |
ModelWinLeft | 用於定義模型視窗最左邊的位置。 |
ModelWinHeight | 用於定義模型視窗的高度。 預設:50 |
ModelWinTop | 用於定義模型視窗最上方的位置。 |
ModelWinType | 用於定義模型視窗的類型。 |
ModelWinWidth | 用於定義模型視窗的寬度。 預設:50 |
Name | 用於對OCR物件指定一個獨特名稱。 預設:Ocr01 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
Polarity | 用於定義物件及背景之間的差異性。(「Dark Object on Light Background」或「Light Object on Dark Background」 )。 預設:1 - DarkOnLight |
SearchWin | 僅執行時間。 用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數或中心X坐標、中心Y坐標、圓内周的半徑大小、圓外周的半徑大小。。 |
SearchWinAngleEnd | 用於針對要搜尋的區域,定義其結束角度。 |
SearchWinAngleStart | 用於針對要搜尋的區域,定義其開始角度。 |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 預設:100 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊的位置(單位:畫素)。 |
SearchWinRadiusInner | 用於針對要搜尋的區域,定義其圓弧内徑。 |
SearchWinRadiusOuter | 用於針對要搜尋的區域,定義其圓弧外徑。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方的位置(單位:畫素)。 |
SearchWinType | 用於針對要搜尋的區域,定義其類型(亦即Rectangle, Arc) |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 預設:100 |
OCR物件結果
下列清單是OCR物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下章節。
「Vision Guide 8.0 Properties and Results Reference Manual」
結果 | 說明 |
---|---|
Angle | 用於回傳找到字元的旋轉量,用角度表示。 |
Found | 用於回傳是否找到物件。 |
Passed | 用於回傳是否接受物件偵測結果。 |
CameraX | 用於針對在攝影機的座標系統中所找到字元,回傳其X座標位置。 |
CameraY | 用於針對在攝影機的座標系統中所找到字元,回傳其Y座標位置。 |
NumberFound | 用於回傳所找到的字元件數量。 |
MaxX | 用於回傳字元Extrema的最大X畫素座標(單位:畫素)。 |
MaxY | 用於回傳字元Extrema的最大Y畫素座標(單位:畫素)。 |
MinX | 用於回傳字元Extrema的最小X畫素座標(單位:畫素)。 |
MinY | 用於回傳字元Extrema的最小Y畫素座標(單位:畫素)。 |
PixelX | 用於針對所找到字元的位置,回傳其X座標位置(單位:畫素)。 |
PixelY | 用於針對所找到字元的位置,回傳其Y座標位置(單位:畫素)。 |
RobotX | 用於針對在機器人的座標系統中所找到字元,回傳其X座標位置。 |
RobotY | 用於針對在機器人的座標系統中所找到字元,回傳其Y座標位置。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
Text | 用於回傳在搜尋操作中找到的文字。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
使用OCR物件
下一節將說明使用OCR物件所需要的步驟,如下所示:
- 建立一個新的OCR物件
- 為新物件建立或匯入一個字型
- 校正字型(若有需要)
- 針對與OCR相關的物件,設定其屬性
- 測試OCR物件及檢查結果
- 調整屬性後再次測試
在開始進行下列的步驟之前,您應該已建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,您可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。您也可以在Vision Guide視窗的序列樹上按一下和在OCR物件上按一下,以選擇一個先前已建立的序列。
建立一個新的OCR物件
- 按一下Vision Guide工具列上的[All Tools] - [OCR]按鈕。
- 您會看到在OCR物件按鈕上出現一個OCR圖示。
- 按一下OCR圖示,並拖曳到Vision Guide視窗的影像顯示區中。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Ocr01」,因為這是為本序列所建立的第一個OCR物件。(將會在後續說明如何變更名稱。)
OCR物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 搜尋視窗 |
d | 模型視窗 |
建立一個字型
若想使用OCR物件,必須先依據要掃描的影像建立一個字型。您可以使用ImportFont屬性,從其他專案匯入一個字型。當您匯入字型時,您並不需要建立字型。
此外,常見的西方及日本字型已內嵌在系統中。依據輸入影像的大小不同,有時可能需要建立字型。
可從影像檔案建立使用者定義的字型。
以下是建立字型的步驟:
- 按一下流程圖上的OCR物件。依字元調整模型視窗。
- 按一下[Teach]按鈕。將會顯示[Teach OCR Font]對話框。
- 若要登錄新字元,請按一下[New Character]按鈕。然後按一下[Teach]按鈕。您可登錄多幅影像為單一字元。
您可登錄日文及英數字元和符號。若想從字型中刪除已註冊的字元,請按一下[Existing Character]按鈕,並從下拉式清單中選擇要刪除的字元。然後按一下[Delete]按鈕。
CodeReader物件
CodeReader物件說明
CodeReader可用來讀取條碼或2維碼。
支援的編碼為:
編碼 | 規格 |
---|---|
EAN13 | 0至9數字、固定長度。 |
Code39 | 0至9、A至 Z、./+-%$特殊字元、可變長度。 |
DataMatrix | 2維碼 *1 |
Interleaved 2 of 5 | 0至9數字、固定長度。 |
Code128 | 全ASCII、可變長度。 |
Codabar | 0 至 9數字、$、- 、:、/、.、+ |
PDF417 | 2維碼 |
QR | 2維碼 |
EAN | 8個0至9的數字、固定長度。 |
UPC A | 0至9數字、固定長度。 |
UPC E | 0至9數字、固定長度。 |
*1:僅支援ECC200代碼。
CodeReader物件配置
CodeReader物件只有一個如下所示的搜尋視窗。
CodeReader物件配置
符号 | 說明 |
---|---|
a | 物件名稱 |
b | 搜尋視窗 |
c | 大小調整把手 |
CodeReader物件屬性
下列清單是CodeReader物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference Manual」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Caption | 用於為CodeReader物件指定一個標題。 預設:空白 |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。若指定All,CodeReader物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 預設:False |
CodeType | 用於設定或回傳要以CodeReader物件搜尋哪些類型的條碼或二維碼。 預設:0 – Auto |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設: 空白 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 物件不合格時,用於選擇物件的色彩。 預設:Red |
Frame | 用於針對指定的框,定義目前物件的搜尋位置。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
Name | 用於對CodeReader物件指定一個獨特名稱。 預設:Code01 |
NumberToFind | 用於定義要尋找的條碼數量。 最大值:8 預設:1 |
Orientation | 用於定義條碼的方向。 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
SearchWin | 僅執行時間。用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 預設:100 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 預設:100 |
CodeReader物件結果
下列清單是CodeReader物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference Manual」
結果 | 說明 |
---|---|
Angle | 用於針對偵測到的代碼,回傳其傾斜角度。 |
CameraX | 用於回傳攝影機座標系統中所偵測到的物件的X座標。(單位:mm) |
CameraY | 用於回傳攝影機座標系統中所偵測到的物件的Y座標。(單位:mm) |
Found | 用於回傳是否找到物件。 |
FoundCodeType | 用於回傳所偵測到的條碼類型。 |
NumberFound | 用於回傳所偵測到的條碼的數量。 (偵測到的數字範圍下限為0,上限為以NumberToFind屬性所設定的數字。) |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於針對所找到零件的位置,回傳其X座標位置(單位:畫素)。 |
PixelY | 用於針對所找到零件的位置,回傳其Y座標位置(單位:畫素)。 |
PixelXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於回傳機器人座標系統中所偵測到的物件的X座標。 |
RobotY | 用於回傳機器人座標系統中所偵測到的物件的Y座標。 |
RobotU | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的U座標位置。 |
RobotXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其相對於機器人座標系統的RobotX、RobotY和RobotU座標位置。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
Text | 用於回傳在搜尋操作中找到的文字。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
使用CodeReader物件
下一節將說明使用CodeReader物件所需要的步驟,如下所示:
- 建立一個新的CodeReader物件
- 針對搜尋視窗進行定位和調整大小
- 設定與CodeReader物件相關的屬性
- 測試CodeReader物件及檢查結果
- 調整屬性後再次測試
在開始進行下列的步驟之前,您應該已建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,您可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。您也可以在Vision Guide視窗的序列樹上按一下和在CodeReader物件上按一下,以選擇一個先前已建立的序列。
步驟1:建立一個新的CodeReader物件
- 按一下Vision Guide工具列上的[All Tools] - [CodeReader]按鈕。
- 您會看到在CodeReader物件按鈕上出現一個CodeReader圖示。
- 按一下CodeReader圖示,並拖曳到Vision Guide視窗的影像顯示區中。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Code01」,因為這是為本序列所建立的第一個CodeReader物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的CodeReader物件:
圖 :新CodeReader物件
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 搜尋視窗 |
- 在CodeReader物件的名稱標籤按一下,同時按下滑鼠,將CodeReader物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 使用搜尋視窗大小調整把手,依您的需要調整CodeReader物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)(搜尋視窗是將會針對Blob進行搜尋的區域。)
提示
在條碼的兩側留下一些空間是很重要的,這空間稱為淨空區;否則搜尋將會失敗。若為二維條碼,其周圍必須存在一格或更多空白。
ColorMatch物件
ColorMatch物件說明
ColorMatch物件可用來偵測符合一或多個色彩模型的色彩。
ColorMatch物件配置
ColorMatch物件具有矩形、旋轉矩形或圓形的配置,因此具有一個中心及半徑。按一下物件的名稱,或在搜尋視窗的外部周長的任何地方按一下,然後將物件拖曳至新位置,即可移動ColorMatch物件的位置。
新ColorMatch物件配置
符号 | 說明 |
---|---|
a | 物件名稱 |
b | 大小調整把手 |
提示
ColorMatch物件的中心位置(由CenterPoint屬性所定義)也可以其他物件的位置為準。這表示即便您可以重新設定ColorMatch物件的位置,一旦您執行物件或Sequence,物件的中心位置也可能變更。
ColorMatch物件的搜尋區域可以是矩形、旋轉矩形或圓形。
若SearchWinType為Circle,並想調整ColorMatch物件的搜尋視窗外部邊界的大小,請按一下搜尋視窗大小調整把手的其中一個,並依需要向內或向外拖曳搜尋環即可。
ColorMatch屬性
下列清單是ColorMatch物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference Manual」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Accept | 用於指定某項特徵必須等於或超過多少分數,才能視為已找到。 若該值過小,可能會造成偵測錯誤。 預設:700 |
Caption | 用於為ColorMatch物件指定一個標題。 預設:Empty String |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,ColorMatch物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 若SearchWinType設定為RotatedRectangle,搜尋視窗會依據Angle結果進行旋轉。 預設:False |
CenterX | 用於指定作為物件中心點位置的X座標。CenterPoint屬性設定為其他Vision物件時,將會自動填入本屬性。 |
CenterY | 用於指定作為物件中心點位置的Y座標。CenterPoint屬性設定為其他Vision物件時,將會自動填入本屬性。 |
ColorMode | 設定欲使用的色域 (RGB/HSV)。 預設:RGB |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentModel | 僅執行時間。這可用於指定ModelColor屬性以及VTeach要使用哪個模型。NumberOfModels的CurrentModel值為1。 預設:1 |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 預設:1 |
Description | 設定使用者指定的説明 預設: 空白 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 物件不合格時,用於選擇物件的色彩。 預設:Red |
Frame | 用於針對指定的框,定義目前物件的搜尋位置。(用於將物件設定在某個框的相對位置。) 預設:None |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
ModelColor | 僅執行時間。本屬性可直接設定RGB色彩值,以便在執行時間時用來手動教導模型。 預設:RGB(0, 0, 0) |
ModelColorTol | 僅執行時間。本屬性是用來在執行時間設定模型色彩的色彩容許值。若畫素色彩在模型色彩的容許值範圍內,則畫素會維持不變。 預設:10 (ColorMode = RGB),0、0、50 (ColorMode = HSV) |
ModelName | 僅執行時間。本屬性是用來在執行時間設定目前模型的名稱。 |
ModelObject | 用於決定要使用哪個模型進行搜尋。 預設:Self |
Name | 用於對ColorMatch物件指定一個獨特名稱。 預設:ColorMatch01 |
NumberOfModels | 僅執行時間。這是所使用色彩模型的數量。在執行時間,您可以設定NumberOfModels,然後使用CurrentModel和VTeach來教導每個色彩模型。 預設:1 |
NumberToFind | 用於定義要在目前搜尋視窗中尋找的物件數量。 預設:1 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
Radius | 用於定義從物件的CenterPoint到物件最外圈搜尋環的距離。 預設:50 |
SearchWin | 僅執行時間。 用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數。 |
SearchWinAngle | 用於針對要搜尋的區域,定義其角度。 |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 |
SearchWinType | 用於針對要搜尋的區域,定義其類型(亦即Rectangle、RotatedRectangle、Circle)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 |
ColorMatch結果
下列清單是ColorMatch物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference Manual」
結果 | 說明 |
---|---|
CameraX | 用於針對在攝影機的座標系統中所找到零件的位置,回傳其X座標位置(以模型原點為參考)。(單位:mm) |
CameraY | 用於針對在攝影機的座標系統中所找到零件的位置,回傳其Y座標位置(以模型原點為參考)。(單位:mm) |
ColorIndex | 用於針對所找到的色彩模型,回傳其索引。 |
ColorName | 用於針對所找到的色彩模型,回傳其名稱。 |
ColorValue | 根據ColorMode設定傳回找到色彩的RGB或HSV值。 |
CameraXYU | 僅執行時間。用於針對在攝影機的座標系統內所找到的零件位置,回傳CameraX、CameraY和CameraU座標。(單位:mm) |
Found | 用於回傳某個色彩模型的色彩是否相符。 |
NumberFound | 用於回傳找到的物件數量。 (偵測到的數字範圍下限為0,上限為以NumberToFind屬性所設定的數字。) |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於針對所找到零件的位置,回傳其X座標位置(單位:畫素)。 |
PixelY | 用於針對所找到零件的位置,回傳其Y座標位置(單位:畫素)。 |
PixelXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於回傳機器人座標系統中所偵測到的物件的X座標。 |
RobotY | 用於回傳機器人座標系統中所偵測到的物件的Y座標。 |
RobotXYU | 僅執行時間。用於回傳機器人座標系統中所偵測到的物件的RobotX、RobotY及RobotU座標。 |
Score | 回傳0至1000的INTEGER值, 此值代表模型與偵測到物件之間的色彩符合程度。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
使用ColorMatch物件
現在已檢視過ColorMatch和搜尋的運作方式,我們也已具備了解如何使用Vision Guide ColorMatch物件的基礎了。下一節將說明使用ColorMatch物件所需要的步驟,如下所示:
- 建立一個新的ColorMatch物件
- 針對搜尋視窗進行定位和調整大小
- 設定與ColorMatch物件相關的屬性
- 教導一或多個色彩模型
- 測試ColorMatch物件及檢查結果
- 調整屬性後再次測試
- 以單一ColorMatch物件處理多個結果的作業
步驟1:建立一個新的ColorMatch物件
按一下Vision Guide工具列上的[All Tools] - [Color Match]按鈕。
滑鼠游標將會變成一個ColorMatch圖示。
將滑鼠游標移至Vision Guide視窗的影像顯示區,並按一下滑鼠左鍵,將ColorMatch物件放置在影像顯示區上。
請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「ColorMatch01」,因為這是為本序列所建立的第一個ColorMatch物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的ColorMatch物件:
新ColorMatch物件配置
符号 | 說明 |
---|---|
a | 物件名稱 |
b | 大小調整把手 |
- 在ColorMatch物件的名稱標籤按一下,同時按下滑鼠,將ColorMatch物件拖曳至您想要讓搜尋視窗停留的位置。
- 使用搜尋視窗大小調整把手,依您的需要調整ColorMatch物件視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)(此視窗是將進行色彩搜尋的區域。)
步驟3:對ColorMatch物件教導模型
在您使用ColorMatch物件來偵測色彩之前,您必須先教導一或多個色彩模型。在教導一個色彩模型時,將會以ColorMatch物件視窗內的所有畫素來決定平均色彩。您可以為每個模型命名。
- 確保ColorMatch物件是目前所顯示的物件。查看流程圖或物件樹,以查看哪個物件是您目前正在處理的物件,或您可以查看影像顯示區,並查看哪個物件以紫紅色顯目顯示。
- 在執行面板上的[Teach]按鈕上按一下。會顯示如下所示的視窗:
在顯示教導視窗的同時,您可以依需要而變更ColorMatch物件的位置,以教導每個色彩模型。 - 將ColorMatch物件放置在您想要教導的色彩上。試著整個視窗填滿色彩。
- 按一下[Add]按鈕以加入新模型。
- 在想要的模型的資料列中的任何欄位上按一下,以選擇您想要教導的模型。
- 按一下[Teach]按鈕以教導色彩。
- 為色彩輸入一個有意義的名稱。本名稱將會供ColorName結果使用。
- 當ColorMode為RGB時,容許預設值為0,而當ColorMode為HSV時,容許預設值為0、0、50。您可變更容許值為透過少量小型變動,以協助符合色彩或照明不一致處。
- 若想加入更多模型,請重複步驟3 - 8。
提示
在大部份的情況下,雖然您將會使用ColorMatch物件視窗來教導色彩模型,但您也可以在教導視窗中手動輸入RBG(或HSV)值。
LineFinder物件
LineFinder物件說明
LineFinder物件可用來辨別影像中線段的位置。
LineFinder物件可自動處理多個Edge物件,藉此辨識邊緣位置,並從每個邊緣位置取得已辨識出的線段。
對於影像中的物件,其邊緣的灰度值會從深至淺,或從淺至深產生變化。本項變更可能會跨越數個畫素。
LineFinder物件會依照Polarity屬性的定義,從Light to Dark或Dark to Light尋找轉換,並將該位置定義為單一邊緣的邊緣位置。您也可以變更EdgeType屬性,以搜尋成對邊緣。對於成對邊緣,將會搜尋兩個反向的邊緣,並將中點回傳為結果。
LineFinder物件配置
LineFinder物件與Correlation和Blob物件有不同的外觀。LineFinder物件的搜尋視窗是一條線段,Edge物件沿著這條線段進行搜尋。LineFinder物件會依Direction Indicator所指定的方向,沿著本線段搜尋轉換(淺至深或深至淺)。
LineFinder物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 大小及方向把手 |
d | 方向指標(搜尋方向) |
LineFinder物件可設定在以任何方向搜尋的位置(不只是沿著垂直或水平方向)。這與Blob物件的SearchWinType=AngledRectangle相似,在尋找關注邊緣時,可使用LineFinder物件的大小及方向把手,將LineFinder物件沿著必要方向移動(且每次以使用者指定的距離移動)。
LineFinder物件屬性
下列清單是LineFinder物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Accept | 用於指定某項特徵必須等於或超過多少形狀分數,才能視為已找到。若該值過小,可能會造成偵測錯誤。 預設:100 |
AngleBase | 設定參考角度。 預設:0 |
AngleMode | 設定角度輸出格式。 預設:1 – Default |
AngleStart | 用於指定角度搜尋的中心。 |
Caption | 用於為LineFinder物件指定一個標題。 預設:Empty String |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,LineFinder物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 若SearchWinType設定為RotatedRectangle,搜尋視窗會依據Angle結果進行旋轉。 |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件配置在任意位置。但是,若指定給其他Vision物件,則會設定為物件的PixelX和PixelY的中心點。 |
CheckClearanceFor | 設定物件以確認間隙。 |
ClearanceCondition | 指定間隙的判斷方法。 |
ContrastTarget | 用於為邊緣搜尋設定想要的對比。 預設:0(最佳對比) |
ContrastVariation | 用於為ContrastTarget選擇允許的對比變化量。 預設:0 |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設: 空白 |
Directed | 用於指定是否使用線方向設定角度。 預設:True |
EdgeSort | 用於設定對檢測到的邊緣結果排序的方法。 |
EdgeThreshold | 用於設定一個臨界值,所有低於此值的邊緣將被忽略。 預設:2 |
EdgeType | 用於針對要搜尋的邊緣,選擇其類型:單一或一對。 預設:1 - Single |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 物件不合格時,用於選擇物件的色彩。 預設:Red |
FittingThreshold | 指定用於線性擬合的邊緣結果。 |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
Name | 用於對LineFinder物件指定一個獨特的名稱。 預設:LineFinder01 |
NumberOfEdges | 用於指定要偵測的邊緣數。 預設:5 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
Polarity | 用於定義LineFinder物件是否應該搜尋LightToDark或DarkToLight轉換。 預設:1 - LightToDark |
ScoreWeightContrast | 用於針對以對比為依據的分數,設定其百分比。 預設:50 |
ScoreWeightStrength | 用於針對以邊緣強度為依據的分數,設定其百分比。 預設:50 |
SearchWidth | 用於定義邊緣搜尋的寬度。其範圍為3 - 99。 預設:3 |
SearchWin | 僅執行時間。 用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數。 |
SearchWinAngle | 用於針對要搜尋的區域,定義其角度。 |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 |
StrengthTarget | 用於針對想要搜尋的邊緣,設定其強度。 預設:0 |
StrengthVariation | 用於設定StrengthTarget的變化量。 預設:0 |
X1 | 邊緣起點的X座標位置。 |
X2 | 邊緣終點的X座標位置。 |
Y1 | 邊緣起點的Y座標位置。 |
Y2 | 邊緣終點的Y座標位置。 |
LineFinder物件結果
下列清單是Edge物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於回傳影像座標系統中偵測邊緣的角度。 |
CameraX1 | 用於針對攝影機座標系統中所偵測到邊緣的線段,回傳其起點的X座標。 |
CameraY1 | 用於針對攝影機座標系統中所偵測到邊緣的線段,回傳其起點的Y座標。 |
CameraX2 | 用於針對攝影機座標系統中所偵測到邊緣的線段,回傳其終點的X座標。 |
CameraY2 | 用於針對攝影機座標系統中所偵測到邊緣的線段,回傳其終點的Y座標。 |
ClearanceOK | 回傳間隙的判斷结果。 |
Contrast | 用於回傳所偵測的邊緣的平均對比。 |
EdgeCameraXYU | 用於回傳在搜尋中找到的邊緣的CameraX、CameraY和Angle座標位置。 |
EdgePixelXYU | 用於回傳在搜尋中找到的邊緣的PixelX、PixelY和Angle座標位置。 |
EdgeRobotXYU | 用於回傳在搜尋中找到的邊緣的RobotX、RobotY和Angle座標位置。 |
FitError | 用於回傳各邊緣點與偵測到直線間的距離均方根(RMS)。 |
Found | 用於回傳是否找到物件。(即:關於您所查看的特徵或零件,是否具有超過Accept屬性目前設定值的形狀分數。) |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelLine | 僅執行時間。 用於回傳四個線段座標X1、Y1、X2、Y2(單位:畫素)。 |
Length | 用於針對所偵測邊緣的線段,回傳其長度(單位為公釐)。 |
NumberFound | 用於回傳所找到的線段數量。 (偵測到的數字範圍下限為0,上限為以NumberToFind屬性所設定的數字。) |
PixelLength | 用於針對所偵測邊緣的線段,回傳其長度(單位:畫素)。 |
PixelX1 | 用於針對影像座標系統中所偵測到邊緣的線段,回傳其起點的X座標位置。 |
PixelY1 | 用於針對影像座標系統中所偵測到邊緣的線段,回傳其起點的Y座標位置。 |
PixelX2 | 用於針對影像座標系統中所偵測到邊緣的線段,回傳其終點的X座標位置。 |
PixelY2 | 用於針對影像座標系統中所偵測到邊緣的線段,回傳其終點的Y座標位置。 |
RobotX1 | 用於針對機器人座標系統中所偵測到邊緣的線段,回傳其起點的X座標位置。 |
RobotY1 | 用於針對機器人座標系統中所偵測到邊緣的線段,回傳其起點的Y座標位置。 |
RobotX2 | 用於針對機器人座標系統中所偵測到邊緣的線段,回傳其終點的X座標位置。 |
RobotY2 | 用於針對機器人座標系統中所偵測到邊緣的線段,回傳其終點的Y座標位置。 |
RobotU | 用於針對機器人座標系統中所偵測到的邊緣線段,回傳其長度。 |
Strength | 用於回傳所偵測邊緣的平均強度。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
使用LineFinder物件
接下來的幾個小節將會引導您了解如何建立及使用LineFinder物件。
- 如何建立一個新的LineFinder物件
- 針對搜尋視窗進行定位和調整大小
- 針對與LineFinder相關的物件,設定其屬性
- 測試LineFinder物件及檢查結果
- 調整屬性後再次測試
在開始進行上述步驟之前,您需要建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的LineFinder物件
- 按一下Vision Guide工具列上的[All Tools] - [New LineFinder]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成LineFinder物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「LineFind01」,因為這是為本序列所建立的第一個LineFinder物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的LineFinder物件:
新LineFinder物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 大小及方向把手 |
d | 方向指標(搜尋方向) |
- 在LineFinder物件的名稱標籤按一下,同時按下滑鼠,將LineFinder物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 使用搜尋視窗大小調整把手,依您的需要調整LineFinder物件搜尋視窗的大小。
步驟3:為LineFinder物件設定屬性
現在可為LineFinder物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些LineFinder物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
使用AngleMode屬性設定角度輸出格式。若想了解詳情,請參考Line物件。
屬性 | 說明 |
---|---|
EdgeType (Single) | 用於針對要搜尋的邊緣,選擇其類型。 對成對邊緣來說,會從每個方向找到一個邊緣,並會將一對邊緣的中心報告為位置。 |
Name屬性 (「LineFindxx」) | 新建立的LineFinder物件其預設名稱為「LineFindxx」,其中xx是用來辨別相同視覺序列中多個LineFinder物件的編號。若這是本視覺序列的第一個LineFinder物件,預設名稱就會是「LineFind01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現在修改名稱屬性之後,所有顯示LineFinder物件名稱的地方都會更新,以反映新名稱。 |
NumberOfEdges (1) | 您可以沿著搜尋線段搜尋1或多個邊緣。 |
Polarity (LightToDark) | 若您想要尋找DarkToLight邊緣,請變更極性。 |
步驟4:執行LineFinder物件及檢查結果
若想執行LineFinder物件,請依下列方式操作:
在執行面板上物件的[Run]按鈕上按一下。現在將會顯示LineFinder物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
Angle結果 | 用於針對Image座標系統中所偵測到的邊緣線段,回傳其角度。 |
Length結果 | 用於針對攝影機座標系統中所偵測到的邊緣線段,回傳其長度。 單位:mm |
PixelLength結果 | 用於針對Image座標系統中所偵測到的邊緣線段,回傳其長度。 單位:畫素 |
PixelX1結果 PixelY1結果 | 用於針對Image座標系統中所偵測到邊緣的線段,回傳其起點的XY座標位置。 |
PixelX2結果 PixelY2結果 | 用於針對Image座標系統中所偵測到邊緣的線段,回傳其終點的XY座標位置。 |
CameraX1結果 CameraY1結果 | 用於針對Camera座標系統中所偵測到邊緣的線段,回傳其起點的XY座標位置。 若未執行校正,將會回傳「no cal」。 |
CameraX2結果 CameraY2結果 | 用於針對Camera座標系統中所偵測到邊緣的線段,回傳其終點的XY座標位置。 若未執行校正,將會回傳「no cal」。 |
RobotX1結果 RobotY1結果 | 用於針對機器人座標系統中所偵測到邊緣的線段,回傳其起點的XY座標位置。 若未執行校正,將會回傳「no cal」。 |
RobotX2結果 RobotY2結果 | 用於針對機器人座標系統中所偵測到邊緣的線段,回傳其終點的XY座標位置。 若未執行校正,將會回傳「no cal」。 |
RobotU結果 | 用於針對機器人座標系統中所偵測到的邊緣線段,回傳其角度。 |
LineInspector物件
LineInspector物件說明
LineInspector物件可用以檢測影像中的線段。
LineInspctor物件會自動處理多個Edge物件,以找出檢驗線段中的瑕疵。
對於影像中的物件,其邊緣的灰度值會從深至淺,或從淺至深產生變化。本項變更可能會跨越數個畫素。
LineInspector物件會依照Polarity屬性的定義,從Light to Dark或Dark to Light尋找轉換,並將該位置定義為單一邊緣的邊緣位置。您也可以變更EdgeType屬性,以搜尋成對邊緣。對於成對邊緣,將會搜尋兩個反向的邊緣,並將中點回傳為結果。
LineInspector物件配置
LineInspector物件的外觀與LineFinder工具相似。LineInspector物件的搜尋視窗包含多條邊緣搜尋線段。LineInspector物件會依方向指示器所指定的方向,沿著各搜尋線段搜尋轉換(由淺至深或由深至淺)。邊緣搜尋的資料可用於判斷線段的瑕疵。
LineInspector物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 邊緣搜尋線條 |
d | 線條位置、大小及偏差把手 |
e | 待檢測線條 |
f | 方向指標(搜尋方向) |
LineInspector物件可設定在以任何方向搜尋的位置及旋轉(不只是沿著垂直或水平方向)。
若欲旋轉,請以順時針或逆時針方向拖曳其中一個外部尺寸把手。LineFinder結果可用於檢測線段。在此情況下,請設定指定供LineObject使用的LineFinder。
符号 | 說明 |
---|---|
a | 外部大小調整把手 (X1、Y1) |
b | 外部大小調整把手 (X2、Y2) |
若欲變更檢測的線段寬度,請將其中一個外部尺寸把手拖離或拖向線段中心。
若欲變更邊緣搜尋的尺寸,請拖曳其中一個內部尺寸把手。
LineInspector搜尋
以下影像顯示含有瑕疵的物件部分。
LineInspector會如下圖所示尋找瑕疵。請注意,各邊緣搜尋位置與檢測線段的距離必須超過DefectLevelThreshPos或DefectLevelThreshNeg屬性值,以便找到瑕疵。此外,瑕疵區域必須大於MinArea 並小於MaxArea。
符号 | 說明 |
---|---|
a | 瑕疵 |
b | DefectLevelThreshNeg |
c | 待檢測線條 |
d | DefectLevelThreshPos |
LineInspector物件屬性
下列清單是LineInspector物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Accept | 用於指定某項特徵必須等於或超過多少形狀分數,才能視為已找到。若該值過小,可能會造成偵測錯誤。 預設:100 |
CalRobotPlacePos | 在設計和執行程式時校正RobotPlacePos。 |
Caption | 用於為LineInspector物件指定一個標題。 預設:Empty String |
ContrastTarget | 用於為邊緣搜尋設定想要的對比。 預設:0(最佳對比) |
ContrastVariation | 用於為ContrastTarget選擇允許的對比變化量。 預設:0 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
DefectAreaExtended | 設定是否延伸瑕疵區域的內插補點。 預設:False |
DefectLevelThreshNeg | 設定線段下方的瑕疵臨界值。 預設:2 |
DefectLevelThreshPos | 設定線段上方的瑕疵臨界值。 預設:2 |
Description | 設定使用者指定的説明 預設: 空白 |
EdgeSort | 用於設定對檢測到的邊緣結果排序的方法。 |
EdgeThreshold | 用於設定一個臨界值,所有低於此值的邊緣將被忽略。 預設:2 |
EdgeType | 用於針對要搜尋的邊緣,選擇其類型:單一或一對。 預設:1 - Single |
Enabled | 指定是否執行該物件。 預設:True |
EndPntObjResult | 用於指定要使用EndPointObject的哪個結果。 預設:1 |
EndPointObject | 用於指定使用哪一Vision物件來定義檢測線段的終點。 預設:Screen |
EndPointType | 用於針對將用來定義線段終點的終點,定義其類型。 預設:0 - Point |
FailColor | 物件不合格時,用於選擇物件的色彩。 預設:Red |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
InspectEndOffset | 設定停止檢測的線段末端偏差值。 預設:15 |
InspectStartOffset | 設定開始檢測的線段起始偏差值。 預設:15 |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
LineObject | 定義於檢測前將搜尋線段的物件。 預設:none |
LineObjResult | 定義從LineObject使用的結果。 預設:1 |
MaxArea | 定義物件的上限面積。 為檢測到Blob設置的Area結果,必須小於MaxArea屬性的設定值。 預設:100,000 |
MinArea | 定義物件的下限面積。 為檢測到Blob設置的Area結果,必須大於MinArea屬性的設定值。 預設:25 |
MissingEdgeType | 定義如何控制遺失的邊緣。 預設:Interpolate |
Name | 用於對LineInspector物件指定一個獨特名稱。 預設:LineInsp01 |
NumberOfEdges | 用於指定要偵測的邊緣數。 預設:20 |
NumberToFind | 用於定義要在目前搜尋視窗中尋找的物件數量。 預設:1 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:AllNotFound |
Polarity | 用於定義LineInspector物件是否應該搜尋LightToDark或DarkToLight轉換。 預設:1 - LightToDark |
ScoreWeightContrast | 用於針對以對比為依據的分數,設定其百分比。 預設:50 |
ScoreWeightStrength | 用於針對以邊緣強度為依據的分數,設定其百分比。 預設:50 |
SearchWidth | 用於定義邊緣搜尋的寬度。其範圍為3 - 99。 預設:3 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 |
SizeToFind | 用於選擇要尋找的瑕疪大小。 預設:1 - Largest |
StartPntObjResult | 用於指定要使用StartPointObject的哪個結果。 預設:1 |
StartPointObject | 用於指定使用哪一Vision物件來定義檢測線段的起點。 預設:Screen |
StartPointType | 用於針對將用來定義線段起點的起點,定義其類型。 預設:0 - Point |
StrengthTarget | 用於針對想要搜尋的邊緣,設定其強度。 預設:0 |
StrengthVariation | 用於設定StrengthTarget的變化量。 預設:0 |
X1 | 邊緣起點的X座標位置。 |
X2 | 邊緣終點的X座標位置。 |
Y1 | 邊緣起點的Y座標位置。 |
Y2 | 邊緣終點的Y座標位置。 |
LineInspector 物件結果
下列清單是LineInspector物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Area | 用於回傳瑕疵的面積(單位:畫素)。 |
CameraX | 用於回傳攝影機座標系統中所偵測的瑕疵的X座標。 |
CameraY | 用於回傳攝影機座標系統中所偵測的瑕疵的Y座標。 |
Contrast | 用於回傳所偵測的邊緣的平均對比。 |
DefectLevel | 用於回傳瑕疵的等級。 |
Found | 用於回傳是否找到物件。(即:關於您所查看的特徵或零件,是否具有超過Accept屬性目前設定值的形狀分數。) |
Length | 用於回傳瑕疵的長度(單位為公釐)。 |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelLength | 用於回傳瑕疵的長度(單位:畫素)。 |
NumberFound | 用於回傳所找到的瑕疵的數量。 (偵測到的數字範圍下限為0,上限為以NumberToFind屬性所設定的數字。) |
PixelX | 用於回傳瑕疵的X座標位置。 |
PixelY | 用於回傳瑕疵的Y座標位置。 |
PixelXYU | 僅執行時間。 用於針對所偵測到的瑕疵位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於回傳機器人座標系統中的瑕疵的X座標。 |
RobotY | 用於回傳機器人座標系統中的瑕疵的Y座標。 |
RobotU | 用於回傳機器人座標系統中的瑕疵的U座標。 |
RobotXYU | 僅執行時間。 用於回傳機器人座標系統中所偵測到的瑕疵的RobotX、RobotY及RobotU座標。 |
Strength | 用於回傳所偵測邊緣的平均強度。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
TotalArea | 用於回傳所有的瑕疵的總面積(單位:畫素)。 |
使用LineInspector物件
接下來的幾個小節將會引導您了解如何建立及使用LineInspector物件。
- 如何建立一個新的LineInspector物件
- 針對搜尋視窗進行定位和調整大小
- 針對與LineInspector相關的物件,設定其屬性
- 測試LineInspector物件及檢查結果
- 調整屬性後再次測試
在開始進行上述步驟之前,您需要建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的LineInspector物件
- 按一下Vision Guide工具列上的[All Tools] - [LineInspector]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成LineInspector物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「LineInsp01」,因為這是為本序列所建立的第一個LineInspector 物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的LineInspector物件:
新LineInspector物件配置
- 請在LineInspector物件的名稱標籤按一下,同時持續按壓滑鼠,將LineInspector物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 使用搜尋視窗大小調整把手,依您的需要調整LineInspector物件搜尋視窗的大小。
步驟3:為LineInspector物件設定屬性
現在即可為LineInspector物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些LineInspector物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
EdgeType (Single) | 用於針對要搜尋的邊緣,選擇其類型。 對成對邊緣來說,會從每個方向找到一個邊緣,並會將一對邊緣的中心報告為位置。 |
Name屬性(「LineInspxx」) | 新建立的LineInspector物件之預設名稱為「LineInspxx」,其中,xx是用來辨別相同視覺序列中多個LineInspector物件的編號。若這是本視覺序列的第一個LineInspector物件,預設名稱就會是「LineInsp01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現,於修改名稱屬性之後,所有顯示LineInspector物件名稱的地方都會更新,以反映新名稱。 |
NumberToFind (1) | 您可以沿著搜尋線段搜尋1或多個瑕疵。 |
Polarity (LightToDark) | 若您想要尋找DarkToLight邊緣,請變更極性。 |
步驟4:執行LineInspector物件及檢查結果
若想執行LineInspector物件,請依下列方式操作:
在執行面板上物件的[Run]按鈕上按一下。現在將會顯示LineInspector物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
Area結果 | 所找到的瑕疵的面積(單位:畫素)。 |
PixelX結果 PixelY結果 | 用於回傳影像座標系統中瑕疵的XY座標。 |
CameraX結果 CameraY結果 | 用於回傳攝影機座標系統中瑕疵的XY座標。 若未執行校正,將會回傳「no cal」。 |
RobotX結果 RobotY結果 | 用於回傳機器人座標系統中瑕疵的XY座標。若未執行校正,將會回傳「no cal」。 |
ArcFinder物件
ArcFinder物件說明
ArcFinder物件可用來辨別影像中圓/橢圓的弧線位置。
若要尋找圓/橢圓的弧線,必須執行一系列邊緣搜尋,以判斷弧線的半徑及中心點,以及橢圓的長/短軸和角度。
對於影像中的物件,其邊緣的灰度值會從深至淺,或從淺至深產生變化。本項變更可能會跨越數個畫素。
於每次進行ArcFinder物件的邊緣搜尋時,都會依照Polarity屬性的定義,從Light to Dark或Dark to Light尋找轉換,並將該位置定義為單一邊緣的邊緣位置。您也可以變更EdgeType屬性,以搜尋成對邊緣。對於成對邊緣,將會搜尋兩個反向的邊緣,並將中點回傳為結果。
邊緣類型(圓/橢圓)可以由ArcSearchType屬性指定。
ArcFinder物件配置
ArcFinder物件與Correlation和Blob物件有不同的外觀。ArcFinder物件的搜尋視窗為圓形,並按照起始角度、終止角度、外半徑與內半徑定義。邊緣搜尋線段會在起始角度與終止角度間平均跨越。可透過NumberOfEdges屬性指定邊緣搜尋線段的數量。Direction屬性可指定從內半徑到外半徑搜尋,反之亦然。
ArcFinder物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 方向指標(搜尋方向) |
d | 大小及方向把手 |
ArcFinder的位置可藉由移動中心點至找到的適當弧線中心以搜尋弧線,然後再調整RadiusInner及RadiusOuter屬性,讓所找到的弧線位於搜尋範圍內。
ArcFinder物件屬性
下列清單是ArcFinder物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 用於讓使用者指定為:若物件失敗(未合格)時,則整個序列會在該點中止,且不再處理序列中的任何其他物件。 預設:False |
Accept | 用於指定某項特徵必須等於或超過多少形狀分數,才能視為已找到。 若該值過小,可能會造成偵測錯誤。 預設:100 |
AngleEnd | 用於針對執行圓/橢圓搜尋的範圍,指定其結束角度 預設:135 |
AngleStart | 用於針對執行圓/橢圓搜尋的範圍,指定其起始角度 預設:45 |
ArcSearchType | 用於為搜索指定邊緣類型(圓/橢圓)。 |
CalRobotPlacePos | 在設計和執行程式時校正RobotPlacePos。 |
Caption | 用於為ArcFinder物件指定一個標題。 預設:Empty String |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,ArcFinder物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 預設:False |
CenterX | 用於指定作為物件中心點的X座標位置。 CenterPointObject屬性設定為其他Vision物件時,將會自動填入本屬性。 |
CenterY | 用於指定作為物件中心點的Y座標位置。 CenterPointObject屬性設定為其他Vision物件時,將會自動填入本屬性。 |
CheckClearanceFor | 設定物件以確認間隙。 |
ClearanceCondition | 指定間隙的判斷方法。 |
ContrastTarget | 用於為邊緣搜尋設定想要的對比。 預設:0(最佳對比) |
ContrastVariation | 用於為ContrastTarget選擇允許的對比變化量。 預設:0 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設:空白 |
Direction | 用於為邊緣搜尋設定方向。 預設:InsideOut |
EdgeSort | 用於設定對檢測到的邊緣結果排序的方法。 |
EdgeThreshold | 用於設定一個臨界值,所有低於此值的邊緣將被忽略。 預設:2 |
EdgeType | 用於針對要搜尋的邊緣,選擇其類型:單一或一對。 預設:1 - Single |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 物件不合格時,用於選擇物件的色彩。 預設:Red |
FittingThreshold | 指定用於線性擬合的邊緣結果。 |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
Name | 用於對ArcFinder物件指定一個獨特的名稱。 預設:ArcFind01 |
NumberOfEdges | 用於指定要偵測的邊緣數。 預設:5 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
Polarity | 用於定義ArcFinder物件是否應該搜尋LightToDark或DarkToLight轉換。 預設:1 - LightToDark |
RadiusInner | 用於指定偵測範圍的內徑。 |
RadiusOuter | 用於指定偵測範圍的外徑。 |
ScoreWeightContrast | 用於針對以對比為依據的分數,設定其百分比。 預設:50 |
ScoreWeightStrength | 用於針對以邊緣強度為依據的分數,設定其百分比。 預設:50 |
SearchWidth | 用於定義邊緣搜尋的寬度。 範圍:3 - 99 預設:3 |
ShowExtension | 用於定義是否以將兩端延長的方式來顯示邊緣線段。 |
StrengthTarget | 用於針對想要搜尋的邊緣,設定其強度。 預設:0 |
StrengthVariation | 用於設定StrengthTarget的變化量。 預設:0 |
ArcFinder物件結果
下列清單是ArcFinder物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於針對偵測到的橢圓,回傳其角度。 |
Angle1 | 用於針對影像座標系統中所偵測到的邊緣,回傳其起點角度。 |
Angle2 | 用於針對影像座標系統中所偵測到的邊緣,回傳其終點角度。 |
CameraX | 用於回傳攝影機座標系統中所偵測到的圓/橢圓邊緣的中央X座標。 |
CameraY | 用於回傳攝影機座標系統中所偵測到的圓/橢圓邊緣的中央Y座標。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內所找到的零件位置,回傳CameraX、CameraY和CameraU座標。 |
ClearanceOK | 回傳間隙的判斷结果。 |
Contrast | 用於針對所偵測的圓/橢圓,回傳其對比。 |
EdgeCameraXYU | 用於回傳在搜尋中找到的邊緣的CameraX、CameraY和Angle座標位置。 |
EdgePixelXYU | 用於回傳在搜尋中找到的邊緣的PixelX、PixelY和Angle座標位置。 |
EdgeRobotXYU | 用於回傳在搜尋中找到的邊緣的RobotX、RobotY和Angle座標位置。 |
FitError | 用於回傳各邊緣點與偵測到圓弧間的距離均方根(RMS)。 |
Found | 用於回傳是否找到物件。(即:關於您所查看的特徵或零件,是否具有超過Accept屬性目前設定值的形狀分數。) |
FoundMajorDiam | 所檢測到的橢圓邊緣的長軸長度。 |
FoundMinorDiam | 所檢測到的橢圓邊緣的短軸長度。 |
FoundRadius | 所偵測到的圓形邊緣的半徑。 |
MaxError | 用於回傳所偵測到圓/橢圓邊緣的最大差(單位為畫素長度)。 |
NumberFound | 用於回傳偵測到的圓弧數量。 |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelMajorDiam | 用於回傳由ArcFinder偵測到的橢圓弧的大直徑長。 |
PixelMinorDiam | 用於回傳由ArcFinder偵測到的橢圓弧的小直徑長。 |
PixelRadius | 用於回傳偵測到的圓弧半徑(單位:畫素)。 |
PixelX | 用於針對影像座標系統中所偵測到的圓/橢圓邊緣,回傳其中心的X座標。 |
PixelY | 用於針對影像座標系統中所偵測到的圓/橢圓邊緣,回傳其中心的Y座標。 |
PixelXYU | 僅執行時間。 用於針對所偵測到的圓/橢圓邊緣位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於針對機器人座標系統中所偵測到的圓/橢圓邊緣,回傳其中心的X座標。 |
RobotY | 用於針對機器人座標系統中所偵測到的圓/橢圓邊緣,回傳其中心的Y座標。 |
RobotXYU | 用於針對機器人座標系統中所偵測到的圓/橢圓邊緣位置,回傳其中心的RobotX、RobotY和RobotU座標。 |
Strength | 用於針對偵測到的邊緣,回傳其強度。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
使用ArcFinder物件
接下來的幾個小節將會引導您了解如何建立及使用ArcFinder物件。
- 如何建立一個新的ArcFinder物件
- 針對搜尋視窗進行定位和調整大小
- 針對與ArcFinder相關的物件,設定其屬性
- 測試ArcFinder物件及檢查結果
- 調整屬性後再次測試
在開始進行上述步驟之前,您需要建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參見 視覺序列,以深入了解如何建立一個新視覺序列,或是選擇一個之前已定義的序列。
步驟1:建立一個新的ArcFinder物件
- 按一下Vision Guide工具列上的[All Tools] - [ArcFinder]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成ArcFinder物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「ArcFind01」,因為這是為本序列所建立的第一個ArcFinder物件。(將會在後續說明如何變更物件名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的ArcFinder物件:
新ArcFinder物件
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 方向指標(搜尋方向) |
d | 大小及方向把手 |
- 在ArcFinder物件的名稱標籤按一下,同時按下滑鼠,將ArcFinder物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 使用搜尋視窗大小調整把手,依您的需要調整ArcFinder物件搜尋視窗的大小。
步驟3:為ArcFinder物件設定屬性
現在可為ArcFinder物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些ArcFinder物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
EdgeType (Single) | 用於針對要搜尋的邊緣,選擇其類型。 對成對邊緣來說,會從每個方向找到一個邊緣,並會將一對邊緣的中心報告為位置。 |
Name屬性(「ArcFindxx」) | 新建立的ArcFinder物件其預設名稱為「ArcFindxx」,其中xx是用來辨別相同視覺序列中多個ArcFinder物件的編號。若這是本視覺序列的第一個ArcFinder物件,預設名稱就會是「ArcFind01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現,於修改名稱屬性之後,所有顯示ArcFinder物件名稱的地方都會更新,以反映新名稱。 |
NumberOfEdges(5) | 您可以搜尋五個邊緣以尋找圓形邊緣。 |
Polarity (LightToDark) | 搜尋使用「LightToDark」極性的邊緣。 若您想要尋找DarkToLight邊緣,請變更極性。 |
步驟4:執行ArcFinder物件及檢查結果
若想執行ArcFinder物件,請依下列方式操作:
在執行面板上物件的[Run]按鈕上按一下。現在將會顯示ArcFinder物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
Angle1結果 | 用於針對影像座標系統中所偵測到的圓形邊緣,回傳其起點角度。 |
Angle2結果 | 用於針對影像座標系統中所偵測到的圓形邊緣,回傳其終點角度。 |
FoundRadius結果 | 用於回傳所偵測到圓形邊緣的半徑(畫素長度)。 單位:畫素 |
MaxError結果 | 用於回傳所偵測到圓形邊緣的最大差(單位為畫素長度)。 單位:畫素 |
PixelX結果 PixelY結果 | 用於針對影像座標系統中所偵測到的圓形邊緣,回傳其中心的XY座標。 |
CameraX結果 CameraY結果 | 用於針對攝影機座標系統中所偵測到的圓形邊緣,回傳其中央XY座標。 若未執行校正,將會回傳「no cal」。 |
RobotX結果 RobotY結果 | 用於針對機器人座標系統中所偵測到的圓形邊緣,回傳其中央XY座標。 若未執行校正,將會回傳「no cal」。 |
ArcInspector物件
ArcInspector物件說明
ArcInspector物件係用於沿圓/橢圓的弧線搜尋瑕疵。
若要尋找瑕疵,必須執行一系列的邊緣搜尋,以判斷檢測圓/橢圓的弧線中的異常。
對於影像中的物件,其邊緣的灰度值會從深至淺,或從淺至深產生變化。本項變更可能會跨越數個畫素。
於每次進行ArcInspector物件的邊緣搜尋時,都會依照Polarity屬性的定義,從Light to Dark或Dark to Light尋找轉換,並將該位置定義為單一邊緣的邊緣位置。您也可以變更EdgeType屬性,以搜尋成對邊緣。對於成對邊緣,將會搜尋兩個反向的邊緣,並將中點回傳為結果。
ArcInspector物件配置
ArcInspector物件外觀與ArcFinder物件相似。從圓/橢圓的弧線中心到檢測區域的外半徑,沿著線段搜尋邊緣。各邊緣搜尋線段會依Direction of Search Indicator所指定的方向,沿著本線段搜尋轉換(由淺至深或由深至淺)。需透過NumberOfEdges屬性設定用於檢測的邊緣的數量。AngleStart屬性可指定檢測弧線的起始角度。AngleEnd屬性可指定檢測弧線的終止角度。邊緣搜尋會平均跨越AngleStart + InspectStartOffset和AngleEnd – InspectEndOffset之間。
ArcInspector物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 方向指標(搜尋方向) |
d | RadiusOuter把手 |
e | 大小及偏差把手 |
f | RadiusInner把手 |
ArcInspector可藉由對齊CenterX和CenterY至弧線中心而確定搜尋弧線瑕疵的位置,然後再調整RadiusInner與RadiusOuter以固定搜尋區域位置,讓檢測的弧線半徑位於搜尋範圍內。ArcInspector物件可搜尋內半徑到外半徑的瑕疵 (預設),反之亦然,視Direction設定而定。
您也可使用ArcFinder物件優先尋找弧線,然後再利用ArcInspector檢測弧線。使用ArcObject屬性來指定欲使用的ArcFinder。
ArcInspector搜尋
以下影像顯示含有瑕疵的圓形物件部分。
ArcInspector會如下圖所示尋找瑕疵。請注意,各邊緣搜尋位置與檢測弧線的距離必須超過DefectLevelThreshPos或DefectLevelThreshNeg屬性值,以便找到瑕疵。此外,瑕疵區域必須大於MinArea並小於MaxArea。
符号 | 說明 |
---|---|
a | 瑕疵 |
b | DefectLevelThreshPos |
c | 待檢測弧線 |
d | DefectLevelThreshNeg |
ArcInspector物件屬性
下列清單是ArcInspector物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Accept | 用於指定某項特徵必須等於或超過多少形狀分數,才能視為已找到。 若該值過小,可能會造成偵測錯誤。 預設:100 |
AngleEnd | 用於針對執行圓/橢圓搜尋的範圍,指定其結束角度 預設:135 |
AngleStart | 用於針對執行圓/橢圓的弧線搜尋範圍,指定其起始角度。 預設:45 |
ArcObject | 指定將搜尋要檢測圓/橢圓的弧線的ArcFinder物件。 預設:none |
ArcObjResult | 定義從ArcObject使用的結果。 預設:1 |
ArcSearchType | 用於為搜索指定邊緣類型(圓/橢圓)。 當指定ArcObject屬性時,將此屬性與指定ArcFinder的ArcType匹配。 |
CalRobotPlacePos | 在設計和執行程式時校正RobotPlacePos。 |
Caption | 用於為ArcInspector物件標籤指定一個標題。 預設:Empty String |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,ArcInspector物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 預設:False |
CenterX | 用於指定作為物件中心點的X座標位置。 CenterPointObject屬性設定為其他Vision物件時,將會自動填入本屬性。 |
CenterY | 用於指定作為物件中心點的Y座標位置。 CenterPointObject屬性設定為其他Vision物件時,將會自動填入本屬性。 |
ContrastTarget | 用於為邊緣搜尋設定想要的對比。 預設:0(最佳對比) |
ContrastVariation | 用於為ContrastTarget選擇允許的對比變化量。 預設:0 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。預設: None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設:空白 |
DefectAreaExtended | 設定是否延伸瑕疵區域的內插補點。 預設:False |
DefectLevelThreshNeg | 設定線段下方的瑕疵臨界值。 預設:2 |
DefectLevelThreshPos | 設定線段上方的瑕疵臨界值。 預設:2 |
Direction | 用於為邊緣搜尋設定方向。 預設:InsideOut |
EdgeSort | 用於設定對檢測到的邊緣結果排序的方法。 |
EdgeThreshold | 用於設定一個臨界值,所有低於此值的邊緣將被忽略。 預設:2 |
EdgeType | 用於針對要搜尋的邊緣,選擇其類型:單一或一對。 預設:1 - Single |
EllipseAngle | 使用ArcInspector的偵測基線指定橢圓弧的角度。 |
EllipseMajorDiam | 使用ArcInspector的偵測基線指定橢圓弧的大直徑長。 |
EllipseMinorDiam | 使用ArcInspector的偵測基線指定橢圓弧的小直徑長。 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 物件不合格時,用於選擇物件的色彩。 預設:Red |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
InspectStartOffset | 設定開始檢測的弧線起始偏差值。 預設:5 |
InspectEndOffset | 設定停止檢測的線段末端偏差值。 預設:5 |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
MaxArea | 定義瑕疵的上方面積限制。 若想找出瑕疵,必須小於 MaxArea 屬性設定且大於 MinArea 屬性的設定。 預設:100,000 |
MinArea | 定義瑕疵的下方面積限制。 若想找出瑕疵,必須小於 MaxArea 屬性設定且大於 MinArea 屬性的設定。 預設:25 |
MissingEdgeType | 定義如何控制遺失的邊緣。 預設:Interpolate |
Name | 用於對ArcInspector物件指定一個獨特的名稱。 預設:ArcInsp01 |
NumberOfEdges | 用於指定要偵測的邊緣數。 預設:20 |
NumberToFind | 用於定義要在目前搜尋視窗中尋找的物件數量。 預設:1 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:AllNotFound |
Polarity | 用於定義ArcInspector物件是否應該搜尋LightToDark或DarkToLight轉換。 預設:1 - LightToDark |
Radius | 用於定義從物件的CenterPoint到物件最外圈搜尋環的距離。 |
RadiusInner | 用於指定偵測範圍的內徑。 |
RadiusOuter | 用於指定偵測範圍的外徑。 |
ScoreWeightContrast | 用於針對以對比為依據的分數,設定其百分比。 預設:50 |
ScoreWeightStrength | 用於針對以邊緣強度為依據的分數,設定其百分比。 預設:50 |
SearchWidth | 用於定義邊緣搜尋的寬度。 範圍:3 - 99 預設:3 |
SizeToFind | 用於選擇要尋找的瑕疪大小。 預設:1 - Largest |
StrengthTarget | 用於針對想要搜尋的邊緣,設定其強度。 預設:0 |
StrengthVariation | 用於設定StrengthTarget的變化量。 預設:0 |
ArcInspector物件結果
下列清單是ArcInspector物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Area | 用於回傳瑕疵的面積(單位:畫素)。 |
CameraX | 用於回傳攝影機座標系統中所偵測的瑕疵的X座標。 |
CameraY | 用於回傳攝影機座標系統中所偵測的瑕疵的Y座標。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內所找到的瑕疵位置,回傳CameraX、CameraY和CameraU座標。 |
Contrast | 用於回傳所偵測的邊緣的平均對比。 |
DefectLevel | 用於回傳瑕疵的等級。 |
Length | 用於回傳瑕疵的長度(單位為公釐)。 |
PixelLength | 用於回傳瑕疵的長度(單位:畫素)。 |
NumberFound | 用於回傳所找到的瑕疵的數量。 (偵測到的數字範圍下限為0,上限為以NumberToFind屬性所設定的數字。) |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於回傳影像座標系統中瑕疵的X座標。 |
PixelY | 用於回傳影像座標系統中瑕疵的Y座標。 |
PixelXYU | 僅執行時間。 用於針對所偵測到的瑕疵位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於回傳機器人座標系統中的瑕疵的X座標。 |
RobotY | 用於回傳機器人座標系統中的瑕疵的Y座標。 |
RobotU | 用於回傳機器人座標系統中的瑕疵的U座標。 |
RobotXYU | 僅執行時間。 用於回傳機器人座標系統中所偵測到的瑕疵位置的RobotX、RobotY及RobotU座標。 |
Strength | 用於針對偵測到的邊緣,回傳其強度。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
TotalArea | 用於回傳所有的瑕疵的總面積(單位:畫素)。 |
使用ArcInspector物件
接下來的幾個小節將會引導您了解如何建立及使用ArcInspector物件。
- 如何建立一個新的ArcInspector物件
- 針對搜尋視窗進行定位和調整大小
- 針對與ArcInspector相關的物件,設定其屬性
- 測試ArcInspector物件及檢查結果
- 調整屬性後再次測試
在開始進行上述步驟之前,您需要建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的ArcInspector物件
- 按一下Vision Guide工具列上的[All Tools] - [New ArcInspector]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成ArcInspector物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「ArcInsp01」,因為這是為本序列所建立的第一個ArcInspector物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的ArcInspector物件:
新的ArcInspector物件配置
符号 | 說明 |
---|---|
a | 待檢測弧線 |
b | RadiusOuter把手 |
c | AngleStart把手 |
d | RadiusInner把手 |
e | 中心點 |
f | AngleEnd把手 |
- 請在ArcInspector物件的名稱標籤按一下,同時持續按壓滑鼠,將ArcInspector物件拖曳至要檢測弧線附近的中心位置。
- 使用RadiusOuter、RadiusInner、AngleStart及AngleEnd尺寸控點,依您的需要調整ArcInspector物件搜尋視窗大小。
步驟3:為ArcInspector物件設定屬性
現在即可為ArcInspector物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些ArcInspector物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
EdgeType (Single) | 用於針對要搜尋的邊緣,選擇其類型。 對成對邊緣來說,會從每個方向找到一個邊緣,並會將一對邊緣的中心報告為位置。 |
Name屬性(「ArcInspxx」) | 新建立的ArcInspector物件之預設名稱為「ArcInspxx」,其中,xx是用來辨別相同視覺序列中多個ArcInspector物件的編號。若這是本視覺序列的第一個ArcInspector物件,預設名稱就會是「ArcInsp01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。 您會發現,於修改名稱屬性之後,所有顯示ArcInspector物件名稱的地方都會更新,以反映新名稱。 |
NumberOfEdges | 指定要用於尋找瑕疵的邊緣搜尋數量。 預設值為15,最大值為99。 |
Polarity | 預設邊緣搜尋極性為LightToDark。 若您想要尋找DarkToLight邊緣,請變更極性。 |
Direction | 指定邊緣搜尋是否應為InsideOut (從RadiusInner至 RadiusOuter),或OutsideIn (從RadiusOuter至RadiusInner)。 |
DefectLevelThreshPos | 從找到的邊緣至弧線之間,指定要檢測弧線上方的最小距離。 |
DefectLevelThreshNeg | 從找到的邊緣至弧線之間,指定要檢測弧線下方的最小距離。 |
MinArea | 指定瑕疵的最小面積(單位:畫素)。 |
MaxArea | 指定瑕疵的最大面積(單位:畫素)。 |
步驟4:執行ArcInspector物件及檢查結果
若想執行ArcInspector物件,請依下列方式操作:
在執行面板上物件的[Run]按鈕上按一下。
現在將會顯示ArcInspector物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
Area結果 | 所找到的瑕疵的面積(單位:畫素)。 |
PixelX結果 PixelY結果 | 用於回傳影像座標系統中瑕疵的XY座標。 |
CameraX結果 CameraY結果 | 用於回傳攝影機座標系統中瑕疵的XY座標。 若未執行校正,將會回傳「no cal」。 |
RobotX結果 RobotY結果 | 用於回傳機器人座標系統中瑕疵的XY座標。 若未執行校正,將會回傳「no cal」。 |
DefectFinder物件
DefectFinder物件說明
DefectFinder物件可用來辨別範本影像及輸入影像之間的差異。
在搜尋瑕疵期間,將優先計算搜尋區域與範本間具有絕對差異的影像。接下來,針對有差異的影像執行值檢出分析,以尋找瑕疵。
同時取得下列瑕疵特色:
- 面積及周長
- 重心
- 主要軸及運動
- 連通性
- 極值
- 重心的座標位置(單位:畫素)、攝影機及機器人座標系統
- 瑕疵 (值檢出) 的孔、粗糙度及緊密度
DefectFinder物件配置
DefectFinder物件配置為矩形,與Blob物件相似。不過,DefectFinder物件需教導模型(範本)。如需教導模型,必須使用由搜尋視窗定義的區域。沒有用於Correlation物件的個別模型視窗。
搜尋視窗可定義以DefectFinder來搜尋瑕疪(影像差異)的區域,同時,也可定義範本影像的範圍。下列顯示一個DefectFinder物件的實例:
DefectFinder物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 搜尋視窗 |
DefectFinder物件屬性
下列清單是DefectFinder物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
CalRobotPlacePos | 在設計和執行程式時校正RobotPlacePos。 |
Caption | 用於為DefectFinder物件指定一個標題。 預設:空白 |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件配置在任意位置。但是,若指定給其他Vision物件,則會設定為物件的PixelX和PixelY的中心點。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,DefectFinder物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 若SearchWinType設定為RotatedRectangle,搜尋視窗會依據Angle結果進行旋轉。 預設:False |
CheckClearanceFor | 設定物件以確認間隙。 |
ClearanceCondition | 指定間隙的判斷方法。 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 預設:1 |
Description | 設定使用者指定的説明 預設:空白 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 用於選擇物件不合格時的物件色彩。 預設:Red |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
KernelHeight | 在計算影像與註冊影像之間的差異時,所允許的畫素差異量。(垂直方向) |
KernelWidth | 在計算影像與註冊影像之間的差異時,所允許的畫素差異量。(水平方向) |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
LuminanceCorrection | 設定亮度校正預處理的使用。 預設:None |
MaxArea | 定義瑕疵的上方面積限制。 若想找出瑕疵,必須在MaxArea屬性的設定值下有一個Area結果。 預設:100,000 |
MinArea | 定義瑕疵的下方面積限制。 若想找出瑕疵,必須在MinArea屬性的設定值上有一個Area結果。 預設:25 |
MinMaxArea | 僅執行時間。 用於以單一敘述同時設定或回傳MinArea和MaxArea。 |
Name | 用於對DefectFinder物件指定一個獨特名稱。 預設:DefFind01 |
NumberToFind | 用於定義要在搜尋視窗中尋找的Blob物件數量。 預設:1 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:AllNotFound |
Polarity | 設定要檢測瑕疵的極性。 預設:Both |
RejectOnEdge | 若屬性設定為True,系統將會忽略在搜尋視窗的邊緣上所偵測到的瑕疪。 預設:False |
SaveTeachImage | 設置示教模型時,是否保存圖像文檔。 |
SearchWin | 僅執行時間。 用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數。 |
SearchWinAngle | 用於針對要搜尋的區域,定義其角度。 |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 預設:100 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 |
SearchWinType | 用於針對要搜尋的區域,定義其類型(亦即Rectangle、RotatedRectangle、Circle)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 預設:100 |
ShowModel | 用於顯示已登錄的影像。 設置不要緊的圖元。 |
SizeToFind | 用於選擇要尋找的瑕疪大小。 預設:1 - Largest |
Sort | 用於選擇物件結果所使用的排序順序。 預設:0 - None |
ThresholdHigh | 和ThresholdLow屬性配合使用,以定義代表影像的特徵(或物件)的灰階區域、背景及邊緣。 ThresholdHigh屬性針對影像的特徵區域,用於定義其灰階區域的上限。若有任何影像部份介於ThresholdLow和ThresholdHigh所定義的灰階區域內,皆會將其畫素權重指定為1。(即:是特徵的一部份。) 預設:128 |
ThresholdLow | 和ThresholdHigh屬性配合使用,以定義代表影像的特徵(或物件)的灰階區域、背景及邊緣。 ThresholdLow屬性用於定義影像的特徵區域的灰階區域的上限。若有任何影像部份介於ThresholdLow和ThresholdHigh所定義的灰階區域內,皆會將其畫素權重指定為1。(即:是特徵的一部份。) 預設:0 |
DefectFinder物件結果
下列清單是DefectFinder物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於回傳所偵測到的瑕疵旋轉度數。 |
Area | 用於回傳瑕疵的面積(單位:畫素)。 |
CameraX | 用於針對在攝影機的座標系統中所找到瑕疵零件的位置,回傳其X座標位置。 |
CameraY | 用於針對在攝影機的座標系統中所找到瑕疵零件的位置,回傳其Y座標位置。 |
CameraXYU | 僅執行時間。用於針對在攝影機的座標系統內所找到的瑕疵零件位置,回傳CameraX、CameraY和CameraU座標。 |
ClearanceOK | 回傳間隙的判斷结果。 |
Compactness | 用於回傳瑕疵的緊密度。 |
Extrema | 僅執行時間。用於回傳瑕疵Extrema的MinX、MaxX、MinY、MaxY畫素座標。 |
Found | 用於回傳是否找到物件。 |
FoundOnEdge | 在找到的瑕疵物件太接近搜尋視窗的邊緣時,回傳為True。 |
Holes | 用於回傳瑕疵內所找到的孔數量。 |
MajorDiameter | 用於回傳所找到瑕疵的類似情況下的大直徑。 |
MaxFeretDiameter | 用於回傳所找到瑕疵的最大Feret直徑。 |
MaxX | 用於回傳瑕疵Extrema的最大X畫素座標(單位:畫素)。 |
MaxY | 用於回傳瑕疵Extrema的最大Y畫素座標(單位:畫素)。 |
MinorDiameter | 用於回傳所找到瑕疵的類似情況下的小直徑。 |
MinX | 用於回傳瑕疵Extrema的最小X畫素座標(單位:畫素)。 |
MinY | 用於回傳瑕疵Extrema的最小Y畫素座標(單位:畫素)。 |
NumberFound | 用於回傳所找到的瑕疵的數量。 (本數字範圍下限為0,上限為您要求瑕疵物件以NumberToFind屬性所尋找的瑕疵數量。) |
Passed | 用於回傳是否接受物件偵測結果。 |
Perimeter | 此畫素數表示所找到瑕疵的外緣。 |
PixelX | 用於針對所找到零件的位置,回傳其X座標位置(單位:畫素)。 |
PixelY | 用於針對所找到零件的位置,回傳其Y座標位置(單位:畫素)。 |
PixelXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於回傳機器人座標系統中所偵測到的物件的X座標。 |
RobotY | 用於回傳機器人座標系統中所偵測到的物件的Y座標。 |
RobotU | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的U座標位置。 |
RobotXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其相對於機器人座標系統的RobotX、RobotY和RobotU座標位置。 |
Roughness | 用於回傳瑕疵的粗糙度。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
TotalArea | 用於針對所找到的所有結果,回傳其瑕疵面積的總和。 |
對於範本影像及回傳結果,DefectFinder物件會對這兩者的影像差異執行Blob處理。若想了解結果的詳情,請參見 Blob物件。
使用DefectFinder物件
現在已檢視過值檢出分析的運作方式,我們也已具備了解如何使用Vision Guide 8.0 DefectFinder物件的基礎了。
下一節將說明使用DefectFinder物件所需要的步驟,如下所示:
- 如何建立一個新的DefectFinder物件
- 針對搜尋視窗進行定位和調整大小
- 針對與DefectFinder相關的物件,設定其屬性
- 註冊範本影像
- 測試DefectFinder物件及檢查結果
- 調整屬性後再次測試
在開始進行上述步驟之前,您需要建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,您可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的DefectFinder物件
- 按一下Vision Guide工具列上的[All Tools] - [Defect Finder]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成DefectFinder圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為“DefFind01”,因為這是為本序列所建立的第一個DefectFinder物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的DefectFinder物件:
新DefectFinder物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 搜尋視窗 |
- 在DefectFinder物件的名稱標籤按一下,同時按下滑鼠,將DefectFinder物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 使用搜尋視窗大小調整把手,依您的需要調整DefectFinder物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)(搜尋視窗是將會針對Blob進行搜尋的區域。)
注意
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。建立影像處理序列,所使用的物件務必要使用必要值以下的搜尋區域。
步驟3:設定DefectFinder物件屬性
現在可為DefectFinder物件設定屬性值。以下顯示一些DefectFinder物件較為常用的屬性。
關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
- 「Vision Guide 8.0 Properties and Results Reference」
- DefectFinder物件屬性清單
注意
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。正確設定MaxArea、MinArea、RejectOnEdge及其他屬性可降低偵測錯誤的風險。
屬性 | 說明 |
---|---|
Name屬性 | 新建立的DefectFinder物件之預設名稱為「DefFindxx」。其中,xx是用來辨別相同視覺序列中複數DefectFinder物件的編號。 若這是本視覺序列的第一個DefectFinder物件,預設名稱就會是「DefFind01」。 若想變更名稱,請按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發所有顯示DefectFinder物件名稱的地方都會更新,以反映新名稱。 |
KernelWidth、 KernelHeight屬性 | 用於在計算影像與註冊影像之間的差異時,指定所允許的畫素差異量。 設定值若較高,在搜尋時會對周圍照明或輸入影像及範本影像之間的落差產生較大的抵抗。然而,如此一來搜尋也會無法找出較小的瑕疪。請依據瑕疪大小及輸入影像的落差量設定本值。 |
MinArea、 MaxArea屬性 | 這些屬性可用來定義將DefectFinder物件視為「Found」的面積限制。(即:Found結果回傳為True) 預設範圍設定為25至100,000(MinArea至MaxArea),這是非常寬廣的範圍。這表示在調整MinArea和MaxArea屬性之前,當您第一次執行新DefectFinder物件時,大部份的瑕疪都會報告為Found。通常,您可以針對嘗試尋找的瑕疪大小來調整這些屬性。透過這樣的方式,若您找到一個超出範圍的值,您就會知道其並非您想要尋找的瑕疪。 |
RejectOnEdge屬性 | 可用於排除接觸到搜尋視窗邊界的零件。 |
PassType屬性 | 用於選擇DefectFinder物件偵測的接受條件。 通常,沒有找到任何瑕疪即代表「Passed」。將屬性設定為「AllNotFound」。 |
現在即可測試DefectFinder物件。其他必要的屬性將會在測試之後設定。
步驟4:註冊及確認範本影像
若想註冊DefectFinder物件範本影像,請按一下位於執行面板上的[Teach]按鈕。若想檢視已註冊的範本影像,請按一下屬性清單中的ShowModel屬性。
步驟5:測試DefectFinder物件及檢查結果
若想執行DefectFinder物件,按一下執行面板上的物件[Run]按鈕。現在將會顯示DefectFinder物件的結果。這時主要的檢查結果如下所示。日後您會發現有些十分實用。
結果 | 說明 |
---|---|
Found結果 | 用於回傳是否找到瑕疪。 若所找到的瑕疪不符合MinArea和MaxArea屬性所定義的面積限制,那麼Found結果就會回傳為False。 |
Passed結果 | 用於回傳是否接受DefectFinder物件的偵測結果。 |
Area結果 | 所找到的瑕疪的面積(單位:畫素)。 |
Angle結果 | 瑕疪所定位的角度。 這是由次要軸的角度所計算出的,將會是一個介於+/-90°之間的值。 |
Time結果 | DefectFinder物件所需要的執行時間。 |
PixelX、PixelY | 針對所找到瑕疪的重心,表示其XY位置(單位:畫素)。 |
MinX、MinY、MaxX、MaxY | 結合這4個值,以回傳瑕疪的外接矩形 |
提示
RobotXYU、RobotX、RobotY、RobotU和CameraX、CameraY、CameraXYU等結果會回傳「no cal」。這表示因為未執行校正,視覺系統無法計算相對於機器人座標系統或攝影機座標系統的座標結果。若想了解詳情,請參考以下章節。
步驟6:調整屬性後再次測試
在執行DefectFinder物件幾次之後,您可能會遇到一些尋找瑕疪的問題,或只想要微調某些屬性設定值。以下說明一些常見的問題和微調技巧:
問題:若DefectFinder物件回傳為True的Found結果,應檢查以下內容。
- 查看Polarity屬性所定義的值。您是否想要在深色背景上尋找淺色物件,或是在淺色背景上尋找深色物件?確定Polarity屬性與您所要尋找的相同,且與您在搜尋視窗內所看到的相同。
- 查看Area結果,並將本面積與MinArea和MaxArea屬性所定義的值相比較。若Area結果並不在MinArea和MaxArea屬性所定義的限制之間,那麼您可能需要調整這些屬性,並再次執行Blob物件。
- 調整KernelWidth和KernelHeight屬性。變更值使其更大,可以避免對小瑕疪的錯誤偵測。
- 請使用直方圖來檢查影像中的灰階值的分佈情況。直方圖工具非常適合用來設定ThresholdHigh和ThresholdLow屬性。在 8. 直方圖工具 中會詳加說明直方圖。
微調:某些應用可能需要微調DefectFinder物件。微調DefectFinder物件的主要相關屬性茲說明如下:
- MinArea、MaxArea-在您執行DefectFinder物件幾次之後,您就會熟悉Area結果所回傳的約略數值。請使用這些值來判定如何為MinArea和MaxArea屬性輸入新值。一般而言,將MinArea和MaxArea屬性設定為「限制Found結果僅回傳您所關注的值檢出,並讓Found結果等於True」的值,會較為理想。(這可以幫助消除與想要的值檢出面積不同且不想要的瑕疪。)
- ThresholdHigh、ThresholdLow-這些屬性可用於調整設定灰階臨界值的參數,以分辨哪些地方是背景,哪些是瑕疪的一部份。直方圖工具,是設定以上屬性的最佳方法。若想了解,請參考以下章節。
Vision Guide 8.0 Properties and Results Reference Manual中關於ThresholdHigh和ThresholdLow屬性的說明
一旦您完成對屬性進行的調整,並已測試過DefectFinder,直到您滿意其結果時,即完成本視覺物件的創建工作,
並可開始創建其他視覺物件,或設定及測試整個視覺序列。
Frame物件
Frame物件說明
Frame物件能為Vision物件提供一種動態定位的參考。
一旦定義一個Frame物件,就可以針對該Frame放置其他Vision物件。這功能在各種不同的情況下皆非常實用。
同時也能降低應用程式週期時間,因為一旦找到粗略位置及定義一個Frame,其他以該Frame物件為基礎的Vision物件就不需要有大型搜尋視窗。(縮小搜尋視窗的大小,可協助縮短視覺處理時間。)
Frame物件最適合用於零件上有某些通用的參考圖樣的類型(例如在印刷電路板上的標記),然後可用來作為其他Vision物件搜尋視窗位置所根據的基礎位置。
Frame物件配置
Frame物件看起來像2個相交的Line物件。
使用者可以按一下Frame物件的名稱,然後將物件拖曳至新位置,以調整Frame物件的位置。
但在大部份的情況下,Frame物件位置及方位將會以其他Vision物件的位置為基礎。
Frame物件配置
符号 | 說明 |
---|---|
a | 物件名稱 |
Frame物件屬性
下列清單是Frame物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
Caption | 用於為Frame物件指定一個標題。 預設:Empty String |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 預設:1 |
Description | 設定使用者指定的説明 預設:空白 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 用於選擇物件不合格時的物件色彩。 預設:Red |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
Name | 用於對Frame物件指定一個獨特名稱。 預設:Frame01 |
OriginAngleEnabled | 用於啟用單點框,使用後可讓框以原點物件的角度旋轉,而非依據兩點Frame的OriginPoint和YaxisPoint之間的向量旋轉。 預設:False |
OriginPntObjResult | 用於針對OriginPoint屬性中指定的Vision物件,指定從中使用的結果。 若指定「All」,則Frame物件將會套用至所有的指定Vision物件。 預設:1(使用第一個結果) |
OriginPoint | 用於指定作為Frame物件原點的Vision物件。 預設:Screen |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
ShowExtensions | 指定是否顯示外框的延長線。 預設:False |
YAxisPoint | 用於指定作為Frame物件Y軸點的Vision物件。(用於定義Frame物件的方向。) 預設:Screen |
YAxisPntObjResult | 用於針對YAxisPoint屬性中指定的Vision物件,指定從中使用的結果。 預設:1(使用第一個結果) |
Frame物件結果
為方便起見,我們在下方提供Frame物件結果及簡短說明的清單。
若想了解Frame物件所使用的每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於回傳所找到零件的旋轉度數。 |
Found | 用於回傳是否找到物件。 |
雙點框
雙點Frame物件需要一個原點(由OriginPoint屬性定義)及一個Y軸方向(由YAxisPoint屬性定義)。Origin及Y軸方向的組合,可用來定義能視為本地座標系統的內容,在系統中其他Vision物件為依據。
當Frame物件移動時,所有在該框內定義的Vision物件都會隨之移動,此為Frame物件的最佳用途。(即:其搜尋視窗的調整依據為OriginPoint所定義的Vision物件的XY變化值,以及因YaxisPoint屬性移動而產生的旋轉。)這可以讓您維持較小的搜尋視窗,並繼而改善可靠性及處理時間。
定義一個Frame物件
一旦建立一個新的Frame物件,就需要使用2個Vision物件來當成Frame的OriginPoint和YAxisPoint的參考位置。
這些皆以OriginPoint屬性和YAxisPoint屬性進行定義。任何具有XY位置結果的Vision物件,都可用來定義Frame的Origin或YAxisPoint。
這代表Blob、Correlation、Edge、Polar及Point物件都可針對Frame物件,定義Origin或YAxisPoint屬性。
單點框
單點框是Frame物件的另一種使用方法。以這種方式使用時,會以OriginPoint屬性指定一個用來作為XY位置原點參考的Vision物件。
當OriginAngleEnabled屬性設定為False時,框會針對用來當成OriginPoint的Vision物件,依其XY位置變化值來調整位置。此時不會將旋轉納入考量。若要在以單一物件(如值檢出或關聯點比對)來尋找一項零件的XY位置,接著框內物件的其餘部份據此調整X和Y,以進行簡單XY位移時,上述功能相當實用。
在某些情況下,您也可能必須考慮您框內的旋轉。現在,假設使用一個Blob物件來尋找零件的X、Y和U位置(XY座標 + 旋轉)。接著假設需要使用其他各類Vision物件來尋找零件上的特徵。Blob物件可用來定義一個單點框(包括框的旋轉),接著框內的其他物件將會向X、Y位移,並依據Blob物件所回傳的旋轉加以旋轉。因此,只需要一個Vision物件,就可以同時定義零件的XY位移及旋轉。這也就是為何不需要針對Single Point Frame設定YaxisPoint屬性的原因。
使用Frame物件
接下來的幾個小節將會引導您了解如何建立及使用Frame物件。
- 如何建立一個新的Frame物件
- 針對搜尋視窗進行定位和調整大小
- 針對與Frame相關的物件,設定其屬性
- 測試Frame物件及檢查結果
- 調整屬性後再次測試
在開始進行上述步驟之前,您需要建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的Frame物件
- 按一下Vision Guide工具列上的[All Tools] - [Frame]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成Frame物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Frame01」,因為這是為本序列所建立的第一個Frame物件。(將會在後續說明如何變更物件名稱。)
步驟2:設定Frame物件位置
現在您可以看到一個與下列所示類似的Frame物件:
新Frame物件
符号 | 說明 |
---|---|
a | 物件名稱 |
Frame物件並不具備可調整大小的視窗。您也可以按一下Frame物件的名稱標籤或其任一軸上的任何地方,同時按住滑鼠,將整個Frame物件拖曳至畫面上的新位置。當您找到您想要的位置時即可放開滑鼠,Frame物件就會停留在畫面中的這個新位置。
步驟3:為Frame物件設定屬性
現在可為Frame物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些Frame物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。 「Vision Guide 8.0 Properties and Results Reference」
- Frame物件屬性
屬性 | 說明 |
---|---|
Name屬性 | 新建立的Frame物件其預設名稱為「Framexx」,其中xx是用來辨別相同視覺序列中多個Frame物件的編號。若這是本視覺序列的第一個Frame物件,預設名稱就會是「Frame01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現在修改名稱屬性之後,所有顯示Frame物件名稱的地方都會更新,以反映新名稱。 |
OriginPoint屬性 | 通常您會將本屬性設定為一個先前已在序列中執行的物件。 這將可在執行時間決定框的原點。 |
YAxisPoint屬性 | 通常您會將本屬性設定為一個先前已在序列中執行的物件。 這將可在執行時間判定Frame的Y的方向。 |
步驟4:執行Frame及檢查結果
若想執行Frame物件,請依下列方式操作:
在執行面板上物件的[Run]按鈕上按一下。若OriginPoint或YAxisPoint屬性其中一個非Screen,將會先執行個別物件。例如,若OriginPoint為Blob物件,就會先執行值檢出,以針對框的原點判定其位置。
現在將會顯示Frame物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
Angle | 框的角度 |
Line物件
Line物件說明
Line物件可用來定義2個點之間的線段。
Point 可依據畫面上的位置,或是其他Vision物件的位置為基礎。例如,下列所示的情況,正是一些可以建立Line物件的情況:
- 2個Blob物件之間
- 2個Correlation物件物件之間
- 在2個Point物件之間
- 在一個Blob物件及一個Correlation物件之間
- 在單一Blob物件的2個結果之間
- 在一個Blob物件的結果1及一個Correlation物件的結果3之間
- 在一個Point物件及一個Correlation物件之間
- 具有相關XY位置的物件之間的任何其他各種不同的組合
Line物件在下列情況下十分實用:
- 用來測量兩個不同Vision物件(或在使用多個結果時的Vision物件結果)之間的距離。同時,也可以視您的個別應用程式需求來檢查距離,以確定其是否介於最小及最大距離之間。
- 用來計算2個Vision物件之間的旋轉量(使用在稱為RobotU結果的機器人座標中回傳的線段角度)。
- 用來建立一個建置區塊,以計算線段的中點或2條線段之間的交叉點
Line物件配置
Line物件配置方式正如其名,就是一條具有起點、終點及一個物件名稱的線段。若想重新設定Line物件位置,只要按一下Line物件的名稱(或線段上的任何地方),然後將線段拖至一個新的位置即可。若想調整Line物件的大小,請按一下線段的起點或終點(會以大小調整把手顯示),然後拖至一個新的位置即可。
Line物件配置
符号 | 說明 |
---|---|
a | 物件名稱 |
b | 大小調整把手 |
Line物件屬性
下列清單是Line物件的屬性摘要。
若想了解Line物件所使用的每個屬性的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
AngleBase | 設定參考角度。 預設:0 |
AngleMode | 設定角度輸出格式。 預設:1 – Default |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
Caption | 用於為Line物件指定一個標題。 預設:Empty String |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設:空白 |
Directed | 用於指定是否使用線方向設定角度。 預設:True |
Enabled | 指定是否執行該物件。 預設:True |
EndPntObjResult | 用於指定要使用EndPointObject的哪個結果。 預設:1 |
EndPointObject | 用於指定使用哪一Vision物件來定義檢測線段的終點。 預設:Screen |
EndPointType | 用於針對將用來定義線段終點的終點,定義其類型。 預設:0 - Point |
FailColor | 用於選擇物件不合格時的物件色彩。 預設:Red |
Frame | 用於指定所要使用的位置框。 預設:none |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
MaxLength | 用於定義Line物件的上方長度限制。 若想找出Line,必須在MaxLength屬性的設定值下有一個Length結果。 預設:9999 |
MaxPixelLength | 用於定義Line物件的上方畫素長度限制。 若想找出Line,必須在MaxPixelLength屬性的設定值下有一個PixelLength結果。 預設:9999 |
MinLength | 用於定義Line物件的下方長度限制。 若想找出Line,必須在MinLength屬性的設定值上有一個Length結果。 預設:0 |
MinPixelLength | 用於定義Line物件的下方長度限制。 若想找出Line,必須在MinPixelLength屬性的設定值上有一個PixelLength結果。 預設:0 |
Name | 用於對Line物件指定一個獨特名稱。 預設:Line01 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
ShowExtensions | 在設定為True時,會將線段的圖形顯示延伸至影像顯示區的尾端。 預設:False |
StartPntObjResult | 用於指定要使用StartPointObject的哪個結果。 預設:1 |
StartPointObject | 用於指定使用哪一Vision物件來定義檢測線段的起點。 預設:Screen |
StartPointType | 用於針對將用來定義線段起點的起點,定義其類型。 預設:0 - Point |
X1 | 線段起點的X座標位置。 |
X2 | 線段終點的X座標位置。 |
Y1 | 線段起點的Y座標位置。 |
Y2 | 線段終點的Y座標位置。 |
Line物件結果
下列清單是Line物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 針對從StartPoint至EndPoint所形成的Line,用於回傳該線段相對於在3點鐘方向的0位置時的角度。 |
CameraX1 | 用於針對攝影機的座標系統,回傳其中線段起點的X座標位置。 |
CameraX2 | 用於針對攝影機的座標系統,回傳其中線段終點的X座標位置。 |
CameraY1 | 用於針對攝影機的座標系統,回傳其中線段起點的Y座標位置。 |
CameraY2 | 用於針對攝影機的座標系統,回傳其中線段終點的Y座標位置。 |
Found | 用於回傳是否找到物件。 (即:若找不到用來定義Line物件的Vision物件,那麼就找不到Line物件。) |
Length | 用於回傳線段的長度(單位:公釐)。 攝影機必須經過校正,否則將會回傳「no cal」的表面長度結果。 若Line物件因為MaxLength和MinLength限制而無法使用,會在Results清單中以紅色顯示Length結果。 |
NumberFound | 用於回傳所找到的線段數量。 |
PixelLength | 用於回傳線段的長度(單位:畫素)。 若Line物件因為MaxPixelLength和MinPixelLength限制而無法使用,會在Results清單中以紅色顯示PixelLength結果。 |
PixelLine | 僅執行時間。 用於回傳四個線段座標X1、Y1、X2、Y2(單位:畫素)。 |
PixelX1 | 用於回傳線段起點的X座標位置(單位:畫素)。 |
PixelX2 | 用於回傳線段終點的X座標位置(單位:畫素)。 |
PixelY1 | 用於回傳線段起點的Y座標位置(單位:畫素)。 |
PixelY2 | 用於回傳線段終點的Y座標位置(單位:畫素)。 |
RobotX1 | 用於針對機器人座標系統中所偵測到邊緣的線段,回傳其起點的X座標位置。 |
RobotX2 | 用於針對機器人座標系統中所偵測到邊緣的線段,回傳其終點的X座標位置。 |
RobotY1 | 用於針對機器人座標系統中所偵測到邊緣的線段,回傳其起點的Y座標位置。 |
RobotY2 | 用於針對機器人座標系統中所偵測到邊緣的線段,回傳其終點的Y座標位置。 |
RobotU | 用於針對從StartPoint至EndPoint所形成的Line,回傳該線段相對於機器人座標系統的角度。 |
使用Line物件
接下來的幾個小節將會引導您了解如何建立及使用Line物件。
- 如何建立一個新的Line物件
- 設定Line物件位置
- 針對與Line相關的物件,設定其屬性
- 測試Line物件及檢查結果
在開始進行下列的步驟之前,您應該已建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的Line物件
- 按一下Vision Guide工具列上的[All Tools] - [New Line]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成Line物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置,接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Line01」,因為這是為本序列所建立的第一個Line物件。(將會在後續說明如何變更名稱。)
步驟2:設定Line物件位置
現在您可以看到一個與下列所示類似的Line物件:
新Line物件
符号 | 說明 |
---|---|
a | 物件名稱 |
b | 大小調整把手 |
Line物件並不具備可調整大小的視窗。您可以按下任一大小調整把手以變更長度及旋轉,然後將線段的該端拖曳至新的位置。您也可以按一下Line物件的名稱標籤或線段的任何地方,同時按住滑鼠,將整個Line物件拖曳至畫面上的新位置。當您找到您想要的位置時即可放開滑鼠,Line物件就會停留在畫面中的這個新位置。
步驟3:為Line物件設定屬性
現在可為Line物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些Line物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
- 「Vision Guide 8.0 Properties and Results Reference」
- Line物件屬性
屬性 | 說明 |
---|---|
Name屬性 | 新建立的Line物件其預設名稱為「Linexx」,其中xx是用來辨別相同視覺序列中多個Line物件的編號。若這是本視覺序列的第一個Line物件,預設名稱就會是「Line01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現在修改名稱屬性之後,所有顯示Line物件名稱的地方都會更新,以反映新名稱。 |
StartPointObject屬性 | 通常您會將本屬性設定為一個先前已在序列中執行的物件。 這將可在執行時間判定線段的起點。 |
EndPointObject屬性 | 通常您會將本屬性設定為一個先前已在序列中執行的物件。 這將可在執行時間決定線段的終點。 |
使用Directed及AngleBase屬性設定值,將AngleMode屬性設為「2-UseAngleBase」以指定角度輸出格式。Directed屬性會指定角度是否會以Line物件方向為依據。使用AngleBase設定的角度作為參考輸出角度。
例如,根據教導時設定的角度執行量測時,輸出的角度將會是以AngleBase屬性設定的角度值為中心所量測的角度。將AngleMode屬性設為「1-Default」以輸出角度(0至360°)。
執行此操作時,以下設定將導致執行相同的動作。
- AngleMode屬性:2-UseAngleBase
- AngleBase:0
- Directed:True
步驟4:執行Line物件及檢查結果
若想執行Line物件,請依下列方式操作:
在執行面板上物件的[Run]按鈕上按一下。若StartPointObject或EndPointObject屬性其中一個非Screen,將會先執行個別物件。例如,若StartPointObject為Blob物件,就會先執行值檢出,以判定線段的起點位置。
現在將會顯示Line物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
Length結果 | 線段的長度(單位為公釐)。 針對包含待判定Length的線段的序列,必須有相關的校正。 |
PixelX1結果 PixelY1結果 PixelX2結果 PixelY2結果 | 線段兩端的XY位置(單位:畫素)。 |
PixelLength結果 | 線段的長度(單位:畫素)。 |
Point物件
Point物件說明
Point物件用於定義點。Point物件可視為一種工具物件,通常會與其他Vision物件搭配使用。
在為Polar物件及Line物件定義位置參考時,Point物件具有最高的實用性,分別說明如下:
物件 | 說明 |
---|---|
Polar物件: | Point物件可用來定義CenterPoint屬性,作為Polar物件(CenterX和CenterY屬性)的中心。 |
Line物件: | Point物件可用來定義單一線段的起點、中點或終點,或是2條線段的交叉點。 |
Point物件配置
Point物件配置會在畫面上以十字交叉出現。Point物件唯一真正需要調整的作業是變更其位置。您只要按一下Point物件,並拖至新位置,即可完成這項程序。在大部份的情況下,Point物件皆附於其他物件上,因此其位置是依據相關物件的位置進行計算。
Point物件配置
符号 | 說明 |
---|---|
a | 物件名稱 |
Point物件屬性
下列清單是Point物件的屬性摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 若指定的物件執行失敗(未合格)時,整個序列會中止或不再處理其他的物件。 預設:False |
AngleObject | 用於指定帶輸出角度的物件。 預設:Screen |
AngleObjectResult | 用於指定AngleObject屬性要使用的結果。 |
CalRobotPlacePos | 在設計和執行程式時校正RobotPlacePos。 |
Caption | 用於為Point物件指定一個標題。 預設:空白 |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,DefectFinder物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件配置在任意位置。但是,若指定給其他Vision物件,則會設定為物件的PixelX和PixelY的中心點。 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。預設: None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設: 空白 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 用於選擇物件不合格時的物件色彩。 預設:1 – Red |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
LineObj1Result | 用於設定要為LineObj1屬性設定的物件結果。 |
LineObj2Result | 用於設定要為LineObj2屬性設定的物件結果。 |
LineObject1 | 用於定義第一個Line物件, 其可用來定義作為一條直線的中點或2條直線交叉點的Point物件位置。 預設:none |
LineObject2 | 用於定義第二個Line物件,其可用來定義作為2條線段交叉點的點位置。 預設:none |
Name | 用於對Point物件指定一個獨特名稱。 預設:Point01 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
PointType | 用於定義點的位置類型。 預設:Screen |
X | Point物件的X座標位置(單位:畫素)。 |
Y | Point物件的Y座標位置(單位:畫素)。 |
Point物件結果
下列清單是Point物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於回傳所偵測到的Point,單位為度。 |
CameraX | 用於針對在攝影機的座標系統中的Point物件位置,回傳其X座標位置。 |
CameraY | 用於針對在攝影機的座標系統中的Point物件位置,回傳其Y座標位置。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內的Point物件位置,回傳其CameraX、CameraY和CameraU座標。 |
ColorValue | 用於針對目前位置的畫素,回傳其灰階值或色彩值。 |
NumberFound | 用於回傳所找到的Point的數量。 |
Found | 用於回傳是否找到物件。 (即:若找不到用來定義Point物件的Vision物件,那麼就找不到Line物件。) |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於針對Point物件的位置,回傳其X座標位置(單位:畫素)。 |
PixelY | 用於針對Point物件的位置,回傳其Y座標位置(單位:畫素)。 |
PixelXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的X座標位置。 |
RobotY | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的Y座標位置。 |
RobotU | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的旋轉量。 (請記住,因為Point物件並無旋轉,故U座標值並無意義。) |
RobotXYU | 僅執行時間。 用於針對Found物件的位置,回傳其相對於機器人座標系統的RobotX、RobotY座標和旋轉量。(請記住,因為Point物件並無旋轉,故U座標值並無意義。) |
了解Point物件
建立Point物件可為使用者提供一種標示畫面位置或與Line物件的相對位置的方法,其他Vision物件可藉此將這些位置作為參考位置。
Point物件有兩個必須了解的基本要件:
- 定義Point物件的位置
- 使用Point物件的位置作為其他物件的參考位置
定義Point物件的位置
Point物件的位置依據可以是以下兩種畫面上的位置之一:放置Point物件的位置、Line物件的中點,或是2個Line物件之間的交叉點。
PointType屬性可用來定義Point物件位置的依據項目。PointType屬性可設定為Screen、MidPoint或Intersection。
在PointType屬性設定為Screen時
在首次建立一個Point物件時,預設的PointType是Screen,代表Point物件的位置依據是Point物件所放置的畫面上位置。
若PointType設定為Screen,只有在您以滑鼠手動移動,或變更X屬性或Y屬性的值時,Point物件的位置才會變更。將PointType屬性設定為MidPoint
若想將Point物件的位置定義為線段的MidPoint,請將PointType屬性設定為MidPoint。
但必須注意:在將PointType設定為MidPoint之前,您必須先定義一個將使用的線段。否則,Vision Guide 8.0會不知道該使用哪個段線來計算中點。 LineObject1屬性可定義將用來計算中點的Line物件,以及待設定的Point物件位置。
您可在LineObject1屬性的下拉式清單中,選擇視覺序列Step清單中任何比Point物件早建立的有效Line物件。
事實上,Vision Guide會自動檢查序列Step清單中有哪些Line物件是在Point物件之前所建立,並僅會在LineObject1的下拉式清單中顯示這些線段。如此可增加系統的易用性。
若您試著將PointType屬性設定為MidPoint,卻未先以LineObject1屬性指定要使用的Line物件,則將出現一個錯誤訊息,告訴您必須先為LineObject1屬性選擇一個線段。將PointType屬性設定為Intersection
若想將Point物件的位置定義為2條線段之間的交叉點,需要先定義2條線段。您可以使用LineObject1和LineObject2屬性來定義。
LineObject1和LineObject2屬性必須分別定義一個不同的Line物件。一旦分別定義一個Line物件之後,就可以將PointType屬性設定為Intersection,代表Point物件的位置將會是由LineObject1和LineObject2屬性所定義的2條線段的交叉點。
您可在LineObject1屬性的下拉式清單中,選擇視覺序列Step清單中任何比Point物件早建立的有效Line物件,以用來作為交叉點所需要的第1條線段。
接著可在LineObject2屬性的下拉式清單中,選擇視覺序列Step清單中比Point物件早建立的任何其他有效Line物件,以用來作為交叉點所需要的第2條線段。
Vision Guide 8.0會自動篩選,僅在相關下拉式清單中顯示可用來作為LineObject1或LineObject2的有效Line物件。
若在將PointType屬性設定為Intersection之前,未先針對LineObject1和LineObject2指定要使用的Line物件,則將出現一個錯誤訊息。錯誤訊息會告訴您在將PointType屬性設定為Intersection之前,必須先針對LineObject1或LineObject2定義線段。
這將視未定義的Line物件而有不同。
提示
在計算一個物件的中心時,使用2條線段的交叉點來定義位置會是相當實用的技巧。例如請設想一個矩形的物件。一旦您找出4個角,您可以建立2條在矩形中心交叉的對角線。將Point物件放置在此交叉點上後,將放置在矩形的中心上。
使用Point物件的位置作為其他物件的參考位置
Point物件的主要用途是作為其他Vision物件(如Line和Polar物件)的參考位置。
這代表Point物件的位置可用來作為Line或Polar物件的位置依據。
這功能是十分強大的,因為可以讓您將Point物件定義為2條線段的交叉點,以計算出物件的中心,然後用來作為計算2個物件中心之間的距離的Line物件的終點。
將Point物件用來作為Polar物件的參考位置
Polar物件需要一個CenterPoint位置,才能依據該位置進行Polar Search。在首次使用Polar物件時,您可以試著使用畫面作為CenterPoint屬性的參考點,但您很快就會發現隨著您所搜尋的特徵移動,Polar物件也必須相對於特徵的CenterPosition移動。
將其他的Vision物件(如Point物件)的XY位置套用至Polar物件時,即是能發揮其強大功能之處。
有時候您可能想要將Point物件的位置套用作為Polar物件的CenterPoint。在2種主要的情況下,Point物件可用來作為Polar物件的CenterPoint。
- CenterPoint定義為線段的中點
- CenterPoint定義為2條線段的交叉點
例如,在您找到一個線段的中點之後,您可能想要從此中點進行Polar搜尋。您也可能想要以2條線段的交叉點作為Polar搜尋的CenterPoint。
這是Polar物件與Point物件最為常見的使用方式。
將Point物件用來作為Line物件的參考位置
線段需要一個起點和終點位置。在大部份的時候,線段的起點和終點位置是以其他Vision物件的XY位置結果為依據,此類物件如Blob或Correlation物件。
然而,您也可以使用Point物件位置作為線段的參考位置。一條線段可以同時依據Point物件的起點和終點位置加以定義,或可以只具有一個以Point物件為基礎的線段終點。
Point物件的常見使用方式之一,是將其作為2條線段的交叉點。
下圖顯示的實例為在各種不同高度交叉的2個Line物件(Line1和Line2)。Line3則用來計算交叉點的高度。Point物件則顯示在Line1和Line2之間的交叉點上。
Point物件被定義為Line 1和2的交叉點
符号 | 說明 |
---|---|
a | Point物件 |
b | 高度 |
使用Point物件
接下來的幾個小節將會引導您了解如何建立及使用Point物件。
- 建立一個新的Point物件
- 將Point物件放置在畫面上
- 設定與Point物件相關的屬性
- 執行Point物件及檢查結果
在開始進行下列的步驟之前,您應該已建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。
若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的Point物件
- 按一下Vision Guide工具列上的[All Tools] - [Point]按鈕。
- 您會看到在Point物件按鈕上出現一個點圖示。
- 按一下點圖示,並拖曳到Vision Guide視窗的影像顯示區中。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Pnt01」,因為這是為本序列所建立的第一個Point物件。(將會在後續說明如何變更名稱。)
步驟2:設定Point物件位置
現在您可以看到一個與下列所示類似的Point物件:
新Point物件配置
符号 | 說明 |
---|---|
a | 物件名稱 |
因為Point物件只是一個點,並無高度或厚度,所以無法調整大小。但可以透過滑鼠定位,或將位置值設定至X和Y屬性的方式來改變其位置。
因為Point物件是以PointType屬性為「0 – Screen」的設定值建立的,故能以滑鼠稍微移動Point物件,如下述:
- 您可以按一下Point物件的名稱標籤,同時按著滑鼠,將Point物件拖曳至畫面上的新位置。
- 當您找到您想要的位置時即可放開滑鼠,Point物件就會停留在畫面中的這個新位置。
步驟3:為Point物件設定屬性
現在可為Point物件設定屬性值。
若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請按一下清單的其中一個項目。
以下顯示一些Point物件較為常用的屬性。您可以在 Vision Guide 8.0 Properties and Results Reference Manual 或「Point物件屬性」中,了解AbortSeqOnFail、Graphics等在許多不同的Vision物件中使用的其他屬性的詳情。
Point物件配置
Point物件配置會在畫面上以十字交叉出現。Point物件唯一真正需要調整的作業是變更其位置。您只要按一下Point物件,並拖至新位置,即可完成這項程序。在大部份的情況下,Point物件皆附於其他物件上,因此其位置是依據相關物件的位置進行計算。
Point物件配置
符号 | 說明 |
---|---|
a | 物件名稱 |
Point物件屬性
在測試Point物件時,並不需要設定這些屬性。由於不將Point物件放置在單一線段的中心或2條線段的交叉點上,因此我們並不需要設定任何的這些屬性來測試Point物件,使用其預設值即可。但若您是第一次使用Point物件,或許會想要閱讀這些資訊。
屬性 | 說明 |
---|---|
Name屬性 (「Pointxx」) | 新建立的Point物件其預設名稱為「Pointxx」,其中xx是用來辨別相同視覺序列中多個Point物件的編號。若這是本視覺序列的第一個Point物件,預設名稱就會是「Point01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現在修改名稱屬性之後,所有顯示Point物件名稱的地方都會更新,以反映新名稱。 |
LineObject1 (None) | 若您將Point物件的PointType屬性設定為Midpoint (指定一個線段的中點),那麼本屬性將會指定要使用哪條線段。 也可以在PointType設定為交叉點時,用來指定所需要的2條線段的第1條線。預設設定為「None」。 |
LineObject2 (None) | 若您將Point物件的PointType屬性設定為Intersection (指定2條線段的交叉點),那麼本屬性將會指定待使用的第2條線段。 交叉點的第1條線段是以LineObject1屬性指定的。預設設定為「None」。 |
PointType (Screen) | 本屬性用來定義Point物件的位置。 其位置依據可以為Screen位置、以LineObject1屬性指定線段的中心,或是以LineObject1和LineObject2屬性指定2條線段的交叉點。 預設:Screen |
因為在本範例中未指定任何Line物件,LineObject1、LineObject2和PointType屬性無法由其預設狀態變更。
若想要讓此Point成為線段的中點,通常會為LineObject1屬性選擇一個Line物件。
或者如果想要讓此Point成為兩條線段之間的交叉點,我們會為LineObject1屬性選擇一個Line物件,並為LineObject2屬性選擇第二個Line物件。
若想了解詳情,請參考本節稍早的 定義Point物件的位置 部分。
使用AngleObject屬性指定的物件角度可設為Point物件的輸出角度。這不僅讓Point物件的輸出結果包含XY位置,且透過將Point物件前的物件角度設為Point物件角度,也可連同XY位置取得U角度資訊(如RobotXYU格式)。
步驟4:執行Point物件及檢查結果
若想執行Point物件,按一下執行面板上的物件[Run]按鈕。
- 在執行面板上物件的[Run]按鈕上按一下。
現在將會顯示Point物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
PixelX結果 PixelY結果 | Point物件的XY位置(單位:畫素)。 若Point物件的PointType屬性設定為中點,那麼PixelX和PixelY結果將會針對LineObject1所指定的Line物件,回傳其中點的XY位置(單位:畫素)。 |
CameraX結果 CameraY結果 | 針對在攝影機座標系統中的Point物件,可用於定義其XY位置。 若未經過校正,則會回傳「no cal」。 |
RobotX結果 RobotY結果 | 針對在機器人座標系統中的Point物件,可用於定義其XY位置。 可用來告知機器人移動至本XY位置。不需要其他轉換或其他步驟。若未經過校正,則會回傳「no cal」。 |
BoxFinder物件
BoxFinder物件說明
BoxFinder物件可用來辨別影像中矩形邊緣(包括正方形)的位置。
BoxFinder物件可自動處理多個Edge物件,藉此辨識邊緣位置,並從每個邊緣位置取得已辨識出的矩形。
對於影像中的物件,其邊緣的灰度值會從深至淺,或從淺至深產生變化。本項變更可能會跨越數個畫素。
於每次進行BoxFinder物件的邊緣搜尋時,都會依照Polarity屬性的定義,從Light to Dark或Dark to Light尋找轉換,並在檢測到的邊緣位置之間指定最佳線段。您也可以變更EdgeType屬性,以搜尋成對邊緣。對於成對邊緣,將會搜尋兩個反向的邊緣,並將中點回傳為結果。
BoxFinder物件配置
BoxFinder物件與LineFinder相似,具備方向指示器,可顯示搜尋視窗內的邊緣搜尋方向。與LineFinder的不同之處在於,方向指示器涵蓋搜尋視窗四邊的每個方向。可透過NumberOfEdges屬性指定邊緣搜尋線段的數量。可以使用Direction屬性指定搜尋的方向。
BoxFinder物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 大小及方向把手 方向指標(搜尋方向) |
d | 方向指標(搜尋方向) |
BoxFinder物件可設定在以任何方向搜尋的位置(不只是沿著垂直或水平方向)。這與Blob物件的SearchWinType=AngledRectangle相似,使用用於旋轉BoxFinder物件搜尋視窗的把手,以預期邊緣偵測方向移動BoxFinder物件。
BoxFinder物件屬性
下列清單是BoxFinder物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 用於讓使用者指定為:若物件失敗(未合格)時,則整個序列會在該點中止,且不再處理序列中的任何其他物件。 預設:False |
Accept | 用於指定某項特徵必須等於或超過多少形狀分數,才能視為已找到。 若該值過小,可能會造成偵測錯誤。 預設:100 |
Caption | 用於為BoxFinder物件指定一個標題。 預設:空白 |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件配置在任意位置。但是,若指定給其他Vision物件,則會設定為物件的PixelX和PixelY的中心點。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,BoxFinder物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 預設:False |
ContrastTarget | 用於為邊緣搜尋設定想要的對比。 預設:0(最佳對比) |
ContrastVariation | 用於為ContrastTarget選擇允許的對比變化量。 預設:0 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設: None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設:空白 |
Direction | 用於為邊緣搜尋設定方向。 預設:InsideOut |
EdgeSort | 用於設定對檢測到的邊緣結果排序的方法。 預設:Score |
EdgeThreshold | 用於設定一個臨界值,所有低於此值的邊緣將被忽略。 預設:2 |
EdgeType | 用於針對要搜尋的邊緣,選擇其類型:單一或一對。 預設:1 - Single |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 物件不合格時,用於選擇物件的色彩。 預設:Red |
FittingThreshold | 指定用於線性擬合的邊緣結果。 預設:10 |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
MissingEdgeType | 定義如何控制遺失的邊緣。 預設:Interpolate |
Name | 用於對BoxFinder物件指定一個獨特的名稱。 預設:BoxFind01 |
NumberOfEdges | 用於指定要偵測的邊緣數。 預設:5 |
PassColor | 物件合格時用於選擇物件的色彩。 預設:LightGreen |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
Polarity | 用於指定BoxFinder物件是否應該搜尋LightToDark或DarkToLight轉換。 預設:1 - LightToDark |
ScoreWeightContrast | 用於針對以對比為依據的分數,設定其百分比。 預設:50 |
ScoreWeightStrength | 用於針對以邊緣強度為依據的分數,設定其百分比。 預設:50 |
SearchLength | 用於定義邊緣搜尋範圍的長度。 可以一起設定以下SearchLength1至4的值。 |
SearchLength1 | 用於在圖「BoxFinder物件屬性,結果的位置關係」中設定SearchLength1的長度。 |
SearchLength2 | 用於在圖「BoxFinder物件屬性,結果的位置關係」中設定SearchLength2的長度。 |
SearchLength3 | 用於在圖「BoxFinder物件屬性,結果的位置關係」中設定SearchLength3的長度。 |
SearchLength4 | 用於在圖「BoxFinder物件屬性,結果的位置關係」中設定SearchLength4的長度。 |
SearchWidth | 用於定義邊緣搜尋的寬度。 範圍:3 - 99 預設:3 |
SearchWin | 僅執行時間。用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數。 |
SearchWinAngle | 用於針對要搜尋的區域,定義其角度。 |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 |
StrengthTarget | 用於針對想要搜尋的邊緣,設定其強度。 預設:0 |
StrengthVariation | 用於設定StrengthTarget的變化量。 預設:0 |
BoxFinder物件屬性,結果的位置關係
BoxFinder物件結果
下列清單是BoxFinder物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於回傳檢測到的矩形角度。 |
CameraX | 用於回傳攝影機座標系統中所偵測到的矩形邊緣的中央X座標。 |
CameraY | 用於回傳攝影機座標系統中所偵測到的矩形邊緣的中央Y座標。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內所偵測到的矩形邊緣,回傳其中心的CameraX、CameraY和CameraU座標位置。 |
CameraX1 | 用於回傳攝影機座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner1 X座標。 |
CameraY1 | 用於回傳攝影機座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner1 Y座標。 |
CameraX2 | 用於回傳攝影機座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner2 X座標。 |
CameraY2 | 用於回傳攝影機座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner2 Y座標。 |
CameraX3 | 用於回傳攝影機座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner3 X座標。 |
CameraY3 | 用於回傳攝影機座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner3 Y座標。 |
CameraX4 | 用於回傳攝影機座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner4 X座標。 |
CameraY4 | 用於回傳攝影機座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner4 Y座標。 |
Contrast | 用於針對所偵測的矩形邊緣,回傳其對比。 |
FitError | 用於回傳各邊緣點與偵測到矩形間的距離均方根(RMS)。 |
Found | 用於回傳是否找到物件。(即:關於您所查看的特徵或零件,是否具有超過Accept屬性目前設定值的形狀分數。) |
MaxError | 用於回傳所偵測到矩形邊緣的最大差(單位為畫素長度)。 |
Passed | 用於回傳是否接受物件偵測結果。 |
Perimeter | 用於回傳偵測到矩形的周長像素數。 |
PixelX | 用於回傳影像座標系統中所偵測到的矩形邊緣的中央X座標。 |
PixelY | 用於回傳影像座標系統中所偵測到的矩形邊緣的中央Y座標。 |
PixelX1 | 用於回傳影像座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner1 X座標。 |
PixelY1 | 用於回傳影像座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner1 Y座標。 |
PixelX2 | 用於回傳影像座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner2 X座標。 |
PixelY2 | 用於回傳影像座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner2 Y座標。 |
PixelX3 | 用於回傳影像座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner3 X座標。 |
PixelY3 | 用於回傳影像座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner3 Y座標。 |
PixelX4 | 用於回傳影像座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner4 X座標。 |
PixelY4 | 用於回傳影像座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner4 Y座標。 |
PixelXYU | 用於針對所偵測到的矩形邊緣,回傳其中心的PixelX、PixelY和PixelU座標位置,單位為畫素。 |
RobotX | 用於回傳機器人座標系統中所偵測到的矩形邊緣的中央X座標。 |
RobotY | 用於回傳機器人座標系統中所偵測到的矩形邊緣的中央Y座標。 |
RobotU | 用於回傳機器人座標系統中所偵測到的矩形邊緣的中央U座標。 |
RobotXYU | 僅執行時間。 用於針對所偵測到的矩形邊緣,回傳其相對於機器人座標系統的RobotX、RobotY和RobotU座標的中心位置。 |
RobotX1 | 用於回傳機器人座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner1 X座標。 |
RobotY1 | 用於回傳機器人座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner1 Y座標。 |
RobotX2 | 用於回傳機器人座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner2 X座標。 |
RobotY2 | 用於回傳機器人座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner2 Y座標。 |
RobotX3 | 用於回傳機器人座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner3 X座標。 |
RobotY3 | 用於回傳機器人座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner3 Y座標。 |
RobotX4 | 用於回傳機器人座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner4 X座標。 |
RobotY4 | 用於回傳機器人座標系統中圖「BoxFinder物件屬性,結果的位置關係」中的Corner4 Y座標。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
Strength | 用於針對偵測到的邊緣,回傳其強度。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
使用BoxFinder物件
接下來的幾個小節將會引導您了解如何建立及使用BoxFinder物件。
- 如何建立一個新的BoxFinder物件
- 針對搜尋視窗進行定位和調整大小
- 設定與BoxFinder物件相關的屬性
- 測試BoxFinder物件及檢查結果
- 調整屬性後再次測試
在開始進行下列的步驟之前,您應該已建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的BoxFinder物件
- 按一下Vision Guide工具列上的[All Tools] - [BoxFinder]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成BoxFinder物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置。
- 接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「BoxFind01」,因為這是為本序列所建立的第一個BoxFinder物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的BoxFinder物件:
新BoxFinder物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 大小及方向把手 |
d | 方向指標(搜尋方向) |
- 在BoxFinder物件的名稱標籤按一下,同時按下滑鼠,將BoxFinder物件拖曳至您想要讓搜尋視窗停留的位置。
- 必要時,可使用搜尋視窗調整大小把手,來調整BoxFinder物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)
步驟3:為BoxFinder物件設定屬性
現在可為BoxFinder物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請選擇清單的其中一個項目。
以下顯示一些BoxFinder物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
Name屬性 | 新建立的BoxFinder物件之預設名稱為「BoxFind**」。其中,**是用來辨別相同視覺序列中複數BoxFinder物件的編號。 若這是本視覺序列的第一個BoxFinder物件,預設名稱就會是「BoxFind01」。 若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。在變更名稱屬性之後,所有顯示BoxFinder物件名稱的地方都會更新,以反映新名稱。 |
EdgeType (Single) | 用於針對要搜尋的邊緣,選擇其類型。 對成對邊緣來說,會從每個方向找到一個邊緣,並會將一對邊緣的中心報告為位置。 |
NumberOfEdges(5) | 若要尋找邊緣,可在搜尋視窗的各角搜尋五個邊緣。 |
Polarity (LightToDark) | 搜尋使用「LightToDark」極性的邊緣。 若您想要尋找DarkToLight邊緣,請變更極性。 |
步驟4:執行BoxFinder物件及檢查結果
接下來的幾個小節將會引導您了解如何執行BoxFinder物件。
在執行面板上物件的[Run]按鈕上按一下。現在將會顯示BoxFinder物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
Angle結果 | 用於針對影像座標系統中所偵測到的矩形邊緣,回傳其長度。 |
MaxError結果 | 用於回傳所偵測到矩形邊緣的最大差(單位為畫素長度)。 |
PixelX結果 PixelY結果 | 用於針對影像座標系統中所偵測到的矩形邊緣,回傳其中心的XY座標位置。 |
CameraX結果 CameraY結果 | 用於針對攝影機座標系統中所偵測到的矩形邊緣,回傳其中心的XY座標位置。若未針對XY座標位置執行校正,將會回傳「no cal」。 |
RobotX結果 RobotY結果 | 用於針對機器人座標系統中所偵測到的矩形邊緣,回傳其中心的XY座標位置。若未針對XY座標位置執行校正,將會回傳「no cal」。 |
CornerFinder物件
CornerFinder物件說明
CornerFinder物件可用來辨別影像中兩條線的交角的位置。
CornerFinder物件可自動處理多個Edge物件,藉此辨識邊緣位置,並從每個邊緣位置取得已辨識出的兩條線的交角。
對於影像中的物件,其邊緣的灰度值會從深至淺,或從淺至深產生變化。本項變更可能會跨越數個畫素。
於每次進行CornerFinder物件的邊緣搜尋時,都會依照Polarity屬性的定義,從Light to Dark或Dark to Light尋找轉換,並在檢測到的邊緣位置之間指定最佳線段。您也可以變更EdgeType屬性,以搜尋成對邊緣。對於成對邊緣,將會搜尋兩個反向的邊緣,並將中點回傳為結果。
CornerFinder物件配置
CornerFinder物件與LineFinder相似,具備方向指示器,可顯示搜尋視窗內的邊緣搜尋方向。與LineFinder的不同之處在於,方向指示器涵蓋搜尋視窗兩側的每個方向。可透過NumberOfEdges屬性指定邊緣搜尋線段的數量。可以使用Direction屬性指定搜尋的方向。
CornerFinder物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 大小及方向把手 |
d | 方向指標(搜尋方向) |
CornerFinder物件可設定在以任何方向搜尋的位置(不只是沿著垂直或水平方向)。這與Blob物件的SearchWinType=AngledRectangle相似,使用用於旋轉CornerFinder物件搜尋視窗的把手,以預期邊緣偵測方向移動CornerFinder物件。
CornerFinder物件屬性
下列清單是CornerFinder物件的屬性摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 用於讓使用者指定為:若物件失敗(未合格)時,則整個序列會在該點中止,且不再處理序列中的任何其他物件。 預設:False |
Accept | 用於指定某項特徵必須等於或超過多少形狀分數,才能視為已找到。 預設:100 |
Caption | 用於為CornerFinder物件指定一個標題。 預設:Empty String |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件放置在畫面上的任何地方。若指定其他的Vision物件,中心點將會設定為物件的PixelX和PixelY結果。 預設:Screen |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,CornerFinder物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 預設:0 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 預設:0 |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 預設:False |
ContrastTarget | 用於為邊緣搜尋設定想要的對比。 預設:0(最佳對比) |
ContrastVariation | 用於為ContrastTarget選擇允許的對比變化量。 預設:0 |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設:空白 |
Direction | 用於為邊緣搜尋設定方向。 預設:InsideOut |
EdgeSort | 用於設定對檢測到的邊緣結果排序的方法。 預設:Score |
EdgeThreshold | 用於設定一個臨界值,所有低於此值的邊緣將被忽略。 預設:2 |
EdgeType | 用於針對要搜尋的邊緣,選擇其類型:單一或一對。 預設:1 - Single |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 物件不合格時,用於選擇物件的色彩。 預設:Red |
FittingThreshold | 指定用於線性擬合的邊緣結果。 預設:10 |
Frame | 用於指定所要使用的位置框。 預設:none |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent |
MissingEdgeType | 定義如何控制遺失的邊緣。 預設:Interpolate |
Name | 用於對CornerFinder物件指定一個獨特的名稱。 預設:CornerFind01 |
NumberOfEdges | 用於指定要偵測的邊緣數。 預設:5 |
PassColor | 物件合格時用於選擇物件的色彩。 預設:LightGreen |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound |
Polarity | 用於指定CornerFinder物件是否應該搜尋LightToDark或DarkToLight轉換。 預設:1 - LightToDark |
ScoreWeightContrast | 用於針對以對比為依據的分數,設定其百分比。 預設:50 |
ScoreWeightStrength | 用於針對以邊緣強度為依據的分數,設定其百分比。 預設:50 |
SearchLength | 用於定義邊緣搜尋範圍的長度。 可以一起設定以下SearchLength1、2的值。 |
SearchLength1 | 用於設定圖「CornerFinder物件屬性的位置關係」中SearchLength1的長度。 |
SearchLength2 | 用於設定圖「CornerFinder物件屬性的位置關係」中SearchLength2的長度。 |
SearchWidth | 用於定義邊緣搜尋的寬度。 範圍:3 - 99 預設:3 |
SearchWin | 僅執行時間。 用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數。 |
SearchWinAngle | 用於針對要搜尋的區域,定義其角度。 |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 |
StrengthTarget | 用於針對想要搜尋的邊緣,設定其強度。 預設:0 |
StrengthVariation | 用於設定StrengthTarget的變化量。 預設:0 |
CornerFinder物件屬性的位置關係
CornerFinder物件結果
下列清單是CornerFinder物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於針對偵測到的角,回傳其角度。 |
CameraX | 用於回傳攝影機座標系統中所偵測到的角的X座標。 |
CameraY | 用於回傳攝影機座標系統中所偵測到的角的Y座標。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內所偵測到的角位置,回傳CameraX、CameraY和CameraU座標。 |
Contrast | 用於回傳找到Edge的對比。 |
FitError | 用於回傳各邊緣點與偵測到的角之間的距離均方根(RMS)。 |
Found | 用於回傳是否找到物件。(即:關於您所查看的特徵或零件,是否具有超過Accept屬性目前設定值的形狀分數。) |
MaxError | 用於回傳所偵測到線段邊緣的最大差(單位為畫素長度)。 |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於回傳影像座標系統中所偵測到的角的X座標。 |
PixelY | 用於回傳影像座標系統中所偵測到的角的Y座標。 |
PixelXYU | 僅執行時間。 用於針對所偵測到的角位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於回傳機器人座標系統中所偵測到的角的X座標。 |
RobotY | 用於回傳機器人座標系統中所偵測到的角的Y座標。 |
RobotU | 用於回傳機器人座標系統中所偵測到的角的U座標。 |
RobotXYU | 僅執行時間。 用於針對偵測到的角位置,回傳其相對於機器人座標系統的RobotX、RobotY和RobotU座標位置。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
Strength | 用於針對偵測到的邊緣,回傳其強度。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
使用CornerFinder物件
接下來的幾個小節將會引導您了解如何建立及使用CornerFinder物件。
- 如何建立一個新的CornerFinder物件
- 針對搜尋視窗進行定位和調整大小
- 設定與CornerFinder物件相關的屬性
- 測試CornerFinder物件及檢查結果
- 調整屬性後再次測試
在開始進行下列的步驟之前,您應該已建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。若您還沒有任何可以處理的視覺序列,可以按一下 [New Sequence]按鈕,以建立一個新的視覺序列。
您也可以在Vision Guide視窗的序列樹上按一下,以選擇一個先前已建立的序列。
請參考以下內容,以深入了解如何建立一個新的視覺序列,或是選擇一個之前已定義的序列。
視覺序列
步驟1:建立一個新的CornerFinder物件
- 按一下Vision Guide工具列上的[All Tools] - [CornerFinder]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成CornerFinder物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置。
- 接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「CornerFind01」,因為這是為本序列所建立的第一個CornerFinder物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的CornerFinder物件:
新CornerFinder物件配置
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 大小及方向把手 |
d | 方向指標(搜尋方向) |
- 在CornerFinder物件的名稱標籤按一下,同時按下滑鼠,將CornerFinder物件拖曳至您想要讓搜尋視窗停留的位置。
- 必要時,可使用搜尋視窗調整大小把手,來調整CornerFinder物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)
步驟3:為CornerFinder物件設定屬性
現在可為CornerFinder物件設定屬性值。若想設定屬性,只要在相關屬性的值欄位上按一下,然後輸入新值;若在已顯示下拉式清單的情況,請選擇清單的其中一個項目。
以下顯示一些CornerFinder物件較為常用的屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
Name屬性 | 新建立的CornerFinder物件之預設名稱為「CornerFind**」。其中,**是用來辨別相同視覺序列中複數CornerFinder物件的編號。 若這是本視覺序列的第一個CornerFinder物件,預設名稱就會是「CornerFind01」。 若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。在變更名稱屬性之後,所有顯示CornerFinder物件名稱的地方都會更新,以反映新名稱。 |
EdgeType (Single) | 用於針對要搜尋的邊緣,選擇其類型。 對成對邊緣來說,會從每個方向找到一個邊緣,並會將一對邊緣的中心報告為位置。 |
NumberOfEdges(5) | 若要尋找邊緣,可在搜尋視窗的各角搜尋五個邊緣。 |
Polarity (LightToDark) | 搜尋使用「LightToDark」極性的邊緣。 若您想要尋找DarkToLight邊緣,請變更「Polarity」。 |
步驟4:執行CornerFinder物件及檢查結果
接下來的幾個小節將會引導您了解如何執行CornerFinder物件。
在執行面板上物件的[Run]按鈕上按一下。現在將會顯示CornerFinder物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
Angle結果 | 用於回傳影像座標系統中所偵測到的角的角度。 |
MaxError結果 | 用於回傳所偵測到線段的最大差(單位:畫素)。 |
PixelX結果 PixelY結果 | 用於回傳影像座標系統中所偵測到的角的XY座標位置。 |
CameraX結果 CameraY結果 | 用於回傳攝影機座標系統中所偵測到的角的XY座標位置。若未針對XY座標位置執行校正,將會回傳「no cal」。 |
RobotX結果 RobotY結果 | 用於回傳機器人座標系統中所偵測到的角的XY座標位置。若未針對XY座標位置執行校正,將會回傳「no cal」。 |
Contour物件
Contour物件說明
Contour物件會輸出讓工件輪廓遵循的軌道。當您希望機器人手臂沿著工件輪廓移動時,可輕鬆從影像資訊中取得移動路線。
Contour物件軌道共有三種取得方法。各方法需根據應用需求使用。可透過變更ContourMode屬性來變更取得軌道的方法,且各模式皆有不同的GUI和屬性。
以下簡要說明各模式的顯著特徵。
Blob格式
將搜尋視窗內的目標工件偵測為值檢出,並擷取其輪廓。此格式用於擷取複雜形狀工件的輪廓。
符号 說明 a 序列中的步驟編號 b 物件名稱 c 搜尋視窗 Line格式
使用多條水平排列的邊緣搜尋線取得輪廓。此簡便方法可從目標工件部位擷取起伏性不高的輪廓。
符号 說明 a 序列中的步驟編號 b 物件名稱 c 大小及方向把手 d 方向指標(搜尋方向) Arc格式
使用多條放射狀排列的邊緣搜尋線取得輪廓。此簡便方法可從目標工件部位擷取起伏性不高的弧形輪廓。
符号 說明 a 序列中的步驟編號 b 物件名稱 c 方向指標(搜尋方向) d 大小及方向把手
Contour物件屬性
下列清單是Contour物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
此外,可用屬性會因ContourMode值而異。下表為應用各屬性所需的ContourMode值。
屬性 | 說明 |
---|---|
AbortSeqOnFail | 用於讓使用者指定為:若物件失敗(未合格)時,則整個序列會在該點中止,且不再處理序列中的任何其他物件。 預設:False 支援格式:Blob、Line、Arc |
Accept | 用於指定某項特徵必須等於或超過多少形狀分數,才能視為已找到。 預設:100 支援格式:Line、Arc |
AngleEnd | 用於針對執行圓弧搜尋的範圍,指定其結束角度。 預設:135 支援格式:Arc |
AngleStart | 用於針對執行圓弧搜尋的範圍,指定其起始角度。 預設:45 支援格式:Arc |
Caption | 用於為Contour物件指定一個標題。 預設:空白 支援格式:Blob、Line、Arc |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。若屬性設定為「Screen」,則可將物件配置在任意位置。但是,若指定給其他Vision物件,則會設定為物件的PixelX和PixelY的中心點。 支援格式:Blob、Line、Arc |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,Contour物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 支援格式:Blob、Line、Arc |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 支援格式:Blob、Line、Arc |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 支援格式:Blob、Line、Arc |
CenterPntRotOffset | 用於指定是否要依據CenterPointObject的Angle結果,旋轉中心點 (CenterPntOffsetX、CenterPntOffsetY)的XY偏差值。 若SearchWinType設定為RotatedRectangle,搜尋視窗會依據Angle結果進行旋轉。 |
CenterX | 用於指定作為物件中心點位置的X座標。CenterPoint屬性設定為其他Vision物件時,將會自動填入本屬性。 支援格式:Arc |
CenterY | 用於指定作為物件中心點位置的Y座標。CenterPoint屬性設定為其他Vision物件時,將會自動填入本屬性。 支援格式:Arc |
ContourMode | 用於定義Contour物件的邊緣偵測格式。 |
ContrastTarget | 用於為邊緣搜尋設定想要的對比。 預設:0(最佳對比) 支援格式:Line、Arc |
ContrastVariation | 用於為ContrastTarget選擇允許的對比變化量。預設:0 支援格式:Line、Arc |
CoordObject | 指定要複製結果的Coordinates物件。複製過程在物件執行時發生,如果未執行例如Decision等的分支功能,則不執行複製操作。 預設:None |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 支援格式:Blob、Line、Arc |
Description | 設定使用者指定的説明 預設: 空白 |
Direction | 用於為邊緣搜尋設定方向。 預設:InsideOut 支援格式:Arc |
EdgeThreshold | 用於設定一個臨界值,所有低於此值的邊緣將被忽略。 預設:2 支援格式:Line、Arc |
EdgeType | 用於針對要搜尋的邊緣,選擇其類型:單一或一對。 預設:1 - Single 支援格式:Line、Arc |
Enabled | 指定是否執行該物件。 預設:True 支援格式:Blob、Line、Arc |
EndPntObjResult | 用於指定要使用EndPointObject的哪個結果。 預設:1 支援格式:Blob、Line、Arc |
EndPointObject | 用於指定使用哪一Vision物件來定義檢測線段的終點。 預設:Screen 支援格式:Blob、Line、Arc |
EndPointType | 用於針對將用來定義線段終點的終點,定義其類型。 預設:0 - Point 支援格式:Blob、Line、Arc |
FailColor | 物件不合格時,用於選擇物件的色彩。 預設:Red 支援格式:Blob、Line、Arc |
FillHoles | 指定是否填滿二元影像中的孔洞。 預設:False 支援格式:Blob |
FittingThreshold | 定義直線或圓弧的擬合臨界值。 支援格式:Line、Arc |
Frame | 用於指定所要使用的位置框。 預設:none 支援格式:Blob、Line、Arc |
FrameResult | 用於指定要使用哪一號Frame的結果。 預設:1 支援格式:Blob、Line、Arc |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All 支援格式:Blob、Line、Arc |
LabelBackColor | 用於針對物件的標籤來設定背景色。 預設:Transparent 支援格式:Blob、Line、Arc |
LineDirection | 定義輪廓點的輸出方向。 預設:LeftToRight 支援格式:Line |
MaxArea | 定義物件的上限面積。 預設:100,000 支援格式:Blob |
MinArea | 定義物件的下限面積。 預設:25 支援格式:Blob |
MinMaxArea | 僅執行時間。 用於以單一敘述同時設定或回傳MinArea和MaxArea。 |
Name | 用於為Contour物件指定一個獨特名稱。 預設:Contour01 支援格式:Blob、Line、Arc |
NumberOfEdges | 用於指定要偵測的邊緣數。 預設:20 支援格式:Line、Arc |
NumberToFind | 定義輪廓點的最大輸出數量。 預設:1 支援格式:Blob、Line、Arc |
PassColor | 物件合格時用於選擇物件的色彩。 預設:LightGreen 支援格式:Blob、Line、Arc |
PassType | 選擇判斷物件是否合格的規則。 預設:SomeFound 支援格式:Blob、Line、Arc |
Polarity | 用於指定Contour物件是否應該搜尋DarkOnLight、LightOnDark、LightToDark或DarkToLight轉換。 預設_Blob:1 - DarkOnLight 預設_Line/Arc:1 - LightToDark 支援格式:Blob、Line、Arc |
RadiusInner | 用於指定偵測範圍的內徑。 支援格式:Arc |
RadiusOuter | 用於指定偵測範圍的外徑。 支援格式:Arc |
RejectOnEdge | 若屬性設定為True,系統將會忽略在搜尋視窗的邊緣上所偵測到的值檢出。 預設:False 支援格式:Blob |
RotationDirection | 用於指定輪廓點的旋轉方向。 預設:0 - CW 支援格式:Blob、Arc |
RuntimeContour | 用於指定是否在物件執行階段偵測輪廓點。 預設:True(在執行時檢測) 支援格式:Blob、Line、Arc |
SamplingPitch | 用於設定輪廓點減少的程度。 預設:0(未減少) 支援格式:Blob、Line、Arc |
SaveTeachImage | 設置示教模型時,是否保存圖像文檔。 |
ScoreWeightContrast | 用於針對以對比為依據的分數,設定其百分比。 預設:50 支援格式:Line、Arc |
ScoreWeightStrength | 用於針對以邊緣強度為依據的分數,設定其百分比。 預設:50 支援格式:Line、Arc |
SearchWidth | 用於定義邊緣搜尋的寬度。 範圍:3 - 99 預設:3 支援格式:Line、Arc |
SearchWin | 僅執行時間。 用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數。 支援格式:Blob、Line |
SearchWinAngle | 用於針對要搜尋的區域,定義其角度。 支援格式:Blob、Line |
SearchWinCenterX | 用於針對要搜尋的區域,定義其中心的X座標值。 支援格式:Blob、Line |
SearchWinCenterY | 用於針對要搜尋的區域,定義其中心的Y座標值。 支援格式:Blob、Line |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 預設:100 支援格式:Blob、Line |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 支援格式:Blob、Line |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 支援格式:Blob、Line |
SearchWinType | 用於針對要搜尋的區域,定義其類型(亦即Rectangle、RotatedRectangle、Circle)。 支援格式:Blob |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 預設:100 支援格式:Blob |
SizeToFind | 用於選擇要尋找的瑕疪大小。 預設:1 - Largest 支援格式:Blob |
ShowModel | 用於顯示輪廓教導模型。 支援格式:Blob |
Sort | 用於選擇物件結果所使用的排序順序。 支援格式:Blob |
StartPntObjResult | 用於指定要使用StartPointObject的哪個結果。 預設:1 支援格式:Blob、Line、Arc |
StartPointObject | 用於指定使用哪一Vision物件來定義檢測線段的起點。 預設:Screen 支援格式:Blob、Line、Arc |
StartPointType | 用於針對將用來定義線段起點的起點,定義其類型。 預設:0 - Point 支援格式:Blob、Line、Arc |
StrengthTarget | 用於針對想要搜尋的邊緣,設定其強度。 預設:0 支援格式:Line、Arc |
StrengthVariation | 用於設定StrengthTarget的變化量。 預設:0 支援格式:Line、Arc |
ThresholdAuto | 指定是否自動設定代表特徵(或物件)、背景及影像邊緣的灰階臨界值。 預設:Disables 支援格式:Blob |
ThresholdBlockSize | 將ThresholdMethod屬性設定為LocalAdaptive時,用於定義參考鄰域設定臨界值的範圍。 預設:1/16ROI 支援格式:Blob |
ThresholdColor | 用於定義在臨界值內指定給畫素的色彩。 預設:黑色 支援格式:Blob |
ThresholdHigh | 和ThresholdLow屬性配合使用,以定義代表影像的特徵(或物件)的灰階區域、背景及邊緣。 ThresholdHigh屬性針對影像的特徵區域,用於定義其灰階區域的上限。 若有任何影像部份介於ThresholdLow和ThresholdHigh所定義的灰階區域內,皆會將其畫素權重指定為1。(即:是特徵的一部份。) 若ThresholdAuto屬性為”True”且ThresholdColor屬性為「White」,此屬性值將會設定為255,且不可變更。 預設:128 支援格式:Blob |
ThresholdLevel | 將ThresholdMethod屬性設定為LocalAdaptive e時,用於定義鄰域和亮度差之間的比率。 預設:15% 支援格式:Blob |
ThresholdLow | 和ThresholdHigh屬性配合使用,以定義代表影像的特徵(或物件)的灰階區域、背景及邊緣。 ThresholdLow屬性用於定義影像的特徵區域的灰階區域的下限。 若有任何影像部份介於ThresholdLow和ThresholdHigh所定義的灰階區域內,皆會將其畫素權重指定為1。(即:是特徵的一部份。) 若ThresholdAuto屬性為”True”且ThresholdColor屬性為「Black」,此屬性值將會設定為0,且不可變更。 預設:0 支援格式:Blob |
ThresholdMethod | 設定二值化處理的方法 |
ContourTolerance | 用於設定減少輪廓點時的公差。 預設:0 支援格式:Blob、Line、Arc |
Contour物件結果
下列清單是Contour物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
CameraX | 用於回傳攝影機座標系統中的輪廓點的X座標位置。 |
CameraY | 用於回傳攝影機座標系統中的輪廓點的Y座標位置。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內的輪廓點,回傳CameraX、CameraY和CameraU座標。 |
Found | 用於回傳是否找到物件。 |
NumberFound | 用於傳回輪廓點的總數量。 |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於回傳輪廓點的X座標(單位:畫素)。 |
PixelY | 用於回傳輪廓點的Y座標(單位:畫素)。 |
PixelXYU | 僅執行時間。 用於針對輪廓點位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於回傳機器人座標系統中的輪廓點的X座標位置。 |
RobotY | 用於回傳機器人座標系統中的輪廓點的Y座標位置。 |
RobotXYU | 僅執行時間。 用於針對輪廓點,回傳其相對於機器人座標系統的RobotX、RobotY和RobotU座標位置。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
Time | 回傳處理物件所需要的時間(單位:毫秒)。 |
輪廓擷取原理
廣泛來說,輪廓擷取有兩種不同的執行方式。各方法的細節如下所述。
- 建立初始輪廓點
- 偵測值檢出(Blob)
- 描繪輪廓(Blob)
- 偵測邊緣(Line/Arc)
- 編輯輪廓點
- 減少輪廓點
- 擷取輪廓
偵測值檢出(Blob)
若ContourMode設為「Blob」,將會使用與Blob物件相同的功能偵測搜尋視窗內的值檢出。若想深入了解值檢出偵測的原理,請參考以下內容。
Blob物件-值檢出分析的運作方式
若為Contour物件,繼續下一步驟前將會偵測搜尋視窗內的所有值檢出。
描繪輪廓(Blob)
若ContourMode設為「Blob」,「偵測值檢出」步驟結束時將會立刻執行描繪輪廓的步驟。在此步驟中,會描繪在「偵測值檢出」步驟中偵測到的第一個結果值檢出輪廓,以產生初始輪廓點。以此而言,需設定搜尋視窗位置排列,以及Sort、MinArea、MaxArea及其他屬性設定,以確保要擷取輪廓的工件會是第一個偵測到的結果。
初始輪廓點會輸出為無落差的連續軌跡。請注意,初始輪廓點的起始點為最靠近指定為StartPointObject之座標位置的點位,結束點為最靠近指定為EndPointObject之座標位置的點位。
偵測邊緣(Line/Arc)
若ContourMode設為「Line」或「Arc」,邊緣搜尋線偵測的結果會設定為初始輪廓點。初始輪廓點的起始點為最靠近指定為StartPointObject之座標位置的點位,結束點為最靠近指定為EndPointObject之座標位置的點位。
減少輪廓點
初始輪廓點建立後,會將不必要的點位清除。輪廓點減少程度是因SamplingPitch及ContourTolerance的設定值而定。SamplingPitch設定是用於判定擷取單一輪廓點所需的初始輪廓點數量。例如,若設定為「10」,將從最多10個初始輪廓點中擷取單一輪廓點。此外,ContourTolerance設定是用於判定減少初始輪廓點時的允許差異。此值越高,則會刪除越多不符合工件外形的輪廓點數量。
擷取輪廓
此步驟會擷取已在前一步驟定義為結果資料的結果輪廓點外形。擷取此資料時,RotationDirection / LineDirection設定會用於判定軌道方向。
此外,在Blob模式時,將RejectOnEdge設為”False”有時可能會造成工件超出搜尋視窗外。若發生此情況,則不會將搜尋視窗的邊沿擷取為輪廓。軌道將會在碰觸到搜尋視窗邊框時結束。若搜尋視窗將軌道分為多條可擷取軌道,除非已設定StartPointObject及EndPointObject設定值,否則將會擷取最長的軌道。
步驟1:建立一個新的Contour物件
- 按一下Vision Guide工具列上的[All Tools] - [Contour]按鈕。
- 將滑鼠移動至影像顯示。您可以看到滑鼠指標變成Contour物件圖示。
- 繼續移動滑鼠,直到圖示已在影像顯示內的適當位置。
- 接著按一下滑鼠左鍵,以建立物件。
- 請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Contour01」,因為這是為本序列所建立的第一個Contour物件。(將會在後續說明如何變更名稱。)
根據要擷取的軌道類型變更ContourMode。若要深入了解可供選擇的ContourMode類型,請參考下表。ContourMode設定 判斷標準 Blob 用於擷取完全包圍工件的軌道。用於擷取形狀複雜的軌道。 Line 用於擷取部分工件的軌道。用於擷取起伏性不高的簡易直線軌道。 Arc 用於擷取部分工件的軌道。用於擷取起伏性不高的圓弧軌道。
步驟2:設定輪廓偵測位置(若ContourMode設為Blob)
若ContourMode設為Blob,現在您可以看到一個與下列所示類似的Contour物件:
新Contour物件配置(ContourMode設為Blob)
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 搜尋視窗 |
- 在Contour物件的名稱標籤按一下按下滑鼠,將Contour物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 必要時,可使用搜尋視窗調整大小把手,來調整Contour物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)(搜尋視窗是將會針對Blob進行搜尋的區域。)
步驟2:設定輪廓偵測位置(若ContourMode設為Line)
若ContourMode設為Line,現在您可以看到一個與下列所示類似的Contour物件:
新Contour物件配置(ContourMode設為Line)
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 大小及方向把手 |
d | 方向指標(搜尋方向) |
- 在Contour物件的名稱標籤按一下按下滑鼠,將Contour物件拖曳至您想要讓搜尋視窗停留的左上方位置。
- 必要時,可使用搜尋視窗調整大小把手,來調整Contour物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)現在將會顯示Edge物件。
步驟2:設定輪廓偵測位置(若ContourMode設為Arc)
若ContourMode設為Arc,現在您可以看到一個與下列所示類似的Contour物件:
新Contour物件配置(ContourMode設為Arc)
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 方向指標(搜尋方向) |
d | 大小及方向把手 |
- 在Contour物件的名稱標籤按一下,同時按下滑鼠,將Contour物件拖曳至您想要讓搜尋視窗停留的位置。
- 必要時,可使用搜尋視窗調整大小把手,來調整Contour物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)
步驟3:為Contour物件設定屬性(ContourMode:Blob)
現在可為Contour物件設定屬性值(ContourMode:Blob)。以下為ContourMode設為「Blob」時的常用屬性。
關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
- 「Vision Guide 8.0 Properties and Results Reference」
- 「Contour物件屬性清單」
注意
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。正確設定MaxArea、MinArea、RejectOnEdge及其他屬性可降低偵測錯誤的風險。
屬性 | 說明 |
---|---|
Name屬性 | 新建立的Contour物件之預設名稱為「Contour xx」。其中,xx是用來辨別相同視覺序列中複數Contour物件的編號。 若這是本視覺序列的第一個Contour物件,預設名稱就會是「Contour 01」。 若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現在修改名稱屬性之後,所有顯示Contour物件名稱的地方都會更新,以反映新名稱。 |
Polarity屬性 | 在淺色背景偵測深色物件,或在深色背景偵測淺色物件。進行這樣的選擇就是Polarity屬性的基本目的。 預設為偵測DarkOnLight (淺色背景上的深色物件)。 若您想要加以變更,按一下Polarity屬性上的Value欄位,您就會看到一個下拉式清單,顯示「DarkOnLight」和「LightOnDark」。按一下您想要使用的選項。 |
MinArea、MaxArea | 定義涵蓋輪廓擷取面積的值檢出面積。 預設範圍設定為25至100,000(MinArea至MaxArea),此範圍非常大。這表示在調整MinArea和MaxArea屬性之前,當您第一次執行新Blob物件時,大部份的值檢出都會報告為Found。通常您會想要修改這些屬性,以針對您嘗試尋找的值檢出,反映其合理範圍。透過這樣的方式,若您找到一個超出範圍的值檢出,您就會知道其並非您想要尋找的值檢出。 |
RejectOnEdge屬性 | 可用於排除接觸到搜尋視窗邊界的零件。本屬性通常應設定為True。 |
RuntimeContour | 定義是否在物件執行階段擷取輪廓。工件形狀變更時,將此設定為True。若工件形狀未變更,將此設定為False,可在物件執行階段前教導輪廓資訊。您可檢查由ShowModel屬性教導的形狀。 |
您現在可以測試Blob物件,然後返回並在之後依需要設定任何其他屬性。
步驟3:為Contour物件設定屬性(ContourMode:Line)
現在可為Contour物件設定屬性值(ContourMode:Line)。以下為ContourMode設為「Line」時的常用屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
EdgeType (Single) | 用於針對要搜尋的邊緣,選擇其類型。 對成對邊緣來說,會從每個方向找到一個邊緣,並會將一對邊緣的中心報告為位置。 |
Name屬性(「Contourxx」) | 新建立的Contour物件之預設名稱為「Contour xx」。其中,xx是用來辨別相同視覺序列中複數Contour物件的編號。 若這是本視覺序列的第一個Contour物件,預設名稱就會是「Contour01」。 若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現在修改名稱屬性之後,所有顯示Contour物件名稱的地方都會更新,以反映新名稱。 |
NumberOfEdges (1) | 您可以沿著搜尋線段搜尋1或多個邊緣。 |
Polarity (LightToDark) | 搜尋使用「LightToDark」極性的邊緣。 若您想要尋找DarkToLight邊緣,請變更極性。 |
步驟3:為Contour物件設定屬性(ContourMode:Arc)
現在可為Contour物件設定屬性值(ContourMode:Arc)。以下為ContourMode設為「Arc」時的常用屬性。關於AbortSeqOnFail和Graphics等在許多不同的Vision物件中使用的其他屬性的說明,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
EdgeType (Single) | 用於針對要搜尋的邊緣,選擇其類型。 對成對邊緣來說,會從每個方向找到一個邊緣,並會將一對邊緣的中心報告為位置。 |
Name屬性(「Contourxx」) | 新建立Contour物件其預設名稱為「Contour xx」,其中xx是用來辨別相同視覺序列中多個Contour物件的編號。若這是本視覺序列的第一個Contour物件,預設名稱就會是「Contour01」。若想變更名稱,按一下Name屬性的Value欄位,輸入一個新名稱並按下回傳鍵。您會發現在修改名稱屬性之後,所有顯示Contour物件名稱的地方都會更新,以反映新名稱。 |
NumberOfEdges(5) | 您可以搜尋五個邊緣以尋找圓形邊緣。 |
Polarity (LightToDark) | 搜尋使用「LightToDark」極性的邊緣。 若您想要尋找DarkToLight邊緣,請變更極性。 |
步驟4:設定輪廓點屬性
設定屬性以調整軌道精確性、輪廓點數量及其他設定。以下為使用的屬性。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
SamplingPitch | 定義輪廓點的最大減少數量。 設定為「5」時,輪廓點的數量最多會減少至最初偵測到的輪廓點數量的1/5(約略)。 |
ContourTolerance | 定義減少輪廓點時的容限。 減少此值會限制與工件形狀不符之輪廓點遭到刪除的數量。檢查物件執行階段結果,將此設定調整為所需的精確程度。 |
StartPointObject、EndPointObject | 指定軌道的起始及結束位置。 設定後,建立Point物件,並調整視覺序列順序,使其執行順序先於Contour物件。將Point物件放置於軌道起始/結束點的附近。 |
RotationDirection、LineDirection | 指定軌道方向。若ContourMode設為Blob或Arc,這會設定軌道的旋轉方向(CW/CCW)。若ContourMode設為Line,這會指定從垂直面向下方的邊緣搜尋線應向左轉或向右轉(LeftToRight/RightToLeft)。 |
步驟5:測試Contour物件及檢查結果
若想測試Contour物件,按一下執行面板上的物件[Run]按鈕。現在將會顯示Contour物件的結果。這時主要的檢查結果為:
結果 | 說明 |
---|---|
PixelX、PixelY | 偵測到的輪廓點位置。(單位:畫素) |
CameraX、CameraY | 以攝影機座標為依據的輪廓點位置。(單位:公釐) |
RobotX、RobotY | 以機器人座標為依據的輪廓點位置。(單位:公釐) |
Time結果 | Contour物件所需要的執行時間。 |
提示
RobotX、RobotY和CameraX、CameraY等結果在這時會回傳「no cal」。這表示視覺系統因為未執行校正,無法計算相對於機器人座標系統或攝影機座標系統的座標結果。若想了解詳情,請參考以下章節。
Text物件
Text物件說明
Text物件以文字格式在畫面上顯示Vision物件執行結果。
Text物件配置
Text物件具有一個影像處理視窗,如下所示。
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 影像顯示 處理視窗 |
Text物件屬性
下列清單是Text件屬性及其簡短說明的摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
AbortSeqOnFail | 用於讓使用者指定為:若物件失敗(未合格)時,則整個序列會在該點中止,且不再處理序列中的任何其他物件。 預設:False |
CenterPointObject | 用於針對物件中心點的位置,指定作為該點的位置。 若屬性設定為「Screen」,則可將物件配置在任意位置。但是,若指定給其他Vision物件,則會設定為物件的PixelX和PixelY的中心點。 |
CenterPntObjResult | 用於指定要使用CenterPointObject屬性的哪個結果。 若指定All,Text物件將會針對指定Vision物件的結果,套用至全部的(NumberFound)。 預設:1 |
CenterPntOffsetX | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳X偏差。 |
CenterPntOffsetY | 用於在以CenterPointObject屬性設定搜尋視窗中心點的位置之後,設定或回傳Y偏差。 |
Caption | 用於為Text物件指定一個標題。 預設:Empty String |
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設:空白 |
Enabled | 指定是否執行該物件。 預設:True |
FailColor | 用於選擇物件不合格時的物件色彩。 |
Font | 設定顯示的文字格式。 |
FontBold | 以粗體顯示字型。(僅可從SPEL+程式取得) |
FontItalic | 以斜體顯示字型。(僅可從SPEL+程式取得) |
FontName | 設定字型名稱。(僅可從SPEL+程式取得) |
FontSize | 指定字型的點數大小。(僅可從SPEL+程式取得) |
Graphics | 用於指定所要顯示的圖形。 預設:1 - All |
LabelBackColor | 用於針對物件的標籤來設定背景色。 |
TextBackColor | 為文字設定一個背景色。 預設:Transparent |
Name | 用於為Text物件指定一個獨特名稱。 預設:Text01 |
PassColor | 用於選擇物件合格時的物件色彩。 預設:Light Green |
ResultObject | 指定轉譯的Vision物件。 |
ResultText1 | 指定轉譯的結果。 |
ResultText2 | 指定轉譯的結果。 |
ResultText3 | 指定轉譯的結果。 |
ShowLabel | 指定是否為字元字串新增標籤。 |
SearchWin | 僅執行時間。 用於在單一呼叫中設定或回傳搜尋視窗的左邊、上方、高度、寬度等參數。 |
SearchWinHeight | 用於針對要搜尋的區域,定義其高度(單位:畫素)。 |
SearchWinLeft | 用於針對要搜尋的區域,定義其最左邊位置(單位:畫素)。 |
SearchWinTop | 用於針對要搜尋的區域,定義其最上方位置(單位:畫素)。 |
SearchWinWidth | 用於針對要搜尋的區域,定義其寬度(單位:畫素)。 |
UserText | 設定使用者定義的字元字串。 |
Text物件結果
下列清單是Text物件結果及其簡短說明的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Passed | 用於回傳是否接受物件偵測結果。 |
Found | 用於回傳是否取得結果。 |
PixelX | 用於針對所顯示的文字,回傳其X座標位置(單位:畫素)。 |
PixelY | 用於針對所顯示的文字,回傳其Y座標位置(單位:畫素)。 |
使用Text物件
現在我們已設定好各項基礎要素,可用於了解如何使用Vision Guide Text物件。
下一節將說明使用Text物件所需要的步驟,如下所示:
- 如何建立一個新的Text物件
- 針對搜尋視窗進行定位和調整大小
- 設定字元字串設定
- 執行Text物件及檢查結果
步驟1:建立一個新的Text物件
- 按一下Vision Guide工具列上的[All Tools] - [Text]按鈕。
- 您會看到在Text物件按鈕上出現一個Text圖示。
- 按一下Text圖示,並拖曳至Vision Guide視窗的影像顯示區。請注意,將會自動為物件建立一個名稱。在本實例中,這稱為「Text01」,因為這是為本序列所建立的第一個Text物件。(將會在後續說明如何變更名稱。)
步驟2:針對搜尋視窗進行定位和調整大小
現在您可以看到一個與下列所示類似的Text物件:
新Text物件
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 搜尋視窗 |
- 在Text物件的名稱標籤按一下,同時按住滑鼠,然後將Text物件拖曳至您想要讓文字出現在相對於搜尋視窗左上角的位置。
- 必要時,可使用搜尋視窗調整大小把手,來調整Text物件搜尋視窗的大小。(亦即在大小調整把手上按一下,並拖曳滑鼠。)(字元字串將會出現在相對於搜尋視窗左上角的位置)
步驟3:設定字元字串設定
- 指定包含要在ResultObject中轉譯之結果的Vision物件。若要讓Vision物件在ResultObject中可供選擇,必須在視覺序列中的Text物件前執行Vision物件。
- 從ResultText 1至3選擇要轉譯的結果。
- 編輯UserText屬性會顯示結果字串以外的字元文字。
- 編輯Font屬性可調整字型。按一下Font屬性會顯示以下設定視窗。您可在此處設定字型格式、字型大小及字型樣式。
步驟4:執行Text物件及檢查結果
在執行面板上物件的[Run]按鈕上按一下。設定為Text物件的字元字串將出現在畫面上。若顯示的文字出現問題,調整屬性設定。
顯示為Text物件的字元字串
顯示為Text物件的字元字串格式如下所示。
符号 | 說明 |
---|---|
a | 序列中的步驟編號 |
b | 物件名稱 |
c | 搜尋視窗 |
d | UserText |
e | ResultText1 |
f | ResultText2 |
g | ResultText3 |
字元字串將依照UserText、ResultText1、ResultText2、ResultText3的順序,從上至下顯示。若UserText欄位空白且ResultText 1 至 3值設為「None」時,則不會顯示。若搜尋視窗無法填入字元文字,則不會顯示重疊文字。
Decision物件
Decision物件說明
Decision物件的用途為依據指定Vision物件的成功與否,控制序列執行的流程。
Decision物件屬性
下列清單是Decision物件屬性及其簡短說明的摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
ConditionObject | 指定在同一序列中,位於Decision物件之前的Vision物件。 利用該結果,決定使用Decision物件的True分歧或False分歧任一方的序列流程。 |
Description | 設定使用者指定的説明 預設:空白 |
Enabled | 指定是否執行該物件。 預設:True |
Name | 用於為Decision物件指定一個獨特名稱。 預設:Decision01 |
TrueCond | 利用ConditionObject指定的Vision物件之Passed結果,指定進入True分歧的條件。 TargetPassed:若Passed結果為True,將進入True分歧。TargetFailed:若Passed結果為False,則進入False分歧。TargetNoExec:若未執行Vision物件,則進入True分歧。 預設:0 - TargetPassed |
Decision物件結果
Decision物件沒有結果。
使用Decision物件
為幫助您了解如何使用Vision Guide Decision物件,我們在前述內容已進行了相關基礎說明。
以下為使用Decision物件的所需步驟。
- 如何建立一個新的Text物件
- 設定條件分歧
- 執行物件的設定與執行
- 使用Coordinates物件
步驟1:建立一個新的Decision物件
- 事先新增將設定於Decision物件之ConditionObject屬性的物件。在本實例中,將新增Geometric物件。
您無法將Decision物件新增於序列的開頭,因Decision物件必須有設定在Decision物件之前執行的ConditionObject方可使用。 - 按一下Vision Guide工具列 - [All Tools] - [Decision]按鈕。
- 按一下[Decision]圖示,並拖曳至Vision Guide視窗的影像顯示中。
請注意,將會自動為物件建立一個名稱。舉例而言,若為序列所建立的第一個Decision物件,名稱將會建立為「Decision01」。(將會在後續說明如何變更物件名稱。)因Decision物件沒有搜尋視窗,故請從流程圖或序列樹確認其步驟位置。
步驟2:設定條件分歧
- 從Decision物件的ConditionObject屬性之下拉式清單中,選擇需確認結果的物件。僅限在序列中位於Decision物件之前執行的物件,方可設定ConditionObject。在本實例中,將ConditionObject設為Geom01。
- 設定Decision物件的TrueCond屬性,並利用在(1)中選擇的物件之Passed結果值,指定進入True分歧的條件。
若已指定為預設的0-TargetPassed,則在(1)的物件之Passed結果為True時,將進入True分歧並執行Vision物件。
若想在Passed結果為False時進入True分歧並執行Vision物件,請將TrueCond屬性指定為TargetFailed。
步驟3:新增與執行物件
- 新增在Decision物件的True及False分歧下執行的物件。
從Vision Guide工具列選擇欲新增的物件後,將其拖曳至流程圖,並配置於Decision物件的分歧內。您可以在各分歧中配置所需數量的物件。Decision物件將無法配置於分歧內。 - 在Decision物件的分歧匯合後新增物件。
您可以在Decision物件的分歧匯合後,視必要將物件新增至序列。 - 確認視覺序列的動作。
實際執行的分歧將依據在Decision物件的CondicionObject指定之物件結果,以及TrueCond屬性設定值的組合發生變化。您可以選擇執行整個序列,亦可逐步執行序列以確認相關動作。
步驟4:使用Coordinates物件
在某些情況下,將依據在Decision物件之True或False分歧下的物件處理,而必須取得畫素、攝影機或機器人的座標。發生該情形時,您可以將提供座標結果的物件之結果保存於Coordinates物件,再使用程式從Coordinates物件的結果存取座標。
- 將Coordinates物件新增至序列。
- 設定用於保存座標的物件之CoordObject屬性。您可以讓任意數量的物件將座標儲存至相同的Coordinates物件中。若執行使用CoordObject的各物件,座標將會被覆寫。在本實例中,Geom01與Corr01雙方的CoordObject均設定為Coords01。
- 在程式中使用VGet,從Coordinates物件取得座標。在本實例中,若接受Geom01,Geom01座標結果將被複製到Coords01。若未接受Geom01,則執行Corr01。若接受Corr01,Corr01座標結果將被複製到Coords01。在SPEL程式中,可從Coords01取得機器人的座標。
VGet test.Coords01.RobotXYU, found, x, y, u
Coordinates物件
Coordinates物件說明
Coordinates物件的用途為儲存其他物件的結果。主要使用於含有Decision物件的序列。
在含有Decision物件的序列中,可取得目標結果的物件將依據分歧功能之執行而發生變化。透過在各分歧物件設定用於儲存座標結果的Coordinates物件,即可從Coordinates物件取得目標結果。
將從欲儲存結果的物件中指定Coordinates物件。從下列屬性中選擇Coordinates物件。
屬性 | 說明 |
---|---|
CoordObject | 指定要儲存結果的Coordinates物件。將於物件執行時進行儲存處理,若因Decision的分歧功能等原因而未執行儲存,將不會執行複製處理。 預設:None |
僅限擁有Pixel、Camera及Robot X、Y、U的物件可指定CoordObject屬性。不論在設定物件的步驟前後,在任何一個步驟中均可指定要在CoordObject屬性中指定的Coordinates物件。可從多個物件的CoordObject屬性指定Coordinates物件。在此情形下,每次執行各物件時均會執行儲存程序,並覆寫儲存結果。
Coordinates物件屬性
下列表格為簡單說明Coordinates物件屬性的摘要。若想了解每個屬性詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
屬性 | 說明 |
---|---|
CurrentResult | 用於定義要在物件視窗的Results清單上顯示哪些結果,或者,可在要求系統在單一搜尋視窗中尋找一個以上的相似特徵時,定義哪一結果要回傳資料。 |
Description | 設定使用者指定的説明 預設:空白 |
Enabled | 指定是否執行該物件。 預設:True |
Name | 用於為Coordinates物件指定一個獨特名稱。 預設:Coords01 |
Coordinates物件結果
下列表格為簡單說明Coordinates物件結果的摘要。若想了解每個結果的詳情,請參考以下內容。
「Vision Guide 8.0 Properties and Results Reference」
結果 | 說明 |
---|---|
Angle | 用於回傳所偵測到的Point,單位為度。 |
CameraX | 用於針對在攝影機的座標系統中的Point物件位置,回傳其X座標位置。 |
CameraY | 用於針對在攝影機的座標系統中的Point物件位置,回傳其Y座標位置。 |
CameraXYU | 僅執行時間。 用於針對在攝影機的座標系統內的Point物件位置,回傳其CameraX、CameraY和CameraU座標。 |
NumberFound | 用於回傳所找到的Point的數量。 |
Found | 用於回傳是否找到物件。 |
Passed | 用於回傳是否接受物件偵測結果。 |
PixelX | 用於針對Point物件的位置,回傳其X座標位置(單位:畫素)。 |
PixelY | 用於針對Point物件的位置,回傳其Y座標位置(單位:畫素)。 |
PixelXYU | 僅執行時間。 用於針對所找到零件的位置,回傳其PixelX、PixelY和PixelU座標,單位為畫素。 |
RobotX | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的X座標位置。 |
RobotY | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的Y座標位置。 |
RobotU | 用於針對所找到零件的位置,回傳其相對於機器人座標系統的旋轉量。 |
RobotXYU | 僅執行時間。 用於針對所找到物件的位置,回傳其相對於機器人座標系統的X座標、Y座標和旋轉量。 |
ShowAllResults | 用於顯示一個對話框,該對話框可透過表格形式來顯示指定Vision物件的所有結果。 這可以方便您比較結果。 |
使用Coordinates物件
針對下列項目說明如何建立與使用Coordinates物件。
- 如何建立一個新的Coordinates物件
- 設定CoordObject
- 序列的執行
在開始進行下列的步驟之前,您應該已建立好一個新的視覺序列,或選擇了一個要使用的視覺序列。
步驟1:建立一個新的Coordinates物件
- 按一下Vision Guide工具列 - [All Tools] - [Coordinates]按鈕。
- 在[Coordinates]物件工具列按鈕上,將會顯示Coordinates圖示。
- 請按一下Coordinates圖示,並拖曳至Vision Guide視窗的影像顯示中。
- 請注意,將會自動為物件建立一個名稱。在本實例中,物件名稱將取作「Coords 01」,因為這是為本序列所建立的第一個Coordinates物件。(將會在後續說明如何變更物件名稱。)
步驟2:設定CoordObject
新增欲將結果儲存至Coordinates物件的物件。雖在前述內容中新增了Coordinates物件,但因欲複製結果的物件與Coordinates物件的步驟位置並無限制前後順序,故請視狀況調整步驟位置。
新增物件後,從CoordObject屬性選擇並指定Coordinates物件。
步驟3:執行序列
執行序列。
序列執行後,請確認Coordinates物件的結果。已儲存在CoordObject設定Coordinates物件的物件之結果。
在下列流程圖實例中,Geom01與Corr01雙方的CoordsObject屬性均設為Coords01。若接受Blob01,將執行Geom01,並將結果儲存於Coords01。若未接受Blob01,則執行Corr01,並將結果儲存於Coords01。在SPEL程式中,可從Coords01取得機器人的座標。
VGet test.Coords01.RobotXYU, found, x, y, u
以單一物件處理多個結果
Blob、Geometric、Edge、Correlation 和DefectFinder物件可用來尋找單一搜尋視窗內不只1項的特徵。
下列是您在處理多個結果的Vision物件時所必須了解的屬性及結果:
- CurrentResult屬性
- NumberToFind屬性
- NumberFound結果
- ShowAllResults結果
Vision物件可找到特徵的預設及最大數量
Blob、Geometric、Edge、Correlation 或DefectFinder物件的預設屬性組態,使其只會在搜尋視窗中尋找1個特徵。這是因為NumberToFind屬性設定為1。
但當您將NumberToFind屬性設為大於1的數字時,Vision物件就會嘗試尋找您所指定的特徵數量。
若NumberToFind屬性設定為All,則搜尋將會繼續,直到達到物件的最大偵測數(100)為止。
設定NumberToFind屬性,並執行您的Vision物件。您將會看到,目前影像中的數個符合接受準則的特徵將會顯示為「找到」(含十字交叉的綠色方塊代表所找到物件的回傳位置)。您也會看到視為CurrentResult的找到特徵,會以比其他特徵較淺的綠色醒目標示。
找到特徵的排序順序
在第一次執行一個多結果物件時,CurrentResult會自動設定為1,表示多結果Vision物件的第1個結果會將其結果顯示在物件視窗上的Results清單中。
對於Correlation或Geometric物件來說,第一個結果是具有最高分數的結果(與該Correlation物件找到的所有特徵相比)。第二個結果是具有第二高分數的結果,以此類推。
對於Blob和DefectFinder物件來說,第一個結果則是依據SizeToFind和Sort屬性值所回傳的結果。(例如:若SizeToFind設定為「Largest」,那麼第一個結果就會是所找到的最大物件。)請參見 Vision Guide 8.0 Properties and Results Reference Manual 中的SizeToFind和Sort屬性,以了解更多關於排序結果的資訊。
檢查Vision物件的多個結果
若您仔細查看Results清單標題,您會看到顯示像是「Result 1 of 10」之類的內容。(假設為了方便討論,我們已將一個Blob物件的NumberToFind屬性設定為10。)
這表示CurrentResult是我們所搜尋的10個特徵中的1個(正如NumToFind屬性所定義。)
請務必記住,Results清單標題中的第2個數字是NumberToFind屬性的值,而不是實際找到特徵的數量。
嘗試偵測10個物件時,偵測數有時變為5。在這種情況下,應該計算並顯示偵測到的前10物件,但僅顯示5個物件。以下會解釋為何未偵測到其他5個物件。
您可以變更CurrentResult屬性以反映您想要查看的值檢出,藉此針對您試著尋找的任何多個值檢出,檢視其結果。
您可以在CurrentResult屬性的值欄位手動輸入一個數字,或是將游標移至CurrentResult屬性的值欄位,然後使用SHIFT+向下箭頭或SHIFT+向上箭頭鍵,藉此移動至不同的結果。
您會在Results清單中看到所顯示的結果。您也可以隨時查看CurrentResult屬性或只查看Results清單的標題,藉此了解Results清單中顯示哪些結果。在NumToFind設定為10時,會為第一個結果顯示「Result 1 of 10」、為第二個結果顯示「Result 2 of 10」,以及為第三個結果顯示「Result 3 of 10」,以此類推。
注意
在CurrentResult屬性變更時,也會改變程式中的VGet結果。例如,若SPEL程式使用VGet來取得Vision物件的結果,且CurrentResult設定為3,那麼VGet指令將會回傳RobotXYU的第3個結果。請小心使用本功能。否則您可能會因為將您的SPEL+程式的CurrentResult設定錯誤而得到錯誤結果。
提示:若想取得多個結果,請以VGet指令所指定的結果名稱來明確指定結果數量。
VGet seqname.objname.RobotXYU(1), found, X, Y, U
使用NumberFound結果
NumberFound結果是相當實用的,因為可顯示已實際為Correlation Model找到多少值檢出或相符的特徵。SPEL+語言也能提供該結果,因此您可以使用SPEL+程式來確認已找到正確的結果數量,或是計算已找到多少結果,或是其他許多的功能。請見下列範例:
在此顯示一小段用來檢查找到的結果數量是否低於5的程式碼。
VGet seqname.objname.NumberFound, numfound
If numfound < 5 Then
'put code to handle this case here
請設想使用視覺執行一次VRun,以儘可能尋找最多零件的情況。接著機器人會抓取每個零件,直到所有找到的零件皆移至輸送帶為止。本實例顯示的一小段程式碼,用於讓機器人抓取每個找到的零件,然後將其逐一在一條移動輸送帶的相同位置上放下。
VRun seqname
VGet seqname.objname.NumberFound, numfound
For i = 1 to numfound
VGet seqname.objname.RobotXYU(i), found, X, Y, U
If found = True Then
'Set coordinates found from vision
VPick = XY(X, Y, -100.000, U)
Else
Print "Vision Error: part not found"
EndIf
Jump Vpick 'Jump to Vision Pickup position
On Gripper 'Turn on vacuum
Wait .1
Jump Vconvey 'Jump to Conveyor Position to drop part
Off Gripper 'Turn off vacuum
Wait .1
Next count
一次檢查所有的多個結果
Blob和Correlation物件的多個結果功能所內建的其中一項最佳的功能,就是ShowAllResults結果。
有時候您可能會想要比較不同的結果,以查看第一高Score對第二高Score…等情況。例如,也許在找到第3個特徵之後,分數就開始大幅下降。使用ShowAllResults結果可輕易一次查看所有結果。
按一下ShowAllResults結果的值欄位,就會出現一個按鈕。按一下按鈕,就會針對目前Vision物件,顯示一個可看出所有結果的對話框。
下圖顯示一個範例ShowAllResults對話框
使用多個結果對話框來為搜尋問題除錯
有時您想要處理的零件可能會有極大的差異(即使是相同生產批號所生產的),而且一個零件上有時可能會有2個或更多相似的特徵。
這可能會導致極難判定良好的Accept屬性值。當您認為您已將Accept屬性設為良好的值時,其他的零件卻可能會讓系統失靈。在這種情況下,很難了解真正發生的狀況。
Show All Results對話框就是為了解決這些及其他問題所設計的。
儘管您可能只關注一個零件的1項特徵,要求多項結果卻可協助您了解為何Vision Guide有時會將次要的特徵當成是您所關注的主要特徵進行回傳。通常會以幾種不同的方式發生:
- 當搜尋視窗內有2個以上的特徵非常相似,並具有非常接近的Score結果時。
- 當Confusion或Accept屬性的設定值不夠高,因此使得比您所關注的特徵低分的其他特徵符合Accept屬性設定值時。
上述兩種情況對於在搜尋視窗內搜尋單一特徵的Vision Guide新進使用者來說,會覺得頗為困惑。
若您發生有時可以找到您想要搜尋的特徵,但有時候卻會找到其他特徵的情況,請使用Show All Results對話框來嘗試解決問題。請依照下列步驟嘗試釐清情況:
- 將您的NumberToFind屬性設定為3或更高。
- 從Vision Guide 8.0開發環境執行Vision物件。
- 按一下ShowAllResults屬性按鈕,以呼叫出Show All Results對話框。
- 檢查所找到的前3項,或更多特徵的分數。
- 若只找到1或2個特徵(Vision Guide 8.0將只會針對被視為已找到的特徵設定分數),請降低您的Accept屬性,以便能找到1個以上的特徵,並再次執行Vision物件。(您可以在檢查Show All Results對話框之後,再改回原來的Accept等級)
- 按一下[ShowAllResults property]按鈕,以呼叫出Show All Results對話框。
- 檢查所找到的前3項,或更多特徵的分數。
一旦您依上述方式檢查過所找到的前3項或更多特徵的分數,您就會清楚發生什麼情況。在大部份的情況下,您會看到這兩種情況的其中一種。
- 所找到的每項特徵,其分數高於Accept屬性設定值。
若是這樣的情況,只要調高您的Confusion屬性值,以強制永遠找出最佳的特徵,而不會因為符合Accept臨界值而回傳其他特徵。您也可能會想要調整Accept屬性設定值。 - 每項特徵的分數都非常接近。若是這樣的情況,您可能必須採取某些行動,以區隔出您主要關注的特徵,像是:
- 重新調整搜尋視窗,讓隨機回傳為「已找到的特徵」的特徵不再包含在視窗內。
- 再次教導Model,了解您最想要搜尋的特徵。
- 調整您應用專案的照明,讓您最關注的特徵能與目前擾亂系統的其他特徵獲得較高的分數。
以SPEL+語言存取多個結果
我們已說明過,CurrentResult屬性是用來設定在Results清單上顯示的結果,
也可以用來判定要回傳多少結果。換言之,若我們想要從Blob物件所回傳的第3個結果取得Area結果,就必須將CurrentResult設定為3。
您已看過如何從物件視窗的Properties清單完成其操作。現在讓我們看看如何以SPEL+存取多個結果。
從SPEL+存取多個結果時,是將結果視為一種陣列類型,而CurrentResult則是透過待取得結果旁的一個下標數字來參照的。下列的第一個範例顯示如何以SPEL+語言取得第三個Area結果,並放置在一個稱為Area的變數中。
VGet seqname.objname.Area(3), area
下列的第2個範例顯示如何取得相同的第三個Area結果,但這次將其指定為在一個稱為Area()的陣列中第三個元素的值。
VGet seqname.objname.Area(3), area(3)
變數名稱也可以用來表示陣列中的元素,而非在上述的第2個範例中的固定元素。請注意,稱為「var」的變數可用來作為Area結果的下標。
VGet seqname.objname.Area(var), area(var)
第4個範例,假設您已使用單一Vision物件來尋找多個相似的零件 (假定最多10個)。現在您可能想要以機器人抓取這些零件(假設它們是筆),因此您必須將X、Y和U座標儲存至變數,藉此針對每一個找到的零件,表示其座標值。下列的程式碼會從RobotXYU結果中讀取出這些座標,並放入X、Y和U陣列後,供機器人用來進行移動。
Function test
Boolean found(10)
Integer numfound, i
Real X(10), Y(10), U(10)
Jump camshot 'move camera into position snap shot
VRun seq01 'run the vision sequence to find the pens
VGet seq01.blob01.NumFound, numfound 'how many found
For i = 1 to numfound 'get robot coords
VGet seq01.blob01.RobotXYU(I), found(i), X(i), Y(i), Z(i)
Next i
'Add code for robot motion here……
Fend
自動多重物件搜尋
您可針對多個Vision物件使用自動多重物件搜尋。當您指定使用其他物件的All結果時,將自動建立用於搜尋的物件。這可讓您設定一或多個物件來搜尋功能,而在執行階段期間,將會建立物件,並自動執行所有父系物件的結果。
自動多重物件搜尋可搭配CenterPointObject及Frame使用。
例如:CenterPointObject
建立一個序列並新增Blob物件。將NumberToFind設定為10。
建立一個Polar物件。設定CenterPointObject為Blob物件,並將CenterPntObjResult設為All。
教導Polar物件。
執行序列。在各個所找到的Blob物件中,將建立並執行Polar物件的執行個體。如果找到10個值檢出,則會有10個Polar物件,每個皆位於Blob物件結果的中心。在下圖中,您會看見7個Polar物件,分別為各個所找到的Blob物件。
當使用自動多重物件搜尋時,若子系物件可找到多項結果,則各子系物件的執行個體只能找到一個結果。
您也可利用Line、Edge及LineInspector物件來搭配自動多重搜尋。
您必須指定StartPointObject和EndPointObject,以及StartPntObjResult = All和EndPntObjResult = All。
例如:
建立新序列並選擇含有兩水平列值檢出的ImageFile。(請參見下圖)
建立Blob01、設定NumberToFind = 3,並設定Sort = PixelX。調整尺寸及位置,以尋找第一列值檢出。
複製Blob01並貼上,以建立Blob02。調整尺寸及位置,以尋找第二列值檢出。
建立Line物件。 設定StartPointObject = Blob01,並設定StartPntObjResult = All。設定EndPointObject = Blob02,然後設定EndPntObjResult = All。
執行序列。StartPointObject與EndPointObject的各對結果將建立Line物件的執行個體。
例如:CheckClearanceFor
以下說明的CheckClearanceFor功能,是自動多重物件搜尋的功能之一,使用以兩點抓取的夾具抓取工件兩側的應用程序中所用的序列。序列包含兩個物件,例如「Geometric」可偵測工件,「Blob」可確定在插入夾具時是否存在無干擾的間隙。
由於其他工件在夾具的運動範圍內並且夾具與工件發生干擾,因此無法夾持工件。 | 由於沒有其他工件處於夾具的運動範圍內,並且有間隙可以插入夾具而不會干擾其他工件,因此可以夾持工件 (a)。 |
例如:
建立Geometric(Geom01)做為父系物件以偵測工件並設定模型視窗的位置和大小。(請參見下圖)
還要設定相關的屬性。在本實例中,將NumberToFind設定為「All」以偵測多個工件。
有關CheckClearanceFor功能上可用的父系物件,請參考 Vision Guide 8.0 Properties & Results Reference。
建立Blob(Blob01、Blob02)做為子系物件以判定干擾並設定在Geometric模型視窗的兩側。(請參見下圖)
還要設定相關的屬性。提示
如果父系物件旋轉偵測到工件,則將子系物件的SearchWinType設定為「RatatedRectangle」。如果設定為「Rectangle」,則無法旋轉搜尋視窗,也無法跟隨旋轉角度。
設定Blob01和Blob02(子系物件)的屬性。
將CheckClearanceFor設定為「Geom01」。(請參見下圖)
使用該功能,在執行序列時會自動為父系物件的所有結果建立並執行子系物件。
有關CheckClearanceFor功能上可用的子系物件,請參考 Vision Guide 8.0 Properties & Results Reference。
提示
設定為CheckClearanceFor的子系物件不可配置至其他物件。(在本實例中,如果將Blob01的CheckClearanceFor設定為「Geom01」,則Blob01不會顯示在Blob02的CheckClearanceFor的下拉式清單中。)
設定ClearanceCondition。
依據子系物件的偵測結果設定抓取判定。如果ClearanceCondition設定為「NotFound」且Found結果變為”False”,則子系物件的ClearanceOK設定為”True”,並判定可以進行抓取。如果ClearanceCondition設定為「Found」,則判定會相反。
在本實例中,設定為「NotFound」以確保工件的兩側都沒有東西,並且有間隙可以插入夾具。(請參見下圖)
執行序列。
如下所示,顯示由綠色實線和紅色虛線包圍的父系物件「Geom01」的偵測結果。綠色實線包圍的偵測結果表示可以抓取的工件。(判定可以抓取的子系物件。)紅色虛線包圍的偵測結果表示被判定為無法抓取的工件。
如果要確認是否可以將工件作為一個值抓取,請參考父系物件「Geom01」的ClearanceOK。
提示
使用CheckClearanceFor功能判定是否抓取時,請務必執行序列並參考父系物件的ClearanceOK。子系物件執行後,設定父系物件的ClearanceOK。
開啟及關閉所有Vision物件標籤
Force All Labels Off (僅在Vision工具列上)
在處理一個有許多Vision物件的Sequence時,[Force All Labels Off]按鈕是降低畫面雜亂的實用方法。
Vision Guide工具列上的[Force All Labels Off]按鈕是兩段式按鈕。在按下時,會關閉除了選中的Vision物件以外的標籤,以方便容易看清楚選中的物件。
[Force All Labels Off]在浮起位置(未按下)時,影像顯示區內所顯示的每一Vision物件都會顯示標籤。
提示
- [Force All Labels Off]按鈕有時可以搭配[Force All Graphics On]按鈕一起使用。這表示即使已將[Force All Graphics On]按鈕按下,標籤還是會因為也按下[Force All Labels Off]按鈕而不會顯示。
- 若您正在處理一個視覺序列時,才剛關閉[Force All Labels Off]按鈕,卻仍然無法看到特定的Vision物件,這有可能是因為該Vision物件的Graphics屬性設定為None。這表示該物件根本不會顯示圖形,可能是您的設定有問題。
若目前專案沒有任何視覺序列,[Force All Labels Off]按鈕會變暗(顏色會變成淺灰色且無法使用)。
開啟所有Vision物件圖形
Force All Graphics On (僅在Vision工具列上)
[Force All Graphics On]按鈕提供了一種快速的方法,只需按一下按鈕,即可針對目前視覺序列中所有Vision物件,開啟其中的所有圖形(搜尋視窗、模型原點、模型視窗、Lines及Labels)。
本按鈕會覆寫每一個別Vision物件的Graphics屬性,以方便快速查看所有Vision物件,而不需要個別修改每個Vision物件的Graphics屬性。
提示
[Force All Labels Off]按鈕有時可以搭配[Force All Graphics On]按鈕一起使用。[Force All Labels Off]按鈕功能優先。這表示即使已將[Force All Graphics On]按鈕按下,標籤還是會因為也按下[Force All Labels Off]按鈕而不會顯示。
若目前專案沒有任何視覺序列,[Force All Graphics On]按鈕會變暗(顏色會變成淺灰色且無法使用)。
僅顯示目前物件
Show Only Current Object (僅視覺工具列)
當序列中有多個物件時,有時會難以選擇與搭配所需的物件。按一下[Show Only Current Object]按鈕後,就只會顯示目前啟用的物件。若要再次顯示所有的物件,請再按一下[Show Only Current Object]即可。只顯示目前物件後,您即可在物件清單中選擇欲顯示的物件。
← Vision物件基本要點 視覺校正 →