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