性质
- 矩阵元素都为1/-1
- 正交矩阵、对称矩阵。hadamard变换为正交变换
- 奇数行/列偶对称,偶数行/列奇对称
- 满足Paserval定理
优点
- 仅含有加减运算,可用递归快速实现。(比余弦变换简单了太多了)
- 正变换和反变换具有相同形式,算法实现起来简单(变换是HXH)
- 具有递推公式,算法实现简单(体验一下实际代码就能发现,真的很简单易计算,而且不用浮点数运算)
- hadamard变换后求SATD和余弦变换后求SATD,结果差距不大,但是如果直接残差不变换求SAD,就和余弦变换后求SATD差距很大。所以,他和余弦变换有相似效果,但是算的快又简单
// 函数功能是计算8×8块的哈达玛变换,并计算其SAD值,m2[8][8]存放最终的变换结果
Int xCalcHADs8x8_ISlice(Pel *piOrg, Int iStrideOrg)
{
Int k, i, j, jj;
Int diff[64], m1[8][8], m2[8][8], m3[8][8], iSumHad = 0;
for( k = 0; k < 64; k += 8 )
{
diff[k+0] = piOrg[0] ;
diff[k+1] = piOrg[1] ;
diff[k+2] = piOrg[2] ;
diff[k+3] = piOrg[3] ;
diff[k+4] = piOrg[4] ;
diff[k+5] = piOrg[5] ;