基于視覺的系統在很多行業和應用領域中已變得非常普遍。實際上,我們中的很多人每天就攜著一個嵌入式視覺系統,比如在我們的智能手機中。這些智能設備不僅能夠捕獲圖像和錄制視頻,而且還能執行增強現實的應用,這些都展示了嵌入式視覺技術是如何被普遍地廣為接受。
處理能力、存儲器密度和系統集成度的提升,促進了嵌入式視覺在傳統和新興應用領域( 圖 1所示實例)的增長。這也使得嵌入式視覺在消費類、產業和政府領域被廣泛接受,因而將在十年內實現顯著增長。表 1 列出了一些嵌入式視覺的高增長領域,其中有一些顯而易見,有些則不是很明顯。
什么是嵌入式視覺?
嵌入式視覺系統包含從所選成像傳感器接收光到系統輸出的整個信號鏈。系統輸出是指從圖像中提取的經過處理或未經處理的圖像或信息,并提供給下游系統。當然,嵌入式系統架構師負責根據系統要求確保端到端性能。
為此,嵌入式視覺系統架構師需要熟悉與傳感器和后處理系統有關的各種概念和技術。本文作為高級入門手冊,旨在讓讀者對這些技術和概念有一個基本了解。
首先需要熟悉電磁波譜以及希望系統運行的光譜域。人眼只能看到 390nm(藍光)至 700nm(紅光)波長之間的光譜,也就是通常所指的可見光譜;成像設備憑借所采用的技術,則能捕獲到更寬泛波長的圖像,包括 X 光、紫外線、紅外線以及可見光譜。
在近紅外光譜及以下范圍,我們可以使用電荷耦合器件(CCD)或 CMOS (互補金屬氧化物半導體)圖像傳感器 (CIS);到了紅外光譜范圍,需要使用專用的紅外檢測器。紅外光譜范圍之所以需要專用傳感器,部分原因在于芯片成像器(如 CCD 或 CIS)需要的激發能。這些器件通常需要 1eV 的光子能量來激發一個電子,然而在紅外范圍,光子能量介于 1.7eV-1.24meV 之間,因此紅外成像器應基于 HgCdTe 或 InSb。這些器件需要更低的激發能量,經常與 CMOS 讀出 IC(即 ROIC)配合使用,以控制和讀出傳感器。
最常見的兩種檢測器技術分別是 CCD 和 CIS
● 電荷耦合器件被視為模擬器件,因此要集成到數字系統中就需要使用片外 ADC 以及所需模擬電壓電平下的時鐘生成功能。每個像素存儲由光子產生的電荷。大多數情況下將像素排列成 2D 陣列,組成多個行,每行包含多個像素。讀出 CCD 時通過行傳輸將每行并行傳遞到讀出寄存器,再通過讀出寄存器將每行串行讀出。這個寄存器讀出過程中,電荷轉換為電壓。
● CMOS 成像傳感器能實現更緊密集成,使 ADC、偏置和驅動電路都集成在同一晶片上。這大大降低了系統集成要求,同時也提高了 CIS 設計的復雜性。CIS 的核心是有源像素傳感器 (APS),其中每個像素同時包含光電二極管和讀出放大器,因此,與 CCD 不同,CIS 能夠讀出陣列中的任意像素地址。
盡管大多數嵌入式視覺都采用 CIS 器件,但是 CCD 仍用于非常注重性能的高端科研應用領域。本文的要點內容適用于這兩種成像技術。
傳感器考慮因素
選擇正確的傳感器需要了解系統要求,為此,必須從器件的幾個方面加以考慮。
第一個要求是我們必須確定所需的分辨率,也就是每行有多少個像素,檢測器需要多少行。最終應用對此起決定作用,例如,科研用的天文學應用可能需要高分辨率的 2D 器件,而工業檢查成像可能僅需要行掃描方案。
● 行掃描器件在 X 方向上包含單行(有時是幾行)像素。如果通過相機或目標的移動生成 Y 方向上的圖像,通常采用這類器件。它們用于檢查或光學字符識別 (OCR) 領域。有些領域需要采用時域積分 (TDI) 線掃描傳感器。這類傳感器在 X 方向包含多行,隨著目標移動,像素值也從一個向下一個移動,隨著電荷在時間上積分,可實現更靈敏的檢測。不過,TDI 需要在行傳輸與目標移動之間進行同步,以防出現模糊和圖像缺陷。由于只有幾行需要讀出,因此幀率可以非常高。
● 2D 陣列包含多個行,每行有多個像素,陣列大小是決定傳感器最大幀率的一個因素。通常,為了實現更高的幀速率,2D 器件并行讀出多個像素。2D 器件還能執行窗口操作(有時稱為興趣區域),即只讀出特定的感興趣區域,以獲得更高幀速率。這類器件可用于眾多領域,而且信息包含在 2D 圖像中,例如高級駕駛員輔助系統 (ADAS)、監控或科研領域。
確定成像器格式以及所需分辨率之后,我們還必須考慮像素間距。像素間距定義像素的大小,決定能收集多少入射光子產生的電荷。因此,較小的像素間距意味著在積分周期內(傳感器暴露在圖像中的時間)收集較少的電荷。如果像素間距較小,意味著捕捉圖像需要更長的積分時間,這會影響傳感器捕捉快速移動圖像的能力,并降低低光拍照性能。
確定傳感器格式后,我們必須考慮使用哪種技術,CCD、CMOS 還是更為專業的技術。這里的重要參數是量子效率 (QE);該參數是器件通過光子產生電子的效率。通常,我們希望在有用光譜上實現盡可能高的 QE,這對于低光應用也具有重要意義。影響器件 QE 的因素有三個:吸收、反射和透射。QE 降低的一個主因是器件結構。器件結構可能導致像素被傳感器中的電路屏蔽,例如金屬線或多晶硅柵極電路等。這些結構會吸收或反射光子,從而降低 QE,因此要選好傳感器。
● 前照式 — 對于這類器件,光子以上面的介紹的傳統方式照射器件的前面,像素可能被遮蔽,QE 相應降低。
● 背照式 — 這些器件經過后期處理,將器件的后部削薄,以便在后面接收光照,從而不受其他設計元件的阻擋。薄型背照式器件能實現最佳 QE。
我們還必須考慮圖像傳感器中所允許的噪聲;有三個主要方面需要考慮。
● 器件噪聲 — 這在本質上講是暫時的,包括散射噪聲以及輸出放大器和復位電路產生的噪聲。
● 固定圖形噪聲(FPN) — 呈空間分布,由相同光照強度下像素的不同響應引起。FPN 通常由每個像素的不同偏移和增益響應引起;偏移部分通常稱為暗信號響應非均勻性 (DSNU),增益部分稱為圖像響應非均勻性 (PRNU)。有多種方法可以補償 FPN,最常見的方法是輸出信號的相關雙采樣法。
● 暗電流 — 這由圖像傳感器中的熱噪聲引起,甚至在無光照情況下也會出現。暗信號對最終圖像質量的影響取決于幀速率;較高幀速率下影響不大,然而,隨著幀速率降低(如科研應用)影響會很明顯。由于暗電流與溫度有關,因此在需要降低暗電流的情況下,通常做法是利用冷卻器件(例如 Peltier)來降低成像器件的工作溫度。
理解了成像器的噪聲模式后,我們就能確定能實現多大的信噪比 (SNR)。
確定器件的噪聲性能后,就可以確定圖像傳感器所需的動態范圍。動態范圍代表傳感器捕獲光照強度范圍較大的圖像的能力,單位是 dB 或以比率形式給出。這意味著圖像同時包含高照度區和暗區。
傳感器的實際動態范圍由像素的滿井容量決定,也就是像素飽和前所能承載的電子數量。將容量除以讀出噪聲,能方便地將比率轉換為以 dB 為單位的值。
通常利用光子轉換曲線測試法來確定動態范圍,畫出噪聲與容量的關系曲線。
如果器件具有數字輸出,可通過下面的公式利用輸出端比特數計算該值。
然而,這并不能確保器件可以實現這樣的動態范圍;只是說明總線寬度所能代表的潛在范圍,而沒有考慮傳感器性能因素。
IO 標準也很重要,不僅用來輸出像素數據,還用來輸出命令和控制接口。這與幀速率有關,例如 LVCMOS 接口不適合高幀速率應用,但可用于簡單的監控攝像頭。隨著幀速率、分辨率和每像素比特數的增加,成像器件的趨勢正朝著采用 LVDS 系列或 SERDES 技術的專用高速串行鏈路發展。
現在我們已經介紹了圖像傳感器的多個重要方面,另一個尚未考慮的因素是成像器是彩色還是單色傳感器。無論選擇哪種,都取決于應用場合。
● 彩色傳感器 — 需要在每個像素上使用貝爾圖形,在一條線上交替變換紅色和綠色,下一條線上交替藍色和綠色(綠色用得多是因為人眼對綠顏色波長更敏感)。這意味著要對接收到的光子進行濾波處理,使每個像素只接收具有所需波長的光子。我們可對圖像進行后處理,用不同顏色圍繞像素以重構每個像素上的顏色,從而確定像素顏色,而且不會降低圖像分辨率。彩色傳感器會使重構和輸出圖像所需的圖像處理鏈變得復雜化。貝爾圖形確實會導致分辨率降低,但是沒有想象的那么差,通常降幅為 20%。
● 單色 — 由于圖像陣列上沒有貝爾圖形,因此每個像素能接收所有光子。這樣可增大圖像靈敏度,使圖像的讀出更簡單,因為不存在顏色重建所需的去馬賽克效應。
經選擇我們決定使用 CIS 器件,而實際上這些屬于復雜的專用片上系統。因此,我們還必須考慮以下關于讀出模式和積分時間的問題。
● 積分時間 — 這是讀出之前像素的曝光時間。在比較簡單的 CCD 系統上,需要接近電子裝置在器件外執行該時序。然而對于 CIS 器件,積分時間可通過命令接口由寄存器來配置,然后 CIS 器件針對常用的兩種讀出模式精確地執行積分時間。
● 全局快門模式 — 這種模式下,所有像素同時接受光照,然后讀出。此模式下由于所有像素同時讀出,因此會增大讀出噪聲。如果要對快速運動物體拍攝快照,適合使用該模式。
● 滾動快門模式 — 這種模式下,進行逐行曝光和讀出。這種模式的讀出噪聲較小,然而,在捕獲快速運動物體方面不如全局快門模式。
系統開發
選擇了合適的傳感器之后,在進行系統開發的過程中還需要考慮和解決諸多挑戰。
除了技術挑戰以外,開發系統時還會面對時間壓力,確保在既定時限內將產品推向市場。我們要根據時間限制,重點弄清楚開發過程中的哪部分活動能實現附加價值,然后做出正確選擇,分清哪部分應該自己開發(增值活動),哪部分可以購買商用現成產品 (COTS) 或者分包出去。重點關注增值活動并利用硬件、軟件和 FPGA 層面的 IP 模塊,是滿足上市時間要求的重要促成因素之一。
除了上市時間要求,嵌入式視覺系統開發過程中還要經常考慮尺寸、重量、功耗和成本 (SWAP-C) 要求。究竟哪種要求占主導,取決于具體應用領域,例如手持設備在功耗方面就要比駕駛員輔助系統更為嚴格。然而,對于高級駕駛員輔助系統來說,由于要生產幾百萬臺,因此方案成本就成了主導因素。
要在尺寸、重量、功耗和成本方面獲得很好的效果,應該在傳感器和處理系統中實現更為緊密的系統集成,即使用數量更少但功能更強的集成組件。
每種應用領域都具有不同增值點以及不同的尺寸、重量、功耗和成本考量,因此幾乎所有嵌入式視覺系統都需要我們實現所謂的圖像處理流水線。這種流水線可與所選的傳感器建立接口連接,并且執行所需的操作以生成適合進一步加工或直接在網絡上傳輸的圖像。基本的圖像處理流水線包含
● 照相機接口 — 接收來自傳感器的原始圖像
● 顏色濾波陣列 — 重建像素顏色
● 色彩空間轉換 — 轉換成針對編解碼器的正確色彩空間。
● 輸出格式化 — 與輸出介質進行接口連接
在圖像處理流水線中對接收的圖像執行和應用算法。所實現應用不同,算法也會不同;不過,有一些常用的圖像處理算法可用來提高對比度,檢測圖像中的特性、目標或運動,或者校正模糊圖像。
該在一個框架中開發這些算法,以便我們以最短時間將產品推向市場,并鼓勵重復使用,降低非重復性和重復性工程成本。有幾種現成的框架我們可以考慮使用。
● OpenVX — 用于開發圖像處理應用的開源應用程序。
● OpenCV — 開源計算機視覺,多個面向實時計算機視覺的庫,基于 C/C++
● OpenCL — 基于 C++ 的開源計算機語言,用于開發 GPU、FPGA 等器件中常見的并行處理應用。
● SDSoC — 賽靈思的一款設計環境,借助該環境開發人員可在 Zynq 或 UltraScale+ MPSoC 器件的 ARM 處理系統中最初實現用 C/C++ 編寫的算法,分析代碼庫特性以找出性能瓶頸,然后利用賽靈思高層次綜合功能將這些瓶頸轉換到硬件支持的 IP 核,并在器件的可編程邏輯 (PL) 部分運行。
采用 FPGA 或 All Programmable SoC 方案時,將這些框架與 HLS 結合使用,能夠高效開發出嵌入式視覺應用,并通過硬件在閉環中快速演示。
圖像經過處理流水線后,數據從系統的輸出方式也很重要,我們有三種選擇。
● 利用視頻圖形陣列 (VGA)、高清多媒體接口 (HDMI)、串行數字接口 (SDI) 或 DisplayPort 等標準將圖像輸出到顯示器。很多電動車采用觸摸式顯示屏對系統進行控制和配置。
● 將圖像或從圖像中提取的信息傳送到另一個系統,該系統像云處理應用那樣使用圖像或提取出的信息
● 將圖像存儲在非易失存儲介質中,供以后訪問。
對于絕大多數方式而言,在完成成像鏈后,我們都需要確定圖像格式化方式,以便使用。此時,我們需要決定是否使用諸如 H.264(MPEG-4 Part 10 高級視頻編碼)或 H.265(高效率視頻編碼)等行業標準圖像/視頻壓縮算法對圖像進行編碼,這些實現方案通常稱為編解碼器。編解碼器能提高通信和網絡帶寬的使用效率,或降低實現高保真度所需的存儲空間,因為編碼通常存在較大失真 。如果因使用編解碼器導致失真度無法接受,還可以按原始格式發送和存儲圖像,或者以無損格式進行編碼。
大多數編解碼器所使用的色彩空間都與圖像傳感器輸出的色彩空間(前提是系統使用彩色器件)不同。嵌入式視覺中常用的色彩空間是:
● 紅、綠、藍 — 包含 RGB 信息作為圖像傳感器的輸出,常用作 VGA 等簡單接口的輸出
● YUV — 包含亮度 (Y) 和色度 (U 和 V),該色彩空間用于大多數編解碼器和一些顯示標準。常用的 YUV 格式為 YUV4:4:4 和 YUV4:2:2。兩種格式的區別在于:4:4:4 格式下,每像素由 8 位表示,得到 24 位像素。在 4:2:2 格式下,U 值和 V 值在像素之間共享,得到 16 位像素,可節省存儲空間。
另一個對圖像處理鏈和 SWAP-C 具有很大影響的決策是:大部分圖像處理鏈應該在哪實現:
● 在邊緣,即在嵌入式視覺系統之內。這樣會提高系統的功耗和處理/存儲要求,但能夠實現更快的響應。在邊緣處理將在大部分嵌入式應用(例如高級駕駛員輔助、機器視覺等)中成為主導。
● 在云中,這需要嵌入式視覺系統捕獲圖像,并且利用網絡技術將圖像發送到云。可在云中處理的典型應用包括醫療成像或科研應用。這類應用中,處理非常密集,且不需要實時結果。
為實現處理鏈,處于嵌入式視覺系統核心的處理內核不僅要能控制所選的圖像傳感器,還要能接收和實現圖像處理流水線,并通過指定網絡基礎設施傳送圖像或發送到選定的顯示器。考慮到這些嚴苛要求,因此經常要選擇 FPGA,或者越來越多的情況下需要使用 All Programmable 片上系統,例如 Zynq 器件。
Zynq 器件將兩個高性能 ARM A9 處理器與 FPGA 架構相結合。這樣使得處理系統 (PS) 可用來通過 GigE、PCIe 或 CAN 等接口與主機系統通信,同時執行系統的一般管理和日常事務。器件的另一半,即可編程邏輯 (PL) 可用來接收和處理圖像,充分利用 FPGA 架構的并行處理特性。如果要求通過網絡基礎設施傳送圖像,那么可使用 Zynq 中的直接存儲器訪問 (DMA) 控制器高效地將圖像數據從 PL 移動到 PS DDR 存儲器。圖像到了 PS DDR 存儲器內,可利用所選傳輸介質的 DMA 控制器進一步訪問。
當然,一旦圖像處在 PS DDR,高性能 A9 處理器也可提供進一步的處理操作。Zynq 架構的特點在于還可將處理后的圖像從 PS DDR 移回 PL 中的圖像流水線。
傳感器融合
很多嵌入式視覺系統還要求能夠集成更多傳感器數據以更好地感知環境。這包括使用很多同類傳感器(同類傳感器融合)擴大視場,例如高級駕駛員輔助系統的全景功能;或者整合多個不同類型的傳感器(異構傳感器融合)提供可見光譜下無法看到的視覺內容,例如在常規圖像傳感器數據上疊加紅外信息。
很多情況下,需要將嵌入式視覺應用的輸出與其他傳感器數據進行融合,使產生的圖像包含多個不同傳感器的信息。最簡單的傳感器融合應用是將不同頻譜的圖像相結合,例如可見光與紅外線融合以實現更好的夜視效果。
傳感器融合的另一個更為復雜的用途是將成像系統、全球導航衛星系統 (GNSS)、數字地圖信息以及不同波長下運行的其他傳感器(例如雷達)進行融合,以確定另一輛汽車的相對位置,從而實現避撞功能。
由于要將不同系統融合在一起,并提取信息,因此傳感器融合對處理器的要求會非常高。All Programmable 片上系統解決方案能夠與多個傳感器建立接口連接,并行處理信息,增大數據吞吐量,因而具有多種顯著優勢。
結論
嵌入式視覺已變得非常普遍,其市場滲透率和應用范圍將在下個十年里只增不減。
在傳感器和系統層面,有多個因素必須加以考慮。有多種技術、框架和器件可用來實現嵌入式視覺系統。
評論