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