Relación entre DCT y PCA


12

Tengo un conocimiento básico de implementación del DCT 2D 8x8 utilizado en la compresión de imagen y video. Mientras leo sobre el Análisis de componentes principales, puedo ver mucha similitud, aunque PCA es claramente más genérico. Cuando leí sobre DCT anteriormente, siempre se presentó en relación con DFT. Entonces, mi pregunta es ¿cómo se puede derivar el DCT desde una perspectiva PCA? (Incluso una explicación manual es suficiente)

Muchas gracias

Respuestas:


19

La principal diferencia entre DCT y PCA (más precisamente, representando un conjunto de datos en la base formada por los vectores propios de su matriz de correlación, también conocida como la transformación de Karhunen Loeve ) es que el PCA debe definirse con respecto a un conjunto de datos dado (a partir del cual se estima la matriz de correlación), mientras que la DCT es "absoluta" y solo se define por el tamaño de entrada. Esto convierte al PCA en una transformación "adaptativa", mientras que el DCT es independiente de los datos.

Uno podría preguntarse por qué el PCA no se usa con más frecuencia en la compresión de imágenes o audio, debido a su adaptabilidad. Hay dos razones:

  1. Imagine un codificador que calcula un PCA de un conjunto de datos y codifica los coeficientes. Para reconstruir el conjunto de datos, el decodificador necesitará no solo los coeficientes en sí, sino también la matriz de transformación (¡depende de los datos, a los que no tiene acceso!). La DCT o cualquier otra transformación independiente de los datos podría ser menos eficiente para eliminar las dependencias estadísticas en los datos de entrada, pero la matriz de transformación es conocida de antemano tanto por el codificador como por el decodificador sin la necesidad de transmitirla. Una transformación "suficientemente buena" que requiere poca información secundaria a veces es mejor que una transformación óptima que requiere una carga adicional de información secundaria ...

  2. NN×64matriz con la luminosidad de estos azulejos. Calcule un PCA con estos datos y trace los componentes principales que se estimarán. ¡Este es un experimento muy esclarecedor! Existe una muy buena posibilidad de que la mayoría de los vectores propios de mayor rango se vean realmente como el tipo de patrones de onda sinusoidal modulada de la base DCT. Esto significa que para un conjunto de mosaicos de imágenes suficientemente grande y genérico, el DCT es una muy buena aproximación de la base propia. Lo mismo también se ha verificado para el audio, donde la base propia de la energía de la señal logarítmica en bandas de frecuencia espaciadas por mel, estimada en un gran volumen de grabaciones de audio, está cerca de la base DCT (de ahí el uso de DCT como una transformación de descorrelación) cuando se computa MFCC).


1
Es interesante, sin embargo, ¿no podría construirse un conjunto de bases diferente basado en las estadísticas 'habituales' de las imágenes para empezar, y las utilizadas en lugar de DCT? Me imagino que tal base no sería tan buena como PCA, pero mejor que DCT, ¿no?
Spacey

@pichenettes: con respecto al DCT, ¿cuáles son las imágenes comúnmente vistas de frecuencia horizontal y vertical creciente (es decir, goo.gl/XLMt5 )? ¿Es una representación de imagen de las funciones básicas de DCT? Si ese es el caso, si calculé los PCA / vectores propios a partir de la matriz de covarianza de estas imágenes, ¿esto esencialmente me daría una matriz de coeficientes DCT?
trican

Por cierto @pichenettes muchas gracias por su perspicaz respuesta. Era consciente del punto 1, pero realmente no había considerado el punto 2.
trican

1
@Mohammad: esta es una buena pregunta, y no sé la respuesta. Veo ventajas en el uso de DCT: es más fácil escribir especificaciones (es más fácil imprimir "nuestra transformación es esta función de forma cerrada" que "nuestra transformación es esta matriz de 64x64 publicada en el anexo"), no hay reuniones de comités de estandarización sobre qué conjunto de datos entrenar la transformación activada, menos tablas de búsqueda para incrustar en la ROM de los decodificadores, y probablemente "simetrías" en la matriz de transformación que hacen posible su aceleración de hardware en comparación con una brutal multiplicación de matriz de 64x64: estas ventajas podrían superar las ganancias de compresión marginal.
pichenettes

1
@trican: la imagen a la que se vinculó representa la base 2-D DCT para mosaicos de 8x8. Cada uno de los 64 mosaicos pequeños es una función básica. Si toma una gran colección de mosaicos de 8x8 de imágenes reales y realiza un PCA en los datos, la base propia que obtendrá será bastante similar a esa.
pichenettes
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.