《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > 教程:基于FPGA圖像處理的視頻流實時處理系統(tǒng)

教程:基于FPGA圖像處理的視頻流實時處理系統(tǒng)

2022-10-24
來源:FPGA技術(shù)江湖
關(guān)鍵詞: 智能相機 Xilinx 圖像處理 FPGA

  第一部分 設(shè)計概述

  1.1 設(shè)計目的

  本設(shè)計針對低照度高動態(tài)情況下,單幀圖像曝光不足導(dǎo)致的圖像噪聲大、色彩失準(zhǔn)等問題,,在傳統(tǒng)的 HDR 多幀融合(Frames Merging)方法上,,采用層次化的圖像配準(zhǔn)(Image Alignment)方案、自適應(yīng)白平衡(White Balance)與色調(diào)映射(Tone Mapping)策略,,在降低圖像噪聲,、真實還原景物色彩的基礎(chǔ)上,極大 抑制了多幀融合時常見的運動偽影(MoTIon ArTIfact)現(xiàn)象,。本設(shè)計采用 FPGA 進(jìn) 行圖像處理加速后,,可以實現(xiàn)視頻流的實時處理,視頻流經(jīng)過攝像頭輸入后,,由 FPGA 進(jìn)行處理并以較低的時延經(jīng) HDMI 信號輸出,。

  1.2 應(yīng)用領(lǐng)域

  本設(shè)計可用于手持?jǐn)z像系統(tǒng)(攝像機、智能手機)圖像,、視頻流的 HDR 處 理,,可用于低照度情況下固定監(jiān)控系統(tǒng)的視頻流 HDR 處理,可用于線上直播系統(tǒng)的視頻流 HDR 處理,。

  1.3 主要技術(shù)特點

  采用層次化的圖像配準(zhǔn)方案,,對輸入的拜爾格式(Bayer Mosaic)原始圖像 進(jìn)行處理,生成四層高斯圖像金字塔(Gaussian Pyramids),。較高層次的圖像配準(zhǔn)結(jié)果將作為低層次配準(zhǔn)的預(yù)偏移,。這一過程極大優(yōu)化了算法效率,其結(jié)構(gòu)化的特 點為并行處理提供了便利,。

  采用有權(quán)重的圖像融合方案,,對輸入的多幀圖像,經(jīng)圖像配準(zhǔn)后計算相應(yīng)圖像對(Image Pairs)的 L1 殘差,,得到各融合幀(Alternate Frame)相對參考幀 (Reference Frame)的權(quán)重,,有效地降低了配準(zhǔn)失誤造成的運動偽影。

  采用自適應(yīng)白平衡及色調(diào)映射策略,在低光照情況下最大程度還原了景物的 色彩,;在保證較高信噪比的情況下,,提高了主要景物的亮度,。

  利用 FPGA 進(jìn)行硬件加速,在 Pynq-z2 的 Python 開發(fā)環(huán)境中掛載封裝有 IP 加速核的 Overlay,極大提高了運行速度,,能夠?qū)崟r處理,。

  1.4 關(guān)鍵性能指標(biāo)

  相機感光度(ISO),、快門時間(Shutter TIme),、融合幀數(shù);

  圖像融合處理時間,、視頻流處理延時,;

  圖像信噪比、色彩還原度,、細(xì)節(jié)清晰度,、紋理清晰度(人眼觀察)。

  1.5 主要創(chuàng)新點

 ?。?) 低照度高動態(tài)圖像處理,;

  (2) 層次化的圖像配準(zhǔn),;

 ?。?) 有權(quán)重的圖像融合降噪;

 ?。?) 自適應(yīng)白平衡與色調(diào)映射策略,;

  (5) FPGA 硬件加速,;

 ?。?) 低時延視頻流處理。

  第二部分 系統(tǒng)組成及功能說明

  2.1 整體介紹

