<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式視覺(jué)系統的構建模塊

嵌入式視覺(jué)系統的構建模塊

作者: 時(shí)間:2017-10-13 來(lái)源:網(wǎng)絡(luò ) 收藏

傳統視覺(jué)系統采用/處理器組合來(lái)實(shí)現,也有越來(lái)越多地使用將高性能處理器與相結合的片上系統來(lái)實(shí)現。在本文中我們將會(huì )介紹視覺(jué)系統的高級元素;如何簡(jiǎn)便快捷地使用軟件 API 和 IP 庫構建視覺(jué)系統,如何把算法開(kāi)發(fā)的增值部分添加到圖像處理鏈中。

本文引用地址:http://dyxdggzs.com/article/201710/365724.htm

從監控攝像頭等簡(jiǎn)單監控系統到更高級的應用,例如當今最新款汽車(chē)配備的高級駕駛員輔助系統 (ADAS)和先進(jìn)生產(chǎn)設施及工廠(chǎng)里使用的機器視覺(jué),嵌入式視覺(jué)系統已在一系列應用中得到使用。不論何種應用,嵌入式視覺(jué)系統都具備一些共同之處,總體來(lái)講它們可以分為下列三大類(lèi):

設備接口 — 提供到所選成像設備的接口。根據選擇的設備類(lèi)型,提供所需的時(shí)鐘、偏置和配置數據。這樣還可以從設備接收圖像數據,根據需要進(jìn)行解碼和格式化,以供圖像處理鏈做進(jìn)一步處理。

圖像處理鏈 — 通過(guò)設備接口接收圖像數據并進(jìn)行彩色濾波器陣列內插和色域轉換(即從彩色轉換到灰度)等操作。這部分仍處于我們對接收到的圖像使用大量算法的圖像處理鏈內。這些可以是降噪或邊緣增強等簡(jiǎn)單算法,也可以是對象識別或光流等復雜得多的算法。常見(jiàn)情況是在圖像處理鏈的上游部分調用算法實(shí)現方案。當然圖像處理鏈上游的實(shí)現復雜性取決于要實(shí)現的應用。而輸出格式化部分(即將處理后的圖像數據轉換為正確格式,以輸出到顯示器或是通過(guò)通信接口輸出)被稱(chēng)為下游部分。

系統監視與控制 – 這是一項獨立于設備接口和圖像處理鏈的類(lèi)別,它從兩個(gè)方面提供系統監視和控制。第一個(gè)位于設備內部,它提供:
圖像處理鏈的配置
圖像分析功能
在算法執行過(guò)程中根據要求更新圖像處理鏈

第二個(gè)是更廣泛的嵌入式視覺(jué)系統的控制與管理,它提供:

電源管理和圖像設備上電排序
執行自檢及其他系統管理功能
網(wǎng)絡(luò )支持通信或點(diǎn)對點(diǎn)通信
在首次成像操作前通過(guò) I2C 或 SPI 配置圖像設備

部分應用允許系統監視功能訪(fǎng)問(wèn)幀存儲器并在其中的幀上執行算法。在這種情況下系統監視能夠構成圖像處理鏈的一部分。

這三大類(lèi)別因為每個(gè)階段內在的難點(diǎn)不同,需要不同的實(shí)現方法。設備接口和圖像處理鏈都要求有能力處理帶寬高數據,從而在內部實(shí)現圖像處理鏈,在外部從系統傳輸圖像數據。而系統監視與控制要求能夠處理和響應通過(guò)通信接口接收到的命令并為外部通信提供支持。如果系統監視也要構成圖像處理鏈的組成部分,就需要一個(gè)高性能處理器。

照此,傳統嵌入式視覺(jué)系統采用/處理器組合來(lái)實(shí)現,也有越來(lái)越多地使用將高性能處理器與FPGA相結合的片上系統來(lái)實(shí)現。在我們演示上述幾個(gè)方面如何結合在一起之前,我們先來(lái)了解一下這三個(gè)類(lèi)別中每一個(gè)的不同難點(diǎn)。

設備接口

傳感器接口由應用所選擇的設備決定,大多數嵌入式視覺(jué)應用使用 CMOS 圖像傳感器 (CIS)。一般情況下這些傳感器使用 CMOS 并行輸出總線(xiàn),用控制信號提示行和幀的有效順序,或者使用速率更高的串行通信,實(shí)現較簡(jiǎn)單的系統接口,但會(huì )導致 FPGA 實(shí)現方案略顯復雜。與并行總線(xiàn)相比,這些串行數據流能通過(guò)更少數量的通道傳輸圖像,因為它們以快得多的數據速率運行,因此相比并行接口而言,能讓成像器支持更高的幀速率。為實(shí)現同步,常見(jiàn)的做法是讓包含圖像及其它數據字的數據通道與包含用于定義數據通道上的內容的代碼字的同步通道相結合。與數據通道和同步通道結合的還有一個(gè)時(shí)鐘通道,因為該接口采用源同步。這些高速串行通道一般實(shí)現為 LVDS 或微擺幅差分信號 (Reduced Swing LVDS),以降低系統噪聲和功耗。

