[HEVC] HEVC學習(四) —— 幀內預測系列之二
本帖最後由 cjl2011 於 2012-11-14 05:16 PM 編輯 爲了更好地理解幀內預測中的各個函數的原理過程,有必要對CU、PU地址計算方法有着較好的瞭解,因此,本文將對這個問題先做個討論。 對視頻編解碼有一定了解的人應該會知道,有一種掃描順序叫光柵掃描,即從左往右,由上往下,先掃描完一行,再移至下一行起始位置繼續掃描。H.264使用的主要就是光柵掃描順序,(當然它還有其它掃描順序,被包含在FMO即靈活宏塊順序技術裏)。 HEVC裏同樣也有光柵掃描順序,但是,由於它對CU採用的是遞歸劃分的方式,如果仍是採用光柵掃描順序,對CU的尋址會很不方便,因此,HEVC定義了Z掃描順序,如圖1所示: 右圖可見,這種掃描順序保證了對於不同分割都能按照相同的遍歷順序進行尋址,有利於程序中的遞歸實現。 具體到代碼中,爲了處理的方便,並沒有使用上圖這種定義方式,而是以4x4塊爲最小單位,對CU進行分割,同時,爲了簡化計算,在初始化時定義了幾個地址映射的數組,g_auiRasterToZscan, g_auiZscanToRaster, g_auiRasterToX, g_auiRasterToY。 第一個是從光柵掃描順序轉換爲Z掃描順序,第二個是從Z掃描順序轉換爲光柵掃描順序,第三、第四個則是得到某一個塊相對於所在PU左上角的橫縱座標,且以像素爲單位。 下面幾張表是我在最大CU爲64x64的前提下打印出來的(如圖2、圖3所示): 上面這些值的含義,這裏就不多解釋了,相信大家自己畫個CU,以4x4塊對其進行分割,再對照上面幾張表琢磨琢磨就清楚了。 值得一提的是,可能會有人有這樣的疑問:圖像的分辨率不同,它怎麼能夠保證這張表就能用呢?需要指出的是,Z掃描是針對一個CU來說的,它是用於遞歸掃描CU的分割。定位一幅圖像中的一個CU(或其分割)大致是這麼個過程,首先,由於CU的尺寸的最大值是已知的,會根據這個定位到該CU左上角相對於圖像左上角的位置,即得到它的座標,接着,纔是對當前塊進行Z掃描,單位是4x4塊,換句話說,Z掃描地址是對一個CU有效的,不能直接使用這個地址來確定它在圖像中的位置,這個地方是需要大家注意的。 (轉載請註明出處。原文地址:http://blog.csdn.net/hevc_cjl/article/details/8183144) |