圖像處理軟件:軟件包為開發人員提供機器視覺設計的眾多選擇

人工智能 軟件 圖像處理 IDE 視覺系統設計 視覺系統設計 2017-09-03

在配置機器視覺系統時,系統集成商可以採取多種不同的方法。

在構建機器視覺系統時,開發人員可以選擇眾多知名公司的商用軟件包。然而,在選擇這類軟件時,重要的是理解這些軟件提供的功能、支持的硬件以及如何輕鬆地配置這樣的軟件,以解決特定的機器視覺任務。

在過去,軟件的選擇受到限制,許多公司只提供執行相對簡單的圖像處理操作的可調用庫。這些包括諸如圖像減法之類的點處理操作,諸如圖像濾波的鄰域操作,以及諸如傅立葉分析的全局操作。

儘管有用,開發人員面臨的任務是理解這些功能,以及如何為機器視覺任務(如零件測量)提供解決方案。通常,需要構建軟件框架來支持這些庫,這使得開發這樣的程序費力和耗時。

快速開發

雖然這些庫仍然可以從許多開放資源獲取,但是視覺軟件製造商已經意識到:系統集成商需要更快速地開發應用程序,來解決特定的機器視覺問題,而無需瞭解圖像處理代碼的複雜性。因此,目前許多供應商在其軟件包中提供更高級別的工具,可以在交互式環境中提供更高級別的功能,如圖像測量、特徵提取、顏色分析、2D條形碼識別和圖像壓縮等。

這些高級工具的例子包括加拿大Matrox Imaging公司的Matrox Imaging Library(MIL)、比利時Euresys公司的Open eVision、德國MVTec Software公司的HALCON、美國Cognex公司的VisionPro、美國國家儀器(NI)公司的Vision Builder、德國Stemmer Imaging公司的Common Vision Blox(CVB)和德國NeuroCheck公司的NeuroCheck。這類工具允許很多常用的機器視覺功能被配置而不需要大量的編程。通過這種方式,開發人員能夠從低級代碼開發任務中脫身出來,進而能更輕鬆地構建機器視覺應用程序。

為了進一步簡化此任務,許多軟件包具有圖形界面,允許在集成開發環境(IDE)中組合高級圖像處理功能。例如,Matrox的Design Assistant是一種IDE,在該開發環境下,用戶可以通過構建流程圖而不是編寫傳統程序代碼來創建視覺應用程序。除了構建流程圖,用戶還可以在IDE中直接為應用程序設計圖形操作界面。同樣,NI公司的Vision Builder AI,允許開發人員在交互式菜單驅動的開發環境中使用諸如模式匹配、條形碼讀取和圖像分類等功能來配置、評價檢測和部署視覺系統(見圖1)。

圖像處理軟件:軟件包為開發人員提供機器視覺設計的眾多選擇

圖1:NI公司的Vision Builder AI,允許開發人員在交互式菜單驅動開發環境中使用諸如模式匹配、條形碼讀取和圖像分類等功能,來配置、評價檢測和部署視覺系統。

在許多情況下,供應商將使用他們的軟件為最終用戶提供開發的軟件,來解決諸如光學字符識別(OCR)等特定任務。例如為了閱讀和驗證由多個PCB組成的大型面板上的條形碼標籤,美國Microscan公司已經使用其Visionscape軟件,確保面板上的每塊單獨電路板可以在整個生產過程中進行追蹤。

一些公司甚至已經擴展了這種圖形流程圖界面概念,允許開發人員訪問現場可編程門陣列(FPGA)的基礎功能。例如,德國Silicon Software公司的VisualApplets是一種軟件編程環境,其允許開發人員使用數據流模型執行FPGA編程。在公司的最新VisualApplets版本中,提供了分段、分類和壓縮功能,以及快速傅立葉變換(FFT)運算,可以更有效地實現複雜的帶通濾波器(見圖2)。

圖像處理軟件:軟件包為開發人員提供機器視覺設計的眾多選擇

圖2:為了使開發人員能訪問FPGA的基本功能,Silicon Software公司的VisualApplet是一種軟件編程環境,允許開發人員使用數據流模型執行FPGA編程。

如同SiliconSoftware公司一樣,NI的LabVIEW FPGA模塊可以在不使用低級語言(如VHDL)的情況下,執行FPGA的高效率算法,如圖像濾波、Bayer解碼和色彩空間轉換。通過這樣做,許多計算密集型圖像處理功能可以轉移到FPGA,從而加速機器視覺應用。