不論輸出圖像格式如何,通常是 CIS 設備在獲取任何圖像之前需要由嵌入式視覺(jué)系統加以配置。這是由 CIS 設備的多功能性造成的。這種多功能性在提供強大的片上處理功能的同時(shí),也需要在輸出圖像前使用正確的設置進(jìn)行配置。這些接口對帶寬的要求沒(méi)有圖像傳輸要求的那么高,因此常常使用 I2C 或 SPI 接口標準。

因為所需的圖像數據帶寬較高,經(jīng)常把該接口實(shí)現在 FPGA 中,這樣更便于與圖像處理鏈集成。該 CIS 設備的配置接口一般使用 I2C 或 SPI,它們既可以用 FPGA 實(shí)現,也可以用支持這種接口的系統監視與控制處理器實(shí)現。

圖像處理鏈

圖像處理鏈由上下游元件和接口組成,像素數據通過(guò)設備接口輸出。但是接收到的像素的格式可能不能用于正確顯示圖像。我們可能需要進(jìn)行圖像校正,尤其是在使用彩色成像器的情況下。 為維持所需數據率下的吞吐量,圖像處理鏈常實(shí)現在 FPGA 中,以發(fā)揮其并行優(yōu)勢。這樣可以生成圖像處理流水線(xiàn),使得處理鏈的每一步都將并行實(shí)現,從而獲得更高的幀速率。但是對部分應用我們必須考慮時(shí)延,尤其是對高級駕駛員輔助系統 (ADAS) 這樣的系統而言。為有效建立圖像處理鏈,我們需要使用通用互聯(lián)協(xié)議作為圖像處理內核的基礎,從而方便處理 IP 的互聯(lián)。這樣可以帶來(lái)兩重好處:一是可以重復使用的庫;二是由于每個(gè) IP 核旨在根據定義的標準接收和發(fā)送數據,從而方便流水線(xiàn)的建立。這里有多種常用的協(xié)議可供選用,其中最常見(jiàn)的是 AXI,因其具有同時(shí)支持內存映射接口和流接口的靈活性。

圖像處理鏈內的典型處理階段包括:

彩色濾波器陣列 – 在CIS設備上用貝爾 (Bayer) 濾色片生成每個(gè)像素的彩色
色域轉換 – 從RGB轉換為YUV
色度重采樣 – 將 YUV 像素轉換為更高效的像素編碼
應用圖像校正算法,比如色彩校正或伽馬校正,或是進(jìn)行圖像增強或降噪
在下游側我們可以配置視頻輸出時(shí)序,然后在輸出到指定的目標前轉換回本機并行輸出視頻格式

部分系統也使用外部?jì)却?,例如DDR 的內存作為幀存儲,在 SoC 內部 DDR 內存也往往提供給 SoC 的處理器側。共享內存空間的能力讓系統監視側能通過(guò)千兆位以太網(wǎng)或 USB 傳輸數據,或成為圖像處理鏈的延伸。

系統監視

傳統上該功能實(shí)現在處理器內部,能夠處理相關(guān)命令,以按應用需求對圖像處理鏈進(jìn)行配置。為接收和處理命令,系統監視功能必須能夠支持從簡(jiǎn)單的 RS232、千兆位以太網(wǎng)、USB、PCIe 到 CAN 汽車(chē)專(zhuān)用接口等一系列不同的通信接口。

只要嵌入式視覺(jué)系統的架構能夠支持,我們就能使用處理器來(lái)生成圖像疊加信息,可供疊加在輸出圖像上。在能夠訪(fǎng)問(wèn)圖像數據的條件下,我們也能夠使用處理器對圖像開(kāi)展進(jìn)一步處理,或是收集統計數據(像素值分布柱狀圖等)。這樣系統監視就成為圖像處理鏈的一部分,讓開(kāi)發(fā)人員能利用各種開(kāi)源圖像處理庫,如OpenCV、OpenCL 和 OpenVX。

EVK使用實(shí)例

在闡明嵌入式視覺(jué)系統的基本元素后,下文將示范這些概念,展現如何綜合運用它們創(chuàng )建出可工作的系統。該實(shí)例將展示我們如何使用安富利 MicroZed 嵌入式視覺(jué)套件 (EVK)創(chuàng )建嵌入式視覺(jué)系統。

