機器視覺軟件能夠做什么
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
在構(gòu)建機器視覺系統(tǒng)時,開發(fā)人員可以選擇眾多知名公司的商用軟件包。然而,在選擇這類軟件時,重要的是理解這些軟件提供的功能、支持的硬件以及如何輕松地配置這樣的軟件,以解決特定的機器視覺任務(wù)。 在過去,軟件的選擇受到限制,許多公司只提供執(zhí)行相對簡單的圖像處理操作的可調(diào)用庫。這些包括諸如圖像減法之類的點處理操作,諸如圖像濾波的鄰域操作,以及諸如傅立葉分析的全局操作。 盡管有用,開發(fā)人員面臨的任務(wù)是理解這些功能,以及如何為機器視覺任務(wù)(如零件測量)提供解決方案。通常,需要構(gòu)建軟件框架來支持這些庫,這使得開發(fā)這樣的程序費力和耗時。 雖然這些庫仍然可以從許多開放資源獲取,但是視覺軟件制造商已經(jīng)意識到:系統(tǒng)集成商需要更快速地開發(fā)應(yīng)用程序,來解決特定的機器視覺問題,而無需了解圖像處理代碼的復(fù)雜性。因此,目前許多供應(yīng)商在其軟件包中提供更高級別的工具,可以在交互式環(huán)境中提供更高級別的功能,如圖像測量、特征提取、顏色分析、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。這類工具允許很多常用的機器視覺功能被配置而不需要大量的編程。通過這種方式,開發(fā)人員能夠從低級代碼開發(fā)任務(wù)中脫身出來,進而能更輕松地構(gòu)建機器視覺應(yīng)用程序。 為了進一步簡化此任務(wù),許多軟件包具有圖形界面,允許在集成開發(fā)環(huán)境(IDE)中組合高級圖像處理功能。例如,Matrox的Design Assistant是一種IDE,在該開發(fā)環(huán)境下,用戶可以通過構(gòu)建流程圖而不是編寫傳統(tǒng)程序代碼來創(chuàng)建視覺應(yīng)用程序。除了構(gòu)建流程圖,用戶還可以在IDE中直接為應(yīng)用程序設(shè)計圖形操作界面。同樣,NI公司的Vision Builder AI,允許開發(fā)人員在交互式菜單驅(qū)動的開發(fā)環(huán)境中使用諸如模式匹配、條形碼讀取和圖像分類等功能來配置、評價檢測和部署視覺系統(tǒng)(見圖1)。 圖1:NI公司的Vision Builder AI,允許開發(fā)人員在交互式菜單驅(qū)動開發(fā)環(huán)境中使用諸如模式匹配、條形碼讀取和圖像分類等功能,來配置、評價檢測和部署視覺系統(tǒng)。 在許多情況下,供應(yīng)商將使用他們的軟件為最終用戶提供開發(fā)的軟件,來解決諸如光學字符識別(OCR)等特定任務(wù)。例如為了閱讀和驗證由多個PCB組成的大型面板上的條形碼標簽,美國Microscan公司已經(jīng)使用其Visionscape軟件,確保面板上的每塊單獨電路板可以在整個生產(chǎn)過程中進行追蹤。 一些公司甚至已經(jīng)擴展了這種圖形流程圖界面概念,允許開發(fā)人員訪問現(xiàn)場可編程門陣列(FPGA)的基礎(chǔ)功能。例如,德國Silicon Software公司的VisualApplets是一種軟件編程環(huán)境,其允許開發(fā)人員使用數(shù)據(jù)流模型執(zhí)行FPGA編程。在公司的最新VisualApplets版本中,提供了分段、分類和壓縮功能,以及快速傅立葉變換(FFT)運算,可以更有效地實現(xiàn)復(fù)雜的帶通濾波器(見圖2)。 圖2:為了使開發(fā)人員能訪問FPGA的基本功能,Silicon Software公司的VisualApplet是一種軟件編程環(huán)境,允許開發(fā)人員使用數(shù)據(jù)流模型執(zhí)行FPGA編程。 如同SiliconSoftware公司一樣,NI的LabVIEW FPGA模塊可以在不使用低級語言(如VHDL)的情況下,執(zhí)行FPGA的高效率算法,如圖像濾波、Bayer解碼和色彩空間轉(zhuǎn)換。通過這樣做,許多計算密集型圖像處理功能可以轉(zhuǎn)移到FPGA,從而加速機器視覺應(yīng)用。 對于那些希望開發(fā)使用各種開源和商用軟件的機器視覺系統(tǒng)用戶,目前的開發(fā)環(huán)境可以讓許多不同公司的圖像處理算法進行圖形化組合。這樣的環(huán)境允許開發(fā)人員將開源算法和商用軟件包整合在一起,以集成到單一的環(huán)境中。這可以根據(jù)最有效的算法對機器視覺軟件進行專門定制。 例如,新西蘭ControlVision公司的機器視覺框架VisionServer 7.2,允許在圖形化IDE中一起使用開源圖像處理庫和商用軟件包,如Cognex公司的VisionPro Software。愛爾蘭CG Controls公司的VS-100P框架也支持VisionPro,其使用Microsoft的.NET 4框架和Windows Presentation Foundation(WPF),使開發(fā)人員能夠部署基于單相機或多相機的視覺系統(tǒng)。 雖然大多數(shù)商用的機器視覺軟件運行在Windows和Linux等操作系統(tǒng)下,但是仍需開發(fā)可在特定時間段內(nèi)執(zhí)行任務(wù)的機器視覺系統(tǒng),即支持實時操作系統(tǒng)(RTOS)。隨后,這些RTOS允許開發(fā)人員確定捕獲和處理圖像以及在系統(tǒng)內(nèi)執(zhí)行I/O所需要的時間,同時利用Windows的強大功能來開發(fā)圖形用戶界面(GUI)。 現(xiàn)在,有許多公司為機器視覺軟件包提供RTOS支持。例如,MIL現(xiàn)在可以在美國IntervalZero公司的RTX64 RTOS下運行,這是美國Kingstar公司在開發(fā)用于工業(yè)運動控制和機器視覺應(yīng)用的基于PC的軟件過程中所應(yīng)用的。基于EtherCAT標準,機器視覺任務(wù)采用MIL,在IntervalZero的RTX64 RTOS中運行。在運行中,RTX64與Windows一起運行在其自身的專用CPU核心上,以提供確定性的環(huán)境。使用這種架構(gòu),開發(fā)人員將基于MIL的應(yīng)用程序分割為在RTX64和Windows上運行(見圖3)。 圖3:Matrox's Imaging Library(MIL)現(xiàn)在可以在IntervalZero的RTX64 RTOS環(huán)境下運行,這是Kingstar在開發(fā)用于工業(yè)運動控制和機器視覺應(yīng)用的基于PC的軟件中所應(yīng)用的。RTX64的開發(fā)在C/C ++中執(zhí)行,使用Visual Studio和Windows API的子集。RTX64下的MIL支持使用GigE Vision以及所支持的Matrox圖像采集卡進行圖像捕獲。 也可以提供其他機器視覺軟件包的第三方RTOS支持。例如,運行MVTec公司的HALCON機器視覺包,可以使用德國Kithara公司的RealTime RTOS Suite完成。與其他RTOS類似,RealTime RTOS Suite在RTOS的內(nèi)核中使用單獨的調(diào)度程序,來決定在任何特定時間執(zhí)行哪個圖像處理任務(wù)。如同IntervalZero一樣,該內(nèi)核與Windows一起運行。 加拿大OptelVision公司最近展示了如何使用自己的運行于美國TenAsys公司的INtime專有算法,開發(fā)出一種藥片檢測機。TenAsys公司銷售和營銷副總裁Kim Hartman介紹說,INtime可以控制系統(tǒng)中對響應(yīng)時間要求嚴格的I/O設(shè)備,同時允許Windows控制非實時I/O。 高性能圖像處理也是嵌入式視覺領(lǐng)域關(guān)注的焦點。最近,丹麥Qtechnology公司首席固件工程師Ricardo Ribalda博士,展示了他的公司是如何創(chuàng)建了一種應(yīng)用程序,使用美國AMD公司的處理器和美國Mentor Graphics公司的軟件工具,對紙幣進行高速掃描和驗證。 今天,執(zhí)行測量功能、模式匹配、OCR、色彩分析和形態(tài)操作所需的工具,都已經(jīng)比較常用。這樣的工具允許開發(fā)人員配置多種類型的機器視覺系統(tǒng),來分類部件是否可接受或必須被拒絕。然而,在某些情況下,如果對象的特征是可變的,那么這些工具的用途就大打折扣了。在水果和蔬菜分選應(yīng)用中,特定產(chǎn)品是好還是壞,可以依賴于許多不同的因素。 要確定這類產(chǎn)品是否可以接受,則依賴于呈現(xiàn)具有許多圖像的系統(tǒng),提取特定的特征并進行分類。許多不同的分類器可用于執(zhí)行包括神經(jīng)網(wǎng)絡(luò)、支持向量機(SVM)、高斯混合模型(GMM)和k-最近鄰(k-NN)的任務(wù)。例如,使用其HALCON軟件包,MVTec開發(fā)人員可以訪問所有這些分類器。 許多公司在商業(yè)產(chǎn)品中已經(jīng)使用了這種“深度學習”技術(shù)。為了根據(jù)可接受或不可接受的缺陷對產(chǎn)品進行分類或分離,瑞士ViDi Systems公司的ViDi green軟件允許開發(fā)人員將圖像分配和標記為不同的類別,之后未經(jīng)培訓(xùn)的圖像可以被分類。在瓶子的分選應(yīng)用示范中,意大利Datalogic公司最近展示了在“測試瓶子首先呈現(xiàn)給系統(tǒng)、以及圖像中的關(guān)鍵點自動提取”后,如何能夠使用k-d樹分類器來識別和分類瓶子。 使用德國StemmerImaging公司的CVBManto的開發(fā)人員,也不需要在分類之前選擇圖像中的相關(guān)特征。使用提取的紋理、幾何和顏色特征,將捕獲的數(shù)據(jù)呈現(xiàn)給SVM進行分類。與之相似,美國Cyth Systems公司的NeuralVision系統(tǒng),在設(shè)計上旨在允許那些沒有圖像處理經(jīng)驗的機器制造商,能向他們的系統(tǒng)中添加圖像分類。 通過在提取的數(shù)據(jù)上應(yīng)用多個圖像分類器,開發(fā)人員可以確定提取的特征是否足夠好,最終確定正在分析的產(chǎn)品的特定特征。否則,則可能需要提取不同類型的特征。因此,一些公司提供允許開發(fā)和測試多個分類器的軟件包。荷蘭PR Sys Design公司的perClass就是這樣一種工具包,提供多種分類器,允許開發(fā)人員與數(shù)據(jù)進行交互式工作,選擇數(shù)據(jù)中用于圖像分類的最佳特征,訓(xùn)練多種多樣的分類器并優(yōu)化它們的性能(見圖4)。 圖4:PR Sys Design公司的perClass提供多種分類器,允許開發(fā)人員與數(shù)據(jù)交互式工作,選擇數(shù)據(jù)中的最佳特征進行圖像分類,訓(xùn)練各種類型的分類器并優(yōu)化它們的性能。在該圖像中,顯示了關(guān)于炸薯條的高光譜缺陷探測問題。(左):從四種材料(健康土豆、土豆皮、腐爛和變綠)的超光譜圖像中提取的訓(xùn)練數(shù)據(jù)的可視化。(右):具有超疊加顏色的測試高光譜圖像(103種光譜波長之一),顯示分類器的決定。 網(wǎng)絡(luò)上現(xiàn)在有許多深度學習資源。其中最有趣的兩個是Tombone's Computer Vision Blog(www.computervisionblog.com),一家致力于深度學習、計算機視覺和AI算法的網(wǎng)站,以及The Journal of Machine Learning Research(JMLR; www.jmlr.org),這是一家出版機器學習論文的論壇。 然而,雖然這種深度學習方法可以用于開發(fā)諸如手寫識別、遙感和水果分選之類的應(yīng)用,但是它們總是具有有限的精度,使得分類器不太適用于需要高精度測量或?qū)柿慵糜诮M裝或加工、或用于精密機器人引導(dǎo)的應(yīng)用。 許多開發(fā)人員選擇高級商業(yè)軟件包來開發(fā)機器視覺系統(tǒng),因為它們的易用性和可用的技術(shù)支持。其他更雄心勃勃的開發(fā)人員,可能希望嘗試在他們的項目中使用開源代碼。雖然提供很少的技術(shù)支持,但不需要許可證或使用費。 這類開源軟件范圍涵蓋C/C++和Java庫、框架、工具包和最終用戶軟件包,其中許多可以在美國RoboRealm公司的網(wǎng)站上找到。雖然一些鏈接已經(jīng)過時,但該網(wǎng)站確實提供了許多可用的開源機器視覺庫的概覽。 使用開源代碼開發(fā)應(yīng)用程序的兩種最受歡迎的方法包括:利用諸如AForge.NET(www.aforgenet.com)之類的軟件,該軟件是為計算機視覺和人工智能的開發(fā)人員設(shè)計的C#框架;以及Open Source Computer Vision Library(Open CV),這是一個開源計算機視覺和機器學習軟件庫,提供C/C++、Python和Java接口,并支持Windows、Linux、Mac OS、iOS和Android操作系統(tǒng)。 對于希望從C#使用OpenCV的用戶,Elad Ben-Israel已經(jīng)為.NET Framework創(chuàng)建了一個小型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)調(diào)用OpenCV函數(shù)。該封裝包可以由Visual Studio、Xamarin Studio和Unity編譯,并在Windows、Linux、Mac OS X和Android操作系統(tǒng)下運行。 要使用OpenCV構(gòu)建計算機視覺應(yīng)用程序,開發(fā)人員可以使用SimpleCV(http://simplecv.org),這是一種開源框架,允許訪問多個計算機視覺庫(如OpenCV),而無需了解位深度、文件格式、顏色空間或緩沖區(qū)管理協(xié)議。由于通過OpenCV自動執(zhí)行整合英特爾的集成性能基元(IPP),因此自動加速了超過3000種專有優(yōu)化的圖像處理和計算機視覺功能。這些IPP可以在英特爾的開發(fā)者站點(http://bit.ly/VSD-1704-9)免費下載。 迄今為止,一些公司支持用OpenCV庫開發(fā),如美國WillowGarage公司、德國Kithara公司、美國國家儀器(NI)公司和新西蘭ControlVision公司。 該文章在 2023/2/27 11:27:36 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |