整數DCT蝶形演算法

2021-10-23 06:27:11 字數 2344 閱讀 3440

在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時的 個一般...