技術專題—演算法之外:視覺軟體的另外一半 智慧應用 影音
聚陽實業
touch

技術專題—演算法之外:視覺軟體的另外一半

每一部機器視覺系統,都必須做三件事:影像擷取,影像處理,及傳送結果。目前最頂尖的視覺軟體套件應該都支援符合使用者應用需求的攝影機,因此本文並不討論影像擷取軟體。再者,這些頂尖的視覺軟體套件皆使用非常類似的演算法來處理影像,例如:樣本比對(pattern matching)、顆粒分析、OCR字型辨識,以及2D條碼讀取器等。

雖然有一些套件,宣稱擁有獨特而先進的演算法,例如:物件分類,但是絕大部分的視覺演算法基本上,都可以在視覺軟體套件之間互換,只是速度和準確度不同。在此前提,頂尖的視覺軟體套件最重要的特色和最大的差異,並不是演算法的數量或複雜度,而是使用這些演算法和傳送其結果的簡易度。為了說明這一點,本文使用1個虛構的例子,進行汽車機油濾清器檢驗,其目標是根據中央周圍的洞孔數量來辨識汽車機油濾清器,驗證有1個圓形環存在,並將結果傳送給其它的工業設備。

容易使用的演算法

正如以上所說,由於頂尖的視覺軟體套件都具備類似的演算法,因此真正的技術差異在於使用者可以多容易、多迅速利用它們建立檢驗應用。容易使用的視覺軟體通常包含3個元件:應用程式原型建立環境,自動化產生程式碼,及直覺的圖形化程式設計界面。應用程式原形建立環境,通常提供下拉式選單界面,讓使用者在呼叫函式或產生程式碼前,先在圖像上探討「如果…會怎樣」的狀況。在原型建立環境中,使用者可以使用專具特色的影像分析函式,針對不同影像特徵,選擇適當的影像函式讓應用程式使用,並為每個函式設定參數。這個結果經常成為分析影像的標準範例。舉例來說,我們的汽車機油濾清器檢驗原型,基本上有三個步驟:以樣本比對找到中央的孔,使用顆粒分析計算小孔洞數量,再沿著1個環形檢查其寬度,以確認圓形環的存在(見圖1)。

當使用者開發出1個標準範例,可以正確地進行分析影像工作後,原型建立環境應該告訴使用者執行範例所需時間。如果這些檢驗流程必須在規定時間裡完成,時間資料就會顯得非常重要。在一般的應用案例中,機油濾清器檢驗必須花費 53.5ms 時間完成(見圖2);使用樣本比對函式尋找中心佔了12.3ms,以顆粒分析函式計算周圍孔洞數目佔用11.9ms,計算圓形環寬度佔了8.2ms,剩餘的21ms是用來從檔案中開啟機油濾清器的影像。

現在我們已完成機油濾清器檢驗的原型系統,也知道它會及時完成,我們必須將檢驗從原型建立環境移植到程式語言中,例如Microsoft C/C++,Visual Basic,或是NI 的LabVIEW。完善的原型建立環境,將使得這類轉移過程變得十分容易,它會自動為使用者產生可以執行的C/C++、Visual Basic以及LabVIEW程式碼。隨後使用者可以將這段程式碼插入較龐大的應用程式中,或是自行執行。

圖形化程式設計

雖然原型建立環境提供程式碼產生,可以大幅簡化機器視覺應用程式開發,然而使開發過程獲得最大簡化的技術是圖形化程式設計。利用圖形化開發環境,並以之設計視覺應用程式,最簡易的方式,只需在介面上將函式圖示接線在一起,並建立自訂的使用者界面即可。利用此類視覺開發環境來進行視覺應用程式開發,可有效協助工程師和科學家提升工作效率,因為他們可以使用流程圖和程式區,而不是文字式的函式呼叫和分號,因此可以在較短的時間內完成更多工作,將更多心力擺在研究或專案本身。(見圖3)

這類視覺開發工具,通常都使用專利的資料流程式設計語言,讓使用者不需要受限於文字式程式語言的循序式技術。由於某些特定的資料流模型,很適合視覺應用程式的結構化、倚賴資料執行的本質,使用者要在其中擷取影像、處理影像,然後傳送結果。影像和資料在視覺開發工具節點之間的流動情形,決定實際運作執行的順序,因此使用者可以輕易建立平行、執行多項運算的程式區。

傳送結果

回到我們的機油濾清器的例子:我們可能必須將檢驗結果傳給自動化設施。舉例來說,當我們發現有缺陷的機油濾清器時,我們必須使用空氣壓縮閥或電磁閥,將有缺陷物品移出生產線。雖然嵌入式視覺系統可以使用24V的數位I/O控制這些設備,但有時候致動器是由PLC或PAC控制。

因為視覺應用程式的本質就是影像處理,因此操作員界面和HMI扮演重要角色。雖然許多嵌入式視覺系統(例如NI Compact Vision System)具備被動式影像輸出埠,做為輸出影像結果和故障排除用,但是操作員界面 ( HMI )卻是操作員選擇要執行那項檢驗、更新設定點,以及檢視效能的重要工具。為了能夠成功檢驗機油濾清器,操作員必須即時觀看檢驗狀況,才知道是否需要根據光線改變來調整設定點,或是在生產線改變為生產不同產品時選擇執行新的檢驗。

最後,每一家成功的廠商,都會追蹤品質統計數據及趨勢曲線圖。他們可以使用視覺系統的檢驗結果(不只是通過或失敗),來進行這些計算。但是,他們可能面對將視覺資料整合至較大型SCADA系統、和企業軟體的新挑戰。在這前提下,視覺開發工具必須與SQL等資料庫軟體有效互通,利用有效率的工具程式從旁協助,以便將資料傳送到伺服器和資料庫。在設計優秀的視覺開發軟體中,使用者必需可將視覺系統的每個層面同步化,從控制檢驗,進而到傳送資料給操作員界面(HMI)、自動控制器,以及企業軟體。

一般而言,視覺軟體不只是1個影像處理函式庫的集合。若是沒有簡化程式設計和通訊的工具,使用者可能會發現軟體內附的強大演算法根本毫無用處。在選擇視覺軟體套件時,不要只比較演算法列表,應該了解使用者能否輕鬆開發檢驗程式、並將結果傳送給現有的設備。選擇正確的軟體,使用者將會對於開發機器視覺軟體的簡易性和速度感到驚訝。

利用原型建立環境、程式碼產生,以及圖形化程式設計等工具,設計以往複雜的機器視覺應用程式,要比以前簡單多了。但是,重要的是,在設計視覺系統時,必須考慮自動化的大格局。機器視覺系統幾乎不會獨立自行運作,它們必須驅動迴轉缸來排列產品及移除有缺陷的零件;和PLC及PAC通訊,以關閉控制迴圈;導引運動系統和機械人;並與企業軟體和SCADA系統整合,監督趨勢曲線圖和儲存統計數據。

為了大幅簡化開發流程,我們以圖形化開發軟體NI LabVIEW 8為例,該視覺開發環境提供完備的應用工具,可協助開發及整合分散式系統。利用LabVIEW 8,單一LabVIEW專案可以管理及同步化許多分散系統間的處理與通訊,例如可程式控制器(PACs)、運動控制器、嵌入式視覺系統、操作員界面( HMI ),以及SCADA系統。為了達成簡化目標, LabVIEW具備1個共用變數引擎,方便管理及控制常見的工業匯流排、及通訊協定的分散式系統。(本文作者為美商國家儀器視覺產品經理)