本發明涉及視頻圖像處理領域,尤其涉及參考幀編解碼的方法與裝置。
背景技術:
數字視頻能力可并入到大范圍的裝置中,包含數字電視、數字直播系統、無線廣播系統、個人數字助理(PDA)、膝上型或桌上型計算機、平板計算機、電子書閱讀器、數碼相機、數字記錄裝置、數字媒體播放器、視頻游戲裝置、視頻游戲控制臺、蜂窩式或衛星無線電電話、視頻會議裝置、視頻流裝置等等。數字視頻裝置實施視頻壓縮技術,例如由MPEG-2、MPEG-4、ITU-TH.263、ITU-TH.264/MPEG-4第10部分高級視頻編解碼(AVC)、ITU-TH.265高效率視頻編解碼(HEVC)標準定義的標準和所述標準的擴展部分中所描述的那些視頻壓縮技術,從而更高效地發射及接收數字視頻信息。視頻裝置可通過實施這些視頻編解碼技術來更高效地發射、接收、編碼、解碼和/或存儲數字視頻信息。
在視頻編解碼領域中,幀的概念是指一副完整的圖像,由一幀一幀的圖像按照一定的次序和幀速率組成視頻格式后即可播放。當幀速率達到一定的速度后,兩幀之間的間隔時間小于人眼的分辨極限,會出現短暫的視覺停留,方才能看似動態的出現在屏幕上。視頻文件能夠實現壓縮的基礎是單幀數字圖像的壓縮編碼,數字化后的圖像中存在很多的重復表示信息,稱之為冗余信息。一幀圖像中往往存有許多空間結構相同或相似的地方,例如同一物體或背景中的采樣點顏色之間大都存在著緊密關聯性和相似性。在多幀圖像組中,一幀圖像和其前一幀或后一幀基本上都有巨大的相關性,描述信息的像素值差別很小,這些都是可以被壓縮的部分。同樣的道理,視頻文件中不但存在著空間冗余信息,而且包含大量的時間冗余信息,這是由視頻的組成結構導致的。例如,視頻采樣的幀速率一般為25幀/秒至30幀/秒,特殊情況中會出現60幀/秒的可能。也就是說,相鄰兩幀間的采樣時間間隔至少為1/30秒到1/25秒。在這么短的時間內,采樣得到的圖像畫面中基本上 都存在大量的相似信息,畫面之間存在巨大關聯性。但是在原始的數字視頻錄入系統中是各自獨立的記錄,沒有考慮和利用到這些連貫相似特性,這就造成了相當巨大的重復多余的數據量。另外,已通過研究表明,從人眼的視覺敏感度這一心理特性的角度出發,視頻信息中也是存在可以用來壓縮的部分,即視覺冗余。所謂視覺冗余,是指利用人眼對亮度變化比較敏感,而對色度的變化相對不敏感的勝利特性來適當的壓縮視頻比特流。在高亮度的區域,人眼視覺對亮度變化的敏感度呈現下降趨勢,轉而對物體的邊緣處較為敏感,內部區域相對不敏感;對整體結構較為敏感,對內部細節變換相對不敏感。因為視頻圖像信息的最終服務對象是我們人類群體,所以可以充分利用人眼的這些特性對原有的視頻圖像信息進行壓縮處理,達到更佳的壓縮效果。除了上面提到的空間冗余、時間冗余和視覺冗余外,視頻圖像信息中還會存在信息熵冗余、結構冗余、知識冗余、重要性冗余等等這一系列的冗余信息。視頻壓縮編碼的目的就是使用各種技術方法將視頻序列中的冗余信息去除掉,以達到減小存儲空間和節省傳輸帶寬的效果。
就目前的技術發展現狀而言,視頻壓縮處理技術主要包括幀內預測、幀間預測、變換量化、熵編碼以及消塊濾波處理等。在國際通用范圍內,存在的視頻壓縮編碼標準中主流的壓縮編碼方式主要有四種:色度抽樣、預測編碼、變換編碼和量化編碼。
色度抽樣:此方式充分利用了人眼的視覺心理特點,從底層的數據表示中就開始設法最大限度的縮減單個元素描述的數據量。在電視系統中多數采用的是亮度-色度-色度(YUV)顏色編碼,它是歐洲電視系統廣泛采用的標準。YUV顏色空間中包括一個亮度信號Y和兩個色差信號U和V,三個分量彼此獨立。YUV顏色模式彼此分開的表示方式更加靈活,傳輸占用帶寬少,比傳統的紅綠藍(RGB)色彩模型更具優勢。例如,YUV 4:2:0形式表示兩色度分量U和V在水平方向和垂直方向上都只有亮度Y分量的一半,即4個采樣像素點中存在4個亮度分量Y,而色度分量U和V則只有一個。這樣表示時,數據量進一步縮小,僅為原始的33%左右。利用人眼生理視覺特性,通過這種色度抽樣的方式實現視頻壓縮的目的,是目前廣泛采用的視頻數據壓縮方式之一。
預測編碼:即利用之前已編碼幀的數據信息來預測當前將要編碼的幀。通過預測得到一個預測值,它不完全等同與實際值,之間存在著一定的殘差 值。如果預測越適合,則預測值就會越接近實際值,殘差值就越小,這樣對殘差值進行編碼就能大大減小數據量,在解碼端解碼時運用殘差值加上預測值還原重構出初始圖像,這就是預測編碼的基本思想方法。在主流編碼標準中預測編碼分為幀內預測和幀間預測兩種基本類型。
變換編碼:是不直接對原本的空間域信息進行編碼,而是將信息采樣值按照某種形式的變換函數,從當前域轉換到另外一種人為定義域中(通常稱為變換域),再根據信息在變換域的分布特性進行壓縮編碼。變換編碼的原因是:視頻圖像數據往往在空間域的數據相關性大,導致大量冗余信息的存在,直接編碼需要很大的比特量。而在變換域中數據相關性則大大減少,使得編碼的冗余信息減少,編碼所需的數據量也隨之大大減少,這樣就能夠得到較高的壓縮比,而且可以實現較好的壓縮效果。典型的變換編碼有卡洛(K-L)變換、傅立葉變換等。整數離散余弦變換(DCT)是許多國際標準中都普遍采用的變換編碼方式。
量化編碼:上述提到的變換編碼其實本身并不壓縮數據,量化過程才是壓縮數據的有力手段,也是有損壓縮中數據“損失”的主要原因。量化的過程就是將動態范圍較大的輸入值強行規劃成較少的輸出值的過程。因為量化輸入值范圍較大,需要較多的比特數表示,而“強行規劃”后的輸出值范圍較小,從而只需要少量的比特數即可表示。每個量化輸入被歸一化到一個量化輸出,即量化到某個數量級中,這些數量級通常被稱之為量化級(通常由編碼器規定)。
在基于混合編碼架構的編碼算法中,上述壓縮編碼方式被混合使用,編碼器控制模塊根據視頻幀中不同圖像塊的局部特性,選擇該圖像塊所采用的編碼模式。對幀內預測編碼的塊進行頻域或空域預測,對幀間預測編碼的塊進行運動補償預測,預測的殘差再通過變換和量化處理形成殘差系數,最后通過熵編碼器生成最終的碼流。為避免預測誤差的累積,幀內或幀間預測的參考信號是通過編碼端的解碼模塊得到。變換和量化后的殘差系數經過反量化和反變換重建殘差信號,再與預測的參考信號相加得到重建的圖像。環路濾波會對重建后的圖像進行像素修正,提高重建圖像的編碼質量。
技術實現要素:
本發明公開了一種提高編碼效率的參考幀的編解碼的方法。
運動補償是視頻編碼中提高壓縮效率最關鍵的技術之一。傳統的基于塊匹配的運動補償是主流的視頻編碼器,特別是視頻編碼標準中,廣泛采用的一種方法。在基于塊匹配的運動補償方法中,一個幀間預測塊采用的是平移的運動模型,其假設一個塊中所有像素位置上的運動向量相等。然而,這種假設在很多情況下并不成立。現實視頻中物體的運動經常是平移、旋轉、縮放等運動的復雜組合。若一個像素塊中含有這些復雜的運動,則傳統的基于塊匹配的運動補償方法得到的預測信號就不夠準確,因此不能夠充分去除幀間相關性。為了解決這個問題,高階運動模型被引入到視頻編碼的運動補償中。相比于平移運動模型,高階運動模型的自由度更大,允許一個幀間預測塊中的每個像素的運動向量各不相同,即高階運動模型產生的運動矢量場具有更好的精度。
基于控制點描述的仿射運動模型是高階運動模型中比較有代表性的一種。與傳統的平移運動模型不同,塊中各個像素點的運動向量的值與其所在位置有關,是坐標位置的一階線性方程。仿射運動模型允許參考塊經過旋轉、縮放等扭曲變換,在運動補償時可以得到更精確的預測塊。
仿射模式可以更好的提高預測塊的精度值,提高編碼的效率,但是另一方面,相對于基于平移運動模型的統一的運動信息,需要花費更多的碼率編碼各個控制點的運動信息,同時,由于候選預測模式的增加,用來編碼預測模式選擇結果的碼率也在增加。這些額外的碼率消耗,都影響了編碼效率的提高。
在本發明的第一個方面,公開了一種參考幀的解碼方法,具體包括:
在解碼端解碼接收到的視頻碼流,從而解碼重建出圖像幀的過程中,需要已經完成解碼重建的圖像幀作為當前待解碼幀的參考幀,當前待解碼幀參考所述的參考幀完成解碼重建。并非所有的解碼重建后的圖像幀都被用來作為當前待解碼幀的參考幀,只用存儲于參考幀列表中的解碼重建后的圖像參考幀才會被作為參考幀供當前待解碼幀選擇使用,這些參考幀列表中的參考幀,也被稱為當前待解碼幀的候選參考幀。參考幀列表也隨著待解碼幀的解碼完成而更新。在一些實施例中,待解碼幀在完成解碼重建后會加入參考幀列表,作為后續待解碼幀的參考幀。
不妨設當前的待解碼幀已經完成解碼重建,可選的,可以對所述解碼重建后的圖像幀做像素插值,所述像素插值的方法,包括單幀的圖像分像素插 值以及多幀的運動估計插值,目的都在于提高該解碼重建后圖像作為參考圖像在運動估計時的精準度,不作限定。不妨將所述解碼重建幀或者像素插值后的解碼重建幀稱為第一參考幀。
解析碼流中的映射參數。一般的,映射參數的個數不小于2個。映射參數在編碼端編入碼流,通過編解碼端共同遵守的操作規范,解碼端以與編碼端的編碼方式相對應的解碼方式,從碼流中解析這些映射參數。
應理解,這些映射參數是以幀級的方式傳遞的,可以在圖像參數集(PPS,picture parameter set)中傳遞,也可以在條帶頭(slice header),或作為其它幀級語法元素傳遞,不作限定。
根據經驗或者試驗數據,預先設置一種映射函數,這種映射函數反映了待生成的參考幀,不妨稱為第二參考幀,上的任意一點與第一參考幀上的像素單元的位置映射關系。在一些實施例中,映射函數的輸出為目標像素單元的位置,輸入為源像素單元的位置和待定參數。因此,結合從碼流中獲得的映射參數,可以建立表征第二參考幀上的任意一點與第一參考幀上的像素單元的位置映射關系的映射函數。
應理解,像素單元,可以為一個像素點,或者若干在平面位置上相鄰的像素點的集合,比如一個2x2像素點的集合,不作限定,對應的,像素單元的位置,可以以它的左上角的像素點或者像素集合中心位置的像素點,或者預置的任意像素點的位置來表示。在本發明實施例中,像素單元的坐標位置一般指像素單元左上角的像素點的坐標位置。
在映射函數的推導下,第二參考幀上的每一點都可以找到其在第一參考幀中的映射點,并獲取所述映射點的像素值作為自己的像素值。當第二參考幀中的每一點都完成這一步驟時,第二參考幀就生成了。應理解,像素單元作為一個整體參與所述的映射點的確定過程,映射點的像素單元中的各個像素點的像素值位置對應地賦予第二參考幀中映射的像素單元的各個像素點。
在一個實施例中,上文所述的映射函數為x′=m0x+m1y+m2,y′=m3x+m4y+m5,其中,x,y為源像素單元的橫、縱坐標,x′,y′為與所述源像素單元x,y具有所述映射關系的目標像素單元的橫、縱坐標,m0,m1,m2,m3,m4,m5為所述映射參數;對應的,所述根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有映射關系的第一像素單元,包括:在所述第一參考幀中,所述第一像素單元的 位置為x′=m0x+m1y+m2,y′=m3x+m4y+m5,其中,x,y為所述第二像素單元的橫、縱坐標,x′,y′為與所述第二像素單元具有所述映射關系的所述第一像素單元的橫、縱坐標。應理解,在本實施例中,采用了6參數的映射函數。申請號為CN201010247275.7、CN201410584175.1、CN201410526608.8、CN201510085362.X、PCT/CN2015/073969、CN201510249484.8、CN201510391765.7、CN201510543542.8等專利申請,上述文件的全部內容以引用的方式并入本文中,披露了采用其他參數的映射函數,比如2參數、4參數、8參數等,不作限定。應理解,所述從碼流中解析的映射參數的個數應該與對應的映射函數所需要的待定系數的個數相一致。
生成的第二參考幀只有加入參考幀列表中才能夠被后續的待解碼幀所選擇使用,高效地設計參考幀列表的組成策略可以提高編碼效率,反之,如果選擇不合適的參考幀加入到參考幀列表中,則會降低編碼效率。
在一個實施例中,將解碼重建后的圖像幀和第二參考幀以相鄰的位置關系加入到參考幀列表中。
在一個實施例中,僅將第二參考幀加入到參考幀列表中。
在一個實施例中,根據本發明第一方面的方法,相對于多個解碼重建后的圖像幀,一般的,個數不少于兩個,不妨以兩個舉例,生成第二參考幀和第四參考幀。將第二參考幀和第四參考幀的對應像素單元加權相加,獲得新的參考幀,不妨稱為第五參考幀。應理解,這里的加權相加,可以根據參考幀的不同質量,不同可靠性等指標來設置權值,不作限定。舉例性的,可以將第二參考幀和第四參考幀的對應像素單元計算均值。將解碼重建后的圖像幀或者第五參考幀加入到參考幀列表中,也可以將它們同時加入到參考幀列表中。
在一個實施例中,任取第一參考幀中的一個區域,示例性的,可以取整個第一參考幀,則所述區域以第一參考幀四個頂點為頂點的矩陣,也可以在第一參考幀中隨意獲取任意形狀的區域,不作限定。不妨將整個第一參考幀所覆蓋的區域稱為第一區域。按照本發明第一方面中的映射函數,計算出這四個第一區域的頂點在第二參考幀中對應的四個散點的位置。依照第一區域四個頂點的連接關系,連接四個散點,從而在第二參考幀中圈出一片區域,這個被圈出的區域不妨設為第二區域。在坐標平面位置關系上,在第一區域和第二區域所覆蓋的范圍內存在重疊的部分和不重疊的部分。重疊的部分被 稱為第一區域和第二區域的交集。所述第一區域與所述第二區域范圍內但不重疊的部分連同交集部分被稱為第一區域和第二區域的并集。計算上述交集面積和并集面積的比值,當比值小于預設值時,將所述第二參考幀加入所述參考幀列表;否則,將解碼重建后的圖像幀加入所述參考幀列表。應理解,本方案的目的是為了判斷解碼重建后的圖像幀和第二參考幀的差別,當差別較小時將解碼重建后的圖像幀加入所述參考幀列表,差別較大時將第二參考幀加入所述參考幀列表。為達到此目的,在實現手段上,不作限定。
在一個實施例中,將前一個實施例中的解碼重建后的圖像幀和第二參考幀均加入所述參考幀列表。對于后續的待解碼幀,和前一個實施例中的所述第一區域和第二區域的交集的平面位置相一致,對應的,對待解碼幀劃分為對應交集內的區域和對應交集外的區域。在第一種示例性的實施方式中,待解碼幀中對應交集內的區域的像素單元可以參考參考幀列表中所有解碼重建后的圖像幀,而不能參考參考幀列表中的第二參考幀;待解碼幀中對應交集外的區域的像素單元可以參考參考幀列表中所有解碼重建后的圖像幀,也可以參考參考幀列表中的第二參考幀。在第二種示例性的實施方式中,待解碼幀中對應交集內的區域的像素單元可以參考參考幀列表中所有解碼重建后的圖像幀,而不能參考參考幀列表中的第二參考幀;待解碼幀中對應交集外的區域的像素單元不可以參考參考幀列表中所有解碼重建后的圖像幀,可以參考參考幀列表中的第二參考幀。
相對于前述引文中申請號為CN201010247275.7等專利提到的方法,本發明僅在幀級傳遞少量映射參數,豐富了參考幀的選擇,使參考幀更接近于實際幀,使通過參考幀進行的預測更準確,提高了編碼效率。
在本發明的第二個方面,公開了另一種參考幀的解碼方法,具體包括:
在當前待解碼幀解碼重建以后,處理參考幀列表之前。首先,解碼碼流中的指示信息,所述指示信息表明是否僅使用解碼重建后的圖像幀作為參考幀,即不考慮本發明第一方面所提出的方法所生成的參考幀。如果指示信息表明僅使用解碼重建后的圖像幀作為參考幀,則僅使用解碼重建后的圖像幀作為參考幀,否則,使用本發明第一方面以及各實施例所述的方法生成的參考幀作為參考幀。
應理解,所述指示信息是以幀級的方式傳遞的,可以在圖像參數集(PPS,picture parameter set)中傳遞,也可以在條帶頭(slice header),或作 為其它幀級語法元素傳遞,不作限定。
作為一種可選的實施方式,還可以在序列級傳遞指示信息,比如序列參數集(SPS,sequence parameter set),來指示整個所屬的序列是否僅使用解碼重建后的圖像幀作為參考幀,進一步地,還可以指示序列中每一幀的構建參考幀的信息。示例性的,指示一個幀號4,代表只有第四幀將按照本發明第一方面以及各實施例所述的方法生成的參考幀加入參考幀列表,或者示例性的,指示一個011101的二進制序列,代表序列中每一幀的加入參考幀列表的幀的構建方式的情況。
由于源視頻內容的多樣性,對于某些視頻內容僅使用解碼重建后的圖像幀作為參考幀即可達到良好的編碼效果。通過指示信息,預先知曉是否需要生成本發明第一方面所提出的方法所生成的參考幀,可以降低方案的復雜度。
在本發明的第三個方面,公開了一種參考幀的編碼方法,具體包括:
取得當前待編碼的原始圖像幀和此時參考幀序列中的一幀候選參考幀。分別提取所述原始圖像幀和取得的候選參考幀的特征點。特征點的提取和匹配有多種方法,包括圖像的視覺特征,統計特征,變換系數特征,代數特征等,相對應的,特征提取方法,包括主分量分析法、支持向量機等等,文獻《圖像特征提取方法的研究》(數字對象統一標示符(GOI):CNKI:CDMD:2.2007.058439)全文引入于此,文中第一章和第二章對圖像特征及提取方法做了舉例性的描述,對于本發明實施例采用的特征點提取和匹配的方法,不作限定。一般的,預置的映射函數與本發明第一方面所使用的映射函數一致,第一特征點集合中的若干特征點和其映射的第二特征集合中的相同數量的特征點,可以互為本發明第一方面所公開的映射函數的源像素單元和目標像素單元,從而計算出映射參數。與本發明第一方面的解析碼流中的映射參數對應的,將上述計算出的映射參數編入碼流。由于編碼端和解碼端的參考幀列表要保持一致。因此,和解碼端進行相同的操作,編碼端也基于當前編碼重建完成的圖像幀,可選的,可以對所述編碼重建后的圖像幀做像素插值,以及上述提到的映射函數,在編碼端生成類似于本發明第一方面中第二參考幀的參考幀。可在本發明第一方面中實施的各解碼端實施例,對應的,同樣可以在本發明的第三方面中的編碼端實施。
相對于前述引文中申請號為CN201010247275.7等專利提到的方法,本發明僅在幀級傳遞少量映射參數,豐富了參考幀的選擇,使參考幀更接近于實 際幀,使通過參考幀進行的預測更準確,提高了編碼效率。
在本發明的第四個方面,公開了另一種參考幀的編碼方法,具體包括:
在當前待編碼幀編碼重建以后,處理參考幀列表之前。分別按照本發明第三方面所提出的方法所生成的參考幀和使用解碼重建后的圖像幀作為參考幀測試編碼性能。應理解,上述測試編碼性能是編碼質量-編碼代價(distortion-rate)選擇的過程,可以按照精確的編碼質量和編碼比特數進行比較,也可以使用簡化的方式進行比較,比如只考察編碼比特數的多少等,不作限定。如果使用本發明第三方面所提出的方法所生成的參考幀能夠獲得更高的編碼性能,則按照本發明第三方面及各個實施例的方法進行編碼,并把選擇信息,與本發明第二方面中解析碼流中的指示信息對應的,編入碼流,否則,則按照用解碼重建后的圖像幀作為參考幀進行編碼,同樣需要把選擇信息,與本發明第二方面中解析碼流中的指示信息對應的,編入碼流。
應理解,所述選擇信息是以幀級的方式傳遞的,可以在圖像參數集(PPS,picture parameter set)中傳遞,也可以在條帶頭(slice header),或作為其它幀級語法元素傳遞,不作限定。
與解碼端的實現方式相對應的,還可以在序列級編碼指示信息,比如序列參數集(SPS,sequence parameter set),來指示整個所屬的序列是否僅使用解碼重建后的圖像幀作為參考幀,進一步地,還可以指示序列中每一幀的構建參考幀的信息。示例性的,指示一個幀號4,代表只有第四幀將按照本發明第一方面以及各實施例所述的方法生成的參考幀加入參考幀列表,或者示例性的,指示一個011101的二進制序列,代表序列中每一幀的加入參考幀列表的幀的構建方式的情況。
由于源視頻內容的多樣性,對于某些視頻內容僅使用編碼重建后的圖像幀作為參考幀即可達到良好的編碼效果。通過選擇信息,預先通知解碼端是否需要生成本發明第三方面所提出的方法所生成的參考幀,可以降低方案的復雜度。
在本發明的第五個方面,公開了一種參考幀的解碼裝置,包括:
第一獲取模塊,用于獲取第一參考幀,所述第一參考幀為解碼重建后的第一圖像幀或所述第一圖像幀通過像素插值獲得的第一插值圖像幀;
解析模塊,用于解析碼流中的映射參數;
第二獲取模塊,用于根據所述映射參數,確定預置的映射函數的待定系 數;
第三獲取模塊,用于根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有映射關系的第一像素單元;
賦值模塊,用于將所述第一像素單元的像素值賦予所述第二像素單元。
在本發明的第六個方面,公開了另一種參考幀的解碼裝置,包括:
第一解析模塊,用于解析碼流中的指示信息;
選擇模塊,用于當所述指示信息指示不基于解碼重建后的圖像幀構建其它參考幀時,將所述解碼重建后的圖像幀作為所述參考幀,否則使用下述方法獲得參考幀;
第一獲取模塊,用于獲取第一參考幀,所述第一參考幀為所述解碼重建后的圖像幀或所述圖像幀通過像素插值獲得的插值圖像幀;
第二解析模塊,用于解析碼流中的映射參數;
第二獲取模塊,用于根據所述映射參數,確定預置的映射函數的待定系數;
第三獲取模塊,用于根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有映射關系的第一像素單元;
賦值模塊,用于將所述第一像素單元的像素值賦予所述第二像素單元。
在本發明的第七個方面,公開了一種參考幀的編碼裝置,包括:
第一獲取模塊,用于獲取待編碼圖像幀和所述待編碼圖像幀對應的編碼重建后的圖像幀的候選參考幀;
第二獲取模塊,用于分別提取所述待編碼圖像幀的第一特征點的集合和所述候選參考幀的第二特征點的集合;
第三獲取模塊,用于根據所述第一特征點的集合、所述第二特征點的集合和預置的映射函數,獲得映射參數,所述映射參數表征在所述映射函數的約束下,所述第一特征點和所述第二特征點的映射關系;
編碼模塊,用于將所述映射參數編入碼流;
第四獲取模塊,用于獲取第一參考幀,所述第一參考幀為編碼重建后的第一圖像幀或所述第一圖像幀通過像素插值獲得的第一插值圖像幀;
第五獲取模塊,用于根據所述映射參數,確定所述映射函數的待定系數;
第六獲取模塊,用于根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有所述映射關系的第一像素 單元;
賦值模塊,用于將所述第一像素單元的像素值賦予所述第二像素單元。
在本發明的第八個方面,公開了另一種參考幀的編碼裝置,包括:
第一獲取模塊,用于獲取待編碼圖像幀和所述待編碼圖像幀對應的編碼重建后的圖像幀的候選參考幀;
第二獲取模塊,用于分別提取所述待編碼圖像幀的第一特征點的集合和所述候選參考幀的第二特征點的集合;
第三獲取模塊,用于根據所述第一特征點的集合、所述第二特征點的集合和預置的映射函數,獲得映射參數,所述映射參數表征在所述映射函數的約束下,所述第一特征點和所述第二特征點的映射關系;
第一編碼模塊,用于將所述映射參數編入碼流;
第四獲取模塊,用于獲取第一參考幀,所述第一參考幀為編碼重建后的第一圖像幀或所述第一圖像幀通過像素插值獲得的第一插值圖像幀;
第五獲取模塊,用于根據所述映射參數,確定所述映射函數的待定系數;
第六獲取模塊,用于根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有所述映射關系的第一像素單元;
賦值模塊,用于將所述第一像素單元的像素值賦予所述第二像素單元;
第一計算模塊,用于計算所述第二參考幀作為所述參考幀的第一編碼性能;
第二計算模塊,用于計算所述已編碼圖像幀作為所述參考幀的第二編碼性能;
第二編碼模塊,用于將所述第一編碼性能和所述第二編碼性能的比較信息編入所述碼流;
比較模塊,用于當所述比較信息指示所述第一編碼性能優于所述第二編碼性能時,將所述第二參考幀作為所述參考幀;
否則,將所述編碼重建后的圖像幀作為所述參考幀。
在本發明的第九個方面,公開一種用于對參考幀進行解碼的設備,所述設備包括經配置以進行以下操作的處理器:所述操作為第一個方面所述的操作方法。
在本發明的第十個方面,公開另一種用于對參考幀進行解碼的設備,所 述設備包括經配置以進行以下操作的處理器:所述操作為第二個方面所述的操作方法。
在本發明的第十一個方面,公開一種用于對參考幀進行編碼的設備,所述設備包括經配置以進行以下操作的處理器:所述操作為第三個方面所述的操作方法。
在本發明的第十二個方面,公開另一種用于對參考幀進行編碼的設備,所述設備包括經配置以進行以下操作的處理器:所述操作為第四個方面所述的操作方法。
在本發明的第十三個方面,公開一種存儲有指令的計算機可讀存儲媒體,所述指令在被執行時使用于對參考幀進行解碼的設備的一或多個處理器進行以下操作:所述操作為第一個方面所述的操作方法。
在本發明的第十四個方面,公開另一種存儲有指令的計算機可讀存儲媒體,所述指令在被執行時使用于對參考幀進行解碼的設備的一或多個處理器進行以下操作:所述操作為第二個方面所述的操作方法。
在本發明的第十五個方面,公開一種存儲有指令的計算機可讀存儲媒體,所述指令在被執行時使用于對參考幀進行編碼的設備的一或多個處理器進行以下操作:所述操作為第三個方面所述的操作方法。
在本發明的第十六個方面,公開另一種存儲有指令的計算機可讀存儲媒體,所述指令在被執行時使用于對參考幀進行編碼的設備的一或多個處理器進行以下操作:所述操作為第四個方面所述的操作方法。
綜上,本發明僅在幀級傳遞少量映射參數,豐富了參考幀的選擇,使參考幀更接近于實際幀,使通過參考幀進行的預測更準確,提高了編碼效率。
附圖說明
為了更清楚地說明本發明實施例的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是根據本發明實施例的視頻編解碼系統的示意性框圖;
圖2是根據本發明實施例的視頻編碼器的示意性框圖;
圖3是根據本發明實施例的視頻解碼器的示意性框圖;
圖4是根據本發明實施例的一種參考幀解碼方法的示意性流程圖;
圖5是參考幀列表中原始參考幀和變換參考幀交織排列示意圖;
圖6是根據本發明實施例的另一種參考幀解碼方法的示意性流程圖;
圖7是根據本發明實施例的一種參考幀編碼方法的示意性流程圖;
圖8是高斯差分金字塔生成示例圖;
圖9是DOG空間極值點檢測示例圖;
圖10是根據本發明實施例的另一種參考幀編碼方法的示意性流程圖;
圖11是根據本發明實施例的一種參考幀解碼裝置的示意性框圖;
圖12是根據本發明實施例的另一種參考幀解碼裝置的示意性框圖;
圖13是根據本發明實施例的一種參考幀編碼裝置的示意性框圖;
圖14是根據本發明實施例的另一種參考幀編碼裝置的示意性框圖;
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有付出創造性勞動的前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
圖1是根據本發明實施例的視頻編解碼系統10的示意性框圖。如圖1所示,視頻編解碼系統10包含源裝置12及目的地裝置14。源裝置12產生經編碼視頻數據。因此,源裝置12可被稱作視頻編碼裝置或視頻編碼設備。目的地裝置14可解碼由源裝置12產生的經編碼視頻數據。因此,目的地裝置14可被稱作視頻解碼裝置或視頻解碼設備。源裝置12及目的地裝置14可為視頻編解碼裝置或視頻編解碼設備的實例。源裝置12及目的地裝置14可包括廣泛范圍的裝置,包含臺式計算機、移動計算裝置、筆記本(例如,膝上型)計算機、平板計算機、機頂盒、智能電話等手持機、電視、相機、顯示裝置、數字媒體播放器、視頻游戲控制臺、車載計算機,或其類似者。
目的地裝置14可經由信道16接收來自源裝置12的編碼后的視頻數據。信道16可包括能夠將經編碼視頻數據從源裝置12移動到目的地裝置14的一個或多個媒體及/或裝置。在一個實例中,信道16可包括使源裝置12能 夠實時地將編碼后的視頻數據直接發射到目的地裝置14的一個或多個通信媒體。在此實例中,源裝置12可根據通信標準(例如,無線通信協議)來調制編碼后的視頻數據,且可將調制后的視頻數據發射到目的地裝置14。所述一個或多個通信媒體可包含無線及/或有線通信媒體,例如射頻(RF)頻譜或一根或多根物理傳輸線。所述一個或多個通信媒體可形成基于包的網絡(例如,局域網、廣域網或全球網絡(例如,因特網))的部分。所述一個或多個通信媒體可包含路由器、交換器、基站,或促進從源裝置12到目的地裝置14的通信的其它設備。
在另一實例中,信道16可包含存儲由源裝置12產生的編碼后的視頻數據的存儲媒體。在此實例中,目的地裝置14可經由磁盤存取或卡存取來存取存儲媒體。存儲媒體可包含多種本地存取式數據存儲媒體,例如藍光光盤、DVD、CD-ROM、快閃存儲器,或用于存儲經編碼視頻數據的其它合適數字存儲媒體。
在另一實例中,信道16可包含文件服務器或存儲由源裝置12產生的編碼后的視頻數據的另一中間存儲裝置。在此實例中,目的地裝置14可經由流式傳輸或下載來存取存儲于文件服務器或其它中間存儲裝置處的編碼后的視頻數據。文件服務器可以是能夠存儲編碼后的視頻數據且將所述編碼后的視頻數據發射到目的地裝置14的服務器類型。實例文件服務器包含web服務器(例如,用于網站)、文件傳送協議(FTP)服務器、網絡附加存儲(NAS)裝置,及本地磁盤驅動器。
目的地裝置14可經由標準數據連接(例如,因特網連接)來存取編碼后的視頻數據。數據連接的實例類型包含適合于存取存儲于文件服務器上的編碼后的視頻數據的無線信道(例如,Wi-Fi連接)、有線連接(例如,DSL、纜線調制解調器等),或兩者的組合。編碼后的視頻數據從文件服務器的發射可為流式傳輸、下載傳輸或兩者的組合。
本發明的技術不限于無線應用場景,示例性的,可將所述技術應用于支持以下應用等多種多媒體應用的視頻編解碼:空中電視廣播、有線電視發射、衛星電視發射、流式傳輸視頻發射(例如,經由因特網)、存儲于數據存儲媒體上的視頻數據的編碼、存儲于數據存儲媒體上的視頻數據的解碼,或其它應用。在一些實例中,視頻編解碼系統10可經配置以支持單向或雙向視頻發射,以支持例如視頻流式傳輸、視頻播放、視頻廣播及/或視頻電話等應 用。
在圖1的實例中,源裝置12包含視頻源18、視頻編碼器20及輸出接口22。在一些實例中,輸出接口22可包含調制器/解調器(調制解調器)及/或發射器。視頻源18可包含視頻俘獲裝置(例如,視頻相機)、含有先前俘獲的視頻數據的視頻存檔、用以從視頻內容提供者接收視頻數據的視頻輸入接口,及/或用于產生視頻數據的計算機圖形系統,或上述視頻數據源的組合。
視頻編碼器20可編碼來自視頻源18的視頻數據。在一些實例中,源裝置12經由輸出接口22將編碼后的視頻數據直接發射到目的地裝置14。編碼后的視頻數據還可存儲于存儲媒體或文件服務器上以供目的地裝置14稍后存取以用于解碼及/或播放。
在圖1的實例中,目的地裝置14包含輸入接口28、視頻解碼器30及顯示裝置32。在一些實例中,輸入接口28包含接收器及/或調制解調器。輸入接口28可經由信道16接收編碼后的視頻數據。顯示裝置32可與目的地裝置14整合或可在目的地裝置14外部。一般來說,顯示裝置32顯示解碼后的視頻數據。顯示裝置32可包括多種顯示裝置,例如液晶顯示器(LCD)、等離子體顯示器、有機發光二極管(OLED)顯示器或其它類型的顯示裝置。
視頻編碼器20及視頻解碼器30可根據視頻壓縮標準(例如,高效率視頻編解碼H.265標準)而操作,且可遵照HEVC測試模型(HM)。H.265標準的文本描述ITU-TH.265(V3)(04/2015)于2015年4月29號發布,可從http://handle.itu.int/11.1002/1000/12455下載,所述文件的全部內容以引用的方式并入本文中。
或者,視頻編碼器20及視頻解碼器30可根據其它專屬或行業標準而操作,所述標準包含ITU-TH.261、ISO/IECMPEG-1Visual、ITU-TH.262或ISO/IECMPEG-2Visual、ITU-TH.263、ISO/IECMPEG-4Visual,ITU-TH.264(還稱為ISO/IECMPEG-4AVC),包含可分級視頻編解碼(SVC)及多視圖視頻編解碼(MVC)擴展。應理解,本發明的技術不限于任何特定編解碼標準或技術。
此外,圖1僅為實例且本發明的技術可應用于未必包含編碼裝置與解碼裝置之間的任何數據通信的視頻編解碼應用(例如,單側的視頻編碼或視頻解碼)。在其它實例中,從本地存儲器檢索數據,經由網絡流式傳輸數據,或以類似方式操作數據。編碼裝置可編碼數據且將所述數據存儲到存儲器,及/或解碼裝置可從存儲器檢索數據且解碼所述數據。在許多實例中,通過 彼此不進行通信而僅編碼數據到存儲器及/或從存儲器檢索數據及解碼數據的多個裝置執行編碼及解碼。
視頻編碼器20及視頻解碼器30各自可實施為多種合適電路中的任一者,例如一個或多個微處理器、數字信號處理器(DSP)、專用集成電路(ASIC)、現場可編程門陣列(FPGA)、離散邏輯、硬件或其任何組合。如果技術部分地或者全部以軟件實施,則裝置可將軟件的指令存儲于合適的非瞬時計算機可讀存儲媒體中,且可使用一個或多個處理器執行硬件中的指令以執行本發明的技術。可將前述各者中的任一者(包含硬件、軟件、硬件與軟件的組合等)視為一個或多個處理器。視頻編碼器20及視頻解碼器30中的每一者可包含于一個或多個編碼器或解碼器中,其中的任一者可整合為其它裝置中的組合式編碼器/解碼器(編解碼器(CODEC))的部分。
本發明大體上可指代視頻編碼器20將某一信息“用信號發送”到另一裝置(例如,視頻解碼器30)。術語“用信號發送”大體上可指代語法元素及/或表示編碼后的視頻數據的傳達。此傳達可實時或近實時地發生。或者,此通信可在一時間跨度上發生,例如可在編碼時以編碼后得到的二進制數據將語法元素存儲到計算機可讀存儲媒體時發生,所述語法元素在存儲到此媒體之后接著可由解碼裝置在任何時間檢索。
所述視頻編碼器20編碼視頻數據。視頻數據可包括一個或多個圖片。視頻編碼器20可產生碼流,所述碼流以比特流的形式包含了視頻數據的編碼信息。所述編碼信息可以包含編碼圖片數據及相關聯數據。相關聯數據可包含序列參數集(SPS)、圖片參數集(PPS)及其它語法結構。SPS可含有應用于零個或多個序列的參數。PPS可含有應用于零個或多個圖片的參數。語法結構是指碼流中以指定次序排列的零個或多個語法元素的集合。
為產生圖片的編碼信息,視頻編碼器20可將圖片分割成編碼樹型塊(CTB)的柵格。在一些例子中,CTB可被稱作“樹型塊”、“最大編碼單元”(LCU)或“編碼樹型單元”。CTB不限于特定大小且可包含一個或多個編碼單元(CU)。每一個CTB可以與圖片內的具有相等大小的像素塊相關聯。每一像素可對應一個亮度(luminance或luma)采樣及兩個色度(chrominance或chroma)采樣。因此,每一個CTB可與一個亮度采樣塊及兩個色度采樣塊相關聯。圖片的CTB可分成一個或多個條帶。在一些實例中,每一個條帶包含整數個數的CTB。作為編碼圖片的一部分,視頻編碼器20可產生所述圖片的每一條帶的編碼 信息,即編碼所述條帶內的CTB。為了編碼CTB,視頻編碼器20可對與CTB相關聯的像素塊遞歸地執行四叉樹分割,以將像素塊分割成遞減的像素塊。所述較小的像素塊可以和CU相關聯。
視頻編碼器20可產生每一不再分割CU的一個或多個預測單元(PU)。CU的每一個PU可與CU的像素塊內的不同像素塊相關聯。視頻編碼器20可針對CU的每一個PU產生預測性像素塊。視頻編碼器20可使用幀內預測或幀間預測來產生PU的預測性像素塊。如果視頻編碼器20使用幀內預測來產生PU的預測性像素塊,則視頻編碼器20可基于與PU相關聯的圖片的解碼后的像素來產生PU的預測性像素塊。如果視頻編碼器20使用幀間預測來產生PU的預測性像素塊,則視頻編碼器20可基于不同于與PU相關聯的圖片的一個或多個圖片的解碼后的像素來產生PU的預測性像素塊。視頻編碼器20可基于CU的PU的預測性像素塊來產生CU的殘余像素塊。CU的殘余像素塊可指示CU的PU的預測性像素塊中的采樣值與CU的初始像素塊中的對應采樣值之間的差。
視頻編碼器20可對CU的殘余像素塊執行遞歸四叉樹分割以將CU的殘余像素塊分割成與CU的變換單元(TU)相關聯的一個或多個較小殘余像素塊。因為與TU相關聯的像素塊中的像素各自對應一個亮度采樣及兩個色度采樣,所以每一個TU可與一個亮度的殘余采樣塊及兩個色度的殘余采樣塊相關聯。視頻編碼器20可將一個或多個變換應用于與TU相關聯的殘余采樣塊以產生系數塊(即,系數的塊)。變換可以是DCT變換或者它的變體。采用DCT的變換矩陣,通過在水平和豎直方向應用一維變換計算二維變換,獲得所述系數塊。視頻編碼器20可對系數塊中的每一個系數執行量化程序。量化一般指系數經量化以減少用以表示系數的數據量,從而提供進一步壓縮的過程。
視頻編碼器20可產生表示量化后系數塊中的系數的語法元素的集合。視頻編碼器20可將熵編碼操作(例如,上下文自適應二進制算術譯碼(CABAC)操作)應用于上述語法元素中的部分或者全部。為將CABAC編碼應用于語法元素,視頻編碼器20可將語法元素二進制化以形成包括一個或多個位(稱作“二進位”)的二進制序列。視頻編碼器20可使用規則(regular)編碼來編碼二進位中的一部分,且可使用旁通(bypass)編碼來編碼二進位中的其它部分。
除熵編碼系數塊的語法元素外,視頻編碼器20可將逆量化及逆變換應 用于變換后的系數塊,以從變換后的系數塊重建殘余采樣塊。視頻編碼器20可將重建后的殘余采樣塊加到一個或多個預測性采樣塊的對應采樣塊,以產生重建后的采樣塊。通過重建每一色彩分量的采樣塊,視頻編碼器20可重建與TU相關聯的像素塊。以此方式重建CU的每一TU的像素塊,直到CU的整個像素塊重建完成。
在視頻編碼器20重建構CU的像素塊之后,視頻編碼器20可執行消塊濾波操作以減少與CU相關聯的像素塊的塊效應。在視頻編碼器20執行消塊濾波操作之后,視頻編碼器20可使用采樣自適應偏移(SAO)來修改圖片的CTB的重建后的像素塊。在執行這些操作之后,視頻編碼器20可將CU的重建后的像素塊存儲于解碼圖片緩沖器中以用于產生其它CU的預測性像素塊。
視頻解碼器30可接收碼流。所述碼流以比特流的形式包含了由視頻編碼器20編碼的視頻數據的編碼信息。視頻解碼器30可解析所述碼流以從所述碼流提取語法元素。當視頻解碼器30執行CABAC解碼時,視頻解碼器30可對部分二進位執行規則解碼且可對其它部分的二進位執行旁通解碼,碼流中的二進位與語法元素具有映射關系,通過解析二進位獲得語法元素。
視頻解碼器30可基于從碼流提取的語法元素來重建視頻數據的圖片。基于語法元素來重建視頻數據的過程大體上與由視頻編碼器20執行以產生語法元素的過程互逆。舉例來說,視頻解碼器30可基于與CU相關聯的語法元素來產生CU的PU的預測性像素塊。另外,視頻解碼器30可逆量化與CU的TU相關聯的系數塊。視頻解碼器30可對逆量化后的系數塊執行逆變換以重建與CU的TU相關聯的殘余像素塊。視頻解碼器30可基于預測性像素塊及殘余像素塊來重建CU的像素塊。
在視頻解碼器30重建CU的像素塊之后,視頻解碼器30可執行消塊濾波操作以減少與CU相關聯的像素塊的塊效應。另外,基于一個或多個SAO語法元素,視頻解碼器30可執行與視頻編碼器20相同的SAO操作。在視頻解碼器30執行這些操作之后,視頻解碼器30可將CU的像素塊存儲于解碼圖片緩沖器中。解碼圖片緩沖器可提供用于后續運動補償、幀內預測及顯示裝置呈現的參考圖片。
圖2為說明經配置以實施本發明的技術的實例視頻編碼器20的框圖。應理解,圖2是示例性的而不應視為限制如本發明廣泛例證并描述的技術。如圖2所示,視頻編碼器20包含預測處理單元100、殘余產生單元102、變 換處理單元104、量化單元106、逆量化單元108、逆變換處理單元110、重建單元112、濾波器單元113、解碼圖片緩沖器114及熵編碼單元116。熵編碼單元116包含規則CABAC編解碼引擎118及旁通編解碼引擎120。預測處理單元100包含幀間預測處理單元121及幀內預測處理單元126。幀間預測處理單元121包含運動估計單元122及運動補償單元124。在其它實例中,視頻編碼器20可包含更多、更少或不同的功能組件。
視頻編碼器20接收視頻數據。為編碼視頻數據,視頻編碼器20可編碼視頻數據的每一圖片的每一條帶。作為編碼條帶的一部分,視頻編碼器20可編碼所述條帶中的每一CTB。作為編碼CTB的一部分,預測處理單元100可對與CTB相關聯的像素塊執行四叉樹分割,以將像素塊分成遞減的像素塊。舉例來說,預測處理單元100可將CTB的像素塊分割成四個相等大小的子塊,將子塊中的一個或多個分割成四個相等大小的子子塊,等等。
視頻編碼器20可編碼圖片中的CTB的CU以產生CU的編碼信息。視頻編碼器20可根據折形掃描次序來編碼CTB的CU。換句話說,視頻編碼器20可按左上CU、右上CU、左下CU及接著右下CU來編碼所述CU。當視頻編碼器20編碼分割后的CU時,視頻編碼器20可根據折形掃描次序來編碼與分割后的CU的像素塊的子塊相關聯的CU。
此外,預測處理單元100可在CU的一個或多個PU中分割CU的像素塊。視頻編碼器20及視頻解碼器30可支持各種PU大小。假定特定CU的大小為2N×2N,視頻編碼器20及視頻解碼器30可支持2N×2N或N×N的PU大小以用于幀內預測,且支持2N×2N、2N×N、N×2N、N×N或類似大小的對稱PU以用于幀間預測。視頻編碼器20及視頻解碼器30還可支持2N×nU、2N×nD、nL×2N及nR×2N的不對稱PU以用于幀間預測。
幀間預測處理單元121可通過對CU的每一PU執行幀間預測而產生PU的預測性數據。PU的預測性數據可包含對應于PU的預測性像素塊及PU的運動信息。條帶可為I條帶、P條帶或B條帶。幀間預測單元121可根據PU是在I條帶、P條帶還是B條帶中而對CU的PU執行不同操作。在I條帶中,所有PU執行幀內預測。
如果PU在P條帶中,則運動估計單元122可搜索參考圖片的列表(例如,“列表0”)中的參考圖片以查找PU的參考塊。PU的參考塊可為最緊密地對應于PU的像素塊的像素塊。運動估計單元122可產生指示列表0中的含有 PU的參考塊的參考圖片的參考圖片索引,及指示PU的像素塊與參考塊之間的空間位移的運動向量。運動估計單元122可將參考圖片索引及運動向量作為PU的運動信息而輸出。運動補償單元124可基于由PU的運動信息指示的參考塊來產生PU的預測性像素塊。
如果PU在B條帶中,則運動估計單元122可對PU執行單向幀間預測或雙向幀間預測。為對PU執行單向幀間預測,運動估計單元122可搜索第一參考圖片列表(“列表0”)或第二參考圖片列表(“列表1”)的參考圖片以查找PU的參考塊。運動估計單元122可將以下各者作為PU的運動信息而輸出:指示含有參考塊的參考圖片的列表0或列表1中的位置的參考圖片索引、指示PU的像素塊與參考塊之間的空間位移的運動向量,及指示參考圖片是在列表0中還是在列表1中的預測方向指示符。為對PU執行雙向幀間預測,運動估計單元122可搜索列表0中的參考圖片以查找PU的參考塊,且還可搜索列表1中的參考圖片以查找PU的另一參考塊。運動估計單元122可產生指示含有參考塊的參考圖片的列表0及列表1中的位置的參考圖片索引。另外,運動估計單元122可產生指示參考塊與PU的像素塊之間的空間位移的運動向量。PU的運動信息可包含PU的參考圖片索引及運動向量。運動補償單元124可基于由PU的運動信息指示的參考塊來產生PU的預測性像素塊。
幀內預測處理單元126可通過對PU執行幀內預測而產生PU的預測性數據。PU的預測性數據可包含PU的預測性像素塊及各種語法元素。幀內預測處理單元126可對I條帶、P條帶及B條帶內的PU執行幀內預測。
為對PU執行幀內預測,幀內預測處理單元126可使用多個幀內預測模式來產生PU的預測性數據的多個集合。為使用幀內預測模式來產生PU的預測性數據的集合,幀內預測處理單元126可在與幀內預測模式相關聯的方向上跨越PU的采樣塊擴展來自相鄰PU的采樣塊的采樣。假定從左向右、從上而下的編碼次序用于PU、CU及CTB,相鄰PU可在PU的上方,在PU的右上方,在PU的左上方或在PU的左方。幀內預測處理單元126可使用包含不同數目的幀內預測模式,例如,33個方向性幀內預測模式。在一些實例中,幀內預測模式的數目可取決于PU的像素塊的大小。
預測處理單元100可從通過幀間預測處理單元121針對PU而產生的預測性數據或通過幀內預測處理單元126針對PU而產生的預測性數據當中選擇CU的PU的預測性數據。在一些實例中,預測處理單元100基于預測性數 據的集合的速率/失真量度來選擇CU的PU的預測性數據。例如,使用拉格朗日代價函數來在編碼模式及其參數值(比如運動矢量、參考索引和幀內預測方向)之間進行選擇。這一種類的代價函數使用加權因子lambda將由于有損編碼方法所致的實際的或者估計的圖像失真與為了表示在圖像區域中的像素值而需要的實際的或估計的信息量聯系在一起:C=D+lambda×R,其中C是待最小化的拉格朗日代價,D是具有模式及其參數的圖像失真(例如均方誤差),R是為了在解碼器中重構圖像塊而需要的比特數(例如包括用于表示候選運動矢量的數據量)。一般的,代價最小的編碼模式被選定作為實際編碼模式。選定預測性數據的預測性像素塊在本文中可被稱作選定預測性像素塊。
殘余產生單元102可基于CU的像素塊及CU的PU的選定預測性像素塊來產生CU的殘余像素塊。舉例來說,殘余產生單元102可產生CU的殘余像素塊,使得殘余像素塊中的每一采樣具有等于以下兩者之間的差的值:CU的像素塊中的采樣,及CU的PU的選定預測性像素塊中的對應采樣。
預測處理單元100可執行四叉樹分割以將CU的殘余像素塊分割成子塊。每一不再劃分的殘余像素塊可與CU的不同TU相關聯。與CU的TU相關聯的殘余像素塊的大小及位置與基于CU的PU的像素塊的大小及位置沒有必然聯系。
因為TU的殘余像素塊的像素可對應一個亮度采樣及兩個色度采樣,所以每一個TU可與一個亮度采樣塊及兩個色度采樣塊相關聯。變換處理單元104可通過將一個或多個變換應用于與TU相關聯的殘余采樣塊而產生CU的每一個TU的系數塊。舉例來說,變換處理單元104可將離散余弦變換(DCT)、方向性變換或概念上類似的變換應用于殘余采樣塊。
量化單元106可量化系數塊中的系數。舉例來說,n位系數可在量化期間舍位到m位系數,其中n大于m。量化單元106可基于與CU相關聯的量化參數(QP)值來量化與CU的TU相關聯的系數塊。視頻編碼器20可通過調整與CU相關聯的QP值來調整應用于與CU相關聯的系數塊的量化程度。
逆量化單元108及逆變換處理單元110可分別將逆量化及逆變換應用于變換后的系數塊以從系數塊重建殘余采樣塊。重建單元112可將重建后的殘余采樣塊的采樣加到預測處理單元100產生的一個或多個預測性采樣塊的對應采樣,以產生與TU相關聯的重建后的采樣塊。通過此方式重建CU的每一個TU的采樣塊,視頻編碼器20可重建CU的像素塊。
濾波器單元113可執行消塊濾波操作以減少與CU相關聯的像素塊的塊效應。此外,濾波器單元113可將由預測處理單元100確定的SAO偏移應用于重建后的采樣塊以恢復像素塊。濾波器單元113可產生CTB的SAO語法元素的編碼信息。
解碼圖片緩沖器114可存儲重建后的像素塊。幀間預測單元121可使用含有重建后的像素塊的參考圖片來對其它圖片的PU執行幀間預測。另外,幀內預測處理單元126可使用解碼圖片緩沖器114中的重建后的像素塊來對在與CU相同的圖片中的其它PU執行幀內預測。
熵編碼單元116可接收來自視頻編碼器20的其它功能組件的數據。舉例來說,熵編碼單元116可接收來自量化單元106的系數塊且可接收來自預測處理單元100的語法元素。熵編碼單元116可對數據執行一個或多個熵編碼操作以產生熵編碼后的數據。舉例來說,熵編碼單元116可對數據執行上下文自適應可變長度編解碼(CAVLC)操作、CABAC操作、可變到可變(V2V)長度編解碼操作、基于語法的上下文自適應二進制算術編解碼(SBAC)操作、機率區間分割熵(PIPE)編解碼操作,或其它類型的熵編碼操作。在一特定實例中,熵編碼單元116可使用規則CABAC引擎118來編碼語法元素的經規則CABAC編解碼二進位,且可使用旁通編解碼引擎120來編碼經旁通編解碼二進位。
圖3為說明經配置以實施本發明的技術的實例視頻解碼器30的框圖。應理解,圖3是示例性的而不應視為限制如本發明廣泛例證并描述的技術。如圖3所示,視頻解碼器30包含熵解碼單元150、預測處理單元152、逆量化單元154、逆變換處理單元156、重建單元158、濾波器單元159及解碼圖片緩沖器160。預測處理單元152包含運動補償單元162及幀內預測處理單元164。熵解碼單元150包含規則CABAC編解碼引擎166及旁通編解碼引擎168。在其它實例中,視頻解碼器30可包含更多、更少或不同的功能組件。
視頻解碼器30可接收碼流。熵解碼單元150可解析所述碼流以從所述碼流提取語法元素。作為解析碼流的一部分,熵解碼單元150可解析碼流中的經熵編碼后的語法元素。預測處理單元152、逆量化單元154、逆變換處理單元156、重建單元158及濾波器單元159可根據從碼流中提取的語法元素來解碼視頻數據,即產生解碼后的視頻數據。
語法元素可包含經規則CABAC編解碼二進位及經旁通編解碼二進位。熵 解碼單元150可使用規則CABAC編解碼引擎166來解碼經規則CABAC編解碼二進位,且可使用旁通編解碼引擎168來解碼經旁通編解碼二進位。
另外,視頻解碼器30可對不再分割的CU執行重建操作。為對不再分割的CU執行重建操作,視頻解碼器30可對CU的每一TU執行重建操作。通過對CU的每一TU執行重建操作,視頻解碼器30可重建與CU相關聯的殘余像素塊。
作為對CU的TU執行重建操作的一部分,逆量化單元154可逆量化(即,解量化)與TU相關聯的系數塊。逆量化單元154可使用與TU的CU相關聯的QP值來確定量化程度,且與確定逆量化單元154將應用的逆量化程度相同。
在逆量化單元154逆量化系數塊之后,逆變換處理單元156可將一個或多個逆變換應用于系數塊,以便產生與TU相關聯的殘余采樣塊。舉例來說,逆變換處理單元156可將逆DCT、逆整數變換、逆卡忽南-拉維(Karhunen-Loeve)變換(KLT)、逆旋轉變換、逆方向性變換或其它與編碼端的變換對應的逆變換應用于系數塊。
如果PU使用幀內預測編碼,則幀內預測處理單元164可執行幀內預測以產生PU的預測性采樣塊。幀內預測處理單元164可使用幀內預測模式以基于空間相鄰PU的像素塊來產生PU的預測性像素塊。幀內預測處理單元164可根據從碼流解析的一個或多個語法元素來確定PU的幀內預測模式。
運動補償單元162可根據從碼流解析的語法元素來構造第一參考圖片列表(列表0)及第二參考圖片列表(列表1)。此外,如果PU使用幀間預測編碼,則熵解碼單元150可解析PU的運動信息。運動補償單元162可根據PU的運動信息來確定PU的一個或多個參考塊。運動補償單元162可根據PU的一個或多個參考塊來產生PU的預測性像素塊。
重建單元158可在適用時使用與CU的TU相關聯的殘余像素塊及CU的PU的預測性像素塊(即,幀內預測數據或幀間預測數據)以重建CU的像素塊。特定來說,重建單元158可將殘余像素塊的采樣加到預測性像素塊的對應采樣以重建CU的像素塊。
濾波器單元159可執行消塊濾波操作以減少與CTB的CU相關聯的像素塊的塊效應。另外,濾波器單元159可根據從碼流解析的SAO語法元素來修改CTB的像素值。舉例來說,濾波器單元159可根據CTB的SAO語法元素來確定修正值,且將所確定的修正值加到CTB的重建后的像素塊中的采樣值。 通過修改圖片的CTB的部分或全部像素值,濾波器單元159可根據SAO語法元素來修正視頻數據的重建圖片。
視頻解碼器30可將CU的像素塊存儲于解碼圖片緩沖器160中。解碼圖片緩沖器160可提供參考圖片以用于后續運動補償、幀內預測及顯示裝置(例如,圖1的顯示裝置32)呈現。舉例來說,視頻解碼器30可根據解碼圖片緩沖器160中的像素塊來對其它CU的PU執行幀內預測操作或幀間預測操作。
本發明實施例公開了一種參考幀解碼的方法,結合圖3可知,運動補償單元162可根據從碼流解析的語法元素來構造第一參考幀列表及第二參考幀列表)。如果PU使用幀間預測編碼,則熵解碼單元150可解析PU的運動信息。運動補償單元162可根據PU的運動信息來確定PU的一個或多個參考塊。運動補償單元162可根據PU的一個或多個參考塊來產生PU的預測性像素塊。
圖4示出了本發明實施例的一種參考幀解碼方法1000的示意性流程圖。如圖4所示,
S1001,獲取第一參考幀;
第一參考幀可以是當前解碼重建后的圖像幀。因為待獲取的第二參考幀需要參考第一參考幀來獲取,所以可選的,為了增加第二參考幀的精準度,可以對當前解碼重建后的圖像幀進行像素插值處理,獲得像素插值后的圖像,作為第一參考幀。對圖像進行像素插值,有很多種實現方式,一種可行的實施方式是采用單幀圖像像素插值的方式,即對于當前圖像的像素單元,不妨稱為整像素單元,進行插值濾波,在當前圖像的分像素單元位置,推導出該分像素單元的像素值,所有整像素單元和分像素單元一起組成了當前圖像的插值圖像。文獻《數字圖像最佳插值算法研究》(《中國空間科學技術》2005年03期)全文引用于此,對現有的圖像插值算法進行了介紹。可以理解,該文獻中所描述的方法都可以實例性的,作為本實施例中S1001步驟獲取第一參考幀的一種可選的實現方式,而不作限定。
S1002,解析碼流中的映射參數;
在一種可行的實施方式中:
設預置的映射函數為x′=m0x+m1y+m2,y′=m3x+m4y+m5,其中,x,y為源像素單元的橫、縱坐標,x′,y′為與所述源像素單元x,y具有所述映射關系的 目標像素單元的橫、縱坐標,m0,m1,m2,m3,m4,m5為待定系數。則,圖3中的熵解碼模塊150通過解析對應位置的碼流,解析出六個映射參數的具體數值。該六個映射參數,即對應預置的映射函數的待定系數m0,m1,m2,m3,m4,m5。
應理解,所謂預置的映射函數是指根據經驗或者試驗數據獲得,也相同的形式固化在編解碼器中(在一些實施例中,映射函數也可以在編解碼器中同步更新),即不需要編碼器發送任何啟示信息到解碼器,解碼器就可以獲知并和編碼器采用相同的操作使用該映射函數。
應理解,上述實施方式中的映射函數是示例性的。由于自然的運動具有多樣性,因此也有多種映射函數來匹配不同的運動模型,比如4參數、8參數等等,不作限定。
應理解,步驟S1002中的映射參數和預置的映射函數中的待定系數需要保持一致,即它們具有相同的數量和相同的物理意義。
應理解,這些映射參數是以幀級的方式傳遞的,可以在圖像參數集(PPS,picture parameter set)中傳遞,也可以在條帶頭(slice header),或作為其它幀級語法元素傳遞,不作限定。
S1003,根據所述映射參數,確定預置的映射函數的待定系數;
即,將步驟S1002中解析獲得的具體映射參數,按照和預置的映射函數的待定系數的一一對應關系,代入到映射函數中,從而得到自變量為源像素坐標位置,因變量為目標像素坐標位置的映射函數x′=m0x+m1y+m2,y′=m3x+m4y+m5,其中,x,y為源像素單元的橫、縱坐標,x′,y′為與所述源像素單元x,y具有所述映射關系的目標像素單元的橫、縱坐標,m0,m1,m2,m3,m4,m5為映射參數。
S1004,根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有映射關系的第一像素單元;
即,對于第二參考幀中的每一個像素單元,在第一參考幀中都有唯一的像素單元與其相映射,并且可以通過步驟S1004中的映射函數,求得第一參考幀中的映射像素單元的位置,具體的:在所述第一參考幀中,所述第一像素單元的位置為x′=m0x+m1y+m2,y′=m3x+m4y+m5,其中,x,y為所述第二像素單元的橫、縱坐標,x′,y′為與所述第二像素單元具有所述映射關系的所述第一像素單元的橫、縱坐標。
S1005,將所述第一像素單元的像素值賦予所述第二像素單元;
因為第二參考幀中的像素單元都存在一個與其一一對應的第一參考幀中的像素單元,并且通過步驟S1004可以獲得所述第一參考幀的像素單元的位置,將該位置的像素單元的像素值賦值給第二參考幀中對應的像素單元。當第二參考幀中的所有像素單元都獲得了賦值,則第二參考幀便構造完成。
應理解,步驟S1001中第一參考幀的獲取和步驟S1002、S1003中映射函數的獲取,沒有前后順序上的聯系,可以調整次序,保證S1002中獲取映射參數與編碼端編入映射參數的步驟對應,即可。
參考幀需要放入到參考幀列表中才可以成為待解碼圖像幀的候選參考幀,當參考幀更接近于實際圖像內容時,才能提高預測的精準度。
H.263,H.264/AVC和HEVC中都采用了多幀參考技術,來提高幀間預測的準確性。解碼已經完成的圖像,被緩存在解碼重建圖像緩存(DPB)中,供后續的幀用作參考圖像,因此,標準需要對DPB中的圖像進行管理。DPB中的每一個圖像,有三種狀態“不被參考”、“作為短期參考幀”和“作為長期參考幀”,這三種狀態之間的轉換,是通過解碼圖像標記過程進行控制的。H.264/AVC中采用了滑動窗和MMCO兩種方式。滑動窗管理方式,顧名思義,是以DPB可以存放的幀數為窗口,隨著當前解碼的圖像,以先入先出的方式,將新的解碼圖像移入,將超出窗口的解碼圖像移出,因此,DPB中保存的是最近解碼的多個圖像。MMCO是通過在碼流中傳輸控制命令,完成對DPB中圖像的狀態標記的,它可以將一個“作為短期參考幀”或“作為長期參考幀”標記為“不被參考”也可以將當前幀或者“作為短期參考幀”的幀,標記為“作為長期參考幀”等。
在一種可行的實施方式一中,步驟S1005中生成的第二參考幀和解碼重建后的圖像幀同時加入參考幀列表,同時按照上述滑動窗管理方式,以先入先出的方式,當新的解碼圖像移入時,超出窗口的解碼圖像將被移出。特別的,所述第二參考幀和所述解碼重建后的圖像幀在參考幀列表中處于相鄰的位置。特別的,在參考幀列表中,由解碼方法1000所生成的參考幀,可以與解碼重建后的圖像幀以交織的方式排列,如圖5所示,其中Rn,n=0,1,2...表示解碼重建后的圖像幀,Tn,n=0,1,2...表示由解碼方法1000所生成的參考幀。
示例性的,可以由以下模塊完成實施方式一:
獲取模塊,用于獲取參考幀列表,所述參考幀列表包括所述解碼重建后 的第一圖像幀的候選參考幀;
構建模塊,用于將所述解碼重建后的第一圖像幀和所述第二參考幀加入所述參考幀列表,其中所述解碼重建后的第一圖像幀和所述第二參考幀在所述參考幀列表中的位置相鄰。
在一種可行的實施方式二中,僅將步驟S1005中生成的第二參考幀加入參考幀列表,同理,超出窗口的解碼圖像將被移出。
示例性的,可以由以下模塊完成實施方式二:
獲取模塊,用于獲取參考幀列表,所述參考幀列表包括所述解碼重建后的第一圖像幀的候選參考幀;
構建模塊,用于將所述第二參考幀加入所述參考幀列表。
在一種可行的實施方式三中,按照解碼方法1000,基于多個解碼重建后的圖像幀,構建多個步驟S1005生成的參考幀。在一個實施例中,不妨設按照解碼方法1000,基于兩個解碼重建后的圖像幀,第一參考幀和第三參考幀,構建兩個步驟S1005生成的參考幀,第二參考幀和第四參考幀。其中第一參考幀在第三參考幀之前生成,構建第二參考幀和第四參考幀使用相同的預置的映射函數和映射參數,一般的,映射參數只需要解析一次。將第二參考幀和第四參考幀加權,獲取第五參考幀。可以根據第二參考幀和第四參考幀,或者第一參考幀和第三參考幀,的不同圖像質量,不同可供預測的準確度,不同與實際序列的相思度等指標來設置權值,不作限定。舉例性的,可以將第二參考幀和第四參考幀的對應像素單元計算均值。將解碼重建后的圖像幀或者第五參考幀加入到參考幀列表中,也可以將它們同時加入到參考幀列表中,同理,超出窗口的解碼圖像將被移出。
示例性的,可以由以下模塊完成實施方式三:
第一獲取模塊,用于獲取第三參考幀,所述第三參考幀為解碼重建后的第二圖像幀或所述第二圖像幀通過像素插值獲得的第二插值圖像幀;
第二獲取模塊,用于根據確定所述待定系數后的映射函數,在所述第三參考幀中,獲取與第四參考幀的第四像素單元具有所述映射關系的第三像素單元;
賦值模塊,用于將所述第三像素單元的像素值賦予所述第四像素單元。
第三獲取模塊,用于獲取參考幀列表,所述參考幀列表包括所述解碼重建后的第二圖像幀的候選參考幀;
計算模塊,用于將所述第二參考幀的像素單元和所述第四參考幀中同一位置的像素單元加權相加,獲得第五參考幀;
構建模塊,用于將所述解碼重建后的第二圖像幀或所述第五參考幀加入所述參考幀列表。
在一個可行的實施方式四中,任取第一參考幀中的一個區域,示例性的,可以取整個第一參考幀,則所述區域以第一參考幀四個頂點為頂點的矩陣,也可以在第一參考幀中隨意獲取任意形狀的區域,不作限定。不妨將整個第一參考幀所覆蓋的區域稱為第一區域。按照步驟S1003中的映射函數的逆函數,計算出這四個第一區域的頂點在第二參考幀中對應的四個散點的位置。依照第一區域四個頂點的連接關系,連接四個散點,從而在第二參考幀中圈出一片區域,這個被圈出的區域不妨設為第二區域。在坐標平面位置關系上,在第一區域和第二區域所覆蓋的范圍內存在重疊的部分和不重疊的部分。重疊的部分被稱為第一區域和第二區域的交集。所述第一區域與所述第二區域范圍內但不重疊的部分連同交集部分被稱為第一區域和第二區域的并集。計算上述交集面積和并集面積的比值,當比值小于預設值時,將所述第二參考幀加入所述參考幀列表;否則,將解碼重建后的圖像幀加入所述參考幀列表。應理解,本方案的目的是為了判斷解碼重建后的圖像幀和第二參考幀的差別,當差別較小時將解碼重建后的圖像幀加入所述參考幀列表,差別較大時將第二參考幀加入所述參考幀列表,同理,超出窗口的解碼圖像將被移出。應理解,預設值可以根據經驗或者試驗數據在編解碼器兩端同步設定相同的值,在一些實施例中,還可以根據實際情況在編解碼器兩端同步更新,示例性的,該預設值可以為0.5,或者其他不大于1的正值,不作限定。
示例性的,可以由以下模塊完成實施方式四:
第一獲取模塊,用于獲取參考幀列表,所述參考幀列表包括所述解碼重建后的第一圖像幀的候選參考幀;
第二獲取模塊,用于在所述解碼重建后的第一圖像幀中,獲取預置的第一區域的區域頂點;
第三獲取模塊,用于根據所述映射函數,在所述第二參考幀中,獲取與所述第一區域的區域頂點具有所述映射關系的散點;
連接模塊,用于根據所述第一區域的區域頂點間的連接關系,連接所述第二參考幀中,與所述第一區域的區域頂點具有所述映射關系的所述散點;
構建模塊,用于所述散點通過所述連接,包圍的區域構成第二區域;
計算模塊,用于計算所述第一區域與所述第二區域面積的交集和并集的比值,其中,所述交集包括所述第一區域與所述第二區域的重疊位置區域,所述并集包括所述交集以及所述第一區域與所述第二區域范圍內所述第一區域與所述第二區域的不重疊位置區域;
比較模塊,用于當所述比值小于預設值時,將所述第二參考幀加入所述參考幀列表;否則,將所述解碼重建后的第一圖像幀加入所述參考幀列表。
在一些實施例中,將前一個實施例中的解碼重建后的圖像幀和第二參考幀均加入所述參考幀列表。對于后續的待解碼幀,和前一個實施例中的所述第一區域和第二區域的交集的平面位置相一致,對應的,對待解碼幀劃分為對應交集內的區域和對應交集外的區域。在第一種示例性的實施方式中,待解碼幀中對應交集內的區域的像素單元可以參考參考幀列表中所有解碼重建后的圖像幀,而不能參考參考幀列表中的第二參考幀;待解碼幀中對應交集外的區域的像素單元可以參考參考幀列表中所有解碼重建后的圖像幀,也可以參考參考幀列表中的第二參考幀。在第二種示例性的實施方式中,待解碼幀中對應交集內的區域的像素單元可以參考參考幀列表中所有解碼重建后的圖像幀,而不能參考參考幀列表中的第二參考幀;待解碼幀中對應交集外的區域的像素單元不可以參考參考幀列表中所有解碼重建后的圖像幀,可以參考參考幀列表中的第二參考幀。
上述實施例僅在幀級傳遞少量映射參數,豐富了參考幀的選擇,使參考幀更接近于實際幀,使通過參考幀進行的預測更準確,提高了編碼效率。
圖6示出了本發明實施例的另一種參考幀解碼方法2000的示意性流程圖。如圖6所示,
S2001,解析碼流中的指示信息;
這里的指示信息主要用來表示是否需要按照解碼方法1000的方法生成步驟S1005中所生成的第二參考幀。
應理解,指示信息是以幀級的方式傳遞的,可以在圖像參數集(PPS,picture parameter set)中傳遞,也可以在條帶頭(slice header),或作為其它幀級語法元素傳遞,不作限定。
S2002,當所述指示信息指示不基于解碼重建后的圖像幀構建其它參考 幀時,將所述解碼重建后的圖像幀作為所述參考幀;
S2003,否則,按照S1001至S1005的步驟生成第二參考幀;
同時,可以按照上述可實行的實施方式一至四所述的方法,構建參考幀列表。
在一些實施例中,還可以在序列級傳遞指示信息,比如序列參數集(SPS,sequence parameter set),來指示整個所屬的序列是否僅使用解碼重建后的圖像幀作為參考幀,進一步地,還可以指示序列中每一幀的構建參考幀的信息。示例性的,指示一個幀號4,代表只有第四幀將按照本發明第一方面以及各實施例所述的方法生成的參考幀加入參考幀列表,或者示例性的,指示一個011101的二進制序列,代表序列中每一幀的加入參考幀列表的幀的構建方式的情況。
通過指示信息,預先知曉是否需要生成本發明第一方面所提出的方法所生成的參考幀,可以降低方案的復雜度。
本發明實施例公開了一種參考幀編碼的方法,結合圖2可知,如果PU在P條帶中,則運動估計單元122可搜索參考圖片的列表(例如,“列表0”)中的參考圖片以查找PU的參考塊。PU的參考塊可為最緊密地對應于PU的像素塊的像素塊。運動估計單元122可產生指示列表0中的含有PU的參考塊的參考圖片的參考圖片索引,及指示PU的像素塊與參考塊之間的空間位移的運動向量。運動估計單元122可將參考圖片索引及運動向量作為PU的運動信息而輸出。運動補償單元124可基于由PU的運動信息指示的參考塊來產生PU的預測性像素塊。
圖7示出了本發明實施例的一種參考幀編碼方法3000的示意性流程圖。如圖7所示,
S3001,獲取待編碼圖像幀和所述待編碼圖像幀對應的編碼重建后的圖像幀的候選參考幀;
S3002,分別提取所述待編碼圖像幀的第一特征點的集合和所述候選參考幀的第二特征點的集合;
作為一種可行的實施方式:
第一步驟:對于當前待編碼幀提取SIFT(scale-invariant feature transform)特征點,SIFT算法首先構建圖像高斯金字塔,高斯金字塔的構建分為兩部分,對圖像做不同尺度的高斯模糊以及對圖像進行隔點降采樣。然后相鄰兩層高斯圖像做差,形成高斯差分金字塔(DOG,difference of Gaussian),該過程如圖8所示。接下來在DOG空間中做極值檢測。為了尋找DOG函數的極值點,每一個像素單元要和它所有的相鄰點比較,若其是極大值或者極小值點,則初步判定為局部特征點。如圖9所示,中間的檢測點和它同尺度的8個相鄰點和上下相鄰尺度對應的9×2個點共26個點比較,以確保在尺度空間和二維圖像空間都檢測到極值點。為了增強匹配穩定性、提高抗噪聲能力,在初步判斷為特征點的集合中去除低對比度的關鍵點和不穩定的邊緣響應點。對于剩下的每個局部特征點,在其附近16x16鄰域內劃分16個4x4大小的子塊,每個子塊計算8方向的梯度方向直方圖,將16個直方圖拼接在一起形成一個128維的特征向量。
第二步驟:對于當前待編碼幀的一個參考幀,用上述同樣的方法提取其SIFT特征點。
第三步驟:將當前編碼幀的特征點與參考幀中的特征點進行匹配,找到若干特征點匹配對。根據匹配對的位置信息,利用RANSAC(random sample consensus)算法排除異常點,RANSAC算法通過隨機抽樣的方式找出滿足最多匹配對數的一組變換參數,能夠有效的剔除掉無效的匹配對。
應理解,對于特征點的提取和匹配可以采用不同的方法,不作限定。
S3003,根據所述第一特征點的集合、所述第二特征點的集合和預置的映射函數,獲得映射參數,所述映射參數表征在所述映射函數的約束下,所述第一特征點和所述第二特征點的映射關系;
作為一種可行的實施方式:
對于步驟S3002中獲得的有效的特征點的匹配對,每一個匹配對,都由一個屬于待編碼圖像幀的點,即第一特征點集合中的點,和一個屬于候選參考幀的點,即第二特征點集合中的點,組成。不妨,將第一特征點中作為目標像素單元,與其所匹配的第二特征點作為源像素單元,根據步驟S1003所述的方法及對應映射函數的約束下,可以獲取一組映射參數。
S3004,獲取第一參考幀;
具體實施方式和步驟S1001類似,不再贅述。
S3005,根據所述映射參數,確定所述映射函數的待定系數;
具體實施方式和步驟S1003類似,不再贅述。
S3006,根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有所述映射關系的第一像素單元;
具體實施方式和步驟S1004類似,不再贅述。
S3007,將所述第一像素單元的像素值賦予所述第二像素單元;
具體實施方式和步驟S1005類似,不再贅述。
可選的,可以基于原始待編碼圖像和根據所述映射參數按照步驟S3004至S3007生成的第二參考幀,更新映射參數。
一種可行的實施方式為:
不妨設I′(x′,y′)和I(x,y)分別為步驟S3007生成的圖像幀和當前待編碼的原始圖像幀。目標是使得兩者誤差最小,即使最小化誤差函數成立:其中m0,m1,m2,m3,m4,m5,m6,m7為映射參數。通過梯度下降方法求解最優映射參數,包括:m(t+1)=m(t)+Δm,Δm=A-1b,其中,不斷進行迭代計算直到強度差E低于某一門限或執行完一定的次數為止。
當獲得更新后的映射參數后,需要按照步驟S3005至S3007的過程重新生成第二參考幀。
S3008,將所述映射參數編入碼流;
步驟S3007獲得的映射參數,包括一些實施例中更新后的映射參數,都將送入圖2所示的熵編碼單元116進行熵編碼的過程,而編入碼流。
應理解,這些映射參數是以幀級的方式傳遞的,可以在圖像參數集(PPS,picture parameter set)中傳遞,也可以在條帶頭(slice header),或作為其它幀級語法元素傳遞,不作限定。
和解碼端相對的,作為構建參考幀列表的各種不同的可行的實施方式,解碼端構建參考幀列表的可行的實施方式一至四,在經過適應性的改變后,比如,將對解碼重構圖像的操作替換為在編碼端具有等同物理意義的對編碼重構圖像的操作,將從碼流中解析語法元素相對的替換為將語法元素編入碼流,同樣可以應用于編碼端,這里不再贅述。
上述實施例僅在幀級傳遞少量映射參數,豐富了參考幀的選擇,使參考幀更接近于實際幀,使通過參考幀進行的預測更準確,提高了編碼效率。
圖10示出了本發明實施例的另一種參考幀編碼方法4000的示意性流程圖。如圖10所示,
S4001,按照編碼方法3000的方法生成步驟S3007獲得的第二參考幀;
S4002,計算所述第二參考幀作為所述參考幀的第一編碼性能;
S4003,計算所述已編碼圖像幀作為所述參考幀的第二編碼性能;
應理解,上述測試編碼性能是編碼質量-編碼代價(distortion-rate)選擇的過程,可以按照精確的編碼質量和編碼比特數進行比較,也可以使用簡化的方式進行比較,比如只考察編碼比特數的多少等,不作限定。圖2中的預測處理單元100具體執行編碼性能計算的功能,在此不再贅述。
S4004,將表征第一編碼性能和第二編碼性能哪一個更好的比較信息編入碼流。
該步驟與步驟S2001相對應,如果第一編碼性能更好,意味著需要采用編碼方法3000的方法生成參考幀,否則,意味著只需要采用編碼重建后的圖像作為參考幀。
S4005,當所述比較信息指示所述第一編碼性能優于所述第二編碼性能時,將所述第二參考幀作為所述參考幀;否則,將所述編碼重建后的圖像幀作為所述參考幀。
同理,和解碼端相對的,作為構建參考幀列表的各種不同的可行的實施方式,解碼端構建參考幀列表的可行的實施方式一至四,在經過適應性的改變后,比如,將對解碼重構圖像的操作替換為在編碼端具有等同物理意義的對編碼重構圖像的操作,將從碼流中解析語法元素相對的替換為將語法元素編入碼流,同樣可以應用于編碼端,這里不再贅述。
通過指示信息,預先知曉是否需要生成本發明第一方面所提出的方法所生成的參考幀,可以降低方案的復雜度。
圖11示出了本發明實施例的一種參考幀解碼裝置100的示意性框圖。如圖11所示,
第一獲取模塊101,用于獲取第一參考幀,所述第一參考幀為解碼重建后的第一圖像幀或所述第一圖像幀通過像素插值獲得的第一插值圖像幀;
解析模塊102,用于解析碼流中的映射參數;
第二獲取模塊103,用于根據所述映射參數,確定預置的映射函數的待 定系數;
第三獲取模塊104,用于根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有映射關系的第一像素單元;
賦值模塊105,用于將所述第一像素單元的像素值賦予所述第二像素單元。
解碼裝置100與解碼方法1000相對應,第一獲取模塊101,解析模塊102,第二獲取模塊103,第三獲取模塊104,賦值模塊105分別具體執行步驟S1001、S1002、S1003、S1004、S1005的操作,不再贅述。
圖12示出了本發明實施例的另一種參考幀解碼裝置200的示意性框圖。如圖12所示,
第一解析模塊201,用于解析碼流中的指示信息;
選擇模塊202,用于當所述指示信息指示不基于解碼重建后的圖像幀構建其它參考幀時,將所述解碼重建后的圖像幀作為所述參考幀,否則使用下述方法獲得參考幀;
第一獲取模塊203,用于獲取第一參考幀,所述第一參考幀為所述解碼重建后的圖像幀或所述圖像幀通過像素插值獲得的插值圖像幀;
第二解析模塊204,用于解析碼流中的映射參數;
第二獲取模塊205,用于根據所述映射參數,確定預置的映射函數的待定系數;
第三獲取模塊206,用于根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有映射關系的第一像素單元;
賦值模塊207,用于將所述第一像素單元的像素值賦予所述第二像素單元。
解碼裝置200與解碼方法2000相對應,第一解析模塊201具體執行步驟S2001,選擇模塊202,第一獲取模塊203,第二解析模塊204,第二獲取模塊205,第三獲取模塊206,賦值模塊207共同具體執行步驟S2002、S2003的操作,不再贅述。
圖13示出了本發明實施例的一種參考幀編碼裝置300的示意性框圖。如圖13所示,
第一獲取模塊301,用于獲取待編碼圖像幀和所述待編碼圖像幀對應的編碼重建后的圖像幀的候選參考幀;
第二獲取模塊302,用于分別提取所述待編碼圖像幀的第一特征點的集合和所述候選參考幀的第二特征點的集合;
第三獲取模塊303,用于根據所述第一特征點的集合、所述第二特征點的集合和預置的映射函數,獲得映射參數,所述映射參數表征在所述映射函數的約束下,所述第一特征點和所述第二特征點的映射關系;
編碼模塊304,用于將所述映射參數編入碼流;
第四獲取模塊305,用于獲取第一參考幀,所述第一參考幀為編碼重建后的第一圖像幀或所述第一圖像幀通過像素插值獲得的第一插值圖像幀;
第五獲取模塊306,用于根據所述映射參數,確定所述映射函數的待定系數;
第六獲取模塊307,用于根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有所述映射關系的第一像素單元;
賦值模塊308,用于將所述第一像素單元的像素值賦予所述第二像素單元。
編碼裝置300與編碼方法3000相對應,第一獲取模塊301,第二獲取模塊302,第三獲取模塊303,編碼模塊304,第四獲取模塊305,第五獲取模塊306,第六獲取模塊307,賦值模塊308分別具體執行步驟S3001、S3002、S3003、S3005、S3006、S3007、S3008、S3004的操作,不再贅述。
圖14示出了本發明實施例的另一種參考幀編碼裝置400的示意性框圖。如圖14所示,
第一獲取模塊401,用于獲取待編碼圖像幀和所述待編碼圖像幀對應的編碼重建后的圖像幀的候選參考幀;
第二獲取模塊402,用于分別提取所述待編碼圖像幀的第一特征點的集合和所述候選參考幀的第二特征點的集合;
第三獲取模塊403,用于根據所述第一特征點的集合、所述第二特征點 的集合和預置的映射函數,獲得映射參數,所述映射參數表征在所述映射函數的約束下,所述第一特征點和所述第二特征點的映射關系;
第一編碼模塊404,用于將所述映射參數編入碼流;
第四獲取模塊405,用于獲取第一參考幀,所述第一參考幀為編碼重建后的第一圖像幀或所述第一圖像幀通過像素插值獲得的第一插值圖像幀;
第五獲取模塊406,用于根據所述映射參數,確定所述映射函數的待定系數;
第六獲取模塊407,用于根據確定所述待定系數后的映射函數,在所述第一參考幀中,獲取與第二參考幀的第二像素單元具有所述映射關系的第一像素單元;
賦值模塊408,用于將所述第一像素單元的像素值賦予所述第二像素單元;
第一計算模塊409,用于計算所述第二參考幀作為所述參考幀的第一編碼性能;
第二計算模塊410,用于計算所述已編碼圖像幀作為所述參考幀的第二編碼性能;
第二編碼模塊411,用于將所述第一編碼性能和所述第二編碼性能的比較信息編入所述碼流;
比較模塊412,用于當所述比較信息指示所述第一編碼性能優于所述第二編碼性能時,將所述第二參考幀作為所述參考幀;否則,將所述編碼重建后的圖像幀作為所述參考幀。
編碼裝置400與編碼方法4000相對應,第一獲取模塊401,第二獲取模塊402,第三獲取模塊403,第一編碼模塊404,第四獲取模塊405,第五獲取模塊406,第六獲取模塊407,賦值模塊408共同具體執行步驟S4001的操作,第一計算模塊409,第二計算模塊410,第二編碼模塊411,比較模塊412,分別具體執行步驟S4002、S4003、S4004和S4005的操作,不再贅述。
綜上,上述實施例僅在幀級傳遞少量映射參數、比較信息或指示信息,豐富了參考幀的選擇,使參考幀更接近于實際幀,使通過參考幀進行的預測更準確,提高了編碼效率,同時當解碼端預先獲得參考幀的構建信息時,可以不進行額外的參考幀構建,降低了方案的復雜度。
在一個或多個實例中,所描述的功能可以硬件、軟件、固件或其任何組合來實施。如果以軟件實施,則功能可作為一個或多個指令或代碼而存儲于計算機可讀媒體上或經由計算機可讀媒體而發送,且通過基于硬件的處理單元執行。計算機可讀媒體可包含計算機可讀存儲媒體(其對應于例如數據存儲媒體等有形媒體)或通信媒體,通信媒體包含(例如)根據通信協議促進計算機程序從一處傳送到另一處的任何媒體。以此方式,計算機可讀媒體大體上可對應于(1)非瞬時的有形計算機可讀存儲媒體,或(2)例如信號或載波等通信媒體。數據存儲媒體可為可由一個或多個計算機或一個或多個處理器存取以檢索指令、代碼及/或數據結構以用于實施本發明中所描述的技術的任何可用媒體。計算機程序產品可包含計算機可讀媒體。
通過實例而非限制,某些計算機可讀存儲媒體可包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲器、磁盤存儲器或其它磁性存儲裝置、快閃存儲器,或可用以存儲呈指令或數據結構的形式的所要程序代碼且可由計算機存取的任何其它媒體。而且,任何連接可適當地稱為計算機可讀媒體。舉例來說,如果使用同軸電纜、光纜、雙絞線、數字用戶線(DSL)或無線技術(例如,紅外線、無線電及微波)而從網站、服務器或其它遠程源發送指令,則同軸電纜、光纜、雙絞線、DSL或無線技術(例如,紅外線、無線電及微波)包含于媒體的定義中。然而,應理解,計算機可讀存儲媒體及數據存儲媒體不包含連接、載波、信號或其它瞬時媒體,而是有關非瞬時有形存儲媒體。如本文中所使用,磁盤及光盤包含壓縮光盤(CD)、激光光盤、光學光盤、數字影音光盤(DVD)、軟性磁盤及藍光光盤,其中磁盤通常以磁性方式復制數據,而光盤通過激光以光學方式復制數據。以上各物的組合還應包含于計算機可讀媒體的范圍內。
可由例如一個或多個數字信號處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現場可編程邏輯陣列(FPGA)或其它等效集成或離散邏輯電路等一個或多個處理器來執行指令。因此,如本文中所使用的術語“處理器”可指代前述結構或適于實施本文中所描述的技術的任何其它結構中的任一者。另外,在一些方面中,可將本文中所描述的功能性提供于經配置以用于編碼及解碼的專用硬件及/或軟件模塊內,或并入于組合式編解碼器中。而且,所述技術可完全實施于一個或多個電路或邏輯元件中。
本發明的技術可以廣泛地由多種裝置或設備來實施,所述裝置或設備包含無線手持機、集成電路(IC)或IC集合(例如,芯片組)。在本發明中描述各種組件、模塊或單元以強調經配置以執行所揭示技術的裝置的功能方面,但未必要求通過不同硬件單元來實現。確切地說,如上文所描述,各種單元可組合于編解碼器硬件單元中,或通過交互操作性硬件單元(包含如上文所描述的一個或多個處理器)的集合結合合適軟件及/或固件來提供。
應理解,說明書通篇中提到的“一個實施例”或“一實施例”意味著與實施例有關的特定特征、結構或特性包括在本發明的至少一個實施例中。因此,在整個說明書各處出現的“在一個實施例中”或“在一實施例中”未必一定指相同的實施例。此外,這些特定的特征、結構或特性可以任意適合的方式結合在一個或多個實施例中。
在本發明的各種實施例中,應理解,上述各過程的序號的大小并不意味著執行順序的先后,各過程的執行順序應以其功能和內在邏輯確定,而不應對本發明實施例的實施過程構成任何限定。
另外,本文中術語“系統”和“網絡”在本文中常可互換使用。應理解,本文中術語“和/或”,僅僅是一種描述關聯對象的關聯關系,表示可以存在三種關系,例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。另外,本文中字符“/”,一般表示前后關聯對象是一種“或”的關系。
在本申請所提供的實施例中,應理解,“與A相應的B”表示B與A相關聯,根據A可以確定B。但還應理解,根據A確定B并不意味著僅僅根據A確定B,還可以根據A和/或其它信息確定B。
本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的范圍。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應 過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統、裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
以上所述,僅為本發明的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應以所述權利要求的保護范圍為準。