對於那些希望開發使用各種開源和商用軟件的機器視覺系統用戶,目前的開發環境可以讓許多不同公司的圖像處理算法進行圖形化組合。這樣的環境允許開發人員將開源算法和商用軟件包整合在一起,以集成到單一的環境中。這可以根據最有效的算法對機器視覺軟件進行專門定製。

例如,新西蘭ControlVision公司的機器視覺框架VisionServer 7.2,允許在圖形化IDE中一起使用開源圖像處理庫和商用軟件包,如Cognex公司的VisionPro Software。愛爾蘭CG Controls公司的VS-100P框架也支持VisionPro,其使用Microsoft的.NET 4框架和Windows Presentation Foundation(WPF),使開發人員能夠部署基於單相機或多相機的視覺系統。

實時選項

雖然大多數商用的機器視覺軟件運行在Windows和Linux等操作系統下,但是仍需開發可在特定時間段內執行任務的機器視覺系統,即支持實時操作系統(RTOS)。隨後,這些RTOS允許開發人員確定捕獲和處理圖像以及在系統內執行I/O所需要的時間,同時利用Windows的強大功能來開發圖形用戶界面(GUI)。

現在,有許多公司為機器視覺軟件包提供RTOS支持。例如,MIL現在可以在美國IntervalZero公司的RTX64 RTOS下運行,這是美國Kingstar公司在開發用於工業運動控制和機器視覺應用的基於PC的軟件過程中所應用的。基於EtherCAT標準,機器視覺任務採用MIL,在IntervalZero的RTX64 RTOS中運行。在運行中,RTX64與Windows一起運行在其自身的專用CPU核心上,以提供確定性的環境。使用這種架構,開發人員將基於MIL的應用程序分割為在RTX64和Windows上運行(見圖3)。

圖像處理軟件:軟件包為開發人員提供機器視覺設計的眾多選擇

圖3:Matrox's Imaging Library(MIL)現在可以在IntervalZero的RTX64 RTOS環境下運行,這是Kingstar在開發用於工業運動控制和機器視覺應用的基於PC的軟件中所應用的。 RTX64的開發在C/C ++中執行,使用Visual Studio和Windows API的子集。RTX64下的MIL支持使用GigE Vision以及所支持的Matrox圖像採集卡進行圖像捕獲。

也可以提供其他機器視覺軟件包的第三方RTOS支持。例如,運行MVTec公司的HALCON機器視覺包,可以使用德國Kithara公司的RealTime RTOS Suite完成。與其他RTOS類似,RealTime RTOS Suite在RTOS的內核中使用單獨的調度程序,來決定在任何特定時間執行哪個圖像處理任務。如同IntervalZero一樣,該內核與Windows一起運行。

加拿大OptelVision公司最近展示瞭如何使用自己的運行於美國TenAsys公司的INtime專有算法,開發出一種藥片檢測機。TenAsys公司銷售和營銷副總裁Kim Hartman介紹說,INtime可以控制系統中對響應時間要求嚴格的I/O設備,同時允許Windows控制非實時I/O。

高性能圖像處理也是嵌入式視覺領域關注的焦點。最近,丹麥Qtechnology公司首席固件工程師Ricardo Ribalda博士,展示了他的公司是如何創建了一種應用程序,使用美國AMD公司的處理器和美國Mentor Graphics公司的軟件工具,對紙幣進行高速掃描和驗證。

圖像分類

今天,執行測量功能、模式匹配、OCR、色彩分析和形態操作所需的工具,都已經比較常用。這樣的工具允許開發人員配置多種類型的機器視覺系統,來分類部件是否可接受或必須被拒絕。然而,在某些情況下,如果對象的特徵是可變的,那麼這些工具的用途就大打折扣了。在水果和蔬菜分選應用中,特定產品是好還是壞,可以依賴於許多不同的因素。

要確定這類產品是否可以接受,則依賴於呈現具有許多圖像的系統,提取特定的特徵並進行分類。許多不同的分類器可用於執行包括神經網絡、支持向量機(SVM)、高斯混合模型(GMM)和k-最近鄰(k-NN)的任務。例如,使用其HALCON軟件包,MVTec開發人員可以訪問所有這些分類器。

許多公司在商業產品中已經使用了這種“深度學習”技術。為了根據可接受或不可接受的缺陷對產品進行分類或分離,瑞士ViDi Systems公司的ViDi green軟件允許開發人員將圖像分配和標記為不同的類別,之後未經培訓的圖像可以被分類。在瓶子的分選應用示範中,意大利Datalogic公司最近展示了在“測試瓶子首先呈現給系統、以及圖像中的關鍵點自動提取”後,如何能夠使用k-d樹分類器來識別和分類瓶子。

