国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于PYNQ 的運動目標(biāo)檢測系統(tǒng)

2023-12-18 05:54:06陳支鵬
電子設(shè)計工程 2023年24期
關(guān)鍵詞:圖像處理灰度函數(shù)

陳支鵬,張 霞,白 鵬,李 超

(西安郵電大學(xué)電子工程學(xué)院,陜西西安 710121)

運動目標(biāo)檢測被廣泛應(yīng)用于智能安防、自動駕駛、重點場所監(jiān)控(如博物館、銀行、危險品庫房等)等眾多領(lǐng)域,其檢測結(jié)果可進一步用于目標(biāo)跟蹤、目標(biāo)行為識別等[1-2]。

傳統(tǒng)的運動目標(biāo)檢測方法包括幀間差分法[3]、背景減除法[4]、光流法[5],三種方法各有其優(yōu)缺點。其中,幀間差分法計算復(fù)雜度低、速度快、對光照變化不敏感,能夠滿足嵌入式終端設(shè)備對實時性的要求[6]。近年來,各種運動目標(biāo)檢測優(yōu)化算法層出不窮,且已經(jīng)在CPU 平臺上實現(xiàn)了部署。但由于CPU自身設(shè)計架構(gòu)的局限性,其難以支持并行計算從而導(dǎo)致處理效率存在明顯不足。現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)能夠在靈活性、性能、功耗、成本之間達(dá)到較好的平衡,因此在邊緣計算的嵌入式系統(tǒng)中得到廣泛應(yīng)用[7-8]。相較于CPU,F(xiàn)PGA 并行計算能力可提升運算速率并降低時延。相較于ASIC,F(xiàn)PGA 具有開發(fā)周期短、靈活性強、性價比高的優(yōu)勢。相較于GPU,F(xiàn)PGA 的功耗更低,更加適合嵌入式移動終端的應(yīng)用場景。

為了在嵌入式移動終端上實現(xiàn)運動目標(biāo)檢測,基于軟硬件協(xié)同設(shè)計的思路,采用Xilinx 的PYNQZ2 開發(fā)平臺,設(shè)計并實現(xiàn)了基于幀間差分法的運動目標(biāo)檢測系統(tǒng)。該系統(tǒng)能夠?qū)崿F(xiàn)多運動目標(biāo)的同時檢測,且能夠適應(yīng)光照變化的影響,具有一定的魯棒性和實時性。

1 系統(tǒng)設(shè)計方案

系統(tǒng)劃分為三個主要模塊,包括圖像采集模塊、圖像處理模塊以及圖像顯示模塊。圖像采集模塊使用USB 接口連接攝像頭采集視頻數(shù)據(jù)。圖像處理模塊包括RGB 轉(zhuǎn)灰度、形態(tài)學(xué)開運算、幀間差分等一系列操作。圖像顯示模塊使用HDMI 接口連接顯示器,顯示運動目標(biāo)檢測結(jié)果。系統(tǒng)框圖如圖1所示。

圖1 系統(tǒng)總體設(shè)計圖

1.1 PYNQ開發(fā)平臺

PYNQ 全稱是Python Productivity for Zynq,即Zynq 的Python 生產(chǎn)力[9]。Zynq 是Xilinx 的片上系統(tǒng),它擁有雙核ARM Cortex-A9 處理器+FPGA 可編程邏輯門陣列結(jié)構(gòu)。Zynq 架構(gòu)分為可編程邏輯PL 端和處理系統(tǒng)PS 端。PYNQ-Z2 是Xilinx 公司推出的一款FPGA 開發(fā)板,如圖2 所示,其以ZYNQ XC7Z020 FPGA 為核心,利用ZYNQ 中的可編程邏輯和ARM處理器的優(yōu)勢可以構(gòu)建強大的嵌入式系統(tǒng)。PYNQ的開源框架可以使嵌入式編程用戶在無需設(shè)計可編程邏輯電路的情況下充分發(fā)揮Xilinx ZYNQ SoC的功能[10],已在圖像分類、傳感器等多個領(lǐng)域得到了應(yīng)用[11-15]。

