《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA的RGB到Y(jié)CrCb顏色空間轉(zhuǎn)換
基于FPGA的RGB到Y(jié)CrCb顏色空間轉(zhuǎn)換
摘要: 通 過對轉(zhuǎn)換算法的研究,,推導(dǎo)出適合在FPGA上實現(xiàn)的新算法,,算法優(yōu)點突出。算式中乘法器采用DSP48 Slice模塊實現(xiàn),,提高了轉(zhuǎn)換算法的運算速度,。從綜合報告可以看出,除了使用5個DSP48s外,,其他資源使用的比較少,。運算速度最大能夠達到189 MHz,能夠充分滿足運算量大,,實時性要求高的應(yīng)用,。
Abstract:
Key words :
0 引  言

     隨著多媒體和通信技術(shù)的發(fā)展,視頻圖像處理的實時性成為人們關(guān)注的熱點,。視頻圖像處理一般都是用數(shù)字信號處理器 (digital signal processor,,DSP)來完成的。為了滿足實時性要求,,往往采用多DSP或DSP陣列的方法,,使系統(tǒng)在成本、重量,、功耗等方面都會快速升高?,F(xiàn)場可 編程門陣列(FPGA)運算的并行性和內(nèi)嵌DSP核等特點,能夠提高運算速度滿足視頻處理的實時性要求,。在視頻圖像顯示,、處理時,采用的顏色空間主要有 RGB,,YCrCb兩種,。RGB基于三基色原理,顏色實現(xiàn)簡單,在計算機,、電視機顯示系統(tǒng)中應(yīng)用廣泛,,YCrCb將顏色的亮度信號與色度信號分離,易于實 現(xiàn)壓縮,,方便傳輸和處理,。在視頻壓縮、傳輸?shù)葢?yīng)用中經(jīng)常需要實現(xiàn)RGB與YCbCr顏色空間的相互變換,。這里推導(dǎo)出一種適合在FPGA上實現(xiàn)從RGB到 YCbCr,。顏色空間變換的新算法,采用單片F(xiàn)PGA完成電路設(shè)計,,利用FPGA內(nèi)嵌DSP核實現(xiàn)乘法運算,,提高了轉(zhuǎn)換算法的運行速度。  

1 顏色空間

    在RGB顏色空間中,,自然界所有顏色都可以用紅(R),、綠(G)、藍(B)三種顏色的不同強度組合而重現(xiàn),。RGB的取值范圍分別為0~255,,表1列出了幾種顏色對應(yīng)的R,G,,B取值,。


 
    RGB生成顏色容易實現(xiàn),被廣泛應(yīng)用在計算機,、彩色電視機的顯示系統(tǒng)中,。但是RGB表示顏色的效率并不是很高,3個顏色分量同等重要,,而且亮度信息存在于所有顏色分量中,,當(dāng)需要對像素點的亮度或者色度值進行修改時,必須同時改變RGB三者的值,。

    YCrCb 顏色空間是在開發(fā)世界范圍數(shù)字分量食品標(biāo)準(zhǔn)過程中作為ITU-R BT.601標(biāo)準(zhǔn)的一部分而開發(fā)出來的,。在YCRCb顏色空間中,Y表示亮度信號,,取值范圍為16~235,;Cr,Cb表示色度信號,,取值范圍為 16~240,,亮度信號與色度信號相互獨立。這種顏色表示方法可以利用人眼的特性降低數(shù)字彩色圖像的存儲空間,。人眼視覺系統(tǒng)(HVS)對亮度細節(jié)的敏感度 高于顏色細節(jié),,適當(dāng)減少色度分辨率不會明顯影響圖像的畫質(zhì),,易于實現(xiàn)數(shù)據(jù)壓縮,。

2 RGB到Y(jié)CrCb的轉(zhuǎn)換

     在ITU-R BT.601標(biāo)準(zhǔn)中給出了RGB與YCrCb的轉(zhuǎn)換關(guān)系式如下:

    式中:R’,,G’,B’表示Garoma校正后的R,,G,,B值。該轉(zhuǎn)換關(guān)系式是一個3×3乘法矩陣,,電路實現(xiàn)時需要9個乘法器和9個加法器,,在FPGA中直接實現(xiàn)時將會占用較多邏輯資源。

    為了減少邏輯資源的使用,,需要對該算法做進一步改進,,簡化運算過程,從而以較少的邏輯資源實現(xiàn)轉(zhuǎn)換電路,。首先對Cb,,Cr做如下化簡:

Cb=0.148 2(B’-R’)+0.291 0(B’-G’)+128
Cr=0.367 8(R’-G’)-0.071 4(B’-R’)+128

     對 y的計算公式進行化簡時,令Y’=0.256 8R’+0.501 4G’+0.097  9B’,,Cb’  =-0.148  2R’-0.291 0G’+0.439 2B’,,有0.577 2Y’+Cb’=0.495 7B’。為了計算方便,,近似值為0.5B’,。此時,有Y’=1.732 5(0.5B’-Cb’),,與原式誤差為△Y’=0.007 4B’,,其范圍為0~1.887。當(dāng)以Y’表示Y時,,需要對誤差作補償,。計算公式可表示為:

Y=1.732 5(0.5B’-Cb’)+offset

式中:offset=16-0.007 4B’,化簡后的轉(zhuǎn)換公式如下:

Y=1.732 5(0.5B’-Cb’)+offset

Cb=0.148 2(B’-R’)+0.291 0(B’-G’)+128    (2)

Cr=0.367 8(R’-G’)-0.071 4(B’-R’)+128

式中:Cb’=0.148 2(B’-R’)+0.291 0(B’-G’),,

offset=16-0.007 4B’,。

根 據(jù)B’的取值不同,offset的取值取整后為14,,15,,16。在計算過程中,,可以用一個數(shù)據(jù)選擇器根據(jù)B’值的不同選擇offset的值,。0.5B’ 的計算可以用移位實現(xiàn)?;喓蟮霓D(zhuǎn)換算法,,對Y,,Cb,Cr的計算將比原來節(jié)省4個乘法器,。在FPGA中,,加法器、數(shù)據(jù)選擇器和移位算法的實現(xiàn)比乘法器簡 單,,該化簡將利于減少邏輯資源的應(yīng)用,,簡化實現(xiàn)電路,提高運算速度,。
轉(zhuǎn)換電路結(jié)構(gòu)如圖1所示,。



3 基于FPGA的實現(xiàn)

在FPGA中,對乘法的實現(xiàn)比較復(fù)雜,,可以采用如下幾種方法:

(1)直接用編程語言描述乘法運算,,由綜合工具自動實現(xiàn),用該方法描述,,實現(xiàn)簡單,,但是耗用比較多的邏輯資源。

(2)利用查找表的方式實現(xiàn)乘法運算,,事先把要相乘數(shù)據(jù)的所有結(jié)果算出來存到ROM中,,根據(jù)輸入數(shù)據(jù)的值讀取相應(yīng)的結(jié)果,當(dāng)用該方法相乘數(shù)據(jù)位數(shù)比較多時,,會占用大量的存儲空間,。

(3)用FPGA中內(nèi)嵌的乘法器實現(xiàn),該方法實現(xiàn)簡單,,當(dāng)用VHDL語言實現(xiàn)時,,調(diào)用相應(yīng)的乘法模塊即可。

本文采用第三種方法,,用專用乘法器來實現(xiàn)轉(zhuǎn)換公式中的乘法運算,。Xilinx的Virtex 4系列FPGA芯片內(nèi)嵌的乘法器為Xtreme DSPTM Slice-DSP48 Slice其工作頻率高達500 MHz,支持多種獨立的功能,,包括乘法器,、乘累加器(MAC)、后接加法器的乘法器,、三輸入加法器,、桶形移位寄存器、寬路線多路復(fù)用器,、大小及比較器或?qū)?計數(shù)器,。本文將運用DSP48 Slice模塊實現(xiàn)乘加運算,在電路結(jié)構(gòu)圖的虛線框中,,乘法和加法的運算將用單個DSP48 Slice模塊實現(xiàn),。這樣將會減少轉(zhuǎn)換關(guān)系式中加法器的數(shù)量,,節(jié)約邏輯資源,在程序中可以用元件例化語句調(diào)用DSP48 Slice模塊,,實現(xiàn)方法簡單,,程序簡潔。為了滿足浮點數(shù)和運算精度的要求,,適合在FPGA中實現(xiàn),,將式(2)改寫為:



式 中的除法運算可以通過截斷低位數(shù)據(jù)的方法實現(xiàn),,在截斷數(shù)據(jù)時,,對截去小數(shù)部分判斷,采用4舍5人的方法,,當(dāng)截去部分的最高位是1時,,有進位,最高位是0 時,,直接舍去,。用VHDL語言描述式(3)的轉(zhuǎn)換算法,輸入R’,,G’,,B’是8位無符號二進制數(shù),進行加減運算時,,需要做符號位補位,。



在每個運算部件(包括乘法和加減法器)的輸出以及系統(tǒng)的輸入/輸出之間加上緩存寄存器,實現(xiàn)流水線設(shè)計,,能提高資源利用率,,加快運算速度,寄存器級數(shù)由運算延時大小決定,。在輸出端用計數(shù)器控制運算開始時的噪音輸出,。箝位電路控制輸出數(shù)據(jù)范圍滿足顏色空間的要求。

4 仿真結(jié)果

在Xilinx的Virtex4-FX平臺實現(xiàn)現(xiàn)圖1的電路結(jié)構(gòu),,用ISE軟件仿真,。資源使用情況如下:



時序仿真結(jié)果如圖2所示。



通過圖2可以驗證轉(zhuǎn)換算法的正確性,。在使能信號en有效后,,經(jīng)過6個時鐘的運算時延,輸出端有轉(zhuǎn)換結(jié)果輸出,,輸出結(jié)果四舍五入,,誤差0.5,比以往算法提高了變換結(jié)果的精度,。

5 結(jié)  語

通 過對轉(zhuǎn)換算法的研究,,推導(dǎo)出適合在FPGA上實現(xiàn)的新算法,,算法優(yōu)點突出。算式中乘法器采用DSP48 Slice模塊實現(xiàn),,提高了轉(zhuǎn)換算法的運算速度,。從綜合報告可以看出,除了使用5個DSP48s外,,其他資源使用的比較少,。運算速度最大能夠達到189 MHz,能夠充分滿足運算量大,,實時性要求高的應(yīng)用,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。