view pydct/t4x4.py @ 4:dd4db26f874e

fix
author Peter Meerwald <pmeerw@cosy.sbg.ac.at>
date Fri, 16 May 2008 17:42:17 +0200
parents b5e69130d7e9
children f34a444f0353
line wrap: on
line source

import numpy

_fc = numpy.array(
        [[ 1,  1,  1,  1], 
         [ 2,  1, -1, -2], 
         [ 1, -1, -1,  1], 
         [ 1, -2,  2, -1]], numpy.float)
_fct = _fc.T
_fe = 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)

_ic = numpy.array(
        [[1, 1, 1, 0.5], 
         [1, 0.5, -1, -1], 
         [1, -0.5, -1, 1], 
         [1, -1, 1, -0.5]], numpy.float)
_ict = _ic.T         
_ie = 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)

def fdct4x4(b):
    '''
    Compute the approximate 4x4 DCT coefficients of an array 
    as defined by H.264/AVC.
    '''
        
    return numpy.dot(_fc, numpy.dot(b, _fct)) * _fe

def idct4x4(b):
    '''
    Compute the inverse 4x4 DCT of the array.
    '''

    return numpy.dot(_ic, numpy.dot(b*_ie, _ict))

Repositories maintained by Peter Meerwald, pmeerw@pmeerw.net.