<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 預測編碼之幀內預測(Intra-Picture Prediction) ? ? ? 預測編碼(Prediction Coding)是視頻編碼的核心技術之一,指利用已編碼的一個或幾個樣本值,根據某種模型或方法,對當前的樣本值進行預測,并對樣本真實值和預測值之間的差值進行編碼。視頻編碼器對預測后的殘差而不是原始像素值進行變換、量化、熵編碼,由此大幅度提高編碼效率。 ? ? ? 對于視頻信號來說,一幀圖像內臨近像素之間有著較強的空間相關性,即空域冗余;相鄰圖像之間也有很強的相關性,即時域冗余。去除空域冗余和時域冗余的技術分別是幀內預測技術和幀間預測技術。 ? ? ? 本博文首先介紹預測編碼的原理,其次重點分析幀內預測技術相關知識點。 ### 一、預測編碼的原理 ? ? ? 我們可以簡單地將視頻當做是一種有記憶信源,預測編碼通過預測模型消除像素間的相關性,得到的差值信號可以認為是沒有相關性的,因此可以作為無記憶信源進行編碼。 ? ? ? 在預測編碼時,不直接傳送圖像樣值本身,而是對實際樣值與它的預測值間的差值進行編碼、傳送,如果這一差值(預測誤差)被量化后再編碼,這種預測編碼方式叫做差分脈沖編碼調制(DPCM)。從統計上看,需要傳輸的預測誤差主要集中在0附近的一個小范圍內,由于人眼的“掩蔽效應”,對出現在紋理或運動較復雜區域的較大誤差不易察覺,因此,預測誤差量化所需要的量化層數要比直接傳送圖像樣值本身減少很多。DPCM就是通過去除臨近像素間的相關性和減少差值信號量化層數來實現碼率壓縮的。 預測差分編碼的原理框架如下圖所示,在預測編碼系統中,預測器和量化器是非常關鍵的兩部分。 ![](https://box.kancloud.cn/2016-07-05_577af7b2ecf5c.jpg) ? ? ? 預測編碼的基本過程:對于輸入像素值x(n),首先利用已編碼像素的重建值得到當前像素的預測值p(n),然后對二者的差值e(n)進行量化、熵編碼,同時利用量化后的殘差e’(n)與預測值p(n)得到當前像素的重建值x’(n),用于預測之后待編碼的像素。對應的解碼過程為:經熵解碼可以得到當前像素預測誤差的重建值e’(n),將其與預測值p(n)相加即可得到當前像素的重建值x’(n)。 ? ? ? 為了保證編碼器和解碼器中預測有完全相同的參考基準,在利用空時域相關性進行預測時,需要用含失真的解碼像素x’(n)作為參考像素,從而避免編碼器和解碼器中因不同預測參考產生誤差累積,也就是說,在編碼器內部需要內嵌一個解碼器。 ### 二、幀內預測技術 ? ? ? 視頻序列的時域相關性往往大于空域相關性,所以幀間預測技術的貢獻往往大于幀內預測技術,但是這并不意味著可以對所有視頻幀都采用幀間預測技術進行預測編碼,其原因主要包括: (1)、幾乎所有的視頻編碼標準都支持I幀,這一幀可以不依賴臨近參考幀進行獨立解碼,這一特點使得視頻應用可以支持快進或快退播放,同時還避免了因編碼失真累積而導致的圖像逐漸惡化以及后續圖像運動預測的效果逐漸惡化。 (2)、基于剛體平動的模型并不適用于所有場景,因為實際中的視頻序列的運動是非常復雜的,盡管可變大小塊分像素運動預測在一定程度上改善這一不足,但是還是有部分宏塊或塊不能獲得很好地運動預測效果,而這些區域空間相關性也許比時域相關性強,采用幀內預測的預測效果往往好于幀間預測效果。研究表明,P幀和B幀中也有少數比例(1%~3%)的宏塊實際上采用了幀內預測模式。 ### 1、HEVC與H.264在幀內預測編碼時尺寸、預測模式種類的區別 ? ? ? HEVC幀內預測與H.264類似,都是利用相鄰塊的重建值進行預測,因此,編碼模式的選擇與編碼是幀內編碼需要重點解決的問題。HEVC與H.264在幀內預測上最大的不同在于:HEVC采用了更大更多的尺寸以適應高清視頻的內容特征,支持更多種的幀內預測模式以適應更加豐富的紋理。 ? ? ? H.264一共規定了3種大小的亮度幀內預測塊:4*4、8*8和16*16,色度分量的幀內預測塊都是基于8*8大小的塊進行的。其中,4*4和8*8大小的亮度塊包含9種預測模式(垂直、水平、DC、左下對角線模式、右下對角線模式、垂直向右模式、水平向下模式、垂直向左模式和水平向上模式),而16*16大小的亮度塊和8*8大小的色度塊只有4種預測模式(DC、水平、垂直和Plane)。需要注意的是“4*4和8*8大小的亮度塊支持的9種預測模式”與“16*16大小的亮度塊和8*8大小的色度塊只支持的4種預測模式”二者模式編號順序是不同的。 ? ? ? HEVC亮度分量幀內預測支持5種大小的PU(Prediction Unit):4 * 4、8 * 8、16 * 16、32 * 32、64 * 64,其中每一種大小的PU都對應35種預測模式,包括Planar模式、DC模式以及33種角度模式,如下圖所示。對于色度分量,支持PU的大小為4 * 4/8 * 8/16 * 16/32 * 32,一共有5種模式,即Planar模式、垂直模式、水平模式、DC模式以及對應亮度分量的預測模式,若對應亮度預測模式為前4種中的一種,則將其替換為角度預測中的模式34。 ![](https://box.kancloud.cn/2016-07-05_577af7b30b860.jpg) ? ? ? 總而言之,當預測模式選擇為幀內時,對于所有的塊尺寸,PB尺寸與CB尺寸相同。對于最小的CB尺寸,存在一個標志,用于表明CB是否被分成4個PB,每個PB均有自己的幀內預測模式,采用這種分割方式的原因是能為4 * 4大小的塊選擇幀內預測模式,當亮度的幀內預測模式以4 * 4大小塊進行處理時,色度的幀內預測也采用4 * 4塊。 ? ? ? 所有的預測模式都使用相同的模板,如下圖所示。從圖中我們可以看出,與H.264相比,HEVC增加使用了左下方塊的邊界像素作為當前塊的參考。這是由于H.264以固定大小的宏塊為單元進行編碼,在對當前塊進行幀內預測時,其左下邊方塊很有可能尚未進行編碼,無法用于參考,而HEVC的四叉樹編碼結構使得這一區域成為可用像素。 ![](https://box.kancloud.cn/2016-07-05_577af7b32c2d2.jpg) ### 2、幀內預測過程 ? ? ? 在HEVC中,35種預測模式是在PU的基礎上定義的,而具體幀內預測過程的實現則是以TU為單位的。HEVC規定PU可以以四叉樹的形式劃分TU,且一個PU內的所有TU共享同一種預測模式。 ? ? ? HEVC的幀內預測過程可分為以下三個步驟: (1)、相鄰參考像素的獲取 ? ? ? 如下圖所示,當前TU的大小為N * N,其參考像素按區域可分成5部分,左下、左側、左上、上方和右上,一共4 * N+1個點,若當前TU位于圖像邊界或Slice、Tile邊界,則相鄰參考像素可能會不存在或不可用,并且在某些情況下,左下或右上所在的塊可能尚未編碼,此時這些參考像素也是不可用的。當像素不存在或不可用時,HEVC規定了可以使用最鄰近的像素進行填補,例如左下的參考像素不存在,則左下區域的所有參考像素可使用左側區域最下方的像素進行填補,若右上區域的參考像素不存在,則可以使用上方區域最右側的像素進行填補(如下圖中右側示例)。需要說明的是,若所有參考像素都不可用,則參考像素都用固定值填充,對于8比特像素,該預測值為128,對于10比特像素,則該預測值為512。 ![](https://box.kancloud.cn/2016-07-05_577af7b342ba5.jpg) (2)、參考像素的濾波 ? ? ? H.264在幀內預測時對某些模式下的參考像素進行了濾波,以便更好地利用臨近像素之間的相關性,提高預測精度。HEVC沿用這一方法并進行了拓展:一是針對不同大小的TU選擇了不同數量的模式進行濾波;二是增加使用了一種強濾波方法。 (3)、預測像素的計算 ? ? ? 預測像素的計算就是針對不同的預測模式采用不同的計算方式得到預測像素值。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看