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)))

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