使用德國StemmerImaging公司的CVBManto的開發人員,也不需要在分類之前選擇圖像中的相關特徵。使用提取的紋理、幾何和顏色特徵,將捕獲的數據呈現給SVM進行分類。與之相似,美國Cyth Systems公司的NeuralVision系統,在設計上旨在允許那些沒有圖像處理經驗的機器製造商,能向他們的系統中添加圖像分類。

通過在提取的數據上應用多個圖像分類器,開發人員可以確定提取的特徵是否足夠好,最終確定正在分析的產品的特定特徵。否則,則可能需要提取不同類型的特徵。因此,一些公司提供允許開發和測試多個分類器的軟件包。荷蘭PR Sys Design公司的perClass就是這樣一種工具包,提供多種分類器,允許開發人員與數據進行交互式工作,選擇數據中用於圖像分類的最佳特徵,訓練多種多樣的分類器並優化它們的性能(見圖4)。

圖像處理軟件:軟件包為開發人員提供機器視覺設計的眾多選擇

圖4:PR Sys Design公司的perClass提供多種分類器,允許開發人員與數據交互式工作,選擇數據中的最佳特徵進行圖像分類,訓練各種類型的分類器並優化它們的性能。在該圖像中,顯示了關於炸薯條的高光譜缺陷探測問題。(左):從四種材料(健康土豆、土豆皮、腐爛和變綠)的超光譜圖像中提取的訓練數據的可視化。(右):具有超疊加顏色的測試高光譜圖像(103種光譜波長之一),顯示分類器的決定。

網絡上現在有許多深度學習資源。其中最有趣的兩個是Tombone's Computer Vision Blog(www.computervisionblog.com),一家致力於深度學習、計算機視覺和AI算法的網站,以及The Journal of Machine Learning Research(JMLR; www.jmlr.org),這是一家出版機器學習論文的論壇。

然而,雖然這種深度學習方法可以用於開發諸如手寫識別、遙感和水果分選之類的應用,但是它們總是具有有限的精度,使得分類器不太適用於需要高精度測量或對準零件用於組裝或加工、或用於精密機器人引導的應用。

開源代碼提供替代選項

許多開發人員選擇高級商業軟件包來開發機器視覺系統,因為它們的易用性和可用的技術支持。其他更雄心勃勃的開發人員,可能希望嘗試在他們的項目中使用開源代碼。雖然提供很少的技術支持,但不需要許可證或使用費。

這類開源軟件範圍涵蓋C/C++和Java庫、框架、工具包和最終用戶軟件包,其中許多可以在美國RoboRealm公司的網站上找到。雖然一些鏈接已經過時,但該網站確實提供了許多可用的開源機器視覺庫的概覽。

使用開源代碼開發應用程序的兩種最受歡迎的方法包括:利用諸如AForge.NET(www.aforgenet.com)之類的軟件,該軟件是為計算機視覺和人工智能的開發人員設計的C#框架;以及Open Source Computer Vision Library(Open CV),這是一個開源計算機視覺和機器學習軟件庫,提供C/C++、Python和Java接口,並支持Windows、Linux、Mac OS、iOS和Android操作系統。

對於希望從C#使用OpenCV的用戶,Elad Ben-Israel已經為.NET Framework創建了一個小型OpenCV封裝。代碼由Managed C++編寫的DLL組成,將OpenCV庫封裝在.NET類中,以便它們可以從C#、VB.NET或Managed C++獲得。該封裝可以從http://bit.ly/VSD-1704-8下載。其他.NET封裝包括Emgu CV(www.emgu.com),OpenCV的跨平臺.NET封裝,允許從.NET兼容語言(如C#、VB、VC ++和IronPython)調用OpenCV函數。該封裝包可以由Visual Studio、Xamarin Studio和Unity編譯,並在Windows、Linux、Mac OS X和Android操作系統下運行。

要使用OpenCV構建計算機視覺應用程序,開發人員可以使用SimpleCV(http://simplecv.org),這是一種開源框架,允許訪問多個計算機視覺庫(如OpenCV),而無需瞭解位深度、文件格式、顏色空間或緩衝區管理協議。由於通過OpenCV自動執行整合英特爾的集成性能基元(IPP),因此自動加速了超過3000種專有優化的圖像處理和計算機視覺功能。這些IPP可以在英特爾的開發者站點(http://bit.ly/VSD-1704-9)免費下載。

迄今為止,一些公司支持用OpenCV庫開發,如美國WillowGarage公司、德國Kithara公司、美國國家儀器(NI)公司和新西蘭ControlVision公司。

圖像處理軟件:軟件包為開發人員提供機器視覺設計的眾多選擇

點擊閱讀原文,獲得更多行業及技術前沿信息。

相關推薦

推薦中...