面向H.264編解碼系統(tǒng)的圖像預處理技術(shù)
摘要 在圖像采集過程中,難免會引入噪聲,這對視頻圖像的質(zhì)量產(chǎn)生了一定影響。為了避免噪聲圖像傳入編解碼系統(tǒng)中,對采集到的視頻圖像進行預處理,以FPGA為核心處理器件,采用中值濾波技術(shù),并用Modelsim仿真工具進行驗證。對仿真結(jié)果進行分析表明,通過對圖像的預處理,濾波效果良好,達到了對視頻圖像降噪的目的,避免了噪聲逐級傳遞,從而保證了視頻圖像的顯示效果。
近年來,隨著多媒體技術(shù)的不斷發(fā)展,視頻圖像的傳輸應(yīng)用越來越廣泛,在視頻圖像的采集和傳輸過程中,由于溫度、光照、電信號等因素的影響,很容易在視頻圖像采集的過程中引入噪聲,這對圖像的顯示和欣賞效果造成了一定影響。因此,在視頻圖像的采集和傳輸過程中,對圖像進行一定的降噪處理是有必要的。為了降低圖像噪聲,可對編解碼系統(tǒng)中采集到的圖像進行預處理,將濾波預處理之后的圖像再存入編解碼系統(tǒng)中。由于圖像的實時性,對圖像預處理的處理速度提出了較高的要求,普通軟件處理速度達不到要求,而FPGA具有較快的處理速度,成為實時圖像處理的首選。
本文基于面向H.264視頻編解碼系統(tǒng),在充分考慮系統(tǒng)實時性的基礎(chǔ)上,以FPGA為核心的處理部件,設(shè)計了具有較高處理能力的中值濾波器對視頻圖像進行預處理,有效消除了圖像中的噪聲,避免了噪聲的逐級傳遞,達到了較高視頻圖像質(zhì)量和較好視覺效果的目的。
1 圖像預處理算法
1.1 BT656和YUV420格式轉(zhuǎn)換
本文設(shè)計的視頻圖像預處理系統(tǒng),主要是基于面向H.264視頻編解碼系統(tǒng)上的。如圖1所示,是編解碼系統(tǒng)的部分架構(gòu),包括了視頻圖像采集、A/D轉(zhuǎn)換和預處理,SAA7113芯片將攝像頭采集到的模擬信號轉(zhuǎn)化為BT656格式的數(shù)字信號。
BT656格式,即YCrCb422(YUV422)格式,YUV422格式在每行像素中,亮度信號Y數(shù)據(jù)和色度信號U、V數(shù)據(jù)的比例都是2:1,為了節(jié)省數(shù)據(jù)量,本文中采用YUV420的格式,因此需要將BT656格式和YUV420格式進行格式轉(zhuǎn)換。YUV420格式的每行和每列,Y數(shù)據(jù)和U、V數(shù)據(jù)的比例都是2:1,即4個Y值共用一個U和V,這樣就在垂直方向數(shù)據(jù)量比YUV422格式數(shù)據(jù)量減少了1/2。
本文采用的轉(zhuǎn)換方法是丟棄偶數(shù)行像素點的色度信號Cr和色度信號Cb,從而使得每兩行的4個像素點公用一個色度信號Cr和一個色度信號Cb,使得存儲的視頻圖像數(shù)據(jù)能進一步減少,而不影響圖像的質(zhì)量。假設(shè)Yxy表示亮度信號在(x,y)位置處的值;Crxy、Cbxy表示了色度信號在(x,y)位置處的值,則BT656格式和YUV420有如下的對應(yīng)關(guān)系
1.2 中值濾波原理
中值濾波器就是用該像素相鄰像素的像素值的中值來代替原中心像素點的值
中值濾波器的應(yīng)用較廣,對于由隨機信號引起的噪聲如脈沖噪聲等等,中值濾波不僅具有良好的去噪能力,且在相同尺寸下相比線性平滑濾波器能夠更好地保護圖像的細節(jié)部分。由于中值濾波器的這些特性,使其在圖像濾波領(lǐng)域應(yīng)用廣泛。
針對YCrCb420格式的特點,需采用合適的中值濾波設(shè)計對視頻圖像的噪點進行處理。由于YCrCb420數(shù)據(jù)的存儲是按照Y、Cr、Cb的順序。因此,可通過流水的方式依次對存儲在DDR II存儲器中的Y、Cr、Cb數(shù)據(jù)進行處理。以亮度信號Y為例,本設(shè)計中,中值濾波的計算步驟如下:(1)將窗口的中心與圖像中的某個像素點的位置重合,然后讓濾波窗口在圖像中滾動,每次只移動一個像素點。(2)讀取窗口內(nèi)包含像素點的亮度值。(3)將這些亮度值按照從小到大的順序排列,確定排序位于中間值。(4)用中間值來代替濾波窗口中心的亮度值。(5)由于濾波窗口的中心不可能位于圖像邊緣,需要對圖像的邊界進行單獨處理。
對于分辨率為640×480的視頻圖像而言,YCrCb420數(shù)據(jù)亮度信號的大小為640×480×8,而色度信號Cr和Cb分別為320×240×8。以亮度信號為例,中值濾波原理如圖2所示。
2 中值濾波器設(shè)計
在實際去噪的過程中,濾波窗口的大小對濾波效果的影響比較大,若窗口選取較小,雖可有效地保護圖像的細節(jié)信息,但去噪的效果會相對較弱;若窗口選取較大,去噪效果會加強,但會使濾波后的圖像更加模糊,丟失了細節(jié)信息,且濾波窗口越大會相應(yīng)的消耗更多的資源。因此,從資源和效率方面綜合考慮,本設(shè)計中,中值濾波的窗口采用3×3的方形濾波窗口。根據(jù)上述中值濾波原理及窗口選取,本系統(tǒng)中YCrCb420視頻圖像的中值濾波的設(shè)計如圖3所示。
如圖3所示,首先要從DDR II存儲器中讀取YCrCb420數(shù)據(jù),對Y、Cr、Cb數(shù)據(jù)分別進行中值濾波來去除像素值中的噪點。將讀取的數(shù)據(jù)送入3×3的窗口生成模塊,然后將窗口中的9個數(shù)據(jù)送入中值比較模塊得出中值。由于邊緣數(shù)據(jù)無法位于3×3窗口的中心,即無法用求中值的方式來更新邊緣數(shù)據(jù)。因此,要通過邊緣檢測模塊將邊緣的數(shù)據(jù)單獨進行處理。最終,將得到的中值和邊緣數(shù)據(jù)重組,得出所需數(shù)據(jù)并送入DDR II存儲器中。
(1)視頻圖像數(shù)據(jù)讀取模塊。系統(tǒng)采用Altera公司的QYSY平臺,總線協(xié)議為Avalon協(xié)議,設(shè)計中從DDR II存儲器中讀數(shù)據(jù)要滿足Avalon總線的協(xié)議要求。為了提高數(shù)據(jù)的讀取速度,圖像數(shù)據(jù)的讀取過程采用Avalon master read(主端口讀)的模式。此外,為了加快數(shù)據(jù)的讀取速度,實際的設(shè)計中還采用了帶突發(fā)傳輸屬性的模型進行數(shù)據(jù)讀取。
(2)3×3的窗口生成模塊。3×3窗口通過使用3個FIFO來實現(xiàn),每一個FIFO存儲一行的數(shù)據(jù),待準備好后,每個FIFO連續(xù)出3個數(shù)據(jù),形成一個3×3數(shù)據(jù)的窗口,具體實現(xiàn)如圖4所示。
由于采用3×3的窗口模式,所以要保證每次進入窗口中的數(shù)據(jù)是來自3個不同的像素行。因此在開始將數(shù)據(jù)送到3×3的窗口之前,要對兩行像素數(shù)據(jù)進行存儲,等到第三行數(shù)據(jù)到來時,才將數(shù)據(jù)一起送入3×3的濾波窗。設(shè)計采用同步FIFO進行數(shù)據(jù)存儲,同時通過FIFO的usedw信號進行數(shù)據(jù)的填充記錄。這里兩個同步FIFO用于進行前兩行數(shù)據(jù)的存儲,第三行數(shù)據(jù)則是通過前面的異步FIFO的輸出來提取。在兩行數(shù)據(jù)都在FIFO中準備好時(其中第一行數(shù)據(jù)存入line_3中,第二行數(shù)據(jù)存入line_2中),一旦line_3的FIFO讀信號開始有效時,便將3行數(shù)據(jù)送入3×3中(第3行數(shù)據(jù)由line_1的輸出實時的送入)
(3)中值生成模塊。對于3×3窗口中的9個待處理數(shù)據(jù),中值濾波的基本思想是通過比較得出這9個數(shù)的中值。中值濾波的輸出值由領(lǐng)域數(shù)據(jù)的中間值決定。具體的比較過程如圖5所示。
為加快處理速度,設(shè)計采用流水線技術(shù)。由于前一個步驟的輸出是下一個步驟的輸入,可考慮采用流水線技術(shù),以提高系統(tǒng)的工作頻率。由于前后操作使用相同的比較操作,前后級處理的時間相等,均是一個時鐘周期,可直接將前級的結(jié)果送入下一級。
通過7次比較,便能得出一個處理過的中值來代替原本窗口中間的值。由仿真波形可知,從數(shù)據(jù)準備好開始,到得出一個中值,只需4個周期的時間。數(shù)據(jù)連續(xù)輸入,中值也可連續(xù)的輸出,除了上述提到的在每3行的結(jié)尾處需要等待兩個周期。這里比較器的作用是通過比較找出3個數(shù)據(jù)中最大值、最小值和中值。
(4)邊緣數(shù)據(jù)檢測及處理。如圖3所示,在窗口移動過程中,只能處理窗口中間的數(shù)據(jù),由于邊緣的數(shù)據(jù)不可能作為窗口中間值,對于邊緣的數(shù)據(jù)必須要進行單獨處理。由于數(shù)據(jù)按行讀出的,邊緣數(shù)據(jù)包括第一列和最后一列的數(shù)據(jù)以及每一行的第一個數(shù)據(jù)和最后一個數(shù)據(jù)。邊緣檢測的實現(xiàn)如圖6所示。
設(shè)計采用不對邊緣數(shù)據(jù)進行處理的方式,僅將邊緣數(shù)據(jù)保留原值。邊緣數(shù)據(jù)通過line_2的FIFO的輸出來檢測,設(shè)置行和列計數(shù)器。必須保證第一個處理完的中值必須在第二行的第一個數(shù)據(jù)之后和第二行的最后一個數(shù)據(jù)之前到來。這種方式有利于數(shù)據(jù)的恢復。最后將經(jīng)過中值濾波的數(shù)據(jù)和邊緣數(shù)據(jù)進行重組后寫回到DDR II存儲器中,然后送入到H.264視頻編碼器中用于視頻編碼。
3 仿真驗證
實驗中,通過FIFO2來控制每行數(shù)據(jù)的邊緣檢測,保證利用最短的周期重組數(shù)據(jù),當遇到邊緣數(shù)據(jù)時,經(jīng)過5個寄存器進行暫存;當遇到中值數(shù)據(jù)時,直接使用。然后將邊緣數(shù)據(jù)和中值數(shù)據(jù)重組并經(jīng)過異步FIFO后,生成一個32位數(shù)據(jù),圖7中data即為最終重組數(shù)據(jù)。
對于圖像預處理的濾波效果,本文將帶有椒鹽噪聲的圖像數(shù)據(jù)輸入到圖像預處理系統(tǒng)中,對濾波效果進行比較,如圖8所示,經(jīng)過圖像預處理后直觀濾波效果良好,有效降低了噪聲。
4 結(jié)束語
本文主要描述了在將視頻圖像數(shù)據(jù)存儲于DDRII中之前,對視頻圖像進行預處理,去除相應(yīng)的噪聲過程,從而保證了送入H.264視頻編碼的視頻圖像的質(zhì)量,避免了噪聲的傳遞。通過仿真驗證和圖像直觀比較,實驗效果良好,具有較高的實用價值,為以硬件為基礎(chǔ)的實時圖像預處理提供了技術(shù)支持。雖然效果良好,卻仍有可改進的空間,例如濾波窗口可改為自適應(yīng)大小的窗口,濾波類型也可以是自適應(yīng)的,這就需要更深入地研究和實驗,從而保證更好的視頻圖像效果。