Calculer IDCT 2D ~ Python

introduction

Calculez l'IDCT 2D en utilisant Python.

code

test.py


from numpy import *
from scipy.fftpack import dct, idct

set_printoptions(linewidth=200, precision=1, suppress=True)

def dct2(a):
    return dct( dct( a, axis=0, norm='ortho' ), axis=1, norm='ortho' )

def idct2(a):
    return idct( idct( a, axis=0 , norm='ortho'), axis=1 , norm='ortho')

a = array(
  [
    ( 568,     0,     0,    -4,    -4,     0,     4,     0 ),
    ( -27,     9,    -4,    -4,     0,    -5,     5,    -5 ),
    ( -49,    -4,     4,     4,     0,     0,     0,     0 ),
    ( -12,    -4,     0,     0,     5,     0,     0,     0 ),
    ( -14,    -5,     0,     0,     0,     0,     0,     0 ),
    (  -5,     0,     0,     0,     0,     0,     0,     0 ),
    (  -5,     0,     0,     0,     0,     0,     0,     0 ),
    (   0,     0,     0,     0,     0,     0,     0,     1 ),
  ]
);

print("a=")
print(a)
print("idct2(a)=")
print(idct2(a))
print("dct2(idct2(a))=")
print(dct2(idct2(a)))

Je le ferai.

> python --version
Python 3.4.3
> python .\test.py
a=
[[568   0   0  -4  -4   0   4   0]
 [-27   9  -4  -4   0  -5   5  -5]
 [-49  -4   4   4   0   0   0   0]
 [-12  -4   0   0   5   0   0   0]
 [-14  -5   0   0   0   0   0   0]
 [ -5   0   0   0   0   0   0   0]
 [ -5   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   1]]
idct2(a)=
[[ 52.9  53.6  54.8  54.   53.   56.3  50.3  56.9]
 [ 67.9  70.5  71.4  68.1  65.2  68.6  62.4  66.4]
 [ 74.4  78.4  80.5  75.   72.   74.5  70.   71.2]
 [ 74.7  78.5  81.3  78.3  75.3  77.5  75.1  76.2]
 [ 75.7  76.4  80.1  78.9  78.2  77.5  78.4  79.5]
 [ 75.6  74.   76.1  76.4  76.   75.   77.3  77.4]
 [ 73.3  71.   72.3  70.7  72.5  72.7  77.1  73.9]
 [ 67.   65.6  66.1  63.6  66.5  69.6  75.   69.4]]
dct2(idct2(a))=
[[ 568.   -0.   -0.   -4.   -4.   -0.    4.   -0.]
 [ -27.    9.   -4.   -4.    0.   -5.    5.   -5.]
 [ -49.   -4.    4.    4.   -0.    0.    0.   -0.]
 [ -12.   -4.   -0.   -0.    5.    0.    0.   -0.]
 [ -14.   -5.   -0.    0.    0.    0.   -0.   -0.]
 [  -5.   -0.    0.    0.   -0.    0.    0.   -0.]
 [  -5.    0.    0.    0.   -0.   -0.    0.   -0.]
 [   0.    0.    0.   -0.    0.   -0.    0.    1.]]

Recommended Posts

Calculer IDCT 2D ~ Python
[Python] Acing binaire 2020D
Créer un gif 3D avec python3
Python: image de tableau 3D (numpy.array)
python> Gestion des tableaux 2D
Résoudre ABC175 D en Python
AtCoder ABC 182 Python (A ~ D)
Piège de tableau bidimensionnel Python [copie du tableau]
Analyse de la structure du squelette en trois dimensions avec Python
Python
Résoudre ABC166 A ~ D avec Python
Calculer la perte de propagation de l'espace libre en Python
Essayez de calculer Trace en Python
Calculer le mois précédent en Python
Comment calculer la date avec python
[Python scipy] Augmentation / réduction de l'échelle des données 2D
Calculer et afficher le poids standard avec python
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
ABC 157 D - Résolvez les suggestions d'amis en Python!
Programme d'analyse des contraintes FEM 2D par Python
Laissez Python calculer l'équation de mouvement d'Euler Lagrange
Python> lien> Initialisation et affectation de tableaux 2D
Exemple d'analyse de squelette tridimensionnelle par Python
N'utilisez pas \ d dans les expressions régulières Python 3!
Résoudre AtCoder ABC168 avec python (A ~ D)
Concours pour débutants AtCoder: Réponses aux problèmes D Python
Résoudre ABC165 A, B, D avec Python
[Python] Comment calculer MAE et RMSE
[Python] J'ai essayé de calculer TF-IDF régulièrement