基于Nios Ⅱ軟核的運(yùn)動(dòng)目標(biāo)跟蹤系統(tǒng)設(shè)計(jì)
引言
近年來,隨著現(xiàn)場可編程邏輯陣列(fpga)的發(fā)展,采用niosⅱ軟核處理器在fpga上設(shè)計(jì)一種運(yùn)動(dòng)目標(biāo)檢測跟蹤的片上系統(tǒng)成為可能。事實(shí)上,采用niosⅱ處理器的自定義指令,并用硬件實(shí)現(xiàn)部分算法,可以大大提高數(shù)據(jù)的處理速度,保證較好的實(shí)時(shí)性。同時(shí),在外圍電路不變的情況下,通過改變fpga內(nèi)部的電路設(shè)計(jì),能使系統(tǒng)功能升級(jí)和增強(qiáng)。下面介紹一種基于niosⅱ軟核處理器的運(yùn)動(dòng)目標(biāo)檢測跟蹤系統(tǒng)的設(shè)計(jì)方法。
系統(tǒng)組成及工作原理
運(yùn)動(dòng)目標(biāo)檢測跟蹤系統(tǒng)可根據(jù)應(yīng)用場合定制為不同的功能,而且不同的功能只需要在nios中寫入相應(yīng)的c語言程序即可,不需要再做硬件板,非常方便。下面介紹一種比較通用的運(yùn)動(dòng)目標(biāo)檢測跟蹤系統(tǒng)。該系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
本文設(shè)計(jì)的運(yùn)動(dòng)檢測跟蹤系統(tǒng)主要包括三個(gè)模塊:圖象采集模塊、運(yùn)動(dòng)目標(biāo)檢測跟蹤模塊以及數(shù)據(jù)通信模塊。
(1)圖像采集模塊
該模塊主要包括攝像頭和外擴(kuò)sram。本系統(tǒng)采用的圖像傳感器是hv7131r,hv7131r是韓國現(xiàn)代公司采用0.3μm工藝生產(chǎn)的cmos傳感器,其有效像素大于30萬個(gè),功率損耗低于90
mw。hv7131r配置方便,可通過標(biāo)準(zhǔn)的i2c接口設(shè)置芯片內(nèi)部的控制寄存器,控制圖像的曝光時(shí)間、分辨率、幀率、rgb增益、水平/垂直鏡像等。hv7131r輸出10位的rgb原始數(shù)據(jù),一般采用高8位。
(2)運(yùn)動(dòng)目標(biāo)檢測跟蹤模塊
該模塊采用的fpga選擇altera公司stratix系列的ep1s25。該芯片的片上資源比較豐富,有25660個(gè)邏輯單元(le),1944576
bits的ram,10個(gè)dsp模塊,6個(gè)數(shù)字鎖相環(huán)(dpll),用戶可用的i/o最多達(dá)到702個(gè)。我們在ep1s25中嵌入nios軟核,控制連接在外部總線上的sram和flash,用它的以太網(wǎng)模塊單元控制以太網(wǎng)接口芯片lan9lc11。
其中fpga是主芯片。從圖1可以看到,在1片fpga中包含了nios處理器、sram控制器、sdram控制器、flash控制器、uart以及攝像頭和外擴(kuò)sram控制器的用戶邏輯模塊。這正體現(xiàn)了nios的優(yōu)勢。實(shí)際上將很多資源集中在fpga中為設(shè)計(jì)pcb帶來了很大便利,而且系統(tǒng)的更改也變得非常容易,只要重新在fpga中添加不同的模塊就可以了。例如在sram中存儲(chǔ)嵌入式系統(tǒng)所用的向量表、數(shù)據(jù)和程序等。而flash則用于在系統(tǒng)掉電的情況下存儲(chǔ)程序和數(shù)據(jù)。
(3)數(shù)據(jù)通信模塊
根據(jù)實(shí)際情況選擇用以太網(wǎng)或gprs把運(yùn)動(dòng)目標(biāo)檢測跟蹤后的結(jié)果發(fā)送到主控制站。在有以太網(wǎng)連接的條件下優(yōu)先選用以太網(wǎng)連接,可以提供相對較高的傳輸速率和可靠性,在沒有以太網(wǎng)的條件下選用gprs連接進(jìn)行通信。同時(shí),如果用戶需要,也可以直接在lcd上顯示。
運(yùn)動(dòng)目標(biāo)跟蹤算法的實(shí)現(xiàn)
在圖像處理和機(jī)器視覺領(lǐng)域,運(yùn)動(dòng)目標(biāo)檢測跟蹤算法的研究比較熱門,近年來出現(xiàn)了許多新的算法,但可以歸結(jié)為以下四大類:光流場分析算法、主動(dòng)輪廓算法、統(tǒng)計(jì)模型算法以及圖像差分算法。前三種方法與第四種方法相比,具有精度高,定位準(zhǔn)的優(yōu)點(diǎn)。但算法的復(fù)雜性較高,目前難以在硬件平臺(tái)上實(shí)現(xiàn)實(shí)時(shí)處理,因此,本系統(tǒng)采用了差分算法。我們主要針對背景和攝像機(jī)都靜止這一特定應(yīng)用場合,選用了背景消減的運(yùn)動(dòng)檢測和跟蹤算法。這種算法的關(guān)鍵在于背景重建,在此我們應(yīng)用幀間平均的背景重建方法,為了克服背景消減算法噪聲較大的先天不足,我們采用了形態(tài)學(xué)濾波方法去除噪聲。整個(gè)算法的實(shí)現(xiàn)過程如圖2所示。
幀間平均算法使用當(dāng)前幀之前各幀的象素平均值作為當(dāng)前背景的估計(jì)值,如式(1)所示:
式中:bay,n(x,y)為第n幀估計(jì)背景中(x,y)點(diǎn)的像素值,in(x,y)為第n幀原始圖象中(x,y)點(diǎn)的像素值。其中,背景是隨著n增加逐漸恢復(fù)的,所以背景恢復(fù)過程并不影響圖象處理結(jié)果的實(shí)時(shí)傳輸。顯然,n越大,背景恢復(fù)越真實(shí),我們可以控制n的大小來調(diào)整處理時(shí)間和處理效果之間的平衡。實(shí)驗(yàn)證明:n等于64時(shí)足可以得到比較好的效果。
我們使用nios ⅱ的定制指令,可以將一個(gè)復(fù)雜的標(biāo)準(zhǔn)指令序列簡化為一個(gè)用硬件實(shí)現(xiàn)的單一指令,從而簡化系統(tǒng)軟件設(shè)計(jì)并加快系統(tǒng)運(yùn)行速度。在運(yùn)動(dòng)目標(biāo)檢測跟蹤算法中,對運(yùn)動(dòng)圖像的處理數(shù)據(jù)運(yùn)算量大,循環(huán)數(shù)目多,而nios
ⅱ的定制指令個(gè)數(shù)已增加到256個(gè),可以使用定制指令完成許多循環(huán)內(nèi)的數(shù)據(jù)處理,從而加速數(shù)據(jù)處理的速度。定制指令邏輯和nios ⅱ的連接在sopc
builder。中完成。nios ⅱ cpu配置向?qū)峁┝艘粋€(gè)可添加256條定制指令的圖形用戶界面,在該界面中導(dǎo)入設(shè)計(jì)文件,設(shè)置定制指令名,并分配定制指令所需的cpu時(shí)鐘周期數(shù)目。系統(tǒng)生成時(shí),nios
ⅱ ide為每條用戶指令產(chǎn)生一個(gè)在系統(tǒng)頭文件中定義的宏,可以在c或c++應(yīng)用程序代碼中直接調(diào)用這個(gè)宏。
結(jié)束語
本文的運(yùn)動(dòng)目標(biāo)檢測跟蹤系統(tǒng)利用32位niosⅱ軟核處理器在fpga上來完成設(shè)計(jì),大大減小了系統(tǒng)的體積,而且在pc機(jī)上開發(fā)的程序可移植到niosⅱ處理器上來實(shí)現(xiàn)片上系統(tǒng)。從而方便地把用戶需要的接口和自定義邏輯加入到系統(tǒng)中去。本文介紹的方法體現(xiàn)了sopc嵌入式系統(tǒng)的靈活性。因此,這種方法能夠有效地縮短開發(fā)周期,同時(shí)能夠延長產(chǎn)品的生命周期,還可以不斷地在原有產(chǎn)品的基礎(chǔ)上進(jìn)行升級(jí)設(shè)計(jì).
評(píng)論