面向異步視頻的嵌入式圖像處理系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:在此設(shè)計(jì)出一種基于DSP+FPGA技術(shù)的面向異步視頻的嵌入式圖像處理系統(tǒng),以一種靈活的架構(gòu)避免了幀間不同步方法對(duì)雙口RAM顯存的需求,既能夠保證圖像輸出質(zhì)量,又有利于提升圖像處理的性能指標(biāo)。系統(tǒng)以FPGA為核心,連接DSP和4片幀存,通過(guò)幀存的循環(huán)復(fù)用將緩存和顯存融合起來(lái),省略了數(shù)據(jù)搬運(yùn)的環(huán)節(jié)。當(dāng)輸入幀頻小于輸出幀頻時(shí),從系統(tǒng)總體的角度分析幀存的狀態(tài)轉(zhuǎn)換規(guī)律,當(dāng)輸入幀頻大于輸出幀頻時(shí),從單個(gè)幀存的角度分析幀存的狀態(tài)轉(zhuǎn)換規(guī)律,并蛤出了可編程邏輯設(shè)計(jì)的源程序,該方案已在產(chǎn)品中應(yīng)用,通過(guò)升級(jí)能夠滿足更高的技術(shù)要求。
關(guān)鍵詞:異步視頻;圖像處理;嵌入式系統(tǒng);FPGA;幀存切換
圖像處理系統(tǒng)輸入視頻信息,運(yùn)行圖像處理算法,輸出處理后的圖像信號(hào),實(shí)現(xiàn)目標(biāo)檢瀏、跟蹤、識(shí)別等功能。系統(tǒng)的輸入和輸出常常是不同的視頻格式,二者由于幀頻的不同,處于異步的狀態(tài)。為了提高異步視頻時(shí)輸出畫(huà)面的質(zhì)量,本文展開(kāi)了深入的研究,設(shè)計(jì)出一種基于DSP+FPGA技術(shù)的面向異步視頻的嵌入式圖像處理系統(tǒng),提高了輸出圖像的視覺(jué)效果,結(jié)構(gòu)簡(jiǎn)潔,具有小巧靈活的優(yōu)點(diǎn)。
1 異步視頻的處理方法
如果圖像處理系統(tǒng)的輸入為復(fù)合模擬視頻,幀頻25 Hz;輸出為XGA格式,幀頻60 Hz;一幅輸入畫(huà)面平均產(chǎn)生2.4次輸出畫(huà)面,此時(shí)系統(tǒng)處理的就是異步視頻,有3種處理方法:幀內(nèi)不同步方法、幀間不同步方法和準(zhǔn)同步方法。
(1)幀內(nèi)不同步方法。輸出幀以輸入幀的幀頻進(jìn)行切換,當(dāng)一幀輸入數(shù)據(jù)準(zhǔn)備好后,輸出幀就切換到新一幀的視頻數(shù)據(jù),不管此時(shí)輸出幀進(jìn)行到了哪個(gè)時(shí)刻。這種模式中輸入幀和輸出幀處于幀內(nèi)的不同步狀態(tài),即輸出幀的畫(huà)面可能由非同一幅輸入幀畫(huà)面組成。當(dāng)相鄰的兩幀圖像存在較大差異(目標(biāo)與傳感器有較高的相對(duì)運(yùn)動(dòng))時(shí),輸出幀的畫(huà)面會(huì)出現(xiàn)明顯的分界。例如視頻采集卡采集復(fù)合視頻信號(hào)在PC機(jī)監(jiān)視器上顯示,動(dòng)態(tài)畫(huà)面的分界清晰可辨。
(2)幀間不同步方法。把不同步局限在幀間的狀態(tài),當(dāng)一幀輸入數(shù)據(jù)準(zhǔn)備好后,輸出幀不會(huì)立即切換到新一幀的視頻數(shù)據(jù),而是根據(jù)輸出幀自身的時(shí)序做出選擇。只有當(dāng)前輸出幀輸出完畢后,才會(huì)切換到新一幀的視頻數(shù)據(jù),保證了輸出的每幅畫(huà)面都有一個(gè)對(duì)應(yīng)的輸入畫(huà)面,不會(huì)出現(xiàn)2個(gè)輸入畫(huà)面拼接的狀況。如果一幅輸入畫(huà)面平均產(chǎn)生2.4次輸出畫(huà)面,那么某些輸入畫(huà)面顯示了2次,某些輸入畫(huà)面顯示了3次。原來(lái)在時(shí)間上均勻顯示的輸入畫(huà)面,在輸出時(shí)不再均勻。當(dāng)輸入畫(huà)面中存在勻速運(yùn)動(dòng)的物體時(shí),在輸出畫(huà)面中,物體會(huì)出現(xiàn)跳躍式的運(yùn)動(dòng)。這種顯示效果在大多數(shù)應(yīng)用環(huán)境中肉眼難以覺(jué)察,是目前嵌入式圖像處理系統(tǒng)廣泛采用的處理異步視頻的方法。比較第一種方法,硬件設(shè)計(jì)的復(fù)雜度有所提高,但保證了用戶(hù)的觀測(cè)效果。
(3)準(zhǔn)同步方法。輸出幀和輸入幀在一段時(shí)間上基本對(duì)應(yīng),接近同步的效果。雖然輸入和輸出的幀頻不同,但系統(tǒng)根據(jù)相鄰的輸入幀圖像的變化特點(diǎn),生成一些中間幀,加入到輸出幀序列中,突出了輸出幀頻提高的顯示效果,能夠保持西面的連續(xù)性。這種方法多用于視頻格式轉(zhuǎn)換系統(tǒng),其存儲(chǔ)器的空間要滿足幀速率轉(zhuǎn)換算法的要求。某些視聽(tīng)大屏幕設(shè)備只轉(zhuǎn)換特定的幾種視頻格式,特殊的算法可使存儲(chǔ)器空間最小化,以利于降低成本。
圖像處理系統(tǒng)面對(duì)異步視頻時(shí),非專(zhuān)用于視頻格式轉(zhuǎn)換目的情況下,實(shí)現(xiàn)幀間不同步的輸出效果即可。一般的解決方案是準(zhǔn)備3幀數(shù)據(jù)空間的雙口RAM顯存,無(wú)論寫(xiě)入速度多少,都能夠避免寫(xiě)入和讀出的沖突。本文設(shè)計(jì)出一種基于DSP+FPGA技術(shù)的嵌入式圖像處理系統(tǒng),以一種靈活的架構(gòu)避免了顯存的需求,既能夠保證圖像輸出質(zhì)量,又有利于提升圖像處理的性能指標(biāo)。
2 嵌入式圖像處理系統(tǒng)
2. 1 功能架構(gòu)
通常圖像系統(tǒng)中數(shù)據(jù)流環(huán)節(jié)依次為:輸入接口、FPGA、數(shù)據(jù)緩存、DSP、顯存等。其中顯存中的數(shù)據(jù)以幀為單位切換輸出,兩幀乒乓的方式只能用于同步狀態(tài)。本系統(tǒng)設(shè)計(jì)的功能架構(gòu)如圖1所示,可以把緩存和顯存融合在一起,通過(guò)FPGA切換的方式免除數(shù)據(jù)搬運(yùn)的過(guò)程。
[!--empirenews.page--]
可編程邏輯器件(FPGA)將數(shù)字信號(hào)處理器(DSP)、4片幀存以及輸入和輸出視頻數(shù)據(jù)流連接起來(lái)。依據(jù)功能狀態(tài),幀存定義為寫(xiě)入幀、處理幀、讀出幀、緩存幀、廢棄幀,其中緩存幀和廢棄幀不同時(shí)存在。寫(xiě)入幀指該幀存與視頻數(shù)據(jù)輸入流連接,正在存儲(chǔ)輸入的視頻數(shù)據(jù);處理幀指該幀存與DSP連接,作為DSP的數(shù)據(jù)緩存,供軟件讀寫(xiě);讀出幀指該幀存與視頻數(shù)據(jù)輸出流連接,視頻數(shù)據(jù)正在被讀出顯示;緩存幀指處理幀的下一個(gè)狀態(tài),等待被讀出顯示,處于孤立狀態(tài),廢棄幀指視頻數(shù)據(jù)已經(jīng)完成輸出,等待被新的數(shù)據(jù)寫(xiě)入,處于孤立狀態(tài)。每一幀視頻數(shù)據(jù)與一片幀存關(guān)聯(lián),依次經(jīng)歷寫(xiě)入、處理、緩存、讀出、廢棄的狀態(tài)(不一定是全部的狀態(tài))。FPGA依據(jù)規(guī)則切換4片幀存,循環(huán)往復(fù)。
嵌入式圖像處理系統(tǒng)的功能分為圖像處理和視頻轉(zhuǎn)換2部分。圖像處理功能主要由DSP實(shí)現(xiàn),當(dāng)輸入的視頻數(shù)據(jù)成為處理幀時(shí),DSP軟件要在一個(gè)輸入幀周期內(nèi)讀入數(shù)據(jù)、執(zhí)行處理算法、用新的數(shù)據(jù)覆蓋幀存(該幀存隨后會(huì)讀出顯示)。圖像處理結(jié)果可以從DSP的通訊接口上報(bào),必要時(shí),F(xiàn)PGA也可以完成部分圖像處理算法,減輕軟件負(fù)擔(dān)。視頻轉(zhuǎn)換功能指FPGA對(duì)4片幀存的切換來(lái)實(shí)現(xiàn)異步視頻的幀間不同步方法。
2.2 切換規(guī)則
在異步視頻的幀問(wèn)不同步狀態(tài)下,輸出幀的完整性需要保證,幀存的切換不能只依據(jù)輸入幀的同步信號(hào),還必須考慮輸出幀的同步信號(hào),嵌入式圖像處理系統(tǒng)利用第4片幀存提供時(shí)間上的緩沖。幀存共有5種狀態(tài),任一時(shí)刻4片幀存分別對(duì)應(yīng)寫(xiě)入、處理、讀出、緩存(廢棄),幀存的寫(xiě)入、處理、緩存狀態(tài)由輸入幀的同步信號(hào)觸發(fā)確定,幀存的讀出、廢棄狀態(tài)由輸出幀的同步信號(hào)觸發(fā)確定。
2.3 狀態(tài)轉(zhuǎn)換程序設(shè)計(jì)
設(shè)定4片幀存的初始狀態(tài)見(jiàn)表1。
幀存的狀態(tài)由兩種同步信號(hào)觸發(fā)轉(zhuǎn)換,因此設(shè)定為輸入和輸出兩部分狀態(tài)的組合。
2.3.1 輸入幀頻小于輸出幀頻
在輸入幀頻小于輸出幀頻的情況下,每一個(gè)輸入幀都會(huì)被讀出顯示。在每個(gè)輸入幀周期中,至少會(huì)發(fā)生1次輸出幀同步觸發(fā)事件,第1次輸出幀同步信號(hào)觸發(fā)之后,原緩存狀態(tài)的幀存切換到讀出狀態(tài),原讀出狀態(tài)幀存轉(zhuǎn)換為廢棄狀態(tài),然后保持不變,直到新的輸入幀同步信號(hào)到來(lái)。從系統(tǒng)整體分析4片幀存的狀態(tài)轉(zhuǎn)換過(guò)程,得出表2的結(jié)果。
表2顯示系統(tǒng)狀態(tài)轉(zhuǎn)換的一個(gè)循環(huán)包含8種情況,由4種輸入和4種輸出組合而成,每種輸出狀態(tài)對(duì)應(yīng)一個(gè)處于讀出狀態(tài)的幀存。
2.3.2 輸入幀頻大于輸出幀頻
在輸入幀頻大于輸出幀頻的情況下,一個(gè)輸入幀周期內(nèi),如果接收到輸出幀同步信號(hào),緩存幀會(huì)轉(zhuǎn)換為讀出幀,否則會(huì)被重新寫(xiě)入,沒(méi)有機(jī)會(huì)輸出顯示。幀存的狀態(tài)轉(zhuǎn)換與其原來(lái)的狀態(tài)相關(guān),具有隨機(jī)特性,不宜從系統(tǒng)總體確定狀態(tài)循環(huán),只能從單個(gè)幀存的角度分析狀態(tài)轉(zhuǎn)換規(guī)律。[!--empirenews.page--]
設(shè)定某幀存輸入部分為寫(xiě)入、處理、半緩存、無(wú)效4種狀態(tài),輸出部分為讀出、廢棄、無(wú)效3種狀態(tài),二者組合確定該幀存的狀態(tài),如表3所示。
單個(gè)幀存的狀態(tài)轉(zhuǎn)換流程如圖2所示。
圖2中X代表廢棄或無(wú)效狀態(tài)。某片幀存從寫(xiě)入狀態(tài)開(kāi)始,受輸入幀同步信號(hào)觸發(fā)后轉(zhuǎn)換為處理狀態(tài),再次觸發(fā)后轉(zhuǎn)換為半緩存狀態(tài),期間的輸出幀同步信號(hào)不會(huì)改變幀存狀態(tài),只能確定輸出部分為無(wú)效狀態(tài)。半緩存狀態(tài)時(shí)受輸出幀同步信號(hào)觸發(fā)進(jìn)入讀出狀態(tài)(半緩存|讀出),否則受輸入幀同步信號(hào)觸發(fā)返回寫(xiě)入狀態(tài)。讀出狀態(tài)(半緩存|讀出)不會(huì)受輸出幀同步信號(hào)的觸發(fā)改變,但接受一次輸入幀同步信號(hào)后會(huì)成為新的讀出狀態(tài)(無(wú)效|讀出),此時(shí)系統(tǒng)有了新的緩存幀,當(dāng)輸出幀同步信號(hào)來(lái)到后轉(zhuǎn)換為廢棄狀態(tài),此時(shí)新的緩存幀進(jìn)入讀出狀態(tài),再次受輸入幀同步觸發(fā)后返回寫(xiě)入狀態(tài)。
幀存1的狀態(tài)轉(zhuǎn)換源程序如下,其他3片幀存類(lèi)似。
3 結(jié)語(yǔ)
本文設(shè)計(jì)的以FPGA,DSP和4片幀存為主體的面向異步視頻的嵌入式圖像處理系統(tǒng),把視頻數(shù)據(jù)緩存和視頻輸出顯存融合在一起,節(jié)省了數(shù)據(jù)傳輸?shù)臅r(shí)間。FPGA依據(jù)輸入和輸出幀同步信號(hào)切換4片幀存,能夠?qū)崿F(xiàn)異步視頻時(shí)幀間不同步狀態(tài),無(wú)需滿足幀頻轉(zhuǎn)換算法對(duì)存儲(chǔ)器空間的要求。采用更先進(jìn)的存儲(chǔ)器、DSP、FPGA芯片能夠提高數(shù)據(jù)傳輸速度,擴(kuò)充數(shù)據(jù)存儲(chǔ)空間,加強(qiáng)軟件處理能力,實(shí)現(xiàn)系統(tǒng)整體性能指標(biāo)的升級(jí)。本方案已經(jīng)在產(chǎn)品中應(yīng)用,具有嵌入式系統(tǒng)小尺寸、低功耗的優(yōu)點(diǎn),通過(guò)升級(jí)能夠滿足更高的技術(shù)要求。