專利名稱:在視頻編碼處理中利用視頻信號幀間相關(guān)性進(jìn)行編碼的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的來說涉及視頻編碼和壓縮領(lǐng)域,更具體地說涉及視頻編碼處理中利用視頻信號幀間相關(guān)性進(jìn)行編碼的方法和裝置。
背景技術(shù):
現(xiàn)有的視頻編碼實現(xiàn)多基于頻域的算法,例如那些在頻域中運(yùn)用余弦變換的編碼器算法。但這些編碼器算法存在一些缺陷。例如,實時頻域編碼器的半導(dǎo)體實現(xiàn),通常需要超過8百萬的晶體管。頻域編碼器使用量子化的頻率分量以減少編碼信息量。這可能導(dǎo)致某些高頻分量的丟失,從而降低視頻的清晰度和解析度。VICOMP(視頻編碼與壓縮系統(tǒng)和裝置)是一個基于高質(zhì)量、實時、高效率的視頻編碼(高壓縮率)的需求下的數(shù)字視頻編碼方案。它運(yùn)用基于時域而非頻域的算法。與上述的頻域編碼器相比,VICOMP為實現(xiàn)少于70萬個晶體管的實時編碼器提供了可能。同時,與頻域編碼器相比,VICOMP可以提供同樣或更好的視頻質(zhì)量和出眾的總體壓縮率。VICOMP在邏輯和復(fù)雜性上的簡化,與頻域編碼相比,同樣也使視頻編碼系統(tǒng)的軟件實現(xiàn)更加有效。
例如,MPEG解碼器都是基于使用離散余弦變換(DCT)算法的頻域信息,DCT用于將時域信息轉(zhuǎn)換到頻域。VICOMP是一種時域編碼器,因此將信息從時域轉(zhuǎn)換到頻域的步驟是不必要的。省卻該步驟提供了顯著的益處,因為該變換步驟需要大量的非常高速的計算。
例如,為了將8×8的像素塊從時域轉(zhuǎn)換到頻域,需要使用DCT算法進(jìn)行64×64=4096次相乘。在實在時視頻編碼中,分配給4096次相乘的時間量小于5微秒。于是,單個的乘法器將必須以高于800MHz的頻率操作,或者8個乘法器將每一個必須同時以高于100MHz的頻率操作,以便實時地執(zhí)行該轉(zhuǎn)換步驟。
而且,VICOMP解碼器可利用2X像素速率的時鐘頻率來操作,該時鐘典型地是27MHz,與之相比,DCT編碼器在100MHz的時鐘頻率下操作。這種時鐘頻率的差別導(dǎo)致半導(dǎo)體解碼器較少的功耗。
如上述的VICOMP有效編碼方案是基于冗余概念的一個方案。任何一個編碼方案的目的都是找到并刻畫冗余元素,然后生成一個有效的信號組對非冗余信號進(jìn)行編碼。如果在信息中沒有冗余元素,也就沒有機(jī)會進(jìn)行壓縮。數(shù)字視頻信號的冗余產(chǎn)生于以下幾個方面。
1.對低頻率分量的過采樣——在采樣數(shù)字視頻信號中,經(jīng)常會因為采樣造成大量冗余。部分這樣的采樣冗余的發(fā)生是因為為了保證充分的解析度和數(shù)字采樣的高頻率響應(yīng)而不得不以在模擬視頻信號的最高工作頻率2倍的頻率進(jìn)行視頻信號采樣。但是因為真實視頻信號中含有占主要數(shù)量的低頻成分,2倍的采樣頻率會造成對低頻分量的過采樣。因此,在采樣信號中會存在相當(dāng)可觀數(shù)量的冗余。
2.對位分辨率的過采樣——冗余也會產(chǎn)生于對每個樣本的分辨率(位數(shù))的過采樣。比如,如果每個像素被數(shù)字化為8位分辨率乘以3個顏色坐標(biāo)(如YUV)也就是每個像素24位的采樣分辨率。24位也就是說這里有足夠的分辨率來表示1670萬種可能的顏色。對于視頻的每個單獨的幀中以640H×480V的像素分辨率采樣,會產(chǎn)生307,200個像素(樣本)。即使可以將在幀中所有的307,200個像素作為不同的顏色,也只需要19位來表示所有的307,200個顏色。因為圖片是用相對連續(xù)顏色的物體組成,所以實際上在一個視頻幀中遠(yuǎn)遠(yuǎn)少于307,200種顏色,因此也就需要少于19位的信息來表示在幀中所有的顏色。進(jìn)一步說,因為圖像傳感器有限的動態(tài)范圍,24位/樣本提供了比通常的應(yīng)用在視頻相機(jī)中的圖像傳感器的動態(tài)范圍(9位)54分貝要高的多的動態(tài)范圍(144分貝)。
3.幀間冗余——運(yùn)動視頻中的另一種冗余就是幀間重復(fù)。比較一系列的視頻幀圖像,我們可以發(fā)現(xiàn)通常幀間的區(qū)別在很小的范圍內(nèi)。不是在視頻中的所有元素都隨著幀的變化而變化。很多元素移動得很小。對于連續(xù)幀的靜止圖像,排除隨機(jī)噪音的因素,會有100%的冗余。雖然幀間冗余一般是可以預(yù)計的,但是它一般決定于實際視頻情況,同時幀間冗余范圍可以從0到100%。
4.噪音過濾——因為視頻圖像傳感器有限的動態(tài)范圍,視頻中包含有很大數(shù)量的白噪音。這種白噪音是完全隨機(jī)的,也就是說它減少了冗余也減少了壓縮率。VICOMP使用用來提高信噪比的高級濾波器,以來提高冗余并提高壓縮率。
5.線間冗余——在視頻中每一條給定的水平線存在很多與上一條或下一條中完全一樣或幾乎一樣的元素??赏ㄟ^利用特定的算法找到那些與相鄰線上不同的元素并為其編碼。
6.出現(xiàn)頻率冗余——一些視頻元素可以被預(yù)期比其他元素具有更高的出現(xiàn)頻率??墒褂每勺兾婚L代碼為各種元素編碼。為那些出現(xiàn)比較頻繁的元素分配最少的位數(shù)。通過使用可變位長代碼,編碼需要的數(shù)據(jù)位總數(shù)減少了。
找到、刻畫并編碼以上6種元素,可以使信息不丟失或少丟失。除了以上列出的冗余,在數(shù)字視頻中依然存在不必要的信息。也就是說那些對視頻的質(zhì)量和主要數(shù)據(jù)沒有貢獻(xiàn)的信息。為了提高壓縮率,需要消除或減少這些不必要信息。
發(fā)明內(nèi)容
鑒于現(xiàn)有技術(shù)中VICOMP需要解決的問題,本發(fā)明提供一種在視頻編碼處理中利用視頻信號幀間相關(guān)性進(jìn)行編碼的方法,包括步驟利用預(yù)先設(shè)定的匹配規(guī)則來判斷視頻信號的相鄰幀的相關(guān)情況;基于所判斷的相關(guān)情況執(zhí)行幀間相關(guān)編碼。
本發(fā)明還提供一種利用上述幀間相關(guān)編碼方法實現(xiàn)視頻信息編碼的編碼裝置。
通過結(jié)合本附圖對本發(fā)明的視頻編碼濾波方法及其裝置的具體實施方式
的詳細(xì)描述,本發(fā)明的目的、特征和益處將更清楚。在圖中圖1是本發(fā)明的VICOMP編碼器的典型實現(xiàn)的示意框圖;圖2是根據(jù)本發(fā)明的幀間相關(guān)編碼中使用的幀對幀相關(guān)性塊的示意圖;圖3是根據(jù)本發(fā)明的幀間相關(guān)編碼的Y相關(guān)性塊選擇與標(biāo)識代碼的流程示意圖;圖4是根據(jù)本發(fā)明的幀間相關(guān)編碼UV相關(guān)性塊選擇與標(biāo)識代碼的流程示意圖;圖5是根據(jù)本發(fā)明的幀間相關(guān)編碼中的比特率控制寄存器的示意圖。
具體實施例方式
為了便于理解本發(fā)明的具體技術(shù)方案,首先對所涉及的具體技術(shù)概念進(jìn)行定義。
定義量子化——將信息轉(zhuǎn)換成與最初形式不同的離散形式。比如0、1、2、3、4、5、6可以用以下算法被量子化成為2、4、6。
If(input value)<4 then(output value)=2:GoTo EndIf(input value)>3 AND(input value)<6 then(output value)=4 Else(output value)=6End量化器——一種形成量子化(離散形式)信息的儀器或者算法。
差量——兩個數(shù)值的差或相減的結(jié)果。
比如,A=(B-C)表示A是B和C的差量。如果B大于C,那么差量值為正數(shù)。如果C大于B,差量值為負(fù)。
相關(guān)性——通過閾值或偏移量對兩個數(shù)值的比較。如果兩個數(shù)值通過增加或減少一定的閾值而相一致,它們可以被稱為相關(guān)。
相關(guān)系數(shù)——用于在相關(guān)性中進(jìn)行比較的閾值或偏差值。
冗余值——在一組表示為特定數(shù)值的信息中的某個數(shù)據(jù)被稱為冗余,如果它不斷在這組數(shù)據(jù)中重復(fù)出現(xiàn)。
比如,信息組={1,2,3,0,0,0,0,0,0,0,2}數(shù)值0是一個高度冗余值,而2是一個有輕微冗余。這個冗余信息可以被按下列原則壓縮
為了使用二進(jìn)制代碼記錄信息組需要使用2×11=22位。可變代碼將為(1×7)+(2×2)+(2×3)=17位。因為冗余元素在信息組中的存在,壓縮成為可能。
YUV-Y為亮度,UV為顏色分量。YUV也可以通過Y、Cr、Cb三個變量表示。
YUV顏色坐標(biāo)——(也被稱為Y、Cr、Cb)VICOMP使用YUV顏色坐標(biāo),以便通過相對于Y樣本對U和V樣本進(jìn)行二次采樣來利用顏色分量(U&V)固有的低頻率。人類肉眼對Y(亮度)和UV(顏色)分量的敏感度也有不同。
頻域——大多數(shù)信息,包括視頻信息,是在時域中,也就是說信息的幅值是根據(jù)時間變化而變化的。頻率是時間的倒數(shù)F=1/T,T=1/F。信息可以通過傅立葉變換(FFT)從時域轉(zhuǎn)化到頻域。快速傅立葉變換在視頻編碼中被運(yùn)用,比如MPEG技術(shù)就是離散余弦變換(DCT)。在時域中,給定一組信息(在一定時間內(nèi)),可以獲得一定數(shù)量的幅值。在頻域中,給定一組信息(在特定的頻域帶寬內(nèi)),可以獲得一定數(shù)量的頻率。因為一些視頻信號多含有大量的低頻分量,所以可以知道信息在頻域中有大量的冗余。
圖1為VICOMP編碼器的典型實現(xiàn)框圖。圖1的下部分示出了普通的邏輯和存儲部件(普通邏輯),它們是在視頻編碼和解碼中通常和按慣例所采用的部件。對這些通常和按慣例所采用的部件,諸如存儲器、緩存器(另一種形式的存儲器)、計數(shù)器、寄存器和接口不再進(jìn)行描述。這些普通邏輯部件的構(gòu)造和功能對邏輯設(shè)計領(lǐng)域的普通技術(shù)人員是公知的。
該普通邏輯的一個稍微不同尋常的部件是“位包裝器(BitPacker)。一個位包裝器是用于將可變化位長度編碼組合到一個毗鄰的位流中的裝置。通常計算機(jī)數(shù)據(jù)包括固定位長度成分,字節(jié)(8位),字(16位)和雙字(32位)。由于可變位長度編碼產(chǎn)生各種長度的輸出,所以這些編碼必須被“包裝”到毗鄰的流中。執(zhí)行這一功能的裝置“位包裝器”不作為本發(fā)明的部分在此描述。
該方框圖的上(主要)部分(算法描述)示出了通過組成該視頻編碼系統(tǒng)的各種處理的視頻信息流。這些部件是本發(fā)明的一部分并且在本文中進(jìn)行了詳細(xì)描述。這些詳細(xì)描述包括文字,邏輯流圖和邏輯語句。VICOMP的算法可利用適當(dāng)?shù)挠嬎銠C(jī)由軟件實現(xiàn),該計算機(jī)具有在輸入側(cè)與數(shù)字化視頻的接口和在輸出側(cè)至適當(dāng)?shù)娘@示裝置。
該VICOMP的算法也可以特定的硬件邏輯塊來實現(xiàn),例如將被使用在專用集成電路(ASIC)半導(dǎo)體中的那樣。
Y和UV濾波器的目的在于減少噪音和改善信噪比。對信噪比的任何改善都將導(dǎo)致更好的編碼結(jié)果(更為壓縮),因為包含在視頻中的噪聲相對于視頻是非同步的(隨機(jī)的),于是包含在視頻中的噪聲不能被有效地壓縮。
下面說明本發(fā)明幀對幀的相關(guān)編碼的具體實施方式
。
在通常實時視頻中,一個幀的視頻和下一個具有很高的相關(guān)性。也就是說,幀內(nèi)的一些元素與前一幀中的相應(yīng)元素相同或非常相近。這也就是之前提到的幀間冗余。如圖2所示,本發(fā)明的VICOMP比較當(dāng)前幀內(nèi)的3像素寬*2像素高(6像素)的諸小塊與前一幀內(nèi)的這些像素塊。用于Y的幀間相關(guān)性信息與用于UV的幀間相關(guān)性信息是分開的。使用這些小像素塊確保了即使當(dāng)相關(guān)誤差出現(xiàn)時,比較其他編碼方法,比如使用8×8塊(64像素)或甚至16×16塊(256像素)的DCT系統(tǒng)所使用的相對更大的像素塊,也對視覺效果幾乎沒有影響。
幀對幀的相關(guān)性可以通過下列算法說明。其中,CB表示當(dāng)前的塊,PB表示前一幀的塊,CC表示Y的相關(guān)系數(shù),而UVerr是U和V兩者的相關(guān)系數(shù)。前一幀的9個像素塊中的每一個都與當(dāng)前塊進(jìn)行比較,以PB0開始,進(jìn)行比較。如果發(fā)現(xiàn)在前幀中9個塊中的任何一個匹配,則為Y匹配設(shè)置一個標(biāo)志(PB0flg-PB8flg),并為UV匹配設(shè)置一個標(biāo)志(PB0UVflg-PB8UVflg)。Abs()的意思為取()內(nèi)差的絕對值(無符號)。T表示一個記錄在像素塊內(nèi)有多少像素匹配的計數(shù)器。Pmtch是一個即使沒有像素相匹配依然可以設(shè)定以允許相關(guān)的變量。比如,如果Pmtch被設(shè)置成5,則如果6個像素中有5個吻合,允許匹配。如果Pmtch被設(shè)置成6,那么所有6個像素必須匹配。每個像素Y和CC比較,hiYi的值代表塊內(nèi)的最大Y值并且用于與(CC*2)比較。
PB0Y相關(guān)Yi0=abs(CBP0-PB0P0)Yi1=abs(CBP1-PB0P1)Yi2=abs(CBP2-PB0P2)Yi3=abs(CBP3-PB0P3)Yi4=abs(CBP4-PB0P4)Yi5=abs(CBP5-PB0P5)T=0hiYi=0If Yi0>hiYi then hiYi=Y(jié)i0If Yi0<CC then T=T+1If Yi1>hiYi then hiYi=Y(jié)i1If Yi1<CC then T=T+1If Yi2>hiYi then hiYi=Y(jié)i2If Yi2<CC then T=T+1
If Yi3>hiYi then hiYi=Y(jié)i3If Yi3<CC then T=T+1If Yi4>hiYi then hiYi=Y(jié)i4If Yi4<CC then T=T+1If Yi5>hiYi then hiYi=Y(jié)i5If Yi5<CC then T=T+1If T=>Pmtch AND hYi<(CC*2)then PB0Yflg=1else PB0Yflg=0PB1Y相關(guān)Yi0=abs(CBP0-PB1P0)Yi1=abs(CBP1-PB1P1)Yi2=abs(CBP2-PB1P2)Yi3=abs(CBP3-PB1P3)Yi4=abs(CBP4-PB1P4)Yi5=abs(CBP5-PB1P5)T=0hiYi=0If Yi0>hiYi then hiYi=Y(jié)i0If Yi0<CC then T=T+1If Yi1>hiYi then hiYi=Y(jié)i1If Yi1<CC then T=T+1If Yi2>hiYi then hiYi=Y(jié)i2If Yi2<CC then T=T+1If Yi3>hiYi then hiYi=Y(jié)i3If Yi3<CC then T=T+1If Yi4>hiYi then hiYi=Y(jié)i4If Yi4<CC then T=T+1If Yi5>hiYi then hiYi=Y(jié)i5If Yi5<CC then T=T+1
If T=>Pmtch AND hYi<(CC*2)AND BLKrow>0 AND BLKent>0 then PB1Yflg=1else PB1Yflg=0PB2Y相關(guān)Yi0=abs(CBP0-PB2P0)Yi1=abs(CBP1-PB2P1)Yi2=abs(CBP2-PB2P2)Yi3=abs(CBP3-PB2P3)Yi4=abs(CBP4-PB2P4)Yi5=abs(CBP5-PB2P5)T=0hiYi=0If Yi0>hiYi then hiYi=Y(jié)i0If Yi0<CC then T=T+1If Yi1>hiYi then hiYi=Y(jié)i1If Yi1<CC then T=T+1If Yi2>hiYi then hiYi=Y(jié)i2If Yi2<CC then T=T+1If Yi3>hiYi then hiYi=Y(jié)i3If Yi3<CC then T=T+1If Yi4>hiYi then hiYi=Y(jié)i4If Yi4<CC then T=T+1If Yi5>hiYi then hiYi=Y(jié)i5If Yi5<CC then T=T+1If T=>Pmtch AND hYi<(CC*2)AND BLKrow>0 then PB2Yflg=1 else PB2Yflg=0PB3Y相關(guān)Yi0=abs(CBP0-PB3P0)Yi1=abs(CBP1-PB3P1)
Yi2=abs(CBP2-PB3P2)Yi3=abs(CBP3-PB3P3)Yi4=abs(CBP4-PB3P4)Yi5=abs(CBP5-PB3P5)T=0hiYi=0If Yi0>hiYi then hiYi=Y(jié)i0If Yi0<CC then T=T+1If Yi1>hiYi then hiYi=Y(jié)i1If Yi1<CC then T=T+1If Yi2>hiYi then hiYi=Y(jié)i2If Yi2<CC then T=T+1If Yi3>hiYi then hiYi=Y(jié)i3If Yi3<CC then T=T+1If Yi4>hiYi then hiYi=Y(jié)i4If Yi4<CC then T=T+1If Yi5>hiYi then hiYi=Y(jié)i5If Yi5<CC then T=T+1If T=>Pmtch AND hYi<(CC*2)AND BLKrow>0 AND BLKcnt<BLKmax thenPB3Yflg=1 else PB3Yflg=0PB4Y相關(guān)Yi0=abs(CBP0-PB4P0)Yi1=abs(CBP1-PB4P1)Yi2=abs(CBP2-PB4P2)Yi3=abs(CBP3-PB4P3)Yi4=abs(CBP4-PB4P4)Yi5=abs(CBP5-PB4P5)T=0
hiYi=0If Yi0>hiYi then hiYi=Y(jié)i0If Yi0<CC then T=T+1If Yi1>hiYi then hiYi=Y(jié)i1If Yi1<CC then T=T+1If Yi2>hiYi then hiYi=Y(jié)i2If Yi2<CC then T=T+1If Yi3>hiYi then hiYi=Y(jié)i3If Yi3<CC then T=T+1If Yi4>hiYi then hiYi=Y(jié)i4If Yi4<CC then T=T+1If Yi5>hiYi then hiYi=Y(jié)i5If Yi5<CC then T=T+1If T=>Pmtch AND hYi<(CC*2)AND BLKcnt>0 then PB4Yflg=1 else PB4Yflg=0PB5Y相關(guān)Yi0=abs(CBP0-PB5P0)Yi1=abs(CBP1-PB5P1)Yi2=abs(CBP2-PB5P2)Yi3=abs(CBP3-PB5P3)Yi4=abs(CBP4-PB5P4)Yi5=abs(CBP5-PB5P5)T=0hiYi=0If Yi0>hiYi then hiYi=Y(jié)i0If Yi0<CC then T=T+1If Yi1>hiYi then hiYi=Y(jié)i1If Yi1<CC then T=T+1If Yi2>hiYi then hiYi=Y(jié)i2
If Yi2<CC then T=T+1If Yi3>hiYi then hiYi=Y(jié)i3If Yi3<CC then T=T+1If Yi4>hiYi then hiYi=Y(jié)i4If Yi4<CC then T=T+1If Yi5>hiYi then hiYi=Y(jié)i5If Yi5<CC then T=T+1If T=>Pmtch AND hYi<(CC*2)AND BLKcnt<BLKmax then PB5Yflg=1 elsePB5Yflg=0PB6Y相關(guān)Yi0=abs(CBP0-PB6P0)Yi1=abs(CBP1-PB6P1)Yi2=abs(CBP2-PB6P2)Yi3=abs(CBP3-PB6P3)Yi4=abs(CBP4-PB6P4)Yi5=abs(CBP5-PB6P5)T=0hiYi=0If Yi0>hiYi then hiYi=Y(jié)i0If Yi0<CC then T=T+1If Yi1>hiYi then hiYi=Y(jié)i1If Yi1<CC then T=T+1If Yi2>hiYi then hiYi=Y(jié)i2If Yi2<CC then T=T+1If Yi3>hiYithen hiYi=Y(jié)i3If Yi3<CC then T=T+1If Yi4>hiYi then hiYi=Y(jié)i4If Yi4<CC then T=T+1
If Yi5>hiYi then hiYi=Y(jié)i5If Yi5<CC then T=T+1If T=>Pmtch AND hYi<(CC*2)AND BLKcnt>0 and BLKrow<ROWmax thenPB6Yflg=1 else PB6Yflg=0PB7Y相關(guān)Yi0=abs(CBP0-PB7P0)Yi1=abs(CBP1-PB7P1)Yi2=abs(CBP2-PB7P2)Yi3=abs(CBP3-PB7P3)Yi4=abs(CBP4-PB7P4)Yi5=abs(CBP5-PB7P5)T=0hiYi=0If Yi0>hiYi then hiYi=Y(jié)i0If Yi0<CC then T=T+1If Yi1>hiYi then hiYi=Y(jié)i1If Yi1<CC then T=T+1If Yi2>hiYi then hiYi=Y(jié)i2If Yi2<CC then T=T+1If Yi3>hiYi then hiYi=Y(jié)i3If Yi3<CC then T=T+1If Yi4>hiYi then hiYi=Y(jié)i4If Yi4<CC then T=T+1If Yi5>hiYi then hiYi=Y(jié)i5If Yi5<CC then T=T+1If T=>Pmtch AND hYi<(CC*2)AND BLKrow<ROWmax then PB7Yflg=1 elsePB7Yflg=0
PB8相關(guān)Yi0=abs(CBP0-PB8P0)Yi1=abs(CBP1-PB8P1)Yi2=abs(CBP2-PB8P2)Yi3=abs(CBP3-PB8P3)Yi4=abs(CBP4-PB8P4)Yi5=abs(CBP5-PB8P5)T=0hiYi=0If Yi0>hiYi then hiYi=Y(jié)i0If Yi0<CC then T=T+1If Yi1>hiYi then hiYi=Y(jié)i1If Yi1<CC then T=T+1If Yi2>hiYi then hiYi=Y(jié)i2If Yi2<CC then T=T+1If Yi3>hiYi then hiYi=Y(jié)i3If Yi3<CC then T=T+1If Yi4>hiYi then hiYi=Y(jié)i4If Yi4<CC then T=T+1If Yi5>hiYi then hiYi=Y(jié)i5If Yi5<CC then T=T+1If T=>Pmtch AND hYi<(CC*2)AND BLKcnt<BLKmax AND BLKrow<ROWmaxthen PB8Yflg=1 else PB8Yflg=0PB0UV相關(guān)Uerr=abs(CBU-PB0U)Verr=abs(CBV-PB0V)If Uerr<UVerrAND Verr<UVerr then PB0UVflg=1 else PB0UVflg=0
PB1UV相關(guān)Uerr=abs(CBU-PB1U)Verr=abs(CBV-PB1V)If Uerr<UVerr AND Verr<UVerr AND BLKrow>0 AND BLKcnt>0 thenPB1UVflg=1 else PB1UVlfg=0PB2UV相關(guān)Uerr=abs(CBU-PB2U)Verr=abs(CBV-PB2V)If Uerr<UVerr AND Verr<UVerr AND BLKrow>0 then PB2UVflg=1 elsePB2UVflg=0PB3UV相關(guān)Uerr=abs(CBU-PB3U)Verr=abs(CBV-PB3V)If Uerr<UVerr AND Verr<UVerr AND BLKrow>0 AND BLKcnt<BLKmax thenPB3UVflg=1 else PB3UVflg=0PB4UV相關(guān)Uerr=abs(CBU-PB4U)Verr=abs(CBV-PB4V)If Uerr<UVerr AND Verr<UVerr AND BLKcnt>0 then PB4UVflg=1 elsePB4UVflg=0PB5UV相關(guān)Uerr=abs(CBU-PB5U)Verr=abs(CBV-PB5V)If Uerr<UVerr AND Verr<UVerr AND BLKcnt<BLKmax then PB5UVflg=1 elsePB5UVflg=0
PB6UV相關(guān)Uerr=abs(CBU-PB6U)Verr=abs(CBV-PB6V)If Uerr<UVerr AND Verr<UVerr AND BLKcnt>0 and BLKrow<ROWmax thenPB6UVflg=1 else PB6UVflg=0PB7UV相關(guān)Uerr=abs(CBU-PB7U)Verr=abs(CBV-PB7V)If Uerr<UVerr AND Verr<UVerr AND BLKrow<ROWmax then PB7UVflg=1 elsePB7UVflg=0PB8UV相關(guān)Uerr=abs(CBU-PB8U)Verr=abs(CBV-PB8V)If Uerr<UVerr AND Verr<UVerr AND BLKcnt<BLKmax AND BLKrow<ROWmax then PB8UVflg=1 else PB8UVflg=0上述的參數(shù)“BlkRow”,“BlkCnt”,“BlkMax”,“RowMax”等被用于對定界符進(jìn)行檢查,以便確保被檢查的塊是實際存在的并且不在相關(guān)幀的邊界以外。
參見圖2,例如,當(dāng)檢查在前行(row)中的PB1,PB2,或PB3的相關(guān)性時,應(yīng)該確保當(dāng)前行不是第一行,否則將不會有該在前行。類似地,當(dāng)檢查下一行中PB6,PB7,或PB8的相關(guān)性時,應(yīng)該確保當(dāng)前行不是相應(yīng)幀中的最后一行,否則不會有該下一行。
同理,當(dāng)檢查PB1,PB4,或PB6的相關(guān)性時,應(yīng)該確保PB0不是相應(yīng)幀開始端的第一位置,或者當(dāng)檢查PB3,PB5,或PB8的相關(guān)性時,應(yīng)該確保PB0不是相應(yīng)幀結(jié)束端的最后位置。
更具體地說,“BlkRow”表示當(dāng)前行的編號,“BlkCnt”表示行中當(dāng)前塊的編號,“BlkMax”表示行中最后一個塊的編號,以及,“RowMax”表示相應(yīng)幀中最后一行的編號。
在Y和UV相關(guān)性被設(shè)置了相應(yīng)的標(biāo)志(PB0flg-PB8flg和PB0UVflg-PB8UVflg)后,相關(guān)像素塊被選出并進(jìn)一步利用中間代碼(Code)來識別,如圖3(Y相關(guān))和圖4(UV相關(guān))總邏輯流程圖所示。
作為幀間相關(guān)過程的一部分,VICOMP使用一種稱為比特率控制的反饋系統(tǒng)。這個反饋系統(tǒng)保持跟蹤中間編碼結(jié)果和自動增加或減小相關(guān)系數(shù)(用于Y的CC和用于UV的UVerr)來影響編碼結(jié)果。
比特率控制反饋系統(tǒng)是設(shè)計用來利用某些人類視覺響應(yīng)系統(tǒng)的特征。人類需要一定的時間使視覺反應(yīng)系統(tǒng)聚焦。因此,視覺反應(yīng)系統(tǒng)不能聚焦在高速移動的物體上。來說明這種現(xiàn)象的一種方法就是張開手指,在面前快速揮動你的手。視覺反應(yīng)系統(tǒng)可得到足夠信息辨別出你的手指,但是不能看到和手靜止時或緩慢移動時一樣清楚的一些手的細(xì)節(jié)。造成這個現(xiàn)象是因為肉眼光學(xué)感官的連續(xù)性(慣性)。這種連續(xù)性造成了細(xì)節(jié)的模糊不清。當(dāng)手停下來,肉眼逐步的看到所有的細(xì)節(jié)。
在運(yùn)動視頻中,當(dāng)幀間相關(guān)性很低時,意味著在當(dāng)前幀和前一幀存在很顯著的變化。這個通常發(fā)生在a)物體在高速運(yùn)動中,或b)在編輯過程中的突然場景變化。當(dāng)快速移動時,就像以上快速揮動手的例子一樣,顯示所有的移動物體的細(xì)節(jié)是完全沒有必要的(甚至在隔行掃描電視中是根本不被考慮的)。當(dāng)在視頻流中存在突然場景變化時,不必要在場景變化的第一幀就同時顯示所有的細(xì)節(jié),因為人類視覺反應(yīng)系統(tǒng)存在延時作用(連續(xù)性)。相反,對于人類視覺反應(yīng)系統(tǒng)來說,將新場景的細(xì)節(jié)通過幾個幀逐步地帶到畫面中來是完全可以接受的。
這個現(xiàn)象對于視頻(和影片)編輯者是很熟悉的,使用漸退出先前場景,同時逐步切入新的場景來編輯場景變化是非常普遍的。這種“漸進(jìn)”的技術(shù)通常要經(jīng)過5到7幀。同時眾所周知,這種漸進(jìn)對于觀眾是不被察覺的。在某些情況下,比如從昏暗的場景進(jìn)入到非常亮的場景,使用“漸進(jìn)”技術(shù)是很必要的,因為這樣處理比突然改變亮度使觀眾更舒服。這是因為給虹膜提供了更充足的調(diào)整時間。
因此,暫時丟失一些細(xì)節(jié)(在幾個幀中)不論對高速運(yùn)動中的物體還是突發(fā)場景突變都是可以接受的。當(dāng)幀間相關(guān)性在某些圖片區(qū)域比較低,比特率控制反饋系統(tǒng)會臨時增加相關(guān)系數(shù)以降低相關(guān)性的準(zhǔn)確度,這樣可以減少編碼位。當(dāng)幀間相關(guān)性比較高,比特率控制反饋系統(tǒng)會減小相關(guān)系數(shù)以提高相關(guān)性的準(zhǔn)確性。其目的在于保持一個恒定的編碼比特率,而不會丟失任何可察覺信息。
相關(guān)系數(shù)在一個幀的編碼過程中會調(diào)整(增加或減少)許多次。調(diào)整的實際次數(shù)是一種被稱為AlphaRow(ALR)的控制寄存器的設(shè)置的函數(shù)??梢员辉O(shè)置成1、2或4行(每一行包含兩行像素)。假設(shè)一個640×480像素的VGA大小的圖片,一行(2個像素行)包含1280個像素或占整個幀的0.416%,同時四行(8個像素行)包含5120個像素或占整個幀的1.66%。通過改變被用于測定編碼位的樣本的大小,根據(jù)AlphaRow的設(shè)置,當(dāng)每個幀編碼可以從240次/幀調(diào)整到60次/幀時,調(diào)整次數(shù)可以被確定。
另一個被運(yùn)用于比特率控制的控制寄存器叫做AlphaSize(Asz)。AlphaSize乘以32,對應(yīng)于用于一行像素編碼所希望的位數(shù)。比如,如果希望對一個640×480大小的圖片保持30∶1的壓縮率(大約0.5位/像素),也就是說希望得到每行大約640的位的編碼。在這種情況下,AlphaSize可以被設(shè)置為640/32=20。
為了避免在反饋回路中發(fā)生不希望的振蕩,使用了另一個稱為AlphaStep(Astp)的控制寄存器。AlphaStep也是實際值的1/32。當(dāng)真實編碼位與AlphaSize比較,AlphaStep的這個偏差被用于保證實際編碼位和AlphaSize之間存在AlphaStep這個數(shù)量的差異。實際上,在比較前,AlphaStep被加到AlphaSize上或從中減去。比如,如果AlphaSize被設(shè)定為20并且AlphaStep設(shè)定為4,在對相關(guān)系數(shù)的任何調(diào)整發(fā)生之前,實際編碼位的數(shù)量必須超過640+128(=768),或者小于640-128(=512)。
相關(guān)系數(shù)被設(shè)定為兩個值最大值(CoeffMAX)和最小值(CoeffMIN)。相關(guān)系數(shù)被可以被比特率控制向上調(diào)整到CoeffMAX,或者向下調(diào)整到CoeffMIN。調(diào)整在每次取樣(通過AlphaRow設(shè)定)后發(fā)生,并且CoeffStep確定每次調(diào)整的量。實際上,CoeffStep是一個作用于反饋回路的增益或放大系數(shù)。如果CoeffStep被設(shè)定成0,將取消反饋回路。同時,如果CoeffMAX和CoeffMIN被設(shè)定成同一個值,反饋回路將不起作用。實際相關(guān)系數(shù)(CC)總是由比特率控制系統(tǒng)來確定。
圖5示出了本發(fā)明的各種比特率控制寄存器。
下面給出關(guān)于幀間相關(guān)性的QdY,QdU和QdV編碼的一些具體例子。
(可變位長碼)塊標(biāo)識碼(Y和UV)前一幀塊標(biāo)識 If UVcorr=1 AND Ycorr=1 then CorHdr=0都相關(guān)If UVcorr=1 AND Ycorr=0 then CorHdr=01 僅UV相關(guān)If UVcorr=0 AND Ycorr=1 then CorHdr=011 僅Y相關(guān)If UVcorr=0 AND Ycorr=0 then CorHdr=111 都不相關(guān)
NoCorr QdU和V代碼NoCorr QdY(3像素)代碼QdY代碼
下面給出相關(guān)行(Row)的塊編碼舉例(在所示出的例子中,按MSB.......LSB順序在位流中,LSB首先到來)NoCorr Y,NoCorr UV :
QdV,QdU,Map Code(Bot 3 Pix),Map Code(Top 3 Pix),111x0,x01,x xxxx01,x0,111 (14)Corr Y,NoCorr UVQdV,QdU,Y=PB0,011x0,x01,0,011 (6)NoCorr Y,Corr UVUV=PB4,Map Code(Bot 3 Pix),Map Code(Top 3 Pix), 01100,x0,x xxxx01,01(12)CorrY,CorrUVUV=PB0,Y=PB0,00,0,0(3)(min)NoCorr Y,NoCorr UVQdV,QdU,NoMap(Bot 3 Pix),NoMap(Top 3 Pix), 111ax1111,ax1111,yyyy yyyy yyyy11111,yyyy yyyy yyyy11111,111(46)(max)
下面解釋本發(fā)明的VICOMP中的幀間相關(guān)編碼方法和裝置的有益技術(shù)效果。
每組信息都具有某中理論的平均信息量。也就是說,一組給定的信息具有一些需要表示該信息組的不可約數(shù)量的位,或平均信息量。視頻幀,或像素塊,不是統(tǒng)一的信息組。一個信息組相對于另一個信息組總是存在某種程度的可變性。幀內(nèi)(在一個幀內(nèi))和幀間(從一幀到另一幀)都具有這種可變性。DCT(離散余弦編碼)和VICOMP的編碼結(jié)果都是可變的。對于信息內(nèi)容量低的視頻,DCT編碼更為有效,但是對于信息內(nèi)容量大的視頻,VICOMP有效得多。
低視頻信息量的一個例子是聚焦于明亮、白色的空白紙張的TV攝象機(jī)。高視頻信息量的一個例子是具有小樹頁的彩色樹叢。
DCT編碼基于這樣一種假設(shè),即小像素塊(例如8×8)將主要包含低頻分量并因此在頻域存在相當(dāng)量的冗余,于是創(chuàng)造了有效壓縮方案的機(jī)會。當(dāng)該假設(shè)為真時(低視頻信息量),則DCT是有效的。當(dāng)該假設(shè)不為真時(高視頻信息量),則DCT是無效的。例如,利用DCT編碼器對靜止圖片(單幀)進(jìn)行的測試顯示壓縮率變化為高95.7∶1,低3.2∶1。而VICOMP編碼器得到的壓縮率是37.8∶1(高)至17.4∶1(低)。
由于系統(tǒng)設(shè)計考慮(例如所分配的通道帶寬)必須基于“最壞情形”(指高視頻信息量),因此VICOMP編碼器是更有效的。
而且,在運(yùn)動視頻中,期望存在幀間冗余。但是,當(dāng)存在突然的場景中斷,例如由切換的場景變換引起,或當(dāng)進(jìn)行快速縮放時,幀間冗余是低的。對于預(yù)記錄應(yīng)用(例如DVD),突然的場景中斷可以被編輯,可以改善幀間冗余。但不是所有視頻都能被編輯以改善幀間冗余。VICOMP利用只是在當(dāng)前幀和在前幀之間的幀間相關(guān)。這通常僅產(chǎn)生約2∶1的壓縮增加,但是編碼是一致的,并且對于未被編輯的場景中斷和/或快速縮放或其他類型的高視頻信息量不產(chǎn)生通道溢出。VICOMP對所有類型的視頻(尤其是高視頻信息量)保持高的壓縮率,而不使用運(yùn)動補(bǔ)償。
雖然上述的幀間相關(guān)性編碼是結(jié)合程序步驟來進(jìn)行示例性說明的,但是,本領(lǐng)域技術(shù)人員了解,可以用本領(lǐng)域公知和常用的各種硬件功能模塊來實現(xiàn)上述幀間相關(guān)性編碼中的各功能操作。例如,可以用各種適當(dāng)?shù)倪\(yùn)算硬件功能單元來實現(xiàn)像素值的計算,用諸如寄存器之類的存儲單元來存儲各像素值和參數(shù)值等,并用比較器來實現(xiàn)各種比較操作。換言之,本發(fā)明獨特的上述幀間相關(guān)性編碼方法可以用軟件、硬件或兩者的結(jié)合來實現(xiàn)。因此,本發(fā)明還提供一種可用于實現(xiàn)上述VICOMP中的幀間相關(guān)性編碼的編碼裝置。
已經(jīng)結(jié)合具體實施方式
對本發(fā)明進(jìn)行了詳細(xì)描述,但是,本領(lǐng)域技術(shù)人員了解,本發(fā)明的保護(hù)范圍并不局限于上述實施方式中的細(xì)節(jié),在不背離本發(fā)明的原理和精神的前提下,還存在各種變形和改變。因此,本發(fā)明的保護(hù)范圍由以下權(quán)利要求來限定。
權(quán)利要求
1)一種在視頻編碼處理中利用視頻信號幀間相關(guān)性進(jìn)行編碼的方法,包括步驟利用預(yù)先設(shè)定的匹配規(guī)則來判斷視頻信號的相鄰幀的相關(guān)情況;基于所判斷的相關(guān)情況執(zhí)行幀間相關(guān)編碼。
2)如權(quán)利要求1所述的方法,其中,所述的判斷視頻信號的相鄰幀相關(guān)情況的步驟包括步驟將所述相鄰幀分別劃分為相同數(shù)量的像素塊,并分別判斷該兩個幀中相對應(yīng)的像素塊的亮度Y分量和顏色UV分量是否匹配;根據(jù)上述匹配判斷結(jié)果得到各像素塊的相關(guān)性情況,以及,基于像素塊相關(guān)性情況來確定相鄰幀的相關(guān)情況。
3)如權(quán)利要求2所述的方法,其中,所述的判斷該兩個幀中相對應(yīng)的像素塊的亮度Y分量和顏色UV分量是否匹配的步驟包括將每個幀劃分為9個像素塊,且每個像素塊中包含6個Y分量、1個U分量和1個V分量,為每個像素塊分別設(shè)置Y分量匹配標(biāo)志和U、V分量匹配標(biāo)志,并設(shè)置分別用于Y分量的相關(guān)系數(shù)和U、V分量的相關(guān)系數(shù),以及設(shè)置表示各像素塊內(nèi)關(guān)于Y分量的匹配的像素數(shù)量的匹配計數(shù)值T和相關(guān)變量,對于一個幀內(nèi)的每個像素塊,分別計算所述每個像素塊與前一個幀內(nèi)相對應(yīng)像素塊中6個Y分量和U、V分量的差值;根據(jù)計算結(jié)果進(jìn)行如下操作對于Y分量,當(dāng)相應(yīng)于某個像素塊的Y分量的某個差值小于Y分量相關(guān)系數(shù),則將T值遞增1,如果T的最終值大于或等于相關(guān)變量并且等于各Y分量差值的最大絕對值的最大Y值小于Y分量相關(guān)系數(shù)的2倍,則將對應(yīng)于該像素塊的Y分量匹配標(biāo)志設(shè)置為匹配,對于UV分量,如果相應(yīng)于某個像素塊的U、V分量的差值分別都小于、U、V分量相關(guān)系數(shù),則將對應(yīng)于該像素塊的U、V分量匹配標(biāo)志設(shè)置為匹配。
4)如權(quán)利要求3所述的方法,還包括步驟如果前一幀和當(dāng)前幀的某個像素塊的Y分量和/或UV分量分別匹配,則用前一個幀的相對應(yīng)的像素塊的Y分量和/或UV分量的值分別代替當(dāng)前幀的Y分量和/或UV分量。
5)要求1-4中任一項所述的方法,其中,根據(jù)幀間相關(guān)情況判斷結(jié)果調(diào)整Y分量相關(guān)系數(shù)和UV分量相關(guān)系數(shù),從而實現(xiàn)對所述幀間相關(guān)編碼的比特率反饋控制。
6)如權(quán)利要求5所述的方法,其中,當(dāng)判斷幀間相關(guān)性低時,增加所述相關(guān)系數(shù),以及,當(dāng)判斷幀間相關(guān)性高時,減小所述相關(guān)系數(shù)。
7)如權(quán)利要求5-6所述的方法,其中,設(shè)置表示所述Y分量和UV分量相關(guān)系數(shù)在單個幀的編碼過程中被調(diào)整的次數(shù)的第一控制參數(shù)、用于表示一行像素編碼所希望的位數(shù)的第二控制參數(shù)、以及表示所述希望的位數(shù)與實際位數(shù)之間的差值的第三控制參數(shù),以便實現(xiàn)所述比特率反饋控制。
8)如權(quán)利要求7所述的方法,其中,所述第一控制參數(shù)被設(shè)置為1、2或4,所述第二控制參數(shù)被設(shè)置為20,所述第三控制參數(shù)被設(shè)置為4。
9)一種編碼裝置,其利用如上述權(quán)利要求1-8中任一項中所述的方法實現(xiàn)視頻信息的幀間相關(guān)性編碼。
全文摘要
本發(fā)明提供一種在視頻編碼處理中利用視頻信號幀間相關(guān)性進(jìn)行編碼的方法,包括步驟利用預(yù)先設(shè)定的匹配規(guī)則來判斷視頻信號的相鄰幀的相關(guān)情況;基于所判斷的相關(guān)情況執(zhí)行幀間相關(guān)編碼。本發(fā)明還提供一種編碼裝置,其利用如本發(fā)明的上述方法實現(xiàn)視頻信息的幀間相關(guān)性編碼。本發(fā)明的上述方法和裝置對所有類型的視頻(尤其是高視頻信息量)保持高的壓縮率,而不使用運(yùn)動補(bǔ)償。
文檔編號H04N7/26GK1964488SQ20051011480
公開日2007年5月16日 申請日期2005年11月11日 優(yōu)先權(quán)日2005年11月11日
發(fā)明者李將, 畢景江, 熊杰 申請人:北京微視訊通數(shù)字技術(shù)有限公司