影像擷取

何時需要擷取影像?

許多視覺系統需要您指定一個特殊的命令或步驟,以取得要處理的影像。影像是在視覺序列開始時擷取的,故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]按鈕上按一下,而目前的物件為灰階處理工具,那麼視訊影像就會以灰階顯示,而工具在處理過程中也會看到視訊為灰階。