機(jī)器視覺系統(tǒng)及學(xué)習(xí)方法總結(jié)
一、機(jī)器視覺系統(tǒng)組成?
? ? 機(jī)器視覺系統(tǒng)主要分為三部分:機(jī)器、視覺和系統(tǒng)。機(jī)器負(fù)責(zé)機(jī)械的運(yùn)動(dòng)和控制;視覺通過光源、工業(yè)鏡頭、工業(yè)相機(jī)、圖像采集卡等來實(shí)現(xiàn);系統(tǒng)主要是指軟件。
光源
光源作為機(jī)器視覺系統(tǒng)輸入的重要部件,它的好壞直接影響輸入圖像的質(zhì)量和應(yīng)用效果。由于沒有通用的機(jī)器視覺光源設(shè)備,所以針對每個(gè)特定的應(yīng)用實(shí)例,要選擇相應(yīng)的視覺光源,以達(dá)到最佳效果。常見的光源有:LED環(huán)形光源、低角度光源、背光源、條形光源、同軸光源、冷光源、點(diǎn)光源、線型光源和平行光源等。
鏡頭
鏡頭在機(jī)器視覺系統(tǒng)中主要負(fù)責(zé)光束調(diào)制,并完成信號傳遞。鏡頭類型包括:標(biāo)準(zhǔn)、遠(yuǎn)心、廣角、近攝和遠(yuǎn)攝等,選擇依據(jù)一般是根據(jù)相機(jī)接口、拍攝物距、拍攝范圍、CCD尺寸、畸變允許范圍、放大率、焦距和光圈等。
相機(jī)
工業(yè)相機(jī)在機(jī)器視覺系統(tǒng)中最本質(zhì)功能就是將光信號轉(zhuǎn)變?yōu)殡娦盘?,與普通相機(jī)相比,它具有更高的傳輸力、抗干擾力以及穩(wěn)定的成像能力。按照不同標(biāo)準(zhǔn)可有多種分類:按輸出信號方式,可分為模擬相機(jī)和數(shù)字相機(jī);按芯片類型不同,可分CCD相機(jī)和CMOS相機(jī),這種分類方式最為常見。
圖像采集卡
圖像采集卡雖然只是完整機(jī)器視覺系統(tǒng)的一個(gè)部件,但它同樣非常重要,直接決定了工業(yè)相機(jī)的接口:黑白、彩色、模擬、數(shù)字等。比較典型的有PCI采集卡、1394采集卡、VGA采集卡和GigE千兆網(wǎng)采集卡。這些采集卡中有的內(nèi)置多路開關(guān),可以連接多個(gè)工業(yè)相機(jī),同時(shí)采集多個(gè)工業(yè)相機(jī)圖像。
機(jī)器視覺軟件
機(jī)器視覺軟件是機(jī)器視覺系統(tǒng)中自動(dòng)化處理的關(guān)鍵部件,根據(jù)具體應(yīng)用需求,對軟件包進(jìn)行二次開發(fā),可自動(dòng)完成對圖像采集、顯示、存儲和處理。在選購機(jī)器視覺軟件時(shí),一定要注意開發(fā)硬件環(huán)境、開發(fā)操作系統(tǒng)、開發(fā)語言等,確保軟件運(yùn)行穩(wěn)定,方便二次開發(fā)。
二、機(jī)器視覺開發(fā)環(huán)境原理
軟件平臺
機(jī)器視覺當(dāng)前的比較流行的開發(fā)模式是“軟件平臺+工具包”。在實(shí)際視覺項(xiàng)目中,軟件平臺的目的就是為客戶做出一個(gè)應(yīng)用程序,讓客戶一目了然地看到其產(chǎn)品的各項(xiàng)數(shù)據(jù),例如:產(chǎn)量、日期、報(bào)表、NG/OK量、故障信息、調(diào)試信息、設(shè)置參數(shù)、操作工具、整個(gè)視覺控制系統(tǒng)等。當(dāng)前機(jī)器視覺領(lǐng)域主要用的開發(fā)平臺有:
VC++——目前主流選擇平臺
最通用,功能最強(qiáng)大。用戶多,和windows搭配,運(yùn)行性能較好,可以自己寫算法,也可以用工具包,而且基本上工具包都支持C++的開發(fā)。
?C#——逐漸發(fā)展使用
比較容易上手,特別是完成界面等功能比用VC+MFC難度低了很多,已經(jīng)逐漸成為流行的使用平臺了,算法在調(diào)用標(biāo)準(zhǔn)的庫或者使用C#+C++混合編程??梢钥吹侥壳昂芏嘞鄼C(jī)廠商的SDK都已經(jīng)開始使用C#做應(yīng)用程序了
LabVIEW——NI的工具圖形化開發(fā)平臺
開發(fā)軟件快,特別是做工控行業(yè)或者自動(dòng)化測試行業(yè),由于使用labview進(jìn)行測試測量的廣泛性,所以都有l(wèi)abview的基礎(chǔ),再調(diào)用NI的Vision圖像工具包開發(fā),開發(fā)周期短,維護(hù)較為容易。
工具
軟件平臺生成的應(yīng)用程序可以通過控制整個(gè)視覺系統(tǒng)來獲取對象圖像信息,對該圖像信息進(jìn)行信息提取處理就需要一定的功能函數(shù)和算子,那么就需要包含大量功能函數(shù)的工具包。當(dāng)前機(jī)器視覺領(lǐng)域主要用的工具包有
halcon:出自德國MVTech,當(dāng)前首選使用對象。底層的封裝功能算法很多,運(yùn)算性能快,使用方便簡單,若有一定軟件功底和圖像處理理論,使用其開發(fā)將會便捷。
VisionPro:美國康耐視的圖像處理工具包。性能大多數(shù)算法性能都很好,性能上沒有和halcon直接對比過。
OpenCV:感覺openCV更多的還是用在計(jì)算機(jī)視覺領(lǐng)域,在機(jī)器視覺領(lǐng)域其實(shí)不算太多,應(yīng)為機(jī)器視覺領(lǐng)域當(dāng)前主要的應(yīng)用還是定位、測量、外觀、OCR/OCV,這幾項(xiàng)都不是opencv的專長。
機(jī)器視覺系統(tǒng)原理
系統(tǒng)原理:機(jī)器視覺系統(tǒng)的目得就是通過機(jī)器視覺產(chǎn)品(即光源、鏡頭、相機(jī)、采集卡)將被拍攝的目標(biāo)轉(zhuǎn)換為圖像信號,傳送給機(jī)器視覺軟件(即圖像處理系統(tǒng)),來代替人眼的測量、檢測和判斷。原理是由計(jì)算機(jī)、圖像處理器以及相關(guān)設(shè)備來模擬人的視覺行為,完成得到人的視覺系統(tǒng)所得到的信息。隨著微型計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)、大數(shù)據(jù)融入技術(shù)發(fā)展,相信未來機(jī)器視覺系統(tǒng)將會代替人類完成更多難以完成的工作。
三、如何學(xué)習(xí)機(jī)器視覺
機(jī)器視覺發(fā)展到今天,分為三個(gè)部分: 1,底層開發(fā)部分。 2,二次開發(fā)部分。 3,最終使用部分。
那如何學(xué)習(xí)機(jī)器視覺? 我認(rèn)為,應(yīng)該先確定自己的身份,從具體的需求入手來學(xué)習(xí),學(xué)以致用。其次,學(xué)習(xí)機(jī)器視覺,要實(shí)際動(dòng)手操作、不斷積累編程的經(jīng)驗(yàn)。
搞底層開發(fā),分硬件及軟件。要對自己所負(fù)責(zé)的這個(gè)模塊非常了解,搞軟件要知道算法及運(yùn)行速度;搞硬件需明白公司所選用芯片的特點(diǎn)等。還要清楚對手的優(yōu)缺點(diǎn)及行業(yè)的最新動(dòng)態(tài)和技術(shù)。搞二次開發(fā),你要是個(gè)全才。說什么都要知道一些。不僅要了解用戶的要求,也要知道各種底層算法的相關(guān)邏輯。搞最終應(yīng)用的,要有機(jī)器視覺基本基礎(chǔ)知識,對自己所工作的行業(yè)及領(lǐng)域的機(jī)器視覺系統(tǒng)非常熟悉。
為什么選擇HALCON呢
首先,能在最短的時(shí)間里開發(fā)出視覺系統(tǒng),HALCON包含了一套交互式的程序設(shè)計(jì)界面HDevelop,可在其中以HALCON程序代碼直接撰寫,修 改,執(zhí)行程序,并且可以查看計(jì)算過程中的所有變量,設(shè)計(jì)完成后,可以直接輸出C、C++、VB、C#、vb等程序代碼,套入您的程序中。 HDevelop同時(shí)和數(shù)百個(gè)范例程序鏈接,除了個(gè)別計(jì)算功能的說明,您也可以隨時(shí)依據(jù)不同的類別找到應(yīng)用的范例,方便參考。此外,以問題為導(dǎo)向的手冊, 可以讓您找到最適切的使用說明以及作業(yè)觀念。
其次,HALCON不限制取像設(shè)備,可以自行挑選合適的設(shè)備。原廠已提供了60 余種相機(jī)的驅(qū)動(dòng)鏈接,即使是尚未支持的相機(jī),除了可以透過指標(biāo)(pointer)輕易的抓取影像,還可以利用HALOCN開放性的架構(gòu),自行撰寫DLL文件和系統(tǒng)連接。
最后,使用HALOCN,在設(shè)計(jì)人機(jī)接口時(shí)沒有特別的限制,也不必特別的可視化組件,您可以完全使用開發(fā)環(huán)境下的程序語言,例如visual studio、.NET、Mono等等,架構(gòu)自己的接口,end user看不到您的開發(fā)工具,而且在執(zhí)行作業(yè)的機(jī)器上,只需要很小的資源套件。