081.JPG

  PYNQ-Z2 是基于 Xilinx ZYNQ-7000 FPGA 的平臺,,除繼承了傳統(tǒng) ZYNQ 平 臺的強大處理性能外,,還兼容 Arduino 接口與標(biāo)準(zhǔn)樹莓派接口,這使得 PYNQZ2 的具有極大的可拓展性與開源性,。PYNQ 是一個新的開源框架,,使嵌入式編 程人員能夠在無需設(shè)計可編程邏輯電路的情況下即可充分發(fā)揮 Xilinx Zynq All Programmable SoC(APSoC)的功能。與常規(guī)方式不同的是,,通過 PYNQ-Z2,,用戶可以使用 Python 進(jìn)行 APSoC 編程,并且代碼可直接在 PYNQ-Z2 上進(jìn)行開發(fā) 和測試,。通過 PYNQ-Z2,,可編程邏輯電路將作為硬件庫導(dǎo)入并通過其 API 進(jìn)行編程,,其方式與導(dǎo)入和編程軟件庫基本相同,。

  Xilinx Zyng All Programmable device 是一種基于雙核 ARM cortex - a9 處理 器(稱為處理系統(tǒng)或 PS)的 SOC,,集成了 FPGA fabric(稱為可編程邏輯或 PL)。PS 子系統(tǒng)包括許多專用外設(shè)(內(nèi)存控制器,、USB,、Uart、IIC,、SPI 等),,并可以擴展額外的硬件 IP,其封裝在 PL 的 Overlay 中,。Overlay(或 Hardware Libraries,, 硬件庫)是可編程/可配置的 FPGA 設(shè)計,能將用戶設(shè)計的應(yīng)用從 Zynq 的處理系 統(tǒng)(PS 端)擴展到可編程邏輯(PL 端),。Overlay 可用于加速軟件程序,,或為特定程序定制硬件平臺。

 082.JPG

  本設(shè)計的硬件平臺整體結(jié)構(gòu)如上圖所示,。為了對低照度高動態(tài)下的多幀融合 圖像處理系統(tǒng)進(jìn)行硬件加速,,我們利用 Vivado HLs 工具,自主設(shè)計了 DownSample,、Alignment,、Merge、raw2rgb 等 IP Cores,,并通過 AXI 總線與處理器核(PS 端)及存儲器接口相連,。在 PYNQ-Z2 的設(shè)計流中,這些 IP 被封裝成 Overlay 并構(gòu)造 Python API 驅(qū)動,,以供 PYNQ-Z2 中的 Python 開發(fā)環(huán)境(JupyterNotebook)調(diào)用,。

  我們調(diào)用了 PYNQ-Z2 自有的 HDMI Overlay 進(jìn)行處理流程及結(jié)果的顯示。此外,,PYNQ-Z2 為我們提供了豐富的存儲單元,、外設(shè)模塊與通信接口。這些存儲單元被用來存儲圖像數(shù)據(jù)及各類處理中間結(jié)果,,而各類外設(shè)模塊及通信接口則 被用來進(jìn)行系統(tǒng)調(diào)試與控制的過程監(jiān)控,。

  083.JPG

  圖像處理系統(tǒng)的工作流程如上圖所示。相機在低曝光的情況下拍攝多幀(比 如說,,6 幀)圖片,,這些原始圖片(RAW images)由相機 CCD 或 CMOS 圖像傳感器生成,其像素值以拜耳陣列的形式存儲,。我們首先將原始各輸入幀進(jìn)行一次系數(shù) 2 的均值下采樣,,兩次系數(shù) 4 的高斯下采樣,,得到一個四層的高斯圖像金字塔?;谶@個高斯圖像金字塔,,我們進(jìn)行層次化的圖像配準(zhǔn)。配準(zhǔn)的結(jié)果將作為圖像融合的參考,,同時結(jié)合備選幀與參考幀的 L1 殘差作為融合權(quán)重,,進(jìn)行圖像 融合。融合后的圖像進(jìn)行去馬賽克及伽馬降噪,,并進(jìn)行自適應(yīng)的白平衡及色調(diào)映 射等操作,,將單通道的融合圖像轉(zhuǎn)為三通道(對應(yīng) RGB 色彩空間)輸出圖像, 最終輸出與原始圖像同分辨率的處理結(jié)果,。

  均值下采樣與高斯下采樣處理被封裝在名為 DownSample 的 IP core 中,,層次化圖像配準(zhǔn)處理被封裝在名為 Alignment 的 IP core 中,圖像融合處理被封裝在名為 Merge 的 IP core 中,,去馬賽克,、白平衡、色調(diào)映射等處理被封裝在名為 raw2rgb 的 IP core 中,。這些 IP cores 掛載到 AXI 總線上,,經(jīng)封裝為 Overlay 提供 Python API 給 PYNQ-Z2 的 Jupyter-Notebook。

  2.2 各模塊介紹

  下采樣模塊(DownSample)

  下采樣模塊為后續(xù)的層次化圖像配準(zhǔn)處理提供四層高斯圖像金字塔,。四層高斯金字塔的最底層為全分辨率的拜耳原始圖像(我們稱該層為 layer_raw),,其像素點以拜耳陣列的形式排布,如下圖所示,。

 084.JPG

  我們首先進(jìn)行系數(shù) 2 的均值下采樣,,直觀上將一個 2*2 像素的“方格”取均值下采樣為一個像素。下采樣后的結(jié)果類似于一個單通道的灰度圖像,,但實際上綠色通道對下采樣后的結(jié)果影響較大,。我們稱該層為 layer_0。

  layer_0 隨后進(jìn)行兩次系數(shù) 4 的高斯下采樣,。卷積核函數(shù)見附錄,。該卷積核 函數(shù)的大小為 5*5 像素,以 4 像素為步長在被采樣的圖像上以后,,對該圖像進(jìn)行下采樣,。高斯下采樣的結(jié)果將在一定程度上保留了采樣前圖像的低頻信息,而圖 像細(xì)節(jié)則被丟失,。直觀上圖像的大致輪廓被保留,,圖像尺寸更小,細(xì)節(jié)模糊不清,。兩次高斯下采樣的結(jié)果分為稱之為 layer_1 與 layer_2,。

  經(jīng)下采樣模塊處理后的結(jié)果可以用下圖說明,。

