機器視覺與圖像分析技術
也許你仍然希望能得到咨詢專家的幫助,不過緊縮包裹型(Shrink-Wrapped)開發工具包現在已經使得缺乏專業經驗的開發者也能夠照樣承擔更多基于視覺的項目。
要點
● 與視覺相關的項目并非全都需要咨詢專家的服務;在硬件供應商和開發工具供應商的幫助下,缺乏視覺系統開發經驗的開發者通常也可以完成大部分(即使不是全部)開發工作,并且為他們的公司節省費用。
● 在開始視覺系統開發之前,你必須回答大約五六個問題;你的答案將基本決定系統的硬件成本。
● 你只要選擇能夠在菜單驅動環境中能使你開始設備開發工作,然后通過圖形編程或語法編程來
完善程序,就可大大提高效率。
● 習慣于視覺系統在安裝之后需要悉心呵護的觀念;你常常無法預見在系統運行一段時間之后可能有必要調整算法的各種理由。
成功地開發一種基于視覺的設備可能需要很多專業知識,以致許多打算這樣做的開發者都不愿意嘗試這種任務,而轉向求助于那些通過掌握技術的方方面面細微差別建立自己職業生涯的咨詢專家。通常,一位咨詢專家不僅可以為你節省數倍咨詢費的費用,而且還可以節省大量寶貴的時間。即使這樣,有些適用于基于視覺的系統開發的緊縮包裹型軟件包卻使那些沒有機器視覺或圖像分析經驗的人能泰然承擔的項目數量不斷增加。
如果你缺乏適當的經驗,則要走好的*步是設法確定哪些任務需要外界幫助,哪些任務是你有可能用預包裝軟件自己迅速完成的。提供開發工具和硬件的廠商通常可以幫助你做出這種判斷。在很多情況下,這些廠商的網站都有幫助做出這種決定的工具。給一個這樣的廠商打個電話,你通常就可以與一位能搜集有關你設備信息的應用工程師取得聯系。在適當的時候,大多數廠商會向你推薦他們熟悉其工作情況的咨詢專家。通常,*經濟的辦法就是,某個項目中僅僅某些部分使用咨詢幫助,例如照明部分。
圖像分析和機器視覺是相關而又不同的兩個領域。從某種意義上說,圖像分析是機器視覺的一部分。然而,從另一種意義上說,圖像分析是一門更廣的學科。實際上,這兩領域的分界線常常是模糊不清的。
機器視覺應用通常具有商業味道。例如,機器視覺是許多制造過程的關鍵部分。另一方面,"圖像分析"--按多數人的理解--更可能應用于科學研究實驗室。一些專家說,圖像分析常常處理的操作不及機器視覺處理的操作明確。對未知物體,例如學術實驗室中或者甚至臨床病理學實驗室中的動物組織細胞的圖像進行表征或分類就是一例。
冷泉港(紐約)實驗室霍華德休斯醫學院的一個研究小組利用Matlab及其圖像捕獲和圖像處理工具箱來研究哺乳動物的大腦如何運作。利用圖像捕獲工具箱,研究人員就可將顯微鏡圖像從攝像機直接流式傳輸到Matlab,并可利用圖像處理工具箱功能來分析一段時間內的圖像。為了一按按鈕就能進行捕獲和分析,研究人員在Matlab中創造了生動的圖形用戶界面。
在機器視覺中,你通常對照相機或圖像傳感器所觀察的物體有一般的了解,但你需要獲得更具體的信息。產品檢測設備屬于機器視覺這一類。例如,你知道一幅圖像描繪的是哪種印制電路板模型,但是你必須確定所有元件的類型是否正確以及位置是否得當。確定元件是否正確和位置是否適合當然要涉及到圖像分析,但是這種分析比臨床實驗室中的那種分析更為直觀。
機器視覺任務的分類
幾位專家將主要機器視覺任務分為以下幾類:
● 對諸如墊圈、螺母和螺栓等元件進行計數,并從噪聲背景中提取可視信息。
● 測量 (也稱為測定) 角度、尺寸以及相關位置。
● 讀出,包括諸如從條形碼中獲取信息、對蝕刻在半導體芯片上的字符的OCR(光學字符識別)以及讀出二維DataMatrix碼等操作。
● 對物體進行比較,例如,將生產線上的單元與同樣類型的KGU(已知優質單元)
進行比較,找出諸如缺少元件或標簽等的制造缺陷。這種比較可能是簡單的圖樣相減,也可能涉及到幾何或矢量圖形匹配算法。如果被比較物體的尺寸或方向各不相同的話,就必須采用后者。比較的類型包括檢測物體的有無、匹配色彩和比較印刷質量。被檢查的物體可能與阿司匹林藥片一樣簡單,其正確標記需在包裝之前加以驗證。
上述列表由于很具體,所以可能意味著你可以利用菜單驅動的基于圖形的開發工具來創建機器視覺設備,而不是使用如C++這樣的基于文本的語言來編寫代碼。盡管具有長期用基于文本的語言對機器視覺設備進行編程的開發者通常更愿意堅持使用他們多年來成功運用的工具,但你的確可以使用多種菜單驅動的圖形化應用開發軟件包之一。
雖然業界中的一些人對這種不愿改變的傾向頗有微詞,但要問一問自己,如果你聘請來處理某種設備的咨詢專家*次嘗試使用新軟件包來完成你的工作的話,你的感受如何呢?
即使在各種基于圖形的工具當中,供應商們也把那些真正提供可編程能力的和那些僅允許用戶配置設備的區分開來。這種可配置的方法能讓你更快捷地使設備運行,并能提供許多開發者所需的靈活性。編程功能可為開發者提供更大的靈活性,但卻會延長開發時間-特別是對于那些*次使用一種工具的人來說更是如此。
在某些情況下,可配置的方法和可編程的方法都以同樣的語言產生輸出,從而使你能利用編程功能來修改或提高你用可配置的方法創建的設備。這樣的靈活性的潛在好處是巨大的:你可以使用更**的工具來完善某種設備,并可借助基本的工具,迅速使之在原始級工作。這種方法可降低在完善方法上浪費時間的可能性,而你后來發現這些方法存在根本缺陷。
利用Data Translation公司的Vision Foundry進行設備開發的主要替代技術例證了工具箱的**性,工具箱使你可以利用可配置的基于菜單的交互式工具快速驗證概念,然后再通過編程功能改進其設備。在Vision Foundry中,你可以通過編寫直觀的腳本來完成大部分編程任務。
正在發生的調整
也許更重要的是如何利用兩種方法的輕松互換使用來簡化許多機器視覺設備中正在進行的不可避免的調整。例如,在AOI (自動光學檢驗)中,你或許希望剔除任何與KGU不同的UUT (被測單元)。唉,如果采用這種策略,檢驗過程大概會剔除你生產的大部分單元,即使其中大多數單元具有可以接受的性能。說明由于次要差別而導致AOI系統剔除一個優質部件的簡單例子就是UUT使用的某個元件的日期代碼與KGU上的等效元件的日期代碼不同。
此時,你可在設備的設計期間預見到數據代碼問題,并確保系統忽略包含日期代碼的區域內的圖像差別。遺憾的是,盡管如此,其它次要差別更難預料,你必須預計到你發現這些次要差別時需要修改設備。實際上,一些AOI系統的軟件幾乎能自動地進行這樣的修改;如果你告知系統它剔除了優質單元,則軟件就會將單元的圖像與原始KGU進行比較,并在有差別的區域內不再對隨后的單元進行檢驗。
不過,這樣的方法有時候會產生并不令人滿意的結果。假設檢驗系統安裝在一間有外部光線可以從窗戶進入的房間內,從而使UUT的照度發生變化。雖然檢查員可以不假思索地適應這種變化,但是這樣的變化會導致視覺系統將相同物體的圖像分為不同物體的圖像,從而引起不可預料的檢驗失敗。盡管遮住窗戶可以防止外部光線進入,但是調整測試程序使KGU在各種照明極端情況下都能通過也許更加經濟合算。
即使如此,這個例子也指出了照明在機器視覺和圖像分析中的重要性。照明本身就是一門科學或藝術。各種各樣的照明技術具有不同的優點和弱點,而對UUT的照明方法可以解決或改進普通的機器視覺問題(參考文獻1)。
項目成本及時間期限
機器視覺項目的成本相差很大。有幾個這樣的項目的成本不*過5000美元,其中包括硬件、預包裝軟件開發工具以及設備開發者的工時成本。不過,如此低廉的項目成本很可能不包括為了達到滿意性能而對設備進行調整和調試的成本。
在成本范圍的另一端,項目成本*過一百萬美元。這類項目中*常見的可能就是在汽車和航空工業中對自動生產線的重大改進。根據一些供應商說,*常見的項目成本通常從數萬美元到略高于十萬美元不等。從管理層批準項目啟動到視覺系統在生產中正常使用的項目期限通常不到六個月,而且常常只有一兩個月。
并不令人驚訝的是,幾乎所有視覺項目都從獲得基本問題的答案開始。這些問題的答案充分地確定了視覺系統硬件的成本:需要多少臺攝像機?必須具有多高的圖像分辨率?彩色成像是否必要?每秒必須采集多少幀?用不用產生模擬輸出的攝像機?如果這樣,就需要選擇一個幀接收板來將模擬信號轉換成數字形式,在必要時還要圖像幀的采集與外部觸發事件同步(參考文獻2)。
盡管一些用于模擬攝像機的幀接收器可以同時接收來自多個攝像機的輸入,但是一次為一臺攝像機提供一個接口的電路板更為常見。如果你選擇具有數字接口的攝像機,你會使用能夠進行圖像處理和圖像采集的"智能"攝像機嗎?還是由攝像機將原始(未處理的)圖像數據發送到主機PC進行處理?還有,數字攝像機采用哪種接口標準或總線與主機PC通信呢?適用于某些總線的數字攝像機需要幀接收器。但是,與用于模擬攝像機的幀接收器不同,用于數字攝像機的幀接收器不進行模/數轉換。
與硬件相關的考慮因素可能會*越這些問題。而且,一些問題采用了通常正確的默認假設,即視覺系統的主計算機是一臺運行標準版本Windows的PC。機器視覺系統有時候在實時操作系統下運行,而圖像分析軟件則經常在Unix或Linux下運行。此外,與其它實時系統一樣,許多實時視覺系統采用與Pentium或Athlon器件不同的CPU。
攝像機接口
使攝像機與主機計算機接口仍然是視覺系統設計的一個關鍵問題。盡管出現了數字化接口的攝像機,盡管成像系統采用IEEE 1394 (也稱為FireWire和i-Link)來與攝像機接口,但攝像機接口的選擇仍值得仔細考慮。
(正在迅速成為主流高速PC外設接口的USB 2.0并不是工業成像領域的一個要素,這主要是因為,雖然其480 Mbps的數據傳輸速率名義上比*初版本的FireWire更高,但USB 2.0的以主機為中心的協議對于成像來說卻比FireWire更慢。)
FireWire是消費類視頻系統和家庭娛樂系統中流行的高速串行總線。這種即插即用的總線采用多點體系結構和對等層通信協議。該標準的*初具體化包括速率高達400 Mbps的數據傳輸。數據傳輸速率*終將達到3.2 Gbps。2003年1月,IEEE發布了1394b,而且其擁護者們期望不久就可以在視覺硬件中看到800Mbps的版本。
不過,盡管工業FireWire攝像機具有合理的成本,但它在消費類設備中的可用性在不斷增加(在消費類設備中,所需的分辨率--有時候還有幀頻--均比工業設備中所要求的更為適度),其纖細而柔軟的串行電纜用起來很方便,其總線數字技術具有抗擾性,但選用這類攝像機仍然受到限制。
成本可能會限制FireWire在工業成像領域中的普及。工業FireWire攝像機的成本要比具有相同幀頻和分辨率的工業模擬輸出攝像機高。另一方面,FireWire攝像機與模擬攝像機的成本比較有時候可能會產生誤導。在具有內置FireWire端口的系統中,攝像機通常不需要額外的接口硬件。這種攝像機包括一個ADC(模/數轉換器),而模擬攝像機則需要幀接收器來完成必要的ADC功能。
National Instruments公司的基于Celeron的CVS-1454型小巧視覺系統(Compact Vision System)例證了為工廠環境設計的機器視覺硬件。雖然這一系統(右上)并非一個標準的辦公室PC,但它包含三個FireWire端口從而不需要特殊的攝像機接口硬件。
該系統與National Instruments公司的LabView圖形化開發環境配套使用,而這個開發環境能通過交互式圖形化工具快速開發程序,如果有必要,隨后再使用完整的圖形化編程功能調試設備。
FireWire攝像機采用IEEE 1394的同步協議,這就能保證帶寬并確保數據包按照它們的發送順序到達(如果他們全部到達的話)。該標準的其它協議(異步的)保證消息傳遞但不確保數據包按照它們的發送順序到達。每個同步設備可以每隔125μs--也就是以8kHz的*大速率--發出一個帶寬請求。起總線管理器作用的設備賦予每個發出請求的設備在隨后125μs內發送預定數目數據包的權力。
總線上的同步設備越多,每個設備可得到的帶寬就越少。當FireWire總線上僅有一臺攝像機時,一臺1280×960像素黑白攝像機差不多可以每秒發送15幀。一臺640×480像素的FireWire彩色攝像機大約可以每秒發送30幀。盡管這兩個例子中的任一個似乎都不會使用總線的全部可用數據傳輸容量,但每個像素的比特數以及攝像機使數據格式化的方法卻會對*大幀速率產生影響。
附帶說明一下,分辨率越高并不總是越好。分辨率較高的攝像機不僅價格更貴,幀速率通常比分辨率較低的攝像機更慢,而且還更容易揭示UUT和KGU之間微不足道的差別,從而提高AOI系統錯誤地檢測故障的速率。
更多攝像機接口
除了FireWire之外,數字輸出攝像機的接口選件還包括RS 422并行接口和Camera Link(表1)。RS 422攝像機接口還沒有完全標準化,所以通常需要攝像機專用接口卡。從用于模擬輸出攝像機的接口卡的意義上來說,這些卡并不是幀接收器,但它們通常同樣可插入主PC的PCI總線。由于有時候需要50多根連線,并行接口被證明并不適用。不過,RS 422數字攝像機仍然受歡迎,并且繼續用得廣泛。
AIA的Camera Link是性能*高的數字輸出攝像機接口標準。與FireWire不同,Camera Link允許每條總線上只有一臺攝像機,但許多PC可以容納多條Camera Link總線。Camera Link可在并行組合的單向鏈路、串行鏈路和點對點鏈路上,利用SERDES(串行化/解串行化)技術以高達4.8 Gbps的速度發送數據。每條鏈路可傳送來自7個通道的數據,并使用每條鏈路需要兩根導線的LVDS (低電壓差分信號傳輸) 技術。
通道的數目決定了Camera Link總線的*大數據速率。一條配置齊全的總線可以有76個通道,其中包括11條鏈路和22根導線,不過該標準考慮到具有28個通道和56個通道的總線 (4和8條鏈路及8和16根連線)。每條Camera Link總線通常需要PC中的一個獨立接口卡。
選用Camera Link總線目前還涉及到編寫額外的軟件。由于在PC中生成Camera Link總線的卡既稀少又沒有完全標準化,所以緊縮包裹型應用程序開發軟件包通常缺乏Camera Link啟動程序。盡管如此,如果需要Camera Link的引人注目的速度,那你就沒有多少選擇余地。
某些時候,你可利用智能攝像機來減少視覺系統必須處理的數據量,因為智能攝像機可以先對其采集的數據進行處理或壓縮,然后再將數據發送給主機PC。這樣的攝像機有時候既可降低攝像機與主機之間的數據速率又可降低主機與主機中負載之間的數據速率,但成本較高。然而,你必須保證數據壓縮要么是真正無損的,要么是不需要壓縮中損失的數據。