圖2 PYNQ-Z2開發(fā)板

1.2 圖像采集模塊

該設(shè)計使用USB 接口的攝像頭(DF200-1080P)作為系統(tǒng)視頻采集工具,在PYNQ-Z2 的base overlay中調(diào)用HDMI 輸入的硬件電路,將視頻數(shù)據(jù)的一幀圖像在DDR 中存儲,便于后續(xù)圖像處理。所采集圖像的分辨率可為1 280×720 或800×600,像素格式為RGB888。

1.3 圖像處理模塊

首先將所采集的RGB 圖像轉(zhuǎn)為灰度圖像。其次是形態(tài)學(xué)開運算,即先腐蝕,再膨脹。開運算能夠?qū)⑾嗷ブg有細(xì)微連接關(guān)系的兩個物體分離開,保證每個物體完整性的同時,提高抗干擾性能和檢測精度。

當(dāng)視頻圖像中有運動目標(biāo)時,前后兩幀圖像就會有像素點上的變化。用后一幀圖像的像素點減去前一幀圖像的像素點即可得到運動目標(biāo)所在的區(qū)域[16]。幀間差分法的實現(xiàn)流程如圖3 所示,首先緩存前一幀圖像數(shù)據(jù),在當(dāng)前幀圖像數(shù)據(jù)到來時,將兩幀圖像對應(yīng)像素點的灰度值進行相減,并取其絕對值。接著進行圖像二值化操作,將差分圖像的像素點與設(shè)定的閾值進行比較,大于閾值時為255,該點即為運動目標(biāo)點;小于閾值時為0,該點即為背景像素點。經(jīng)過測試,選擇圖像二值化的閾值為20,得到的處理結(jié)果較好。最后將檢測到的連續(xù)運動目標(biāo)區(qū)域用邊框進行標(biāo)記,并送入圖像顯示模塊。

圖3 幀間差分法的實現(xiàn)流程

1.4 圖像顯示模塊

該設(shè)計通過HDMI 接口連接顯示器做圖像顯示工具,在PYNQ-Z2 的base overlay 中調(diào)用HDMI 輸出的硬件電路,將處理好的視頻圖像結(jié)果傳輸?shù)斤@示器顯示。輸出視頻格式與輸入格式一致。

2 運動目標(biāo)檢測系統(tǒng)的實現(xiàn)

2.1 IP核的設(shè)計

系統(tǒng)的圖像處理模塊在可編程邏輯PL 部分實現(xiàn),使用Xilinx Vitis HLS 工具對模塊內(nèi)的每個操作進行硬件加速IP 核的開發(fā),即通過高層次綜合工具將使用C++描述的算法代碼轉(zhuǎn)換為硬件IP 核。

使用Vitis HLS 的視頻庫函數(shù)來代替OpenCV 的功能函數(shù)。當(dāng)視頻數(shù)據(jù)進入硬件加速后,需要使用AXIvideo2xfMat 轉(zhuǎn)換函數(shù)將視頻轉(zhuǎn)換成HLS 視頻庫可用格式,經(jīng)過加速處理后再使用xfMat2AXIvideo轉(zhuǎn)換函數(shù)將視頻轉(zhuǎn)換成傳輸?shù)臄?shù)據(jù)流。

2.1.1 RGB轉(zhuǎn)灰度IP核設(shè)計

IP 核設(shè)計流程嚴(yán)格遵守HLS 開發(fā)工具相關(guān)要求。首先添加頭文件和編寫C++代碼文件,并確定IP 核的頂層函數(shù)。該IP 核使用cvtcolor 函數(shù)將彩色圖像轉(zhuǎn)換成灰度圖像。對函數(shù)相關(guān)參數(shù)以及輸入輸出參數(shù)進行定義,具體參數(shù)設(shè)置如表1 所示。添加DATAFLOW優(yōu)化指令確保各個處理函數(shù)能并行執(zhí)行。

表1 RGB轉(zhuǎn)灰度IP核參數(shù)設(shè)置