該套件使用安森美 Python 1300C 成像設備和賽靈思 Zynq 7020。 Python 1300C 是一個(gè) 1280 像素&TImes;1024行的色彩圖像傳感器,通過(guò) SPI 接口配置。此型號傳感器使用串行輸出實(shí)現高幀率,同時(shí)EVK 支持通過(guò) HDMI 接口輸出圖像到顯示器。

Zynq 7020 為嵌入式視覺(jué)系統的實(shí)現提供了一個(gè)極好的平臺,因為我們能使用 FPGA 架構中的可編程邏輯 (PL) 實(shí)現該設備的接口和圖像處理鏈。而 FPGA 架構中的 ARM A9雙核處理器(即處理系統 (PS))可用于根據我們的需要實(shí)現系統監視功能和圖像處理鏈延伸。

為開(kāi)發(fā)該應用,我們將用到兩個(gè) SoC 開(kāi)發(fā)工具。一個(gè)是賽靈思 Vivado 2015.4,另一個(gè)是賽靈思SDK 2015.4。在 Vivado 中我們將實(shí)現設備的接口、圖像處理鏈,在 Zynq 內配置 PS,建立 PS 到 PL 存儲器映射以完成下列操作:

根據圖像大小和幀速率所要求的參數以及所需操作在圖像處理鏈內配置 IP。為此我們將在 PS和 PL 間使用通用 AXI 互聯(lián),以 PS 為主設備。使用該接口我們能在 PS 和 PL 間實(shí)現 高達 1,200Mbps 的傳輸速率。

如有必要,將處理器的 DDR 內存置于圖像處理鏈中,以便處理器訪(fǎng)問(wèn)。為此我們將在 PL 和 PS 間使用高性能 AXI 互聯(lián),以 PL 為主設備。使用該接口我們能在 PL 和 PS DDR 內存間實(shí)現高達 2,400Mbps 的傳輸速率。

該演示將使用 HDMI 展示如何將圖像輸出到顯示器上。相當有用的是,EVK 制造商安富利為Python 1300C 提供了一個(gè)設備接口 IP 模塊,并為在 EVK 上接口輸出到 HDMI 設備提供了一個(gè) HDMI 輸出 IP 模塊。我們將本實(shí)例中使用所有這些模塊。在 Vivado 中我們可以使用 IPXact 格式把這些 IP 模塊添加到 Vivado IP 目錄中。

圖像處理鏈將與安森美設備接口并執行下列處理階段,除了 Python 1300C 和 HDMI IP 核,所有使用的 IP 核均來(lái)自 Vivado 中的標準賽靈思圖像處理 IP 庫(實(shí)際 IP 核的名稱(chēng)在下面顯示):

圖1:圖像處理流程


將來(lái)自 Python 接口 IP 的并行視頻和水平及垂直同步轉換為 AXIS Stream,以便我們能夠將其與后續的圖像處理IP核接口。 視頻輸入到 AXIS (Video in to AXIS)

彩色濾波器陣列使用貝爾濾色片為每個(gè)輸出像素賦予一個(gè) RGB 值(僅以 R、G 或 B 表示)。彩色濾波器陣列插值 (Color Filter Array interpolaTIon)

RGB 到 YUV色域轉換,將 RGB 色域轉換為 HDMI 驅動(dòng)器優(yōu)選的 YUV 色域輸出格式。RGB 到 YCRCB色域轉換器 (RGB to YCRCB Color-Space Convertor)

將 YUV 從 4:4:4 格式重新縮放為 4:2:2 格式。 色度重采樣 (Chroma Resampler)

配置視頻 DMA 以傳輸圖像幀到 PS DDR。 AXI VDMA

配置同一視頻 DMA,以從 PS DDR 讀取圖像幀。 AXI VDMA

將 AXI Stream 轉換回并行格式。 AXIS 到視頻輸出

為輸出視頻時(shí)序提供時(shí)序參考生成器。 視頻時(shí)序控制器

除了確保系統正常運行,我們還需要兩個(gè) AXI 互聯(lián)。一個(gè)是高性能 AXI 互聯(lián),另一個(gè)是通用AXI 互聯(lián),以及每個(gè)時(shí)鐘域所需的復位模塊。

圖像處理應用需要一系列的時(shí)鐘域,大部分時(shí)鐘域我們可以使用 Zynq 內部的 PS 提供給 PL的時(shí)鐘。就該應用而言,我們需要下列時(shí)鐘:

108 MHz – 這是以 1280x1024 分辨率和 60 Hz幀速率輸出圖像所需的像素時(shí)鐘速率。

75 MHz – 用于存儲器映射的 AXI 和 AXI Lite 接口。

150 MHz – 用于圖像處理鏈,也稱(chēng)為AXI Streaming時(shí)鐘。AXI Stream 時(shí)鐘的速率必須至少與像素速率相同。但是我們必須考慮處理鏈中的所有 IP 核的吞吐量。雖然大多數模塊能夠每時(shí)鐘周期處理一個(gè)像素,留出部分裕度并減少所需的緩存是明智的做法。

