Mercurial > hg > pydct
view pydct/t4x4.py @ 0:63af49cca5d2
initial import
author | pmeerw@pan |
---|---|
date | Tue, 06 May 2008 23:01:28 +0200 |
parents | |
children | b5e69130d7e9 |
line wrap: on
line source
import numpy def fdct4x4(b): ''' Compute the approximate 4x4 DCT coefficients of an array as defined by H.264/AVC. ''' c, e = \ numpy.array( [[ 1, 1, 1, 1], [ 2, 1, -1, -2], [ 1, -1, -1, 1], [ 1, -2, 2, -1]], numpy.float), \ numpy.array( [[0.25, 0.15811388, 0.25, 0.15811388], [0.15811388, 0.1, 0.15811388, 0.1], [0.25, 0.15811388, 0.25, 0.15811388], [0.15811388, 0.1, 0.15811388, 0.1]], numpy.float) return numpy.dot(c, numpy.dot(b, numpy.transpose(c))) * e def idct4x4(b): ''' Compute the inverse 4x4 DCT of the array. ''' c, e = \ numpy.array( [[1, 1, 1, 0.5], [1, 0.5, -1, -1], [1, -0.5, -1, 1], [1, -1, 1, -0.5]], numpy.float), \ numpy.array( [[0.25, 0.31622777, 0.25, 0.31622777], [0.31622777, 0.4, 0.31622777, 0.4], [0.25, 0.31622777, 0.25, 0.31622777], [0.31622777, 0.4, 0.31622777, 0.4]], numpy.float) return numpy.dot(c, numpy.dot(b*e, numpy.transpose(c)))