機(jī)器視覺(jué)系統(tǒng)由眾多部件組成,其中包括相機(jī)、圖像采集卡、照明單元、光學(xué)元件與鏡頭、處理器、軟件及顯示設(shè)備等。簡(jiǎn)單的機(jī)器視覺(jué)系統(tǒng)可以識(shí)別2D或3D條形碼,更復(fù)雜的系統(tǒng)可以確保檢測(cè)的元件滿足特定的容差要求、組裝正確、沒(méi)有缺陷。
很多機(jī)器視覺(jué)系統(tǒng)配備了采用不同類型圖像傳感器的相機(jī)(如表1所示)。為了確定相機(jī)可獲得的分辨率,重要的是理解這些傳感器可以分辨的每毫米線對(duì)數(shù)(lp/mm),而不是有效的像素點(diǎn)數(shù)。
表1:傳感器分辨率比較
例如,在一個(gè)典型的2588×1958像素、500萬(wàn)像素成像器中,大小為1.4μm2的像素可提供357lp/mm的分辨率;而一個(gè)640×480像素的VGA成像器,其像素大小為5.7μm2,可實(shí)現(xiàn)88lp/mm的分辨率。對(duì)于具有相同尺寸的成像器而言,像素越小,每毫米中就可分辨更多的線對(duì)數(shù)。
如果一個(gè)特殊的圖像傳感器包含3μm2的像素,那么根據(jù)尼奎斯特采樣定律,理論上圖像中可以被分辨的最小特性尺寸為6μm。然而實(shí)際應(yīng)用中,并不能達(dá)到這一最小尺寸值,因?yàn)槊總€(gè)鏡頭都會(huì)產(chǎn)生一定程度的像差。
灰度圖像通常會(huì)按每像素8比特存儲(chǔ),從而提供256個(gè)不同的灰度漸變。圖像中的黑色特性對(duì)應(yīng)更低數(shù)值;更亮的像素對(duì)應(yīng)更高數(shù)值。這種方法很便捷,因?yàn)閱我蛔止?jié)對(duì)應(yīng)著單一像素。
選擇相機(jī)
通常,機(jī)器視覺(jué)系統(tǒng)中使用的相機(jī),可以通過(guò)USB3.0、以太網(wǎng)、FireWire、CameraLink及CoaXPress等接口將相機(jī)中捕捉到的圖像傳輸?shù)絇C系統(tǒng)中。
目前,集成機(jī)器視覺(jué)照明、圖像捕捉及處理等功能的智能相機(jī),正在為閱讀條形碼或檢測(cè)部件是否存在等自動(dòng)化視覺(jué)任務(wù)提供經(jīng)濟(jì)型解決方案。盡管智能相機(jī)的處理器性能或許足以滿足這些任務(wù)的需求,但是更復(fù)雜或要求更高速度的任務(wù)則需要額外的處理能力。
除了性能外,系統(tǒng)集成商還要決定采用何種支持軟件以及相機(jī)如何連接到外部設(shè)備。盡管很多檢測(cè)部件是否存在的應(yīng)用中都采用了智能相機(jī),但是一些其他應(yīng)用可能需要將相機(jī)連接到顯示設(shè)備,用以顯示捕獲到的圖像和圖像分析的結(jié)果。
很多智能相機(jī)的處理器運(yùn)行專用的操作系統(tǒng);也有一些智能相機(jī)運(yùn)行Linux或Unix等商業(yè)操作系統(tǒng)。當(dāng)然,這些相機(jī)可以運(yùn)行任何可在PC上運(yùn)行的軟件包。
照明元件
通過(guò)配備正確的機(jī)器視覺(jué)照明系統(tǒng),能以高對(duì)比度重復(fù)捕捉圖像特征。如果照明的配備不正確,機(jī)器視覺(jué)系統(tǒng)的成功性、可靠性、可重復(fù)性和易用性都處于較大的風(fēng)險(xiǎn)中。為了確保機(jī)器視覺(jué)系統(tǒng)配備正確的照明元件,設(shè)計(jì)師需要咨詢照明制造商,或借助圖像照明實(shí)驗(yàn)室檢測(cè)不同的照明選項(xiàng)。
LED照明正在開(kāi)始替代目前常用于機(jī)器視覺(jué)系統(tǒng)中的熒光燈、光纖鹵素?zé)艏半瘹忾W光燈光源,因?yàn)長(zhǎng)ED照明具有更高的一致性、更長(zhǎng)的使用壽命和更好的穩(wěn)定性。LED照明可以提供各種各樣的色彩并能選通發(fā)光,這一特性在高速機(jī)器視覺(jué)應(yīng)用中非常有用。
除了照明類型,另一個(gè)決定圖像成像的重要因素是光照到待測(cè)物體上的角度。兩種最常用的為物體提供照明的方式是:暗場(chǎng)照明和亮場(chǎng)照明(如圖1所示)。
圖1:暗場(chǎng)照明從較低的角度照明物體;亮場(chǎng)照明則從較高的角度照明物體。
Darkfield——暗場(chǎng)
Brightfield——亮場(chǎng)
Fieldofview——視場(chǎng)
暗場(chǎng)照明從較低角度照明物體,在一個(gè)非常平滑的如鏡面般的物體表面上,反射的光將超出相機(jī)的視野范圍。物體的表面將呈現(xiàn)為黑色,而通過(guò)相機(jī)捕捉到的物體表面發(fā)光的部分,就對(duì)應(yīng)著表面的缺陷或劃痕。
亮場(chǎng)照明與暗場(chǎng)照明相反,亮場(chǎng)照明是在成像物體的上方打光,因此物體反射的光將處于相機(jī)的視場(chǎng)范圍內(nèi)。亮場(chǎng)照明配置中,物體表面上任何不連續(xù)處反射的光均無(wú)法被相機(jī)接收而顯示黑色。因此,該技術(shù)被用于為漫發(fā)射的非反射性物體提供照明。
色彩效應(yīng)
如果某個(gè)應(yīng)用要求使用彩色相機(jī),則需要白光照明待檢測(cè)的元件。如果需要區(qū)分待檢測(cè)元件的顏色,則白光需要在整個(gè)波長(zhǎng)范圍內(nèi)產(chǎn)生平等光譜(equalspectrum),以便分析圖片中的顏色。
通過(guò)黑白單色相機(jī)也可以識(shí)別圖像中的顏色,這種方法需要選擇合適的燈光照明圖像(如圖2所示)。圖2中上面一行圖片是人眼觀察到的圖像效果,而下面一行的圖像則顯示了單色相機(jī)呈現(xiàn)出的圖像效果。
圖2:為機(jī)器視覺(jué)系統(tǒng)應(yīng)用找到顏色正確的照明光源,能對(duì)捕捉到的圖像產(chǎn)生重要影響。
Asseenbythehumaneye:人眼看到的顏色
AsseenbyaB&Wvisionsystem:黑白視覺(jué)系統(tǒng)呈現(xiàn)出的顏色
Red:紅
White:白
Green:綠
為了照亮圖像,使用了三種不同顏色的光:600nm紅光(左側(cè))、白光(中間)和520nm綠光(右側(cè))。為了使該圖像呈現(xiàn)出最佳的對(duì)比度,最好的方式是使用綠色光,因?yàn)榫G色是紅色的互補(bǔ)色。這種對(duì)比可以被單色相機(jī)輕松地識(shí)別出來(lái)。如果為了濾掉紅色,則最好采用紅色光照亮物體。如果圖片本身是五光十色的,并且不需要識(shí)別其中的任何一種顏色,那么白光照明則是更合適的選擇。
圖像處理算法
當(dāng)應(yīng)用算法處理圖像時(shí),請(qǐng)考慮開(kāi)發(fā)人員和終端用戶的技能及具體的視覺(jué)系統(tǒng)任務(wù)要求。
許多PC和智能相機(jī)供應(yīng)商提供了功能大體相似的圖像處理軟件包。很多商業(yè)軟件包提供了圖形化集成開(kāi)發(fā)環(huán)境(IDE),使系統(tǒng)集成商可以從程序庫(kù)中拖取設(shè)計(jì)好的功能,根據(jù)自身需求實(shí)現(xiàn)定制化視覺(jué)算法。
多數(shù)商業(yè)軟件包要求為每個(gè)部署的視覺(jué)系統(tǒng)支付版權(quán)費(fèi),但是通過(guò)使用開(kāi)源成像代碼如OpenCV或直接用C++、C、C#或.NET編寫應(yīng)用程序,可以省去這一成本。
但是,由于OpenCV是一個(gè)開(kāi)源環(huán)境,沒(méi)有制造商為其提供擔(dān)?;蛑С?。相比之下,商業(yè)軟件用戶的圖像處理工具包將會(huì)得到開(kāi)發(fā)商的支持。
在選擇軟件前,系統(tǒng)集成商需要仔細(xì)評(píng)估自身的能力。盡管選擇一個(gè)單一的基于PC的商業(yè)機(jī)器視覺(jué)軟件包,需要支付800~2500美元的版權(quán)費(fèi)用,但是開(kāi)發(fā)人員使用C語(yǔ)言從頭開(kāi)始編程,也會(huì)很容易耗費(fèi)掉大量時(shí)間和工程資源。
此外,系統(tǒng)集成商還要認(rèn)識(shí)到,通常一個(gè)開(kāi)發(fā)環(huán)境并不能適用于所有的機(jī)器視覺(jué)系統(tǒng)。技術(shù)和經(jīng)濟(jì)壓力意味著要根據(jù)不同的應(yīng)用需求,采用不同的方法進(jìn)行軟件開(kāi)發(fā)。
在初步確定哪種算法適用于執(zhí)行某個(gè)特定的視覺(jué)任務(wù)后(如圖3所示),需要的系統(tǒng)數(shù)量、每個(gè)系統(tǒng)的成本和軟件開(kāi)發(fā)者的技能,將決定選擇什么樣的編程環(huán)境。例如,用C或C++等高級(jí)語(yǔ)言編寫圖像處理代碼等相對(duì)更復(fù)雜更長(zhǎng)的任務(wù),是工程師開(kāi)發(fā)大量系統(tǒng)時(shí)的一個(gè)更佳選擇(如圖4所示)。
圖4:系統(tǒng)集成商可以根據(jù)軟件開(kāi)發(fā)者的編程技能,選擇并決定視覺(jué)系統(tǒng)軟件的復(fù)雜度。
Draganddrop——拖放工具
Scriptprogrammingandwebinterfacing——腳本編程及網(wǎng)頁(yè)接口
PCdevelopmenttoolssuchasMSVisualStudio——計(jì)算機(jī)開(kāi)發(fā)工具,如微軟的VisualStudio
C/C++dodedevelopment——C/C++代碼開(kāi)發(fā)
Easeofdevelopment——開(kāi)發(fā)簡(jiǎn)易性
算法類別
圖像處理算法可以分為不同的類別,用于滿足不同的應(yīng)用需求。
通過(guò)圖像數(shù)據(jù)的預(yù)處理,可以提取出圖像的特性。圖像閾值
通過(guò)圖像數(shù)據(jù)的預(yù)處理,可以提取出圖像的特性。圖像閾值是圖像分割算法中最簡(jiǎn)單的方法之一,該方法可用于從灰度圖像中生成二進(jìn)制圖像,從而讓物體能夠從背景中分離出來(lái)。
其他的運(yùn)算符,如圖像濾鏡可以令圖像銳化、降低圖像噪音;而直方圖均衡可以增強(qiáng)圖像的對(duì)比度。預(yù)處理同樣涉及圖像分割,以定位圖像中具有相似屬性的物體或物體邊界,如顏色、亮度或材質(zhì)等。
更復(fù)雜的算法可以實(shí)現(xiàn)特征提娶檢測(cè)物體邊緣或物體轉(zhuǎn)角,實(shí)現(xiàn)對(duì)圖像中物體的測(cè)量。連通性工具,如blob分析算法,則可以測(cè)量圖片內(nèi)分散物體的有某種共同關(guān)系的特性參數(shù)。
關(guān)聯(lián)性與幾何搜索是另外兩個(gè)強(qiáng)大的搜索算法,其可用于找到物體的某種特性,或在新的圖像中搜索同樣的特性,可提供相應(yīng)的位置、某些情況下的尺寸和規(guī)模、以及新圖像是如何實(shí)現(xiàn)傾斜或轉(zhuǎn)換的等信息。
最后要提及的是可以實(shí)現(xiàn)分類及圖像破譯的算法。其中,最簡(jiǎn)單的是可以實(shí)現(xiàn)簡(jiǎn)單模板匹配操作的算法,而更復(fù)雜的分類算法可能用到神經(jīng)網(wǎng)絡(luò)及SVM等更復(fù)雜的技術(shù)。
算法的應(yīng)用
在眾多視覺(jué)系統(tǒng)中,決定一個(gè)元件或元件的某個(gè)特性是否存在非常重要。尺寸、形狀或顏色等屬性可以用于識(shí)別元件。對(duì)比分析、blob分析、模型匹配或幾何搜索工具可以在圖像上識(shí)別元件。
為了將一個(gè)元件從其他元件中區(qū)分出來(lái),可以使用相對(duì)簡(jiǎn)單的功能,如邊緣檢測(cè)算子。如果需要精確地檢測(cè)出元件的位置,則需要執(zhí)行幾何搜索或blob分析。
為了高速檢測(cè)元件或web上的缺陷,需要用到對(duì)比分析或模型圖像匹配算子。如果需要將缺陷歸類并檢測(cè),blob分析或邊緣分析可以測(cè)量缺陷參數(shù),并將其與已知的正常參數(shù)進(jìn)行比較。
在一些圖像處理應(yīng)用中,可以利用超過(guò)圖像標(biāo)準(zhǔn)像素分辨率的精度,測(cè)量圖像中的線、點(diǎn)或邊緣的位置,獲得子像素分辨率。這可以通過(guò)對(duì)比物體邊緣像素的灰度級(jí)別與物體每個(gè)邊上的像素灰度級(jí)別來(lái)實(shí)現(xiàn)。
在特殊的例子中,可以使用極坐標(biāo)抽取技術(shù)識(shí)別圓形物體的圖像,這種方法更易于實(shí)現(xiàn)。如圖5中間部分所示,blob分析被用于顯示藍(lán)色物體的參數(shù)細(xì)節(jié)。使用此類算子,可以更容易地檢測(cè)尺寸、邊界框及物體的中心。
在圖5右上圖中,通過(guò)分析圖片中的灰度值,邊緣檢測(cè)算法可以檢測(cè)物體邊緣、位置、形態(tài)或者角度。左下方的直方圖顯示了某個(gè)特殊圖像的灰度像素值,該值將被進(jìn)一步分析,以強(qiáng)化圖像中獲得的某些特性。
中間的圖像有兩組光學(xué)特性需要檢測(cè),上面的特性被輕微減弱。在這個(gè)示例中,通過(guò)驗(yàn)證可以了解特性的衰減方式。此外,光學(xué)特性識(shí)別(OCR)軟件可以用于讀取衰減特性。
在圖5右下角,搜索算法從圖像中鎖定一個(gè)目標(biāo)對(duì)象,并存儲(chǔ)為模板或幾何模型,之后在其他圖像中尋找類似的目標(biāo)圖像,這就是一個(gè)可以識(shí)別特定特性的精確工具。
策劃、決定及執(zhí)行
在著手研發(fā)任何機(jī)器視覺(jué)檢測(cè)系統(tǒng)前,需要仔細(xì)評(píng)估是公司內(nèi)部開(kāi)發(fā)還是將其外包。在策劃階段有時(shí)會(huì)發(fā)現(xiàn),機(jī)器視覺(jué)系統(tǒng)可能并非必要的,或者并不可行。
如果確定機(jī)器視覺(jué)系統(tǒng)可行,則具體檢測(cè)過(guò)程的所有特性都需仔細(xì)記錄。需要對(duì)元件待檢測(cè)的物理及幾何屬性,包括顏色、表面拋光及反射屬性等進(jìn)行歸類。開(kāi)始,必須要定義特征用以區(qū)別待檢測(cè)的元件是好是壞。只有了解元件或裝配件的屬性,系統(tǒng)集成商才能確定哪個(gè)圖像解決方案是最理想的。
整個(gè)生產(chǎn)過(guò)程都需要進(jìn)行分析,使系統(tǒng)集成商了解元件是如何被生產(chǎn)的、以及在檢測(cè)過(guò)程中發(fā)生了什么變化。借助分析,甚至還可以確定是否應(yīng)該在生產(chǎn)流程的初級(jí)階段就采用視覺(jué)檢測(cè)。
當(dāng)策劃階段完成后,機(jī)器視覺(jué)組件,包括相機(jī)、軟件、照明元件、光學(xué)元件及鏡頭等都要確定下來(lái)。這一階段將確定在生產(chǎn)環(huán)境中,是否有足夠的分辨率或充分的照明及光學(xué)條件,以確保產(chǎn)生所需要的結(jié)果。這些因素最好在編寫系統(tǒng)說(shuō)明時(shí)完成,而不要等到實(shí)現(xiàn)系統(tǒng)時(shí)再考慮。
在系統(tǒng)明確階段,應(yīng)該提供一份報(bào)告,詳細(xì)列出使用的硬件及軟件、系統(tǒng)必須要運(yùn)行的檢測(cè)功能、需要滿足的容差及系統(tǒng)的吞吐量等。此外,該階段還要考慮系統(tǒng)如何與生產(chǎn)廠房中可能存在的其他自動(dòng)化系統(tǒng)連接,這些都要記錄下來(lái)。
在決定是自行研發(fā)、還是與外部系統(tǒng)供應(yīng)商合作開(kāi)發(fā)時(shí),還需要考慮幾個(gè)關(guān)鍵的業(yè)務(wù)問(wèn)題。從項(xiàng)目一開(kāi)始,系統(tǒng)集成商就要確定公司內(nèi)部是否具備支持項(xiàng)目所需要的技術(shù)實(shí)力。
如果公司內(nèi)部擁有這樣的技術(shù)實(shí)力,管理層還要確定具體負(fù)責(zé)該工作的個(gè)人是否有足夠的時(shí)間和資源支持這一項(xiàng)目、是否會(huì)遇到意想不到的挑戰(zhàn)?如何應(yīng)對(duì)?等等。此外,如何維護(hù)、支持、服務(wù)及升級(jí)該系統(tǒng)也是需要考量的重要因素。