邵欣欣 劉衛(wèi)東
摘要:該文首先介紹了三種圖像縮放時常見的插值算法,并對它們進行比較分析,最終確定了該文是基于雙立方插值(也叫雙三次插值)技術(shù)的實現(xiàn),接著在此基礎(chǔ)上設(shè)計了一種應(yīng)用于視頻圖像縮放的算法,最后在硬件方面實現(xiàn)了相對應(yīng)的圖像縮放的硬件設(shè)計并對它進行了功能仿真。該文的亮點在于視頻圖像縮放的雙立方插值算法的設(shè)計,以及在硬件實現(xiàn)上為節(jié)省硬件資源所做的設(shè)計。
關(guān)鍵詞:雙立方插值;圖像縮放;算法;視頻圖像
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2013)07-1638-04
隨著信息技術(shù)時代的到來,數(shù)字圖像處理技術(shù)越來越成熟。而其中的圖像縮放技術(shù)更是被廣泛運用在如視頻監(jiān)控、高清電視、醫(yī)學(xué)成像等眾多領(lǐng)域。實際應(yīng)用場合常常會出現(xiàn)原始輸入圖像分辨率與目標顯示設(shè)備分辨率不同的情況,這時就需要使用圖像縮放技術(shù)。而插值是在圖像縮放技術(shù)中最常用的一種方法。
1 常用的圖像縮放技術(shù)
圖像的插值過程就是根據(jù)已知的觀測點像素值建立起一個簡單、連續(xù)的解析模型,以便能夠讓該模型預(yù)知或者推測物理量在非觀測點處的特性。在實際中我們最廣泛采用的插值方法有最鄰近插值、雙線性插值、雙立方插值。
1.1 最鄰近插值
這是一種最簡單的插值方法,原理就是令待插入點像素等于最靠近的臨近點的像素值。
1.2 雙線性插值
這種方法主要利用映射點在輸入圖像的4個鄰點的灰度值對映射點進行插值,即待插點處的數(shù)值用離待插點最近的四個點的值加權(quán)求得。雙線性插值的原理圖如下:
經(jīng)計算得到插值公式(2):
1.3 雙三次方插值1
雙三次方差值(又稱立方卷積插值),該方法是通過計算與待插值的像素點相鄰近的16個像素點的像素值,從而得到待插值的像素值。這種方法需要以插值基函數(shù)為基礎(chǔ)進行運算,常用的插值基函數(shù)如下圖所示:
2.1 視頻圖像縮放處理流程
目前計算機與電視機彩色顯示器顯示彩色都是采用R、G、B相加混色的原理。因此我們在處理視頻圖像縮放之前,首先將用攝像機或者其他設(shè)備攝得的彩色視頻圖像信號經(jīng)過分色、分別放大校正后得到RGB圖像2,然后再進行如圖4的分析。
圖4是視頻圖像信號經(jīng)過攝像攝得的并經(jīng)過相關(guān)處理之后的算法流程3,因為RGB顏色空間適合于顯示系統(tǒng),卻并不適合于圖像處理,所以通過(1)中RGBtoYUV模塊將RGB信號轉(zhuǎn)換成YUV信號,YUV是被歐洲電視系統(tǒng)所采用的一種顏色編碼方法,Y表示明亮度(Luminance),也就是灰階值;U、V表示的則是色度(Chrominance),描述影像色彩及飽和度。其中YUV與RGB信號轉(zhuǎn)換的如公式(4)所示:
2.2 雙立方插值算法
在這里我們設(shè)計一種基于雙立方插值的算法并且能夠運用在視頻圖像縮放中,具體的流程圖如下:
如圖5所示,其中(i , j)代表目標像素,i代表行數(shù),j代表列數(shù),設(shè)置他們的初始值為0,它在源圖像中的鄰近像素坐標為(x,y)。從RGBtoYUV模塊傳送的源圖像數(shù)據(jù),得到寬w和高h,然后第一步根據(jù)寬和高的縮放比例的倒數(shù)Sx、Sy得到目標圖像的寬wd=w/Sx、高hd=h/Sy。
首先因為設(shè)置了初始值,i的值小于寬度hd,對橫向進行一次縮放,j加1,如此循環(huán)一直到j(luò)不滿足條件,即j>=寬度wd;此時,i的值開始加1,當(dāng)i<高度hd時,進行縱向的縮放,如此循環(huán)到i不滿足條件,即i的值等于hd時,此時說明已經(jīng)達到理想的縮放結(jié)果,直接輸出縮放出的目標圖像。
在橫向和縱向的縮放過程中會計算出相對應(yīng)的橫向和縱向偏移量fu和fv,以及該行所在內(nèi)存首地址:原始起始地址+(int)(i*Sy)*(一行數(shù)據(jù)的寬度),各行橫向四點的地址為:各行起始地址+(int)(i*Sy)*(一個像素的字節(jié)數(shù))。這樣我們就求出了待插值的位置。我們設(shè)置一個緩存空間來存儲相鄰16個像素相對于源像素的橫向和縱向的偏移量。在求橫縱向偏移量的時候,我們要注意最后一行和最后一列的處理。
根據(jù)[sinC]基函數(shù)并經(jīng)過計算求得雙立方插值的插值系數(shù)(權(quán)重)為公式(5):
[1.06.0×x+23-4.0×x+13+6.0×x3-4.0×(x-1)3] (5)
公式(2-2)中x為插值點據(jù)各抽頭點的距離(注意 :距離有正負之別,左邊為負、右邊為正)。在進行橫向縮放的時候,在橫向上進行四個抽頭與對應(yīng)系數(shù)的乘累加,當(dāng)橫向縮放完成后,再將縱向抽頭及其系數(shù)進行乘累加。
最后將經(jīng)過處理的值輸出并結(jié)束。
3 算法的硬件實現(xiàn)
本文設(shè)計主要從兩方面來節(jié)省硬件資源:第一,采用從水平和垂直方向這兩個方向進行縮放功能設(shè)計的思路,每個單元輸出的插值點只和輸入的四個點有關(guān)系,這樣以來,雙立方插值算法得以實現(xiàn),并且節(jié)約了硬件上的資源。第二,我們在對圖像進行操作時,有時會出現(xiàn)成比例縮放的特殊情況,比如長和寬都縮小為原來的一半,或者都放大一倍的操作,因此在這里我們設(shè)計兩個模塊,當(dāng)遇到這種情況時,直接對它們整體進行縮放,而不用再在水平和垂直方向分別進行兩次縮放,這樣做的好處是可以減少運行時間,提高整體處理的效率。
此縮放模塊由ramA和ramB組成的乒乓ram、RGBtoYUV444模塊、Fifo緩存器和YUV444toYUV422四個模塊組成4。
模塊的工作過程5:圖像數(shù)據(jù)存放在乒乓ram中,能夠更有效地占用總線,RGBtoYUV444模塊從ram中讀出數(shù)據(jù),將RGB信號轉(zhuǎn)換成YUV信號,并將YUV信號存放在Fifo緩存器中,當(dāng)Fifo緩存器存滿一行數(shù)據(jù)的時候把使能信號拉高,通知YUV444toYUV422模塊可以進行圖像數(shù)據(jù)的縮放處理的工作了,此時YUV444toYUV422模塊從Fifo緩存器中讀出數(shù)據(jù),進行縮放大小的判斷,若為特殊的成倍數(shù)的縮放,則可以在特定的模塊進行縮放,然后直接輸出圖像數(shù)據(jù);否則,首先進行水平方向的縮放。然后根據(jù)行地址判斷當(dāng)前是否在縱向上已經(jīng)有所需抽頭數(shù)行的數(shù)據(jù)緩存在緩存器中。如果不滿足,則讀行地址,繼續(xù)對水平方向進行縮放,否則讀列地址對垂直方向進行縮放。最后輸出YUV像素數(shù)據(jù)和有效信號給下一級模塊。圖中,緩存器起到一定緩存像素數(shù)據(jù)的作用。
4 仿真
圖像縮放模塊的功能驗證主要是通過仿真工具Modelsim軟件進行仿真6。下圖為將720*480的圖像放大到1920*1080的圖像的仿真圖。
圖7中(a)為經(jīng)仿真之后的輸入模塊像素的仿真圖,(b)為輸出模塊的像素的仿真圖。我們可以簡單分析:i_data/o_data分別為輸入/輸出的圖像像素,從仿真圖中可以看出,結(jié)果符合我們欲將圖像放大的要求。
5 結(jié)束語
經(jīng)過驗證,整個算法的設(shè)計和硬件實現(xiàn)都可以滿足初步構(gòu)想,可以較清晰利的在視頻圖像處理中顯示圖像,并解決了硬件上資源消耗嚴重的問題。
參考文獻:
[1] 王會鵬,周利莉,張杰.一種基于區(qū)域的雙三次圖像插值算法[J].計算機工程,2010,11:33-34.
[2] 王新紅.數(shù)字視頻圖像處理與通信[M].北京:機械工業(yè)與出版社,2009.
[3] 趙興鵬.視頻圖像2D轉(zhuǎn)3D算法研究及硬件實現(xiàn)[D].青島:中國海洋大學(xué),2012.
[4] 屈有山,李英才.小波雙三次插值搜索算法提高遙感圖像分辨力[J].光電工程,2004,31(8):65-68.
[5] 鄒雪城,向祖權(quán).基于雙三次插值算法的圖像縮放引擎的設(shè)計[J].微電子學(xué)與計算機,2007,1(24).
[6] 夏宇聞.verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學(xué)出版社,2006.