200 MHz – 提供給 Python 1300C CIS 設備作為基準。

為實(shí)現像素時(shí)鐘,我們需要使用時(shí)鐘向導來(lái)生成該 108MHz 像素時(shí)鐘,因為該時(shí)鐘需要極為準確的設置。雖然在用 PL 架構時(shí)鐘設置時(shí),75MHz和150MHz時(shí)鐘允許部分容差,但 200MHz時(shí)鐘也要求精確。與 108MHz 時(shí)鐘不同的是該時(shí)鐘可由 PL 架構時(shí)鐘精確生成。

所使用的 IP 模塊的時(shí)鐘結構如下表所示:

在 Vivavdo 方框圖編輯器中的整個(gè)實(shí)現方案如下面兩個(gè)圖所示。這兩個(gè)圖分別顯示的是圖像處理鏈的上游和下游。您還能夠看到使用通用 AXI 互聯(lián)和高性能 AXI 互聯(lián)實(shí)現的 ARM 內核處理器的互聯(lián)情況。

圖2:EVK實(shí)例設計 — 突出顯示的是上游圖像處理鏈

圖3:EVK實(shí)例設計 — 突出顯示的是下游圖像處理鏈

一旦我們完成設計驗證,并為AXI外設分配地址(可自動(dòng)完成)后,我們就能在 Vivado 2015.4 中構建硬件并將其導入到 SDK 2015.4 軟件開(kāi)發(fā)環(huán)境中。我們需要在該環(huán)境中編寫(xiě)一些簡(jiǎn)單軟件,讓系統啟動(dòng)并運行。

在 SDK 內部,我們不僅需要在 Zynq 內配置設計,還需要在使用設計之前在 EVK 上配置部分元素。記住在本實(shí)例中 PS 起著(zhù)系統監視和控制功能,因此必須對整個(gè)嵌入式視覺(jué)系統進(jìn)行配置,而不僅僅是在 Zynq 中配置 Vivado 設計。

我們需要開(kāi)發(fā)用于配置下列內容的軟件:

使用SPI 接口的 Python 1300C 攝像頭
AXI Python 1300C 接口模塊
AXI VDMA,從 DDR 內存讀取和向 DDR 內存寫(xiě)入幀
AXI 彩色濾波器陣列
用于 AD7511 的 HDMI 輸出設備。該設備使用 I2C 進(jìn)行配置
I2C 多路復用器及其連接的相關(guān)外設
用于控制 Python 1300C 設備電源軌的 I2C IO 擴展器

該 EVK 使用 Zynq PS I2C 控制器對 HDMI 輸出設備進(jìn)行配置,來(lái)對 Python 設備供電。安富利還向我們提供了能用來(lái)控制 I2C 并進(jìn)行如下配置的 API:

ADV7511 – 用于 HDMI 輸出的 API
CAT9554 – 用于位于攝像頭模塊上的 I2C I/O 擴展器的 API
TCA9548 – 用于位于 EVCC 上的 I2C 多路復用器的 API
PCA9534 – 用于位于 EVCC 上的 I2C IO 擴展器的 API
OnSemi_Python_SW – 用于 Python 1300C 的 API
XAXIVDMA_EXT – 用于配置 VDMA 的 API
XIICPS_EXT – 用于驅動(dòng)外部 I2C 的 API

我們所需做的就是將這些 API 與賽靈思軟件 API 耦合,用于圖像處理鏈中的 IP,這樣我們就能快速創(chuàng )建軟件可執行文件。要創(chuàng )建軟件應用,我們需要將硬件設計導入到 SDK 中,為硬件創(chuàng )建板級支持包 (BSP)。該 BSP 內置所有所需的賽靈思 API,在與安富利的 API 耦合后,就能夠驅動(dòng)圖像處理鏈中的硬件和 Zynq。

軟件本身需要執行下列步驟:

初始化所有的 AXI 外設

為圖像傳感器軌加電



對安森美 Python 1300C、彩色濾波器陣列和 VDMA 進(jìn)行配置

完成這些步驟后,當軟件運行在 EVK 上您將看到圖像正被輸出到您所選定的 HDMI 監控器上,如下圖所示。

圖4:使用演示系統抓取的居民區場(chǎng)景的一幀圖像

結論

在本文中我們介紹了嵌入式視覺(jué)系統的高級元素;如何簡(jiǎn)便快捷地使用軟件 API 和 IP 庫構建嵌入式視覺(jué)系統,如何把算法開(kāi)發(fā)的增值部分添加到圖像處理鏈中。



關(guān)鍵詞: FPGA 嵌入式

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>