- 相關(guān)推薦
用CPLD實(shí)現(xiàn)嵌入式平臺(tái)上的實(shí)時(shí)圖像增強(qiáng)
摘要:提出了在嵌入式平臺(tái)上用CPLD實(shí)現(xiàn)實(shí)時(shí)圖像增強(qiáng)算法的解決方案,并加以實(shí)現(xiàn)。重點(diǎn)討論了經(jīng)過改進(jìn)的圖像增強(qiáng)算法以及使用CPLD實(shí)現(xiàn)的具體方法,介紹了所采用的嵌入式平臺(tái)的總體結(jié)構(gòu)。關(guān)鍵詞:嵌入式CPLD實(shí)時(shí)處理圖像增強(qiáng)
通常,在擁有DSP或FPGA的嵌入式平臺(tái)上,有關(guān)圖像信號(hào)處理的算法部分都由DSP和FPGA完成。但是相對(duì)于標(biāo)準(zhǔn)的PC平臺(tái)來說,嵌入式平臺(tái)的資源有限得多,而且由于成本的原因,中央處理器的速度也通常無法與PC相比。因此,在PC機(jī)上用軟件可以輕易實(shí)現(xiàn)的圖像處理算法,完全移植到嵌入式平臺(tái)上就要頗費(fèi)一番周折了。
為了達(dá)到實(shí)時(shí)圖像處理的目的,除了最大限度地發(fā)揮中央處理器的圖像處理能力外,還需要合理地分配任務(wù)。DSP芯片的優(yōu)勢(shì)在于乘除運(yùn)算的能力,由于其特殊的流水線結(jié)構(gòu)和處理單元,大部分DSP都能在單周期內(nèi)完成在PC上需若干個(gè)周期才能完成的乘法運(yùn)算,所以在進(jìn)行諸如FFT、DCT等運(yùn)算時(shí)優(yōu)勢(shì)明顯;相反在進(jìn)行簡(jiǎn)單的加減運(yùn)算時(shí),由于時(shí)鐘頻率和總線寬度都無法與PC機(jī)相比,效率不高。因此,如果能用硬件實(shí)時(shí)實(shí)現(xiàn)這些相對(duì)簡(jiǎn)單卻又繁瑣的運(yùn)算,就可以大大提高系統(tǒng)的總體性能。
。备倪M(jìn)的圖像增強(qiáng)算法
圖像增強(qiáng)是圖像處理中用于改善圖像質(zhì)量以及圖像視覺效果的一種方法。在DSP平臺(tái)上采用直方圖均衡實(shí)現(xiàn)實(shí)時(shí)圖像增強(qiáng)是一種常用的方法。對(duì)一幅連續(xù)圖像,其具有灰度G的閾值面積(所有輪廓線所包圍的面積)為A(G),則其直方圖H(G)定義為:
。(G)=lim[A(G+ΔG)-A(G)/ΔG=d/dcA(G),
ΔG→0
對(duì)于數(shù)字圖像,G為整數(shù),A(G)表示灰度值大于等于G的象素個(gè)數(shù),當(dāng)ΔG=1,H(G)=A(G+1)-A(G)。
如果對(duì)A(G)做一次系數(shù)為Gm/A0的比例變換,Gm表示灰度的最大值,A0表示圖像的面積(在數(shù)字圖像中為象素總數(shù))。這就是種線性直方圖均衡。這種直方圖均衡的具體實(shí)現(xiàn)如下:
。1)對(duì)于圖像{Pi,j|i=1,2,...,n;j=1,2,...,m},就灰度G,G=0,1,...255,求出直方圖H(G);
(2)由A(G+1)=A(G)+H(G)求出閾值面積A(G),G=1,2,...,255;
(3)求出變換后的灰度分度值hnew(G)=255A(G)/A0,A0=nm;
。4)Pij=hnew(Pij)。
借助LUT,可使運(yùn)算以最快速度實(shí)現(xiàn)。
考察直方圖均衡的實(shí)現(xiàn)過程可以發(fā)現(xiàn),這是一種有限區(qū)間內(nèi)的單調(diào)變換。從其頻域特性看,直方圖均衡改變了已有頻率成分的分布,使它們分布得更加均勻,但并不增加新的頻率成分。直方圖均衡對(duì)于彩色(灰度)值集中在低端的圖像,可起到較明顯的視覺改善作用。但對(duì)于那些色彩分布很不均勻、頻帶較窄,特別是整體偏亮的圖像,效果就不明顯了。
本文采用一種新的圖像增強(qiáng)方法,將對(duì)圖像的邊緣增強(qiáng)處理與均衡結(jié)合起來,并且這些運(yùn)算最終可由硬件實(shí)現(xiàn)。
對(duì)于連續(xù)圖像P,其局部邊緣可由對(duì)應(yīng)空間梯度的幅值,取其一階近似ΔPi,j=2Pi,j-Pi,j-Pi-1,j,可得圖像{Pi,j|i=1,2,...,n;j=1,2,...,m}在(i,j)的邊緣信息。
如果不計(jì)Pi,j的取值范圍,可直接對(duì)圖像{Pi,j|i=1,2,...,n;j=1,2,...,m}進(jìn)行修正:
。小鋓,j=Pi,j+ΔPi,j,
其中,P′i,j表示Pi,j修正后的值。顯然,圖像{Pi,j|i=1,2,...,n;j=1,2,...,m}按此規(guī)則修正后邊緣值的變化更為強(qiáng)烈,邊緣更為突出,可達(dá)到邊緣增強(qiáng)的效果。同時(shí),由于在原圖像上疊加了梯度值,使得修正后的圖像的頻譜有一定的擴(kuò)展。但由于沒有對(duì)Pi,j的取值作約束,這樣處理后的象素值可能會(huì)溢出,例如對(duì)于每個(gè)色彩通道為8位的圖像,處理后的數(shù)值可能會(huì)大于255或小于0。因此,通常要對(duì)其進(jìn)行歸一化處理,即:
。校睿澹鳎剑玻担怠(P′-P′min)/(P′max-P′min)。
但用硬件實(shí)現(xiàn)乘除運(yùn)算可能會(huì)占用很多資源,上述公式即便以運(yùn)算實(shí)現(xiàn)都是很不經(jīng)濟(jì)的。本文采用預(yù)拉伸加飽和/截止的方法,在不犧牲頻率特性的基礎(chǔ)上達(dá)到減少計(jì)算量的目的。
考察ΔPi,j與Pi,j的直方圖,分別取得它們的右峰值所對(duì)應(yīng)的橫座標(biāo),記為GΔ和G,并找到k,使得kGΔ+G=255,則修正公式變?yōu)椋小鋓,j=Pi,j+kΔPi,j。其中kΔPi,j可以LUT實(shí)現(xiàn)。修正后的P′i,j可在[0,255]上進(jìn)行飽和/截止運(yùn)算。
。灿茫茫校蹋膶(shí)現(xiàn)實(shí)時(shí)的圖像增強(qiáng)
本文所采用的改進(jìn)圖像增強(qiáng)算法的主要成份是差分、累加以及飽和/截止。這些運(yùn)算都是加減法及邏輯運(yùn)算,都屬于ALU的簡(jiǎn)單操作,適合硬件實(shí)現(xiàn)。本文采用CPLD實(shí)現(xiàn)所提出的算法。以對(duì)具有30fps的1280×1024RGB圖像計(jì)算ΔPi,j為例,每計(jì)算一點(diǎn)ΔPi,j需要4次加(減)運(yùn)算,即總的需要1280×1024×3×30×4=471,895,200次加(減)運(yùn)算。如果采用的DSP的速度是100MHz,且假定所有運(yùn)算都是單周期的,則僅僅該運(yùn)算就需要4.7s!所以采用CPLD實(shí)現(xiàn)某些運(yùn)算是必需的。
圖3圖像增強(qiáng)算法的硬件實(shí)現(xiàn)結(jié)構(gòu)
采用CPLD實(shí)現(xiàn)運(yùn)算(例如邊緣處理中涉及的求梯度運(yùn)算),還需解決數(shù)據(jù)的暫存問題。本文以一片高速SRAM作為數(shù)據(jù)緩沖區(qū)。由于圖像數(shù)據(jù)的采樣輸入的頻率也很高,需要充分合理地安排好每一次操作的時(shí)序,充分利用已參與運(yùn)算的數(shù)據(jù)及中間結(jié)果,減少數(shù)據(jù)進(jìn)出SRAM的次數(shù)。
2.1基于E1-DSP的網(wǎng)絡(luò)圖像采集平臺(tái)
在分析具體實(shí)現(xiàn)方法前,先簡(jiǎn)要介紹所采用的硬件平臺(tái)。該平臺(tái)主要用于遠(yuǎn)程圖像采集和以太網(wǎng)傳輸,其圖像通道結(jié)構(gòu)如圖1所示。
。希郑梗叮玻笆牵茫停希拥臄(shù)字圖像傳感器,負(fù)責(zé)采集連續(xù)的數(shù)字圖像;中央處理器使用德國(guó)HYPERSTONE公司的E1系列RISCDSP,它集DSP和RISC于一身,可以加載OS,方便地實(shí)現(xiàn)任務(wù)調(diào)度、內(nèi)存管理等功能,大大提高系統(tǒng)的總體性能;CPLD的基本功能是作為E1總線接口控制模塊,本文還將用它實(shí)現(xiàn)圖像增強(qiáng)運(yùn)算。
。玻菜惴ǖ目偭鞒
為了實(shí)現(xiàn)實(shí)時(shí)的讀寫和運(yùn)算,需要由外部電路產(chǎn)生24MHz×4的時(shí)鐘EXCLK作為讀寫時(shí)鐘,所有時(shí)序都由CMOS時(shí)鐘和EXCLK控制,可以做到完全同步。具體流程如圖2所示。
(1)在CMOS時(shí)鐘到來時(shí),從CMOS傳感器的數(shù)據(jù)輸出口采集Pi,j,并實(shí)現(xiàn)加法運(yùn)算RESULT=Pi,j+Pi,j,同時(shí)用EXCLK的第0個(gè)時(shí)鐘向SRAM寫入P′i,j-1或P′i,m-1(本行最后一個(gè)數(shù)據(jù),下一次操作應(yīng)換行);
。2)在EXCLK的第1個(gè)時(shí)鐘鎖存RUSELT,由SRAM讀入Pi-1,j,并做減法運(yùn)算RESULT=RESULT-Pi-1,j;
(3)在EXCLK的第2個(gè)時(shí)鐘鎖存RUSELT,由SRAM讀入Pi,j-1,并做減法運(yùn)算RESULT=RESULT-Pi,j-1;
(4)在EXCLK的第3個(gè)時(shí)鐘鎖存RUSELT,同時(shí)寫入Pi,j。
然后開始下一個(gè)點(diǎn)的運(yùn)算。
2.3硬件實(shí)現(xiàn)的邏輯結(jié)構(gòu)
用CPLD實(shí)現(xiàn)該算法所采用的邏輯結(jié)構(gòu)如圖3所示。
其中?熏加模塊實(shí)現(xiàn)2×Pi,j運(yùn)算,生成9位的運(yùn)算結(jié)果交給減模塊;減模塊在EXCLK的第二和第三個(gè)時(shí)鐘分別讀入Pi-1,j和Pi,j-1進(jìn)行減法運(yùn)算,并把結(jié)果存回result寄存器。由于兩次減法在時(shí)間上是錯(cuò)開的,因此只需要一個(gè)減法器就夠了,節(jié)約了內(nèi)部資源。
圖3中的脈沖計(jì)數(shù)器是一個(gè)模4計(jì)數(shù)器,所有的讀寫時(shí)序和運(yùn)算時(shí)序都由它控制。數(shù)據(jù)通道切換模塊控制流入result寄存器的數(shù)據(jù)流,在第一個(gè)EXCLK時(shí)鐘讓加法器的結(jié)果進(jìn)入result,其余的時(shí)間都讓減法器的結(jié)果進(jìn)入result。兩個(gè)選通邏輯模塊對(duì)EXCLK起門控作用,選通邏輯1允許第1個(gè)和第2個(gè)時(shí)鐘通過,用來鎖存從SRAM讀入的數(shù)據(jù);選通邏輯2允許第1、2、3個(gè)時(shí)鐘通過,用來鎖存三次運(yùn)算的結(jié)果。
。樱遥粒偷淖x寫操作由地址發(fā)生器和讀寫控制模塊共同實(shí)現(xiàn)。由于四次讀寫操作的地址都不同,且不連續(xù),無法用普通的地址計(jì)數(shù)器實(shí)現(xiàn)。這里采用地址計(jì)數(shù)器加偏移的相對(duì)尋址法,具體結(jié)構(gòu)如圖4所示。
地址計(jì)數(shù)器中保存Pi,j的地址,它由cmosclk作為時(shí)鐘實(shí)現(xiàn)累加;偏移地址則由脈沖計(jì)數(shù)器模塊控制,分別選擇P′i,j-1、Pi-1,j、Pi,j-1和Pi,j的偏移地址;最后做減法運(yùn)算得到絕對(duì)地址送到SRAM。
通過上述設(shè)計(jì)和優(yōu)化,完全可以在結(jié)構(gòu)和功能都比較簡(jiǎn)單的CPLD上實(shí)現(xiàn)實(shí)時(shí)的圖像增強(qiáng)處理。
由于采
用了改進(jìn)的圖像增強(qiáng)算法,在處理窄頻帶的圖像時(shí)收到了非常好的效果,部分測(cè)試結(jié)果如圖5所示。
與傳統(tǒng)的處理方法相比,改進(jìn)后的算法對(duì)圖像的均衡效果更為明顯一些,而且由于展寬了頻帶,圖像的細(xì)節(jié)更加豐富,圖像更加明艷和清晰。
以上算法都在CPLD上實(shí)現(xiàn),并沒有占用DSP的處理時(shí)間,因而節(jié)省了大量的運(yùn)算時(shí)間。筆者做過一個(gè)實(shí)際測(cè)試,在100MHz主頻的E1DSP上用C編程實(shí)現(xiàn)一幀640×480RGB圖像的增強(qiáng)算法大約需要100ms(如果用匯編語言編程或?qū)Τ绦蜃鲀?yōu)化可使性能提高一些),而且要占用大量存儲(chǔ)資源。這樣的運(yùn)算速度只適合靜止圖像的處理。所以,如果不做簡(jiǎn)化處理或采用更高性能的DSP,根本無法做到實(shí)時(shí)處理。由此可見,采用硬件處理的方法可以極大地提高系統(tǒng)的總體性能。
綜上所述,在擁有DSP的嵌入式平臺(tái)上使用CPLD實(shí)現(xiàn)改進(jìn)的圖像增強(qiáng)算法是可行的,對(duì)于實(shí)時(shí)的圖像處理是一種高效的解決方法。
【用CPLD實(shí)現(xiàn)嵌入式平臺(tái)上的實(shí)時(shí)圖像增強(qiáng)】相關(guān)文章:
用CPLD實(shí)現(xiàn)嵌入式平臺(tái)上的實(shí)時(shí)圖像增強(qiáng)08-06
基于32位嵌入式系統(tǒng)的實(shí)時(shí)圖像采集模塊08-06
基于PCI總線的嵌入式實(shí)時(shí)DSP圖像采集系統(tǒng)08-06
一個(gè)嵌入式系統(tǒng)的Petri網(wǎng)模型與CPLD實(shí)現(xiàn)08-06
用CPLD實(shí)現(xiàn)單片機(jī)讀寫模塊08-06
實(shí)時(shí)混音的實(shí)現(xiàn)?08-06
用CPLD實(shí)現(xiàn)DSP與PLX9054之間的連接08-06