DCT bidimensional para compresión de imágenes

Cuando estuve implementando la Transformada Discreta del Coseno (DCT) me encontré que por internet no había ningún implementación que funcionase de la misma. Así que, aunque el paso de la formulación matematica a la implementación es trivial, aquí comparto la mia.

Es una implementación para bloques de 8x8 el parámetro N debe ser 8, se muestra tanto la DCT como la inversa, esta última está basada en el tipo III para 2D