FPGA高端項(xiàng)目:FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤,提供11套工程源碼和技術(shù)支持
1、前言
本設(shè)計(jì)使用Xilinx系列FPGA實(shí)現(xiàn)幀差算法的多目標(biāo)運(yùn)動(dòng)物體圖像識(shí)別+目標(biāo)跟蹤,可實(shí)時(shí)識(shí)別多個(gè)目標(biāo)的運(yùn)動(dòng)物體,并將其在畫(huà)面中框出來(lái)實(shí)時(shí)鎖定,可模擬無(wú)人機(jī)空中偵查,發(fā)現(xiàn)目標(biāo)并實(shí)時(shí)鎖定跟蹤,然后可操作發(fā)射導(dǎo)彈將其摧毀,也可在地面實(shí)時(shí)搜索空中目標(biāo),如搜索無(wú)人機(jī),一單發(fā)現(xiàn)即鎖定,然后可將其畫(huà)面回傳控制室,然后驅(qū)離或擊落,也可作為公路車流、廣場(chǎng)人流實(shí)時(shí)統(tǒng)計(jì)監(jiān)控,甚至可以作為家里監(jiān)控老鼠報(bào)警器,一單鼠洞有老鼠移動(dòng),則實(shí)時(shí)識(shí)別并報(bào)警。。。
本設(shè)計(jì)使用Xilinx系列FPGA實(shí)現(xiàn)實(shí)時(shí)識(shí)別跟蹤多目標(biāo)運(yùn)動(dòng)物體應(yīng)用,輸入源為各類Sensor,可以是廉價(jià)的ov5640、ov7725等,也可以是HDMI接口的Sensor(可以用筆記本電腦作為輸入模擬),F(xiàn)PGA通過(guò)i2純、總線配置Sensor,然后采集Sensor視頻數(shù)據(jù),然后調(diào)用Xilinx官方的Video In To AXI4-Stream IP核將RGB視頻轉(zhuǎn)換為AXI4-Stream視頻流;然后調(diào)用Xilinx官方的AXI4-Stream Broadcaster將AXI4-Stream視頻流復(fù)制為2份,其中一份先經(jīng)過(guò)Xilinx官方的VDMA緩存后讀出,作為幀差算法的第一幀來(lái)源,另外一份和VDMA緩存后讀出的AXI4-Stream視頻流一起被送入幀差多目標(biāo)識(shí)別跟蹤算法模塊,該模塊是一個(gè)集成設(shè)計(jì)模塊,包含了RGB轉(zhuǎn)灰度、幀差提取、圖像腐蝕、圖像膨脹、多目標(biāo)識(shí)別標(biāo)記等模塊,最后輸出用紅框標(biāo)記的運(yùn)動(dòng)目標(biāo)圖像;然后調(diào)用Xilinx官方的Video Timing Controller和AXI4-Stream To Video Out IP核將AXI4-Stream視頻流轉(zhuǎn)換為RGB視頻流;然后調(diào)用自研的RGB轉(zhuǎn)HDMI模塊將視頻輸出顯示器顯示即可;
提供vivado2019.1和Quartus 18.1版本的工程源碼共計(jì)11套,詳情見(jiàn)下表:
這里說(shuō)明一下提供的11套工程源碼的作用和價(jià)值,如下:
工程源碼1
使用開(kāi)發(fā)板的FPGA型號(hào)為Xilinx–Artix7–100T;輸入源為ov5640攝像頭,輸入分辨率為1280x720@30Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以HDMI接口輸出,輸出分辨率為1280x720@60Hz;HDMI編碼方式為純verilog代碼方案;適用于Xilinx–Artix7系列FPGA開(kāi)發(fā)板使用;
工程源碼2
使用開(kāi)發(fā)板的FPGA型號(hào)為Xilinx–Kintex7–325T;輸入源為ov5640攝像頭,輸入分辨率為1280x720@30Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以HDMI接口輸出,輸出分辨率為1280x720@60Hz;HDMI編碼方式為純verilog代碼方案;適用于Xilinx–Kintex7系列FPGA開(kāi)發(fā)板使用;
工程源碼3
使用開(kāi)發(fā)板的FPGA型號(hào)為Xilinx–Zynq7010;輸入源為ov5640攝像頭,輸入分辨率為1280x720@30Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以HDMI接口輸出,輸出分辨率為1280x720@60Hz;HDMI編碼方式為純verilog代碼方案;適用于Xilinx–Zynq7000系列FPGA開(kāi)發(fā)板使用;
工程源碼4
使用開(kāi)發(fā)板的FPGA型號(hào)為Xilinx–Zynq7010;輸入源為ov7725攝像頭,輸入分辨率為640x480@60Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以HDMI接口輸出,輸出分辨率為640x480@60Hz;HDMI編碼方式為純verilog代碼方案;適用于Xilinx–Zynq7000系列FPGA開(kāi)發(fā)板使用;
工程源碼5
使用開(kāi)發(fā)板的FPGA型號(hào)為Xilinx–Zynq7020;輸入源為ov5640攝像頭,輸入分辨率為1280x720@30Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以HDMI接口輸出,輸出分辨率為1280x720@60Hz;HDMI編碼方式為純verilog代碼方案;適用于Xilinx–Zynq7000系列FPGA開(kāi)發(fā)板使用;
工程源碼6
使用開(kāi)發(fā)板的FPGA型號(hào)為Xilinx–Zynq7020;輸入源為ov7725攝像頭,輸入分辨率為640x480@60Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以HDMI接口輸出,輸出分辨率為640x480@60Hz;HDMI編碼方式為純verilog代碼方案;適用于Xilinx–Zynq7000系列FPGA開(kāi)發(fā)板使用;
工程源碼7
使用開(kāi)發(fā)板的FPGA型號(hào)為Xilinx–Zynq7020;輸入源為ov5640攝像頭,輸入分辨率為800x480@30Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以4.3寸屏LCD接口輸出,輸出分辨率為800x480@60Hz;LCD編碼方式為純verilog代碼方案;適用于Xilinx–Zynq7000系列FPGA開(kāi)發(fā)板使用;
工程源碼8
使用開(kāi)發(fā)板的FPGA型號(hào)為Xilinx–Zynq7020;輸入源為ov7725攝像頭,輸入分辨率為640x480@60Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以4.3寸屏LCD接口輸出,輸出分辨率為800x480@60Hz;LCD編碼方式為純verilog代碼方案;適用于Xilinx–Zynq7000系列FPGA開(kāi)發(fā)板使用;
工程源碼9
使用開(kāi)發(fā)板的FPGA型號(hào)為Xilinx–Zynq7100;輸入源為ov5640攝像頭,輸入分辨率為1280x720@30Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以HDMI接口輸出,輸出分辨率為1280x720@60Hz;HDMI編碼方式為純verilog代碼方案;適用于Xilinx–Zynq7000系列FPGA開(kāi)發(fā)板使用;
工程源碼10
使用開(kāi)發(fā)板的FPGA型號(hào)為Xilinx–Zynq7100;輸入源為ov7725攝像頭,輸入分辨率為640x480@60Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以HDMI接口輸出,輸出分辨率為640x480@60Hz;HDMI編碼方式為純verilog代碼方案;適用于Xilinx–Zynq7000系列FPGA開(kāi)發(fā)板使用;
工程源碼11
使用開(kāi)發(fā)板的FPGA型號(hào)為Altera–Cyclone IV–EP4CE10F17C8;輸入源為ov5640攝像頭,輸入分辨率為640x480@60Hz;經(jīng)過(guò)幀差多目標(biāo)運(yùn)動(dòng)物體識(shí)別跟蹤算法后,以HDMI接口輸出,輸出分辨率為640x480@60Hz;HDMI編碼方式為純verilog代碼方案;適用于Altera–Cyclone系列FPGA開(kāi)發(fā)板使用;
本文詳細(xì)描述了Xilinx系列FPGA幀差算法實(shí)現(xiàn)多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤,工程代碼編譯通過(guò)后上板調(diào)試驗(yàn)證,可直接項(xiàng)目移植,適用于在校學(xué)生做畢業(yè)設(shè)計(jì)、研究生項(xiàng)目開(kāi)發(fā),也適用于在職工程師做項(xiàng)目開(kāi)發(fā),可應(yīng)用于醫(yī)療、軍工等行業(yè)的數(shù)字成像和圖像傳輸領(lǐng)域;
提供完整的、跑通的工程源碼和技術(shù)支持;
工程源碼和技術(shù)支持的獲取方式放在了文章末尾,請(qǐng)耐心看到最后;
免責(zé)聲明
本工程及其源碼即有自己寫(xiě)的一部分,也有網(wǎng)絡(luò)公開(kāi)渠道獲取的一部分(包括CSDN、Xilinx官網(wǎng)、Altera官網(wǎng)等等),若大佬們覺(jué)得有所冒犯,請(qǐng)私信批評(píng)教育;基于此,本工程及其源碼僅限于讀者或粉絲個(gè)人學(xué)習(xí)和研究,禁止用于商業(yè)用途,若由于讀者或粉絲自身原因用于商業(yè)用途所導(dǎo)致的法律問(wèn)題,與本博客及博主無(wú)關(guān),請(qǐng)謹(jǐn)慎使用。。。
2、相關(guān)方案推薦
FPGA幀差算法單個(gè)目標(biāo)圖像識(shí)別+目標(biāo)跟蹤
本設(shè)計(jì)是Xilinx系列FPGA幀差算法實(shí)現(xiàn)多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤,適用于跟蹤多個(gè)運(yùn)動(dòng)目標(biāo),也有適用于只跟蹤單個(gè)目標(biāo)的方案,即FPGA幀差算法單個(gè)目標(biāo)圖像識(shí)別+目標(biāo)跟蹤方案,該方案我之前專門推出過(guò)博客介紹,感興趣的可以去看看,博客地址如下:
點(diǎn)擊直接前往
3、詳細(xì)設(shè)計(jì)方案
設(shè)計(jì)原理框圖
工程源碼設(shè)計(jì)原理框圖如下:
運(yùn)動(dòng)目標(biāo)檢測(cè)原理
運(yùn)動(dòng)目標(biāo)檢測(cè)原理:先將RGB圖像轉(zhuǎn)為灰度圖只取亮度分量y,如果一個(gè)物體是運(yùn)動(dòng)的,那么前后兩張或幾張灰度圖的同一位置的像素值應(yīng)該是變化的,試想,如果是靜止物體,比如一幅畫(huà),那么任意時(shí)刻,同一位置像素點(diǎn)的值不變才對(duì),如果運(yùn)動(dòng)了,像素點(diǎn)的值自然也就改變了,很好理解,這個(gè)叫做幀差算法,這里的像素點(diǎn)差值有個(gè)范圍,叫做閾值,cdn上有大佬說(shuō)70~100是理想值。
OV5640攝像頭配置與采集
視頻輸入源由多種方案可供選擇,比如廉價(jià)的OV5640、OV7725攝像頭等;工程源碼1、2、3、5、7、9、11使用OV5640攝像頭,ov5640需要i2c配置才能使用,需要i2c配置分辨率,然后將DVP接口的兩個(gè)時(shí)鐘一個(gè)像素的GRB565視頻數(shù)據(jù)采集為一個(gè)時(shí)鐘一個(gè)像素的RGB565或者RGB888視頻數(shù)據(jù);以工程7為例,ov5640i2c配置及采集代碼如下,其他工程與之類似:
注意!!4.3寸LCD屏輸出的工程源碼,OV5640攝像頭配置由SDK軟件代碼完成,與上述的有FPGA純verilog配置方式不一樣;
OV7725攝像頭配置與采集
視頻輸入源由多種方案可供選擇,比如廉價(jià)的OV5640、OV7725攝像頭等;工程源碼4、6、8、10使用OV7725攝像頭,OV7725需要i2c配置才能使用,需要i2c配置分辨率,然后將DVP接口的兩個(gè)時(shí)鐘一個(gè)像素的GRB565視頻數(shù)據(jù)采集為一個(gè)時(shí)鐘一個(gè)像素的RGB565或者RGB888視頻數(shù)據(jù);以工程8為例,OV7725配置及采集代碼如下,其他工程與之類似:
注意??!4.3寸LCD屏輸出的工程源碼,OV7725攝像頭配置由SDK軟件代碼完成,與上述的有FPGA純verilog配置方式不一樣;
RGB視頻流轉(zhuǎn)AXI4-Stream
采集到的攝像頭視頻是RGB888視頻流,調(diào)用Xilinx官方的Video In To AXI4-Stream IP核將RGB視頻轉(zhuǎn)換為AXI4-Stream視頻流;后調(diào)用Xilinx官方的AXI4-Stream Broadcaster將AXI4-Stream視頻流復(fù)制為2份,其中一份先經(jīng)過(guò)Xilinx官方的VDMA緩存后讀出,作為幀差算法的第一幀來(lái)源,另外一份和VDMA緩存后讀出的AXI4-Stream視頻流一起被送入幀差多目標(biāo)識(shí)別跟蹤算法模塊;這里要將RGB888視頻流轉(zhuǎn)AXI4-Stream是因?yàn)樾枰玫絏ilinx官方的VDMA圖像緩存方案,VDMA的用戶接口必須是AXI4-Stream;調(diào)用Video In To AXI4-Stream與AXI4-Stream Broadcaster如下:
VDMA圖像緩存
這里需要調(diào)用兩路VDMA,一路用于緩存第一幀視頻,作為幀差算法的第一幀來(lái)源,經(jīng)過(guò)幀差算法后再調(diào)用第二路VDMA,用于緩存后輸出圖像,架構(gòu)如下:
多目標(biāo)幀差算法圖像識(shí)別+目標(biāo)跟蹤模塊
該模塊具體性能表現(xiàn)如下:
1:支持多個(gè)運(yùn)動(dòng)目標(biāo)識(shí)別跟蹤,最多支持16個(gè)目標(biāo);
2:代碼精簡(jiǎn),集成度高;
3:時(shí)序收斂,穩(wěn)定性強(qiáng);
4:參數(shù)化配置,可在parameter參數(shù)中配置圖像分辨率;
5:用戶接口為AXI4-Stream,方便與Xilinx系列FPGA對(duì)接;
6:資源占用很小,如下:
該模塊是整個(gè)工程的核心,是一個(gè)集成設(shè)計(jì)模塊,包含了RGB轉(zhuǎn)灰度、幀差提取、圖像腐蝕、圖像膨脹、多目標(biāo)識(shí)別標(biāo)記等模塊,最后輸出用紅框標(biāo)記的運(yùn)動(dòng)目標(biāo)圖像;模塊代碼架構(gòu)如下:
該模塊有兩個(gè)用戶接口用戶控制,如下:
input [ 7:0] Diff_Threshold , //幀差閾值,默認(rèn)75
output [ 3:0] target_num_out , //最終目標(biāo)數(shù)目
其中:
Diff_Threshold為幀差閾值,默認(rèn)75 ,工程里通過(guò)一個(gè)VIO進(jìn)行動(dòng)態(tài)配置,正常情況下不需要配置;
target_num_out 為最終識(shí)別到的目標(biāo)個(gè)數(shù),輸出給用戶查看,工程里通過(guò)一個(gè)AXI GPIO對(duì)該接口進(jìn)行采集,并在SDK代碼里通過(guò)串口打印輸出該數(shù)值給用戶查看,也就是說(shuō),串口會(huì)實(shí)時(shí)打印識(shí)別到的運(yùn)動(dòng)目標(biāo)個(gè)數(shù),在SDK軟件代碼的while()死循環(huán)中,設(shè)置的是300ms打印一次;
視頻輸出
采用Xilinx官方經(jīng)典的Video Timing Controller+AXI4-Stream To Video Out方案,其中Video Timing Controller IP核為輸出系統(tǒng)提供標(biāo)準(zhǔn)的VGA時(shí)序,AXI4-Stream To Video Out IP核將AXI4-Stream視頻流轉(zhuǎn)換為RGB視頻流;最終的輸出接口采用了HDMI或者LCD方案,用戶根據(jù)自己的硬件情況選擇哪一種;HDMI輸出采用純verilog編碼實(shí)現(xiàn)的RGB轉(zhuǎn)HDMI模塊,代碼架構(gòu)如下,LCD方案與之類似:
工程中將Video Timing Controller、AXI4-Stream To Video Out、HDMI輸出集成到了一起做了模塊封裝,如下,LCD輸出方案則沒(méi)有封裝:
注意?。?br> 由于LCD顯示方案為了適應(yīng)不同分辨率的LCD顯示屏,Video Timing Controller采用了動(dòng)態(tài)配置方案,通過(guò)SDK軟件代碼根據(jù)識(shí)別到的LCD分辨率做動(dòng)態(tài)調(diào)整,該方案通過(guò)AXI4_Lite接口動(dòng)態(tài)配置MMCM源語(yǔ)的寄存器,與DRP接口配置效果一樣;該方案有漂亮國(guó)某知名高校研發(fā)推廣,被國(guó)內(nèi)各大友商采用。。。
Xilinx系列FPGA工程源碼架構(gòu)
Xilinx系列FPGA工程源碼架構(gòu)由兩部分組成,一是Block Design搭建的PL端FPGA邏輯設(shè)計(jì),二是由SDK搭建的PS端軟件設(shè)計(jì);PL端FPGA邏輯設(shè)計(jì)主要負(fù)責(zé)視頻采集、算法、視頻輸出等部分工作;PS端軟件設(shè)計(jì)主要負(fù)責(zé)各種IP初始化、配置等部分工作;
以工程7為例,Block Design設(shè)計(jì)如下,其他工程與之類似:
綜合后的RTL代碼架構(gòu)如下:
以工程7為例,SDK軟件設(shè)計(jì)如下,其他工程與之類似:
Altera系列FPGA工程源碼架構(gòu)
Altera系列FPGA工程源碼架構(gòu)如下:
4、工程代碼1詳解–>OV5640輸入HDMI輸出,Xilinx–Artix7版本
開(kāi)發(fā)板FPGA型號(hào):Xilinx–Artix7–xc7a100tfgg484-2;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:OV5640攝像頭,分辨率1280x720@30Hz;
輸出:HDMI,純verilog編碼,分辨率1280x720@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Xilinx系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
5、工程代碼2詳解–>OV5640輸入HDMI輸出,Xilinx–Kintex7版本
開(kāi)發(fā)板FPGA型號(hào):Xilinx–Kintex7–xc7k325tffg676-2;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:OV5640攝像頭,分辨率1280x720@30Hz;
輸出:HDMI,純verilog編碼,分辨率1280x720@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Xilinx系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
6、工程代碼3詳解–>OV5640輸入HDMI輸出,Xilinx–Zynq7010版本
開(kāi)發(fā)板FPGA型號(hào):Xilinx–Zynq7010–xc7z010clg400-2;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:OV5640攝像頭,分辨率1280x720@30Hz;
輸出:HDMI,純verilog編碼,分辨率1280x720@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Xilinx系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
7、工程代碼4詳解–>OV7725輸入HDMI輸出,Xilinx–Zynq7010版本
開(kāi)發(fā)板FPGA型號(hào):Xilinx–Zynq7010–xc7z010clg400-2;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:OV7725攝像頭,分辨率640x480@60Hz;
輸出:HDMI,純verilog編碼,分辨率640x480@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Xilinx系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
8、工程代碼5詳解–>OV5640輸入HDMI輸出,Xilinx–Zynq7020版本
開(kāi)發(fā)板FPGA型號(hào):Xilinx–Zynq7010–xc7z020clg400-2;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:OV5640攝像頭,分辨率1280x720@30Hz;
輸出:HDMI,純verilog編碼,分辨率1280x720@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Xilinx系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
9、工程代碼6詳解–>OV7725輸入HDMI輸出,Xilinx–Zynq7020版本
開(kāi)發(fā)板FPGA型號(hào):Xilinx–Zynq7010–xc7z020clg400-2;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:OV7725攝像頭,分辨率640x480@60Hz;
輸出:HDMI,純verilog編碼,分辨率640x480@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Xilinx系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
10、工程代碼7詳解–>OV5640輸入LCD輸出,Xilinx–Zynq7020版本
開(kāi)發(fā)板FPGA型號(hào):Xilinx–Zynq7010–xc7z020clg400-2;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:OV5640攝像頭,分辨率800x480@30Hz;
輸出:4.3寸LCD屏,純verilog編碼,分辨率800x480@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Xilinx系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
11、工程代碼8詳解–>OV7725輸入LCD輸出,Xilinx–Zynq7020版本
開(kāi)發(fā)板FPGA型號(hào):Xilinx–Zynq7010–xc7z020clg400-2;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:OV7725攝像頭,分辨率640x480@60Hz;
輸出:4.3寸LCD屏,純verilog編碼,分辨率800x480@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Xilinx系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
12、工程代碼9詳解–>OV5640輸入HDMI輸出,Xilinx–Zynq7100版本
開(kāi)發(fā)板FPGA型號(hào):Xilinx–Zynq7100–xc7z100ffg900-2;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:OV5640攝像頭,分辨率1280x720@30Hz;
輸出:HDMI,純verilog編碼,分辨率1280x720@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Xilinx系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
13、工程代碼10詳解–>OV7725輸入HDMI輸出,Xilinx–Zynq7100版本
開(kāi)發(fā)板FPGA型號(hào):Xilinx–Zynq7100–xc7z100ffg900-2;
開(kāi)發(fā)環(huán)境:Vivado2019.1;
輸入:OV7725攝像頭,分辨率640x480@60Hz;
輸出:HDMI,純verilog編碼,分辨率640x480@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Xilinx系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
14、工程代碼11詳解–>OV5640輸入HDMI輸出,Altera–Cyclone IV版本
開(kāi)發(fā)板FPGA型號(hào):Altera–Cyclone IV–EP4CE10F17C8;
開(kāi)發(fā)環(huán)境:Quartus (Quartus Prime 18.1) ;
輸入:OV5640攝像頭,分辨率640x480@60Hz;
輸出:HDMI,純verilog編碼,分辨率640x480@60Hz;
圖像處理:幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤;
工程作用:掌握FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤的設(shè)計(jì)方法;
工程Block Design和工程代碼架構(gòu)請(qǐng)參考第3章節(jié)《Altera系列FPGA工程源碼架構(gòu)》小節(jié)內(nèi)容;
工程的資源消耗和功耗如下:
15、工程移植說(shuō)明
vivado版本不一致處理
1:如果你的vivado版本與本工程vivado版本一致,則直接打開(kāi)工程;
2:如果你的vivado版本低于本工程vivado版本,則需要打開(kāi)工程后,點(diǎn)擊文件–>另存為;但此方法并不保險(xiǎn),最保險(xiǎn)的方法是將你的vivado版本升級(jí)到本工程vivado的版本或者更高版本;
3:如果你的vivado版本高于本工程vivado版本,解決如下:
打開(kāi)工程后會(huì)發(fā)現(xiàn)IP都被鎖住了,如下:
此時(shí)需要升級(jí)IP,操作如下:
FPGA型號(hào)不一致處理
如果你的FPGA型號(hào)與我的不一致,則需要更改FPGA型號(hào),操作如下:
更改FPGA型號(hào)后還需要升級(jí)IP,升級(jí)IP的方法前面已經(jīng)講述了;
其他注意事項(xiàng)
1:由于每個(gè)板子的DDR不一定完全一樣,所以MIG IP需要根據(jù)你自己的原理圖進(jìn)行配置,甚至可以直接刪掉我這里原工程的MIG并重新添加IP,重新配置;
2:根據(jù)你自己的原理圖修改引腳約束,在xdc文件中修改即可;
3:純FPGA移植到Zynq需要在工程中添加zynq軟核;
16、上板調(diào)試驗(yàn)證并演示
準(zhǔn)備工作
需要如下器材設(shè)備:
1、FPGA開(kāi)發(fā)板;
2、OV5640或OV7725攝像頭;
2、HDMI連接線和顯示器;
OV5640輸入版本工程演示
工程1、2、3、5、7、9、11使用OV5640輸入,幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤輸出效果如下:
OV5640輸入FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤
OV7725輸入版本工程演示
工程4、6、8、10使用OV5640輸入,幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤輸出效果如下:
OV7725輸入FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤
LCD顯示屏輸出版本工程演示
工程7、8使用LCD顯示屏輸出效果如下:
FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤LCD輸出文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-861874.html
17、福利:工程源碼獲取
福利:工程代碼的獲取
代碼太大,無(wú)法郵箱發(fā)送,以某度網(wǎng)盤(pán)鏈接方式發(fā)送,
資料獲取方式:私,或者文章末尾的V名片。
網(wǎng)盤(pán)資料如下:
此外,有很多朋友給本博主提了很多意見(jiàn)和建議,希望能豐富服務(wù)內(nèi)容和選項(xiàng),因?yàn)椴煌笥训男枨蟛灰粯?,所以本博主還提供以下服務(wù):文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-861874.html
到了這里,關(guān)于FPGA高端項(xiàng)目:FPGA幀差算法多目標(biāo)圖像識(shí)別+目標(biāo)跟蹤,提供11套工程源碼和技術(shù)支持的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!