之后對C++代碼進行編譯仿真測試,驗證無誤后將其綜合成RTL 設(shè)計,并使用RTL 協(xié)同仿真驗證,生成綜合報告,最后導(dǎo)出為RTL IP 核。RGB 轉(zhuǎn)灰度操作IP 核模塊如圖4 所示。由于頂層傳遞參數(shù)為AXI _STREAM 類型的函數(shù),所以聲 明src 和dst 為AXI_STREAM 協(xié)議的接口。需要寄存器控制IP 核處理圖像的大小、位寬等參數(shù)信息以及開始/停止等信號,將這些控制寄存器聲明為SLAVE_AXI_LITE的協(xié)議接口,s_axi_control 來控制和配置IP 核。本IP 核的控制路徑和數(shù)據(jù)路徑即AXI_LITE 和AXI_STREAM 都使用和ZYNQ_HP接口相同的時鐘,ap_clk為上述路徑的共同時鐘。ap_rst_n為復(fù)位信號,interrupt為中斷信號。

圖4 RGB轉(zhuǎn)灰度操作IP核模塊

2.1.2 形態(tài)學(xué)開運算IP核設(shè)計

形態(tài)學(xué)開運算是先進行腐蝕操作,再進行膨脹操作,使用3×3 矩陣的結(jié)構(gòu)內(nèi)核。腐蝕部分調(diào)用XILINX_VITIS_VISION 庫的erosion 函數(shù)加速核做處理,膨脹部分調(diào)用dilation 函數(shù)加速核做處理。輸入輸出及函數(shù)相關(guān)參數(shù)設(shè)置如表2 所示。

2.1.3 幀間差分IP核設(shè)計

幀間差分法中的幀間差分操作(即兩幀圖像相減并取絕對值)調(diào)用了absdiff 函數(shù)加速核做處理。幀間差分IP 核的相關(guān)參數(shù)設(shè)置如表3 所示。

2.1.4 圖像二值化IP核設(shè)計

幀間差分法中的圖像二值化操作調(diào)用了threshold 函數(shù)加速核做處理。相關(guān)參數(shù)設(shè)置如表4所示。

表4 圖像二值化IP核參數(shù)設(shè)置

2.2 系統(tǒng)通路搭建

2.2.1 數(shù)據(jù)傳輸通路配置

數(shù)據(jù)傳輸調(diào)用HDMI 模塊處理視頻輸入和輸出,輸入視頻數(shù)據(jù)通過VDMA 模塊緩存到DDR 存儲器,進行圖像處理時使用VDMA 模塊將數(shù)據(jù)從DDR中取出。經(jīng)過處理的圖像數(shù)據(jù)同樣使用VDMA 模塊存入DDR 中。

2.2.2 圖像處理模塊配置

圖像處理模塊中各個IP 核按照處理流程進行連接,一幀RGB 圖像轉(zhuǎn)成灰度圖像,經(jīng)過形態(tài)學(xué)開運算緩存到DDR 中,等待下一幀圖像經(jīng)過相同處理后一同送入幀間差分IP 核做幀差處理,并將結(jié)果與閾值進行比較。硬件加速IP 核與DDR 存儲器之間調(diào)用VDMA 模塊傳輸數(shù)據(jù)。圖像處理模塊硬件連接示意圖如圖5 所示。

圖5 圖像處理模塊硬件連接示意圖

2.2.3 ZYNQ_PS IP配置

通路搭建需要對ZYNQ 芯片參數(shù)和系統(tǒng)I/O 口進行配置。ZYNQ 芯片的相關(guān)參數(shù)配置操作有對PS端和PL 端的接口進行配置;設(shè)置時鐘規(guī)范。該系統(tǒng)使用的HDMI、USB、SD 接口以及URAT 等I/O 接口均在ZYNQ 芯片的I/O 外設(shè)選項中進行配置。

2.3 Jupyter Notebook程序設(shè)計

PYNQ 開發(fā)平臺在處理系統(tǒng)PS 端使用Python 編程語言對硬件模塊進行操作調(diào)用,Xilinx 官方提供的函數(shù)庫文件也讓開發(fā)者很方便地使用Python 進行硬件開發(fā)。