085.JPG

  圖像配準(zhǔn)模塊(Alignment)

  圖像配準(zhǔn)以圖像對(Image Pairs)的形式,在融合備選幀(Alternate Frame) 與參考幀(Reference Frame)之間展開,。對參考幀中的每一個 16*16 像素的圖塊 (TIle),,尋找其在融合備選幀中使兩者 L1 殘差最小圖塊,兩個圖塊位置上的偏 移即為配準(zhǔn)結(jié)果,。其 L1 殘差的計算方式可用下式表達(dá),。

086.JPG

  式中的求和對一個圖塊內(nèi)的所有像素進(jìn)行,,配準(zhǔn)的目的是對參考幀中的每一個圖 塊,,尋找其在每一個備選幀中的對應(yīng)圖塊,使得上式的結(jié)果最小,。此時兩個圖塊 的坐標(biāo)偏移量即為配準(zhǔn)結(jié)果,。

  在保證圖像間偏差不大的前提下,圖塊配準(zhǔn)的搜索范圍可以限定圖塊原始位 置周圍的若干像素內(nèi),。為了進(jìn)一步提高配準(zhǔn)的效率,,我們采用層次化的配準(zhǔn)方案:在上層低分辨率圖像中進(jìn)行預(yù)配準(zhǔn),配準(zhǔn)結(jié)果將作為下層圖像配準(zhǔn)的預(yù)偏移 (Previous Offset),。各層圖像以圖塊為基本單位,,在預(yù)偏移的基礎(chǔ)上進(jìn)行小范圍的配準(zhǔn)。由此,,上述殘差計算式可以重新表達(dá)如下,。

 087.JPG



更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<

mmexport1621241704608.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。