影像擷取
何時需要擷取影像?
許多視覺系統需要您指定一個特殊的命令或步驟,以取得要處理的影像。影像是在視覺序列開始時擷取的,故Vision Guide 8.0可協助免除此額外步驟。
通常您只需要為RuntimeAcquire屬性指定適當的設定值即可。在大部份的應用中,您甚至完全不需要設定RuntimeAcquire屬性,因為其預設為Stationary。這代表將會在開始執行視覺序列時取得影像。還有其他用來設定如何取得影像的序列屬性。
對多個視覺序列使用相同影像
若您想要對兩個以上的視覺序列使用相同影像,您只需要將第一個視覺序列的RuntimeAcquire屬性設定為Stationary,並將其他視覺序列的RuntimeAcquire屬性設定為None即可。將其他視覺序列的RuntimeAcquire屬性設定為None後,將會使該序列無法擷取其他影像,因此所有處理都會以從第1個視覺序列所取得的影像完成。
使用影像緩衝區
每部攝影機有一個影像緩衝區(buffer 0),10個影像緩衝區可在序列之間共用(buffers1 至 10)。
設定ImageBuffer序列屬性以指定要使用哪個緩衝區。預設緩衝區為0。您可以使用影像緩衝區,來擷取數個影像並將其儲存在記憶體中,之後再加以處理。
例如,您可以建立一個不含任何物件的序列,且該序列可將影像擷取至多個緩衝區,然後在其他序列中處理影像。
' seq1沒有物件 – 用於抓取影像至多重緩衝區中
VSet seq1.RuntimeAcquire, VISION_ACQUIRE_STATIONARY
VSet seq1.ImageBuffer, 1
VRun seq1 ' 抓取影像至緩衝區1
Go Image2Pos
VSet seq1.ImageBuffer, 2
VRun seq1 ' 抓取影像至緩衝區2
Go Image3Pos
VSet seq1.ImageBuffer, 3
VRun seq1 ' 抓取影像至緩衝區3
...
' 現在開始處理先前所抓取的影像
VSet seq2.RuntimeAcquire, VISION_ACQUIRE_NONE
VSet seq2.ImageBuffer, 1
VRun seq2 ' 處理緩衝區1中的影像1
VGet seq2.AllPassed, allPassed
...
在為不擷取影像(僅處理)的序列使用影像緩衝區1 – 10時,會在VRun過程中忽略Camera屬性值。
使用外部觸發影像取得
Vision Guide 8.0支援觸發輸入,可讓視覺序列取得影像並透過外部訊號搜尋。若想使用觸發輸入,請依下列步驟操作:
將觸發訊號連線至攝影機接頭。如果您也使用閃光燈,您可連線至攝影機的閃光輸出訊號。
設定序列的RuntimeAcquire屬性,將觸發輸入用於Strobed。
在您的SPEL+程式中,以一般正常方式執行VRun,然後等候AcquireState屬性的值變更為3,代表影像取得已完成。在本實例中,觸發是由外部裝置提供訊號的。
Integer state
Boolean found
#define PICTURE_DONE 3
TmReset 0
VRun seq1
Do
Wait 0.01
VGet seq1.AcquireState, state
If Tmr(0) > 10 Then
Error ER_STROBE_OT ' User defined overtime error
EndIf
Loop Until state = PICTURE_DONE
VGet seq1.obj1.Found, found
- 若您並未透過檢查AcquireState來等待影像的擷取,那麼工作中的下一個視覺命令會在執行之前,自動等候影像的取得。在這種情況下,必須先取得影像之後才可繼續處理,或者您可以中止工作。建議您檢查 AcquireState,以便程式能在觸發器未觸動且未擷取影像時繼續處理。
- 當您從Vision Guide 8.0 GUI使用觸發輸入執行序列時,系統將會等候至觸發輸入為止。您可以按一下[Abort]按鈕以中止。
注意
環境照明及外部設備雜訊可能會影響視覺序列影像及結果。可能會取得毀損的影像,且偵測到的位置可能是物件的搜尋區域中的任何位置。建立影像處理序列,所使用的物件務必要使用必要值以下的搜尋區域。
處理色彩
若設定彩色攝影機,您就可以從磁碟取得彩色影像或載入彩色影像。
某些視覺工具可以處理彩色影像,而其他工具只能處理灰階影像,如下列表格所示。
視覺工具 | 彩色處理 | 灰階處理 |
---|---|---|
Blob | × | |
Correlation | × | |
Geometric | × | |
Edge | × | |
Polar | × | |
Code Reader | × | |
OCR | × | |
ImageOp | × | × |
ColorMatch | × | × |
LineFinder | × | |
LineInspector | × | |
ArcFinder | × | |
ArcInspector | × | |
DefectFinder | × | |
BoxFinder | × | |
CornerFinder | × | |
Contour | × |
ImageOp 工具含有會處理色彩影像的 ColorFilter 運算及 ColorStretch 運算。所有其他ImageOp操作則使用灰階影像。
ColorMatch工具通常用來處理彩色影像,但也可以用在灰階影像上,使用不同灰色層級的色彩。
在取得一個彩色影像時,也會建立一個內部灰階影像,以供需要灰階影像的工具使用。在執行一個序列時,執行彩色處理的物件會使用彩色影像,而執行灰階處理的物件則會使用灰階影像。
彩色影像是由三種色頻組成:紅、綠和藍。使用ImageColor序列屬性來選擇想要取得的色頻。預設設定為All,這代表會使用所有三個色頻擷取完整彩色影像。
您也可以選擇紅色、綠色、藍色或灰階。在選擇紅色、綠色、藍色時,會從彩色黑白影像得出灰階影像。可讓您搜尋一組含有灰階處理工具的色彩橫紋。
若您在Vision Guide視窗的[Run Object]按鈕上按一下,而目前的物件為灰階處理工具,那麼視訊影像就會以灰階顯示,而工具在處理過程中也會看到視訊為灰階。
← 從SPEL+執行視覺序列 Vision物件 →