何偉,李佳,林英撐,張玲,趙巍,鄔麗娜
(重慶大學(xué)通信工程學(xué)院,重慶400030)
在視頻監(jiān)控系統(tǒng)領(lǐng)域中,系統(tǒng)設(shè)備的數(shù)字化、網(wǎng)絡(luò)化和智能化是現(xiàn)代監(jiān)控系統(tǒng)發(fā)展的必然趨勢[1]。而新一代視頻壓縮標(biāo)準(zhǔn)H.264正是順應(yīng)該趨勢發(fā)展而興起的一種面向網(wǎng)絡(luò)的視頻圖像編碼與傳輸技術(shù),它除了可以增強(qiáng)網(wǎng)絡(luò)適應(yīng)能力外,還可以大幅度提高壓縮效率,能夠在相同碼率下獲得更高的主客觀質(zhì)量[2]。傳統(tǒng)的視頻采集設(shè)備(如模擬攝像機(jī)等),由于采用隔行掃描方式采集視頻,使得奇偶場的采集時間存在差異,導(dǎo)致運(yùn)動對象在視頻中出現(xiàn)“鼠齒效應(yīng)”,這不僅使圖像質(zhì)量降低,也極不利于H.264編碼器的碼率控制。因此,為了提高編碼效率和消除“鼠齒效應(yīng)”,必須對隔行掃描視頻進(jìn)行去隔行處理,從而使系統(tǒng)在同等帶寬下獲得更高質(zhì)量的視頻信號,以便進(jìn)行更加有效的智能視覺分析,達(dá)到更好的監(jiān)控效果。
傳統(tǒng)的針對運(yùn)動物體的補(bǔ)償算法,雖然能在一定程度上消除“鼠齒效應(yīng)”,但是靜態(tài)物體也被模糊化[3]。本文提出的一種改進(jìn)型的運(yùn)動自適應(yīng)視頻去隔行算法,能夠在保證靜態(tài)物體清晰度的前提下,更好地達(dá)到去隔行效果。以此為核心算法,設(shè)計(jì)了面向智能監(jiān)控的視頻壓縮前端預(yù)處理系統(tǒng)。
視頻監(jiān)控系統(tǒng)主要由視頻監(jiān)控端、主控中心和客戶端組成。如圖1所示,攝像機(jī)采集視頻數(shù)據(jù)后,傳輸至視頻前端預(yù)處理器,經(jīng)過該視頻前端的去隔行算法處理后,視頻數(shù)據(jù)轉(zhuǎn)化為逐行模式,進(jìn)而傳輸至H.264編碼器進(jìn)行視頻壓縮編碼,使得視頻信息轉(zhuǎn)化成適宜網(wǎng)絡(luò)傳輸?shù)牡退俾蚀a流[4],經(jīng)由網(wǎng)絡(luò)傳輸?shù)街骺刂行脑O(shè)備,通過解碼還原出視頻圖像,實(shí)現(xiàn)監(jiān)控功能。
作為視頻監(jiān)控系統(tǒng)的前端預(yù)處理部分,視頻前端預(yù)處理器為整個系統(tǒng)圖像數(shù)據(jù)的高質(zhì)量、遠(yuǎn)距離、低碼流傳輸起到重要作用。它不僅對攝像頭采集的視頻數(shù)據(jù)進(jìn)行去隔行處理,以獲取利于H.264編碼器壓縮的逐行視頻,并且提高了整個網(wǎng)絡(luò)傳輸速度,為系統(tǒng)后端模塊的順利工作和運(yùn)行奠定基礎(chǔ)。
本系統(tǒng)采用FPGA作為核心控制器,完成視頻采集、去隔行處理、下采樣等功能。如圖2所示,視頻采集模塊可支持PAL/NTSC制式的視頻輸入,用戶可根據(jù)圖像傳感器類型進(jìn)行選擇,采集視頻格式為YCbCr420。將采集到的數(shù)據(jù)通過四端口SDRAM控制器存儲到片外的SDRAM中,去隔行處理模塊則通過對片外SDRAM的訪問獲取視頻數(shù)據(jù),進(jìn)而實(shí)現(xiàn)去隔行處理,快速消除“鼠齒效應(yīng)”,提高了圖像質(zhì)量[5]。將去隔行的視頻數(shù)據(jù)傳輸至下采樣模塊,可減少視頻數(shù)據(jù)量,為后續(xù)的視頻壓縮及多路視頻復(fù)用打下基礎(chǔ)。由于系統(tǒng)的去隔行模塊中采用了流水線技術(shù),通過將從SDRAM中讀取的圖像數(shù)據(jù)緩存到片上存儲器中,減少該模塊等待讀取數(shù)據(jù)的時間,從而使系統(tǒng)滿足實(shí)時性要求。
圖1 視頻監(jiān)控系統(tǒng)結(jié)構(gòu)圖
傳統(tǒng)的去隔行算法,如場內(nèi)插值法(Bob)、場融合法(Field Blending)等,前者雖然可以有效去隔行,也一定程度消除了圖像的“鼠齒效應(yīng)”,但對于運(yùn)動圖像中具有豐富細(xì)節(jié)的部分容易出現(xiàn)上下抖動的現(xiàn)象;后者可以明顯地去除鼠齒和鋸齒,但由于采用相鄰兩場混合的方法,在一定程度上模糊了圖像的細(xì)節(jié),而且當(dāng)畫面快速運(yùn)動時,有時會出現(xiàn)重影現(xiàn)象。
圖2 視頻前端預(yù)處理器結(jié)構(gòu)圖
本設(shè)計(jì)采用的基于運(yùn)動補(bǔ)償?shù)淖赃m應(yīng)視頻去隔行處理算法更具優(yōu)越性,它不僅包含了傳統(tǒng)運(yùn)動自適應(yīng)算法的運(yùn)動估計(jì)和運(yùn)動補(bǔ)償,而且在兩者之間添加運(yùn)動地圖去噪部分作為改進(jìn)的關(guān)鍵,使之不僅能夠消除運(yùn)動物體的“鼠齒效應(yīng)”,達(dá)到去隔行的目的,而且能夠準(zhǔn)確區(qū)分運(yùn)動區(qū)域和非運(yùn)動區(qū)域,從而保持靜態(tài)物體的清晰度,實(shí)現(xiàn)了運(yùn)動位置和非運(yùn)動位置的協(xié)同處理。
2.2.1 運(yùn)動估計(jì)
運(yùn)動估計(jì)所遵循的準(zhǔn)則如公式1所示,Motion為運(yùn)動估計(jì)得到的運(yùn)動地圖。根據(jù)該式所述,首先將奇偶場交織后得到當(dāng)前幀和參考幀,然后將當(dāng)前幀F(xiàn)n與參考幀F(xiàn)n-1中對應(yīng)位置(x,y)的像素值進(jìn)行減法運(yùn)算,所得的差值與運(yùn)動估計(jì)全局閾值T_motion比較。若大于該閾值則將該點(diǎn)視為運(yùn)動點(diǎn)并將運(yùn)動地圖上對應(yīng)位置Motion(x,y)的值置1,否則視為非運(yùn)動點(diǎn),同時將Motion(x,y)的值賦為0。
2.2.2 運(yùn)動地圖去噪
由于圖像相鄰位置點(diǎn)之間的運(yùn)動具有相關(guān)性,設(shè)計(jì)中該環(huán)節(jié)采用了形態(tài)學(xué)中的先腐蝕后膨脹的方式,以去除運(yùn)動地圖中存在的噪聲。腐蝕就是先根據(jù)公式(4)統(tǒng)計(jì)以某一像素點(diǎn)(x,y)為中心、寬度為(2×w+1)的窗口內(nèi),運(yùn)動地圖Motion中運(yùn)動點(diǎn)(運(yùn)動地圖中為1的點(diǎn))的個數(shù)N(x,y)。如公式2所示,當(dāng)N(x,y)大于腐蝕閾值T_erode,則將該點(diǎn)在運(yùn)動地圖中置1,否則清0。通過腐蝕,可將運(yùn)動地圖中非運(yùn)動點(diǎn)被誤判為運(yùn)動點(diǎn)的噪點(diǎn)濾除,但同時也會濾除運(yùn)動物體邊緣的運(yùn)動點(diǎn)。所以,需要對腐蝕作用后的運(yùn)動地圖進(jìn)行膨脹處理。
如公式(3)所示,當(dāng)運(yùn)動地圖中坐標(biāo)為(x,y)的值為1時,范圍在{[x-w,x+w],[y-w,y+w]}二維區(qū)域內(nèi)運(yùn)動地圖的點(diǎn)值Motion(x,y)置為1。這樣可以對腐蝕過程中濾除掉的邊緣運(yùn)動點(diǎn)進(jìn)行彌補(bǔ),從而較為精確地區(qū)分運(yùn)動點(diǎn)與非運(yùn)動點(diǎn),為運(yùn)動補(bǔ)償?shù)於ɑA(chǔ)。
2.2.3 運(yùn)動補(bǔ)償
如公式(5)所示,運(yùn)動補(bǔ)償是根據(jù)去噪后的運(yùn)動地圖,對當(dāng)前幀中的偶數(shù)行(不包含首尾兩行)的像素值根據(jù)公式(6)進(jìn)行處理,其余行的像素值不變。
偶數(shù)行(不包含首尾兩行)的非運(yùn)動點(diǎn)(運(yùn)動地圖中為0的點(diǎn))的像素值不變,對運(yùn)動點(diǎn)(運(yùn)動地圖中為1的點(diǎn))則進(jìn)行插值。在對運(yùn)動點(diǎn)進(jìn)行插值的過程中,如圖3所示,首先需要計(jì)算如圖所示的①-⑨九個方向?qū)?yīng)像素值差值的絕對值,找到最小值所對應(yīng)的方向后,確定m的值。如公式(7)所示,若最小值為|Fn(x-4,y-1)-Fn(x+4,y+1)|,則其對應(yīng)的方向?yàn)棰?,m的值為-4。得到m值后,求出對應(yīng)方向上的兩個像素值Fn(x+m,y-1)、Fn(xm,y+1)的平均值作為運(yùn)動點(diǎn)的插入值(x,y)。
為了避免運(yùn)動點(diǎn)(x,y)的插入值F′n(x,y)與其鄰行對應(yīng)點(diǎn)像素值Fn(x,y-1)和Fn(x,y+1)差別過大,引起視覺上的跳變,可按照公式(8)修正運(yùn)動點(diǎn)的插入值。首先將運(yùn)動點(diǎn)的像素值與其相鄰兩行對應(yīng)點(diǎn)的像素值作差,取其絕對值與修正閾值T_revision進(jìn)行比較,若均大于修正閾值,則將插入值F′n(x,y)修正為Fn(x,y-1)與Fn(x,y+1)的平均值。
由于設(shè)計(jì)中采用的自適應(yīng)視頻去隔行處理算法在進(jìn)行運(yùn)動估計(jì)時是必須有一個參考幀的,因此系統(tǒng)采集到的第一幀圖像不能使用上述自適應(yīng)視頻去隔行處理算法進(jìn)行去隔行處理。設(shè)計(jì)中采用幀內(nèi)插值法對第一幀圖像進(jìn)行去隔行處理,除第一行和最后一行像素值保持不變外,其余像素點(diǎn)均按公式(9)進(jìn)行插值。如公式(7)所示,將(x,y)位置的像素值與其鄰行對應(yīng)位置(x,y-1)和(x,y+1)的像素值與插值系數(shù){1/2,1/4,1/4}相乘并求和,得到像素值,將其更新到圖像中坐標(biāo)為(x,y)的位置,達(dá)到去隔行的目的。
其中F1(x,y)表示第一幀插值前坐標(biāo)為(x,y)的像素點(diǎn)的值,表示該點(diǎn)插值后的像素值。
將去隔行前后的football序列作為JM15(H.264標(biāo)準(zhǔn)參考軟件)模型的輸入,其余輸入?yún)?shù)均相同(采用基本檔次(baseline profile)快速全搜索模式),得到結(jié)果)(6)如表1所示。對比兩個結(jié)果可以看出,去隔行后的football序列作為JM模型輸入時,不僅編碼時間縮短,圖像質(zhì)量提高,而且得到的碼率(Bit rate)大幅
圖3 插值運(yùn)算方向圖
在VC9.0環(huán)境下,編程實(shí)現(xiàn)上述改進(jìn)型的自適應(yīng)視頻去隔行處理算法,將標(biāo)準(zhǔn)序列文件Football.yuv作為去隔行程序的輸入,得到去隔行視頻。對比去隔行前的圖像與去隔行后的圖像,可以看到“鼠齒效應(yīng)”已被消除。
將去隔行前后的football 序列作為JM15 (H.264 標(biāo)準(zhǔn)參考軟件) 模型的輸入,其余輸入?yún)?shù)均相同( 采用基本檔次(baseline profile ) 快速全搜索模式) , 得到結(jié)果如表1 所示。對比兩個結(jié)果可以看出, 去隔行后的football 序列作為JM 模型輸入時,不僅編碼時間縮短, 圖像質(zhì)量提高, 而且得到的碼率(Bit rate ) 大幅度降低。
表1 去隔行前后football序列JM模型仿真結(jié)果對比表
本文提出的改進(jìn)型自適應(yīng)視頻去隔行處理算法能夠?qū)σ曨l進(jìn)行去隔行處理,并且效果明顯。由于算法本身可完全采用加減運(yùn)算,因此適于FPGA設(shè)計(jì)實(shí)現(xiàn)。對采用該算法進(jìn)行去隔行處理后的視頻進(jìn)行H.264編碼得到的碼率與采用原隔行視頻作為編碼器輸入得到的碼率相比大大降低,從而減少了后端網(wǎng)絡(luò)傳輸所需的帶寬。設(shè)計(jì)中采用該去隔行處理算法作為視頻前端預(yù)處理器的核心算法,對H.264編碼器降低碼率方面有極大的幫助,因此將該算法運(yùn)用在智能監(jiān)控系統(tǒng)中能夠使系統(tǒng)在同等帶寬下獲得更高質(zhì)量的視頻信號。
[1]黃會雄.一種智能視頻監(jiān)控體系結(jié)構(gòu)設(shè)計(jì)方案[J].微計(jì)算機(jī)信息,2007,6-1:115-117.
[2]ITU-T and ISO/IEC JTC1.ITU-T Recommendation H.264-ISO/IEC 14496-10 AVC,Advanced video coding for generic audiovisual services[S].2003.
[3]Gerard de Haan,Erwin B Bellers.Deinterlacing-An Overview[J].Proceedings of the IEEE,1998,86(9):1840-1857.
[4]畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)——H.264/AVC[M].北京:人民郵電出版社,2005.
[5]Rob A Beuker,Imran A Shaj.Analysis of interlaced video signal and it’s application[J].IEEE Transactions on Image Processing,1994,3(5):501-512.