Relation entre DCT et PCA

12

J'ai une connaissance de base de l'implémentation du DCT 2D 8x8 utilisé dans la compression d'images et de vidéos. En lisant sur l'analyse des composants principaux, je peux voir beaucoup de similitudes, bien que l'ACP soit clairement plus générique. Quand j'ai lu sur DCT auparavant, il a toujours été présenté en relation avec DFT. Ma question est donc de savoir comment le DCT peut être dérivé du point de vue de l'ACP? (même une explication ondulée à la main suffit)

Merci beaucoup

trican
la source

Réponses:

19

La principale différence entre DCT et PCA (plus précisément, représentant un ensemble de données dans la base formée par les vecteurs propres de sa matrice de corrélation - également connue sous le nom de Karhunen Loeve Transform ) est que l'ACP doit être définie par rapport à un ensemble de données donné (à partir duquel la matrice de corrélation est estimée), tandis que le DCT est "absolu" et n'est défini que par la taille d'entrée. Cela fait du PCA une transformation "adaptative", tandis que le DCT est indépendant des données.

On peut se demander pourquoi le PCA n'est pas utilisé plus souvent en compression d'image ou audio, en raison de son adaptabilité. Il y a deux raisons:

  1. Imaginez un encodeur calculant une PCA d'un ensemble de données et encodant les coefficients. Pour reconstruire l'ensemble de données, le décodeur aura besoin non seulement des coefficients eux-mêmes, mais aussi de la matrice de transformation (cela dépend des données auxquelles il n'a pas accès!). Le DCT ou toute autre transformation indépendante des données peut être moins efficace pour supprimer les dépendances statistiques dans les données d'entrée, mais la matrice de transformation est connue à l'avance par le codeur et le décodeur sans avoir besoin de la transmettre. Une transformation "assez bonne" qui nécessite peu d'informations secondaires est parfois meilleure qu'une transformation optimale qui nécessite une charge supplémentaire d'informations secondaires ...

  2. NN×64matrice avec la luminosité de ces carreaux. Calculez une PCA sur ces données et tracez les principales composantes qui seront estimées. C'est une expérience très enrichissante! Il y a de très bonnes chances que la plupart des vecteurs propres de rang supérieur ressemblent réellement au type de modèles d'onde sinusoïdale modulés de la base DCT. Cela signifie que pour un ensemble suffisamment grand et générique de tuiles d'image, le DCT est une très bonne approximation de la base propre. La même chose a également été vérifiée pour l'audio, où la base propre pour l'énergie du signal logarithmique dans les bandes de fréquences espacées en mel, estimée sur un grand volume d'enregistrements audio, est proche de la base DCT (d'où l'utilisation de DCT comme transformée de décorrélation lors du calcul de MFCC).

pichenettes
la source
1
Il est intéressant, cependant, un ensemble de bases différent ne pourrait-il pas être construit sur la base des statistiques «habituelles» des images pour commencer, et de celles utilisées à la place du DCT? J'imagine qu'une telle base ne serait pas aussi bonne que PCA, mais mieux que DCT non?
Spacey
@pichenettes - en ce qui concerne le DCT, quelles sont les images les plus courantes de l'augmentation de la fréquence horizontale et verticale (par exemple goo.gl/XLMt5 )? Est-ce une représentation d'image des fonctions de base DCT? Si tel est le cas, si je calculais les vecteurs PCA / propres à partir de la matrice de covariance de ces images - cela me donnerait-il essentiellement une matrice de coefficients DCT?
trican
Btw @pichenettes merci beaucoup pour votre réponse perspicace. J'étais au courant du point 1, mais je n'avais pas vraiment pris en compte le point 2.
trican
1
@Mohammad: c'est une bonne question, et je ne connais pas la réponse. Je vois des avantages à utiliser le DCT: plus facile à écrire des spécifications (il est plus facile d'imprimer "notre transformation est cette fonction de formulaire fermé" que "notre transformation est cette matrice 64x64 publiée en annexe"), pas de réunions des comités de normalisation sur le jeu de données à former la transformation, moins de tables de recherche à intégrer dans la ROM des décodeurs, et probablement des «symétries» dans la matrice de transformation qui rendent son accélération matérielle possible par rapport à une multiplication brutale de la matrice 64x64 - ces avantages pourraient l'emporter sur les gains de compression marginaux.
pichenettes
1
@trican: l'image à laquelle vous avez lié représente la base DCT 2-D pour les tuiles 8x8. Chacune des 64 petites tuiles est une fonction de base. Si vous prenez une grande collection de carreaux 8x8 à partir d'images réelles et effectuez une PCA sur les données, la base propre que vous obtiendrez sera assez similaire à celle-ci.
pichenettes