龍 云,李小明,向建化,吳青鳳
(1.廣州大學機械與電氣工程學院,廣東廣州 510006;2.東莞康視達自動化科技有限公司,廣東東莞 523000)
美國制造工程師協會計算機視覺分會和美國機器人協會的自動化視覺分會對計算機視覺的定義為:“計算機視覺是通過光學的裝置和非接觸的傳感器自動地接收和處理一個真實物體的圖像,以獲得所需信息或用于控制機器人動作的裝置”。它具有快速、可靠、一致性高的優點[1]。被廣泛應用于工業、農業、醫學、軍事等各個領域之中,雖然針對不同的研究對象計算機視覺的具體應用各不相同,但各行各業中的視覺系統應用大致可分為以下四種:(1)定位;(2)檢測異物、瑕疵及缺陷;(3)尺寸測量和外觀測量;(4)檢測物品數或遺漏的物品。
LabVIEW是美國NI公司推出的一種圖形化編程語言,其“所見即所得”的可視化編程技術,徹底把工程師們從復雜枯澀的文本編程工作中解放出來,大大提高了程序的開發速度[2]。同時NI提供了豐富的附加模塊,用于擴展LabVIEW在不同領域中的應用,其視覺模塊IMAQ Vision 是一套包含各種圖像處理函數的功能庫,它集成了400 多個函數用于圖像的顯示、處理、分析等操作,為視覺系統提供了完整的開發功能[3],與Lab-VIEW 配合使用能進一步縮短視覺系統的開發周期,廣泛地被工業界、學術界和研究實驗室所接受。
視覺檢測系統通過工業相機采集被檢對象的圖像并將其轉化為數字信號,再經計算機硬件和軟件技術處理分析,提取被檢對象的各種特征信息,并在此基礎上實現被檢對象的參數測量、模式識別等多種功能。同時視覺檢測系統將檢測結果顯示給用戶并發出指令給設備執行機構對被檢對象進行處理。
視覺檢測系統由硬件與軟件兩大部分構成。
典型視覺檢測系統的硬件構成如圖1 所示,其主要由四部分構成。
(1)運動控制系統,通過PLC 或運動控制卡等接收PC發出的位置信號,并轉換為脈沖信號輸出給控制電機,從而控制相機或工作平臺移動至相應的檢測位置。
(2)圖像采集系統,通過光源控制器、圖像采集卡等硬件設備,控制相機光源,采集圖像并數字化后存儲至PC,供檢測軟件分析處理。
(3)圖像分析顯示系統,PC通過檢測軟件對采集的圖像進行分析處理,并將處理結果顯示記錄。
(4)執行系統,PC根據處理結果發出處理指令,通過PLC、I/O卡之類的設備控制指示燈、電磁閥等裝置,從而產生報警、剔除等執行動作,對異常對象進行相應處理。
其軟件系統主要由安裝在PC上的上位機程序和下載于PLC、單片機之類設備上的下位機程序兩部分構成。上位機程序用于讀取檢測制程文件、接收用戶指令、邏輯處理、對采集的圖像進行處理分析識別、發出控制指令給下位機或其他設備等功能的實現。下位機程序主要用于接收解釋上位機發出的指令,并對輸入的外部信號進行邏輯處理,直接控制相應設備。同時將設備狀態等信息反饋給上位機。本文僅對上位機軟件框架的設計進行探討。

圖1 典型視覺檢測系統主要構成
對于視覺檢測系統的軟件框架設計,主要考慮的是盡可能的提高系統運行效率,減少不必要的順序等待時間。同時滿足軟件的設計重用性和系統的可擴充性要求[4]。
圖1 所示系統的典型視覺檢測的過程包含了相機(平臺)移動、圖像采集、圖像處理和執行控制四步過程。其中相機(平臺)移動、圖像采集、執行控制由PLC、圖像采集卡、I/O卡硬件等自行完成,上位機程序只需要對其發送相應的動作指令。對于相機(平臺)移動的控制,上位機除發送動作指令外,還必須查詢其運行狀態,以保證圖像采集是在相機(平臺)移動到位之后進行。在整個檢測系統運行過程中相機(平臺)移動與圖像處理兩個環節占用了系統運行的絕大部分時間。對于單個檢測對象要分多個檢測視場的情況,由于各視場之間的間距不一致以及各視場圖像處理的復雜程度不同,會造成相機(平臺)移動時間與圖像處理時間不同步的情況,為使運行效率最大化,本文設計了圖2 所示的視覺檢測系統流程。該流程有兩個相互獨立的線程,即圖像生產與圖像消費。在圖像生產循環中,相機在保證內存不溢出的情況下順次移動至各檢測點采集圖像,并將采集的圖像壓入事先建立的堆棧中,直至全部檢測點采集完畢或系統運行錯誤時循環結束。而在圖像消費循環中,檢測系統按照先入先出的方式連續從堆棧中取出圖片進行處理,并將處理結果輸出給執行機構,直至圖像生產結束且堆棧取空或系統運行錯誤時循環結束。

圖2 視覺檢測流程

圖3 檢測系統軟件框架設計
為實現圖2 所示的視覺檢測流程,本系統采用了LabVIEW 生產/消費(Producer/Consumer Design Pattern)與狀態機(State Machine)相結合的設計模式進行程序框架的設計,充分利用Lab-VIEW 的自動多線程特性和隊列操作函數(Queue Operations Functions)便利的堆棧處理功能[5-7]。系統軟件框架設計如圖3 所示。該系統通過Lab-VIEW 隊列操作函數實現圖像堆棧的建立、壓棧、出棧、查詢、釋放操作。通過查詢堆棧的存儲狀態,利用狀態機模式,實現圖像生產循環中相機(平臺)移動、圖像采集、等待堆棧空位三種工作狀態之間的轉換,防止內存溢出。
采用該軟件框架設計的視覺檢測系統,針對不同的運動控制裝置、執行裝置,只需在移動對準子函數與執行控制子函數中調用相應硬件的API 函數即可。而對于檢測對象或內容的改變,只需在圖像處理子函數中調用相應的圖像處理算法和讀取相應的檢測制程文件即可。該軟件框架設計能在提高系統運行效率的同時較好地滿足軟件的設計重用性和系統的可擴充性要求,有助于視覺檢測系統的快速搭建。
一個結構良好的框架能在滿足性能要求的同時提供更好的重用性和擴展性,為程序開發人員提供更大的便利。本文在分析典型視覺檢測系統功能和構成的基礎上,在LabVIEW 編程環境下利用其生產/消費模式、狀態機模式、隊列函數設計了一種適用于典型視覺檢測系統搭建的軟件框架。目前,該軟件框架在作者參與研發的科隆威WIN系列無鉛錫膏印刷機2D 錫膏檢測系統中運行良好。
[1]王紅軍.機器視覺-現代工業的眼睛[J].機電一體化,1999(3):26-27.
[2]陳錫輝.LabVIEW8.20 程序設計從入門到精通[M].北京:清華大學出版社,2007.
[3]National Instruments Corporation.IMAQ Vision for Lab-VIEW user manual[Z].2000.
[4]Jon Conway,Steve Watts.軟件工程方法在LabVIEW中的應用[M].北京:清華大學出版社,2006.
[5]陳雪冰,郭倩,馬皓.基于CAN總線和LabVIEW的能饋電子負載監控系統[J].機電工程,2011(8):954-959.
[6]陳樹學,劉萱.LabVIEW寶典[M].北京:電子工業出版社,2012.
[7]Peter A,Blume.The LabVIEW Style Book[M].London:Prentice Hall,2005.