天天看點

基于嵌入式系統的機器視覺技術簡析

空間有限且要求功耗較低的應用,通常是嵌入式計算機系統發揮作用的舞台。典型的例子是移動裝置,從工廠中的移動測試裝置到牙科掃描器,其中運作的都是嵌入式計算機系統。嵌入式視覺也是機器人的一個極好解決方案,尤其是将相機內建到機器人的手臂上時。

在機器視覺領域,典型的相機內建工作是通過GigE或USB接口實作的,這可以說是一種将相機連接配接到PC(或IPC)的即插即用解決方案。與制造商的軟體開發工具包(SDK)一起使用,可以輕松通路相機,這一工作原理也可以遷移到嵌入式系統中。

機器視覺

圖:(a)傳統的基于PC的通用機器視覺系統;(b)針對特定解決方案的

嵌入式

或圖像處理系統的相機子產品元件,其在成本效益方面更優化。

利用單闆計算機(SBC),基本的內建原理依然不變。低成本且易于獲得的單闆計算機,在一塊SoC電路闆上包含了計算機的所有部分——RAM、存儲器插槽、IO端口(USB 3.0、Gig-E等)。

常用的單闆機,如Raspberry Pi或Odroid,都具有相容的接口(USB /以太網)。還有一些行業公認的來自Toradex或研華等公司的單闆機,均提供這些标準接口。

工業智能相機

圖:許多相機制造商提供SDK版本,允許使用者将相機內建到ARM平台上,就像将相機內建到Windows PC上一樣。

主要差別在于這些單闆機所配備的處理器類型。雖然已經有單闆機提供基于x86架構的處理器,但是目前大多數單闆機上的處理單元使用的都是ARM處理器,因為它們的功耗更低。

越來越多的相機制造商也提供在ARM平台上工作的軟體開發套件(SDK)版本,以便使用者可以像在Windows PC中內建相機一樣,以熟悉的方式将相機內建到ARM平台上。

在最好的情況下,SDK為Windows PC和ARM這兩種平台提供相同的功能和API(應用程式可程式設計接口),甚至軟體應用代碼的一部分可以重用。是以,相比于标準的基于PC的視覺系統,嵌入式視覺系統的相機內建工作更為簡單。

當需要剝離更多的備援處理技術時,針對某些特定應用的嵌入式系統,可以做到更精簡的水準。這就是為什麼許多系統是基于子產品系統的(SoM)。這些非常緊湊的闆卡式電腦子產品隻包含一個處理器(準确地說,通常是片上系統SoC)、微控制器、存儲器和其他基本元件。

這種SoM需要安裝在載闆上,載闆上具有為特定接口準備的插口。有了這樣一個相對便宜的載闆,系統可以很容易地針對特定應用和系統要求進行個性化設計,因為SoM是現成的産品,是以可以保證整個系統設定的低成本。

通常,這種設定也可以配備标準接口連接配接器(如USB)。在這種情況下,即插即用的好處與單闆機或是基于PC的機器視覺系統是一樣的。但是,這往往不符合非常具體和精簡的系統設定的想法。同樣,由于空間、重量或功耗方面的要求,USB接口可能并不合适,相反,會使用相機到處理器之間更直接的連接配接方式。

此外,許多嵌入式視覺系統是基于(或包括)FPGA(現場可程式設計門陣列)子產品的。這些器件對于立體視覺産品或面部檢測應用中所需要的計算工作是理想的。

所有這些都是為什麼可能需要将相機直接連接配接到FPGA或SoC的原因。

特定圖像資料傳輸

直接将相機連接配接到SoC用于圖像資料傳輸,可以通過基于LVDS的連接配接或MIPI CSI2标準實作。這兩種方法在硬體方面都沒有明确的标準化。這意味着沒有指定的連接配接器,甚至沒有規劃電纜内的通道數量。是以,為了連接配接特定的相機,通常需要在載闆上設計比對的連接配接器,并且不是标準形式。

MIPI CSI2是來自移動裝置行業的标準,用于描述信号傳輸和軟體協定标準。很多SoC具有CSI接口,并且有可用于標明的相機子產品和專用SoC的驅動程式。但是,它們并不以統一工作方式,也沒有通用的驅動程式。是以,可能需要單獨修改驅動程式,并且與驅動程式的資料連接配接,可能需要在應用程式軟體側進一步修改,以實作圖像資料的收集。是以,CSI2并不是一個安裝後就可立即使用的解決方案。

雖然LVDS是高速資料傳輸廣泛使用的連接配接方式,具有明确定義的信号傳輸原理,但LVDS中也沒有用于圖像資料傳輸的标準化軟體協定。是以,也沒有現有的标準驅動程式。一些制造商提供補充系統,如基于專有協定的具有LVDS輸出的相機、以及具有相應适配驅動程式的處理闆,它們能夠直接協同工作。這種方式的優點是能實作一個易于內建的完整解決方案,但是使用者在硬體使用方面會受到一定的限制。

其他制造商提供開放的基于LVDS的相機輸出,其對于任何硬體內建都是免費的。在這種情況下,必須要建立一個驅動程式。實際上,這個信号處理可以在FPGA上執行。這種基于FPGA的圖像抓取算法可以從頭開始程式設計,但是也有一些工具可用于減少內建工作量。

例如,在這種FPGA上使用預開發的IP核。Basler公司具有LVDS接口的闆級相機dart,提供的開發套件中就包括一個帶有參考實作(FPGA程式設計)的處理闆,以為內建視覺裝置提供直接樣本。

相機配置

這些闆對闆連接配接的另一個方面是相機配置。控制信号可以通過各種總線系統(CAN、SPI或I²C)在SoC和相機之間交換。到目前為止,業界還沒有針對這個功能設定标準。目前哪些成像參數可以控制、以及如何控制,完全取決于相機制造商;即使支援或不支援GenICam的決定,也取決于制造商。但好消息是,所有這些總線系統都得到大多數SoC的支援。是以,使用适當的驅動程式,軟體可以直接通路相機進行配置和更改成像參數。

一個開放的軟體協定對于通路相機配置也很重要。Basler通過其pylon SDK中的I²C(作為的BCON的一部分實作LVDS接口)支援相機通路,進而提供簡化配置程式設計的标準化API。

對于某些應用而言,嵌入式視覺可能是一個有趣的解決方案;一些基于GigE或USB的應用,可以使用單闆計算機開發。由于這些類型的硬體很受歡迎,并且在價格、性能和品質标準(消費者和企業)方面選擇範圍較廣,這使得嵌入式視覺成了很多情況下的理想選擇。朗銳智科(www.loongv.com)多年來從事嵌入式開發及機器視覺方案服務,在嵌入式視覺技術具備豐富的經驗,能為客戶提供全面的技術支援及服務。

繼續閱讀