在h.265/hevc中支援4種不同尺寸的整數dct變換,分別是4x4、8x8、16x16、32x32。
對應的變化矩陣如下:
4x4變換矩陣:
8x8變換矩陣:
16x16變換矩陣:
下面分別是32x32變換矩陣的左邊16列和右邊16列:
我們可以發現以上矩陣有如下特點:
下面是32x32矩陣的前16列及其亞取樣情況:
dct變換的正變換和逆變換的矩陣定義是相同的,都是上面定義的矩陣。
const tmatrixcoeff g_ait4 [transform_number_of_directions][4][4] =
;const tmatrixcoeff g_ait8 [transform_number_of_directions][8][8] =
;const tmatrixcoeff g_ait16[transform_number_of_directions][16][16] =
;const tmatrixcoeff g_ait32[transform_number_of_directions][32][32] =
;
#define define_dct4x4_matrix(a,b,c) \
, \ , \
, \\
}#define define_dct8x8_matrix(a,b,c,d,e,f,g) \
, \ , \
, \, \
, \, \
, \\
}#define define_dct16x16_matrix(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) \
, \ , \
, \, \
, \, \
, \, \
, \, \
, \, \
, \, \
, \\
}#define define_dct32x32_matrix(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e) \
, \ , \
, \, \
, \, \
, \, \
, \, \
, \, \
, \, \
, \, \
, \, \
, \, \
, \, \
, \, \
, \, \
, \, \
, \, \
, \\
}
由於上面的dct矩陣有很強的規律性,所有可以使用蝶形演算法加快計算速度。下面以4x4的矩陣為例講解蝶形演算法。
進行4x4dct變換的計算過程如下:
其中要進行4x4dct矩陣和待變換矩陣x相乘的運算,由於4x4dct矩陣是固定的,且有很強的規律性所以該矩陣相乘運算可以設計快速演算法完成。
可以看到上面矩陣運算過程中有多處進行了重複計算,可以在矩陣相乘前先計算出這些重複值從而避免多次計算,這就是蝶形演算法。對於8x8、16x16和32x32矩陣蝶形演算法類似。
下面是hm中4x4dct矩陣的蝶形演算法:
H 264整數DCT公式推導及蝶形演算法分析
1.為什麼要進行變換 空間影象資料通常是很難壓縮的 相鄰的取樣點具有很強的相關性 相互關聯的 而且能量一般平均分布在一幅影象中,從而要想丟掉某些資料和降低資料精度而不明顯影響影象質量,就要選擇合適的變換,方法,使影象易於被壓縮。適合壓縮的變換方法要有這樣幾個性質 1 可以聚集影象的能量 將能量集中到...
H 264整數DCT公式推導及蝶形演算法分析
1.為什麼要進行變換 空間影象資料通常是很難壓縮的 相鄰的取樣點具有很強的相關性 相互關聯的 而且能量一般平均分布在一幅影象中,從而要想丟掉某些資料和降低資料精度而不明顯影響影象質量,就要選擇合適的變換,方法,使影象易於被壓縮。適合壓縮的變換方法要有這樣幾個性質 1 可以聚集影象的能量 將能量集中到...
Cooley Tukey演算法 (蝶形演算法)
cooley tukey演算法差別於其它fft演算法的乙個重要事實就是n的因子能夠隨意選取。這樣也就能夠使用n r s的radix r演算法了。最流行的演算法都是以r 2或r 4為基的,最簡單的dft不須要不論什麼乘法就能夠實現。比如 在s級且r 2的情形下,下列索引對映的結果是 s 2時的 個一般...