在Jupyter Notebook 程序中首先對系統(tǒng)進行初始化,導(dǎo)入設(shè)計所需庫函數(shù)(Numpy,cv2 等)和Overlay。需要例化各IP 核并設(shè)置其參數(shù):例化視頻的輸入輸出,例化圖像處理IP 核,設(shè)置視頻的分辨率,例化傳輸模塊IP 核,設(shè)置傳輸?shù)囊曨l數(shù)據(jù)類型格式。對于控制類的數(shù)據(jù)傳輸,使用MMIO 接口來配置IP 寄存器,并使用write 函數(shù)將數(shù)據(jù)寫入對應(yīng)地址。

例化定義完成后,控制視頻處理操作。將第一幀經(jīng)過灰度處理和形態(tài)學(xué)開運算處理的圖像數(shù)據(jù)采集出來送入幀間差分IP 核中,手動設(shè)置10 ms 延遲后將第二幀經(jīng)過相同處理后的圖像數(shù)據(jù)采集后送入幀間差分IP 核中,讓二者進行幀差運算。使用cv2函數(shù)分割處理找到目標(biāo)邊框坐標(biāo)并疊加到原圖像上,結(jié)果存放到HDMI 輸出緩存區(qū)。

3 系統(tǒng)測試

系統(tǒng)搭載在PYNQ-Z2 開發(fā)板上,測試之前先對開發(fā)板進行相應(yīng)的環(huán)境配置,將設(shè)計的Overlay 燒寫到開發(fā)板中,并使用Python 語言進行操控。實際檢測效果如圖6 所示。

圖6 實際檢測效果圖

由圖6 可見,系統(tǒng)可同時對多個運動目標(biāo)進行檢測,且經(jīng)測試系統(tǒng)功耗為2.06 W。在相同平臺下將本系統(tǒng)與僅使用PS 端的無硬件加速系統(tǒng)進行對比,在不同輸入視頻分辨率下的檢測速度如表5 所示。

表5 檢測速度對比

由表5 可見,硬件加速后的運動目標(biāo)檢測系統(tǒng)的檢測速度在視頻分辨率為800×600 時提升了約2.8 倍,在視頻分辨率為1 280×720時提升了約2.4倍。

對系統(tǒng)在不同光照條件下的魯棒性進行測試,檢測效果如圖7 所示??梢姡撓到y(tǒng)能夠較好地適應(yīng)光照變化的影響。

圖7 不同光照條件下的檢測效果

4 結(jié)束語

基于軟硬件協(xié)同設(shè)計的基本思想在PYNQ-Z2平臺上實現(xiàn)了運動目標(biāo)檢測系統(tǒng)。該系統(tǒng)可以同時檢測多個運動目標(biāo),處理速度也基本滿足實時性要求,適合嵌入式移動終端的應(yīng)用場景運動目標(biāo)檢測。

猜你喜歡
圖像處理灰度函數(shù)
采用改進導(dǎo)重法的拓?fù)浣Y(jié)構(gòu)灰度單元過濾技術(shù)
二次函數(shù)
第3講 “函數(shù)”復(fù)習(xí)精講
基于灰度拉伸的圖像水位識別方法研究
二次函數(shù)
函數(shù)備考精講
機器學(xué)習(xí)在圖像處理中的應(yīng)用
電子制作(2018年18期)2018-11-14 01:48:20
模糊圖像處理,刑事偵查利器
圖像處理技術(shù)的實戰(zhàn)應(yīng)用
基于最大加權(quán)投影求解的彩色圖像灰度化對比度保留算法
平昌县| 肃宁县| 东台市| 香河县| 乐业县| 吉安县| 隆昌县| 吉林省| 石家庄市| 岑溪市| 富民县| 永登县| 喀喇沁旗| 台州市| 乐平市| 南阳市| 五莲县| 兴国县| 全椒县| 太谷县| 阜南县| 香河县| 三原县| 蓬安县| 桐城市| 黄龙县| 金湖县| 大竹县| 涿州市| 仙桃市| 楚雄市| 武安市| 南安市| 利川市| 麻栗坡县| 乌兰浩特市| 遵义县| 孟村| 瑞丽市| 余庆县| 云浮市|