基于FPGA的彩色圖像增強(qiáng)系統(tǒng)
在從圖像源到終端顯示的過程中,電路噪聲、傳輸損耗等會造成圖像質(zhì)量下降,為了改善顯示器的視覺效果,常常需要進(jìn)行圖像增強(qiáng)處理。圖像增強(qiáng)處理有很強(qiáng)的針對性,沒有統(tǒng)一的評價標(biāo)準(zhǔn),從一般的圖片、視頻欣賞角度來說,濾除噪聲、擴(kuò)展對比度、銳化以及色彩增強(qiáng)等處理能顯著提升視覺效果。
這里設(shè)計一個基于FPGA的實時視頻圖像處理系統(tǒng),包含增強(qiáng)對比度擴(kuò)展和色飽和度兩種處理方法,相比于DSP和ASIC方案來說,F(xiàn)PGA在性能和靈活性方面具有絕對優(yōu)勢,應(yīng)用FPGA設(shè)計視頻通信系統(tǒng)更普遍。
1 原理和算法
圖像增強(qiáng)處理可以在頻域和空間域進(jìn)行,典型的頻域方法如直方圖增強(qiáng)處理,適合于軟件系統(tǒng)實現(xiàn);而硬件系統(tǒng)更適合于空間域處理,因此本文所述的處理方法都將在空間域進(jìn)行。
1. 1 對比度擴(kuò)展
對比度擴(kuò)展又稱灰度變換,其目的是在拓展感興趣的灰度區(qū)間的同時,壓縮不感興趣的灰度區(qū)間。最簡單有效的方法是線性變換,滿足以下關(guān)系:
f(x,y)和g(x,y)分別表示輸入圖像和輸出圖像的灰度值。經(jīng)過變換,線性拉伸了在a~b內(nèi)的灰度值,同時對[0,a]和[b,255]灰度區(qū)間進(jìn)行抑制。從顯示設(shè)備的角度來說,一般民用級別的顯示器都不具備完美表現(xiàn)256灰階的能力,因此抑制過暗[0,a]和過亮[b,255]的灰度區(qū)間而增強(qiáng)中間區(qū)域的動態(tài)范圍,可以避免灰階的浪費。從另一個角度來講,通常一幅圖像所包含的過暗和過亮的像素點本來就是少數(shù),有目的有針對性地擴(kuò)展中間范圍灰度而壓縮兩頭的灰度,可增強(qiáng)圖像質(zhì)量,得到更好視覺效果,而圖像信息的損失卻很小。
1.2 色彩增強(qiáng)
色彩增強(qiáng)的目的是在保證顏色不失真的前提下,有針對性地增加圖像的色彩飽和程度,使其看起來更鮮艷生動,層次感更強(qiáng)。
1.2.1 HSI模型簡介
在彩色圖像處理中,RGB、YCbCr、CMYK等是常用的色彩模型,其算法和相互間的轉(zhuǎn)換很易用硬件實現(xiàn),但是它們都不能很好適應(yīng)實際上從人的角度來解釋的顏色。
研究表明,從人的角度來觀察一個彩色物體時,一般用色調(diào)、色飽和度和亮度這3個參量來描述該物體。色調(diào)描述純色的屬性,而飽和度給出一種純色被白光稀釋的程度的度量。亮度即圖像的明暗程度,是一個主觀的描述量?;谶@3個參量建立的HSI彩色模型是開發(fā)基于彩色描述的圖像處理方法的理想工具。下面簡單闡述HSI模型的原理。
圖1所示是一個RGB彩色空間的立方體模型,邊長歸一化為1,原點處為黑色,相對的頂點處為白色。連接黑白兩點得到灰度軸,這根軸上的飽和度為0,即沒有彩色分量。在灰度軸上有相同投影點的點具有相同的亮度,即垂直于灰度軸的平面內(nèi)的點具有相同的亮度值。
在立方體內(nèi)任取一點P,它與灰度軸確定一個平面。根據(jù)顏色學(xué)的理論,所有顏色都是由位于那些顏色定義的三角形內(nèi)的3種顏色產(chǎn)生的,在這個平面內(nèi),三角形的3個頂點分別是黑色、白色和P的顏色,而黑色和白色是不能改變色調(diào)的,所以這個平面內(nèi)的點具有與P點相同的色調(diào),即等色調(diào)面。直觀地說,越靠近灰度軸的點,顏色越淡,所以色飽和度的定義就是該點與灰度軸的距離:距離越遠(yuǎn),飽和度越強(qiáng);距離越近,飽和度越弱;距離為0則飽和度也為0,這時就完全沒有彩色。
實際上,用垂直于灰度軸的平面內(nèi)的彩色點軌跡來表示HSI空間(等亮度面)。當(dāng)平面沿灰度軸上下移動時,由于立方體邊界的切割而構(gòu)成的橫截面所決定的邊界呈三角形或呈六邊形。這里以六邊形為例,如圖2所示。
由圖2看出,三原色是按120°分割的,青、品紅和黃被稱為二次色,也是按120°分割,一次色與二次色之間相隔60°。圖中任給出一點Q,若以紅軸作參考,則Q向量與紅軸的夾角H決定其色調(diào),而向量長度S決定其飽和度,整個平面在灰度軸上的位置決定了平面內(nèi)所有點的亮度I。于是得到由RGB到HSI的轉(zhuǎn)換關(guān)系:
1.2.2 色飽和度增強(qiáng)算法
HSI模型可以方便地對色調(diào)和飽和度進(jìn)行調(diào)整,但是其運算比較復(fù)雜,很難用硬件來實現(xiàn)。不過根據(jù)其原理,可以直接在RGB空間進(jìn)行色飽和度的調(diào)整。這里假設(shè)RGB立方體內(nèi)任一點P(r,g,b),容易求出其在灰度軸上的投影點P*,連接P和P*,這是一條等色調(diào)線,如圖3所示。
只要在P*P的延長線上找到合適的點(如P1或P2),就可以對P點的飽和度進(jìn)行增強(qiáng)。由于已知P和P*的坐標(biāo),可以求得直線P*P方程:
令式(6)的值為t,可求得直線P*P的參數(shù)方程:
則色飽和度的調(diào)整就可通過調(diào)整t的取值來實現(xiàn)。當(dāng)t∈(-1,0)時,得到的點在P*和P之間,飽和度減弱;當(dāng)t>O時,得到的點在P*P之外,飽和度增強(qiáng)。
2 設(shè)計思路
2.1 對比度擴(kuò)展
用硬件實現(xiàn)浮點運算效率較低,這里采用查表的方法,在YCbCr空間進(jìn)行灰度變換,如圖4所示。
2.2 色飽和度增強(qiáng)
色飽和度調(diào)整在RGB空間進(jìn)行,設(shè)計為流水線操作,如圖5所示。
色飽和度增強(qiáng)是有針對性的,對于不同色飽和度的像素要作不同的處理。可以把一幅圖像的色飽和度分為4個等級,對于色飽和度低的像素進(jìn)行增強(qiáng)處理,而對于飽和度很高的像素則不進(jìn)行處理甚至是抑制處理。圖5所示是進(jìn)行2級的色飽和度調(diào)整的流水線操作:第1級令t=1,運算結(jié)果若溢出則轉(zhuǎn)入第2級調(diào)整(t=0.5)。若運算結(jié)果還是溢出,則輸出保持原輸入值(iR,iC,iB)。流水線操作使得平均每個像素的飽和度調(diào)整只需1個時鐘周期就能完成,只是輸入相對輸出有6個時鐘周期的延時。為了達(dá)到更好的效果,可以增加飽和度調(diào)整運算的級數(shù),后果是需要占用更多的硬件資源以及帶來更長的延時。
3 系統(tǒng)結(jié)構(gòu)
該實驗平臺為Ahera公司的DE2開發(fā)板。系統(tǒng)結(jié)構(gòu)如圖6所示。
4 測試結(jié)果
用ModelSim對灰度變換模塊進(jìn)行仿真的結(jié)果,如圖7所示。對色飽和度增強(qiáng)模塊進(jìn)行仿真的結(jié)果,如圖8所示。
視頻圖像測試對比效果如圖9和圖10所示。
5 結(jié)論
由實驗結(jié)果可知,該方法能有效改善圖像畫質(zhì),提升視覺效果。色飽和度增強(qiáng)處理由于其算法的特點,用硬件系統(tǒng)很難做到實時處理。從基本原理出發(fā),找到一種比較簡便的,在RGB空間就能進(jìn)行的色飽和度增強(qiáng)處理方法,在滿足實時性要求的同時,能有效達(dá)到色彩增強(qiáng)的目的。但也是由于視頻圖像處理的實時性要求以及硬件系統(tǒng)實現(xiàn)的特點,該方法更多地講究效率,某些細(xì)節(jié)部分還不夠完善,比如色彩失真等問題。進(jìn)一步研究重點可能就在于如何優(yōu)化硬件配置以及解決算法中浮點運算的問題。