Algoritmo de compresión multimedia con perdida de información

Algunos de mis proyectos me han requerido el diseño de algoritmos de compresión, tanto en mi trabajo en la Universidad como en la empresa privada. He recopilado algunos de los pasos necesarios para realizar un algoritmo de compresión con perdida en un documento que se muestra a continuación (y que se puede ver y descargar también en: http://angelluispg.es/compression/dct.pdf)

He decidido publicar el documento como parte de mi trabajo en la Universidad (de ahí que se nombre al departamento donde trabajo y la Facultad), porque es en la Universidad donde he trabajado algoritmos de compresión con perdida, en la empresa privada he trabajado sobre algoritmos de compresión sin perdida, que podría dar para otro documento en el futuro.

La mayoría de algoritmos de compresión con perdida se basan en el uso de herramientas matemáticas que nos permiten transformar al dominio de la frecuencia y que son transformadas derivadas de la transformada de Fourier. Para compresión de imagenes y video se suele usar la Transformada Discreta del Coseno (y no la Transformada Discreta de Fourier), dicha transformada se usa por una serie de propiedades que posee, pero las más importantes son.

  • La Transformada del Coseno devuelve números reales y no complejos
  • La Transformada del Coseno acumula la mayor parte de la energía de la señal en los primeros coeficientes, esta es la propiedad más importante puesto que con menos coeficientes la Transformada del Coseno es capaz de reconstruir la señal original de una forma mas precisa que la Transformada de Fourier o la Transformada del Seno.

La indeterminación de dividir entre 0

Esta tarde, leyendo un libro sobre cálculo he visto un ejemplo bastante interesante que muestra la indeterminación de la división de 0.

  1. a = b                                                // Suponemos que esta afirmación es cierta
  2. ab = a^2                                          // Multiplicamos ambos lados por a
  3. ab- b^2 = a^2 - b^2                         //Restamos ambos lados por b^2
  4. b(a-b)= (a+b)(a-b)              //Factorizamos
  5. b = a+b                                         //Dividimos entre (a-b) en ambos lados
  6. b = 2b
  7. 1 = 2

Al final del proceso acabamos con la demostración de que 1=2 y sabemos que eso no es cierto, ¿Que es lo que ha fallado? Si recordamos del paso 1 &latex a=b$ por tanto (a-b) = 0 y en el paso 5 hemos dividido por (a-b) que es 0 y aquí es donde se produce la indeterminación y acabamos con un resultado incorrecto.