Relação entre DCT e PCA

12

Eu tenho um conhecimento básico de implementação do 2D 8x8 DCT usado na compactação de imagem e vídeo. Ao ler sobre a Análise de componentes principais, posso ver muita semelhança, embora o PCA seja claramente mais genérico. Quando eu li sobre o DCT anteriormente, ele sempre foi apresentado em relação ao DFT. Então, minha pergunta é como o DCT pode ser derivado da perspectiva do PCA? (mesmo uma explicação ondulatória é suficiente)

Muito Obrigado

trican
fonte

Respostas:

19

A principal diferença entre DCT e PCA (mais precisamente, representando um conjunto de dados na base formada pelos vetores próprios de sua matriz de correlação - também conhecida como Karhunen Loeve Transform ) é que o PCA deve ser definido com relação a um determinado conjunto de dados (a partir do qual a matriz de correlação é estimada), enquanto o DCT é "absoluto" e é definido apenas pelo tamanho da entrada. Isso torna o PCA uma transformação "adaptável", enquanto o DCT é independente de dados.

Pode-se perguntar por que o PCA não é usado com mais frequência na compactação de imagem ou áudio, devido à sua adaptabilidade. Existem dois motivos:

  1. Imagine um codificador computando um PCA de um conjunto de dados e codificando os coeficientes. Para reconstruir o conjunto de dados, o decodificador precisará não apenas dos coeficientes em si, mas também da matriz de transformação (depende dos dados, aos quais não tem acesso!). O DCT ou qualquer outra transformação independente de dados pode ser menos eficiente na remoção de dependências estatísticas nos dados de entrada, mas a matriz de transformação é conhecida antecipadamente pelo codificador e pelo decodificador sem a necessidade de transmiti-la. Uma transformação "suficientemente boa", que requer pouca informação lateral, às vezes é melhor do que uma transformação ideal, que requer uma carga extra de informação lateral ...

  2. NN×64matriz com a luminosidade desses ladrilhos. Calcule um PCA com esses dados e plote os principais componentes que serão estimados. Este é um experimento muito esclarecedor! Há uma chance muito boa de que a maioria dos autovetores de maior classificação realmente se pareça com o tipo de padrão de onda senoidal modulada da base do DCT. Isso significa que, para um conjunto suficientemente grande e genérico de blocos de imagem, o DCT é uma aproximação muito boa da base própria. O mesmo também foi verificado para o áudio, onde a base própria para a energia do sinal de log nas bandas de frequência espaçadas por mel, estimada em um grande volume de gravações de áudio, está próxima da base do DCT (daí o uso do DCT como uma transformação de correlação) ao computar o MFCC).

pichenettes
fonte
1
É interessante, no entanto, um conjunto de bases diferente não pode ser construído com base nas estatísticas 'habituais' de imagens, e aquelas usadas em vez do DCT? Eu imagino que essa base não seria tão boa quanto a PCA, mas melhor do que o DCT, não?
Spacey
@ pichenettes - em relação ao DCT, quais são as imagens comumente vistas de aumento da frequência horizontal e vertical (por exemplo, goo.gl/XLMt5 )? É uma representação de imagem das funções básicas do DCT? Se for esse o caso, se eu calculasse os vetores PCA / autovalores da matriz de covariância dessas imagens - isso me daria essencialmente matriz de coeficientes de DCT?
trican 15/02
Btw @pichenettes muito obrigado pela sua resposta perspicaz. Eu estava ciente do ponto 1, mas realmente não tinha considerado ponto 2.
Trican
1
@ Mohammad: esta é uma boa pergunta, e eu não sei a resposta. Vejo vantagens no uso do DCT: mais fácil escrever especificações (é mais fácil imprimir "nossa transformação é essa função de formulário fechado" do que "nossa transformação é essa matriz de 64x64 publicada no anexo"), sem comitês de padronização reuniões sobre qual conjunto de dados treinar a transformação, menos tabelas de pesquisa para incorporar na ROM dos decodificadores e provavelmente "simetrias" na matriz de transformação que tornam possível a aceleração do hardware em comparação com uma brutal multiplicação da matriz de 64x64 - essas vantagens podem superar os ganhos marginais de compactação.
Pichenettes
1
@trican: a imagem à qual você vinculou representa a base 2D-DCT para blocos 8x8. Cada um dos 64 blocos pequenos é uma função básica. Se você pegar uma grande coleção de blocos 8x8 a partir de imagens reais e executar um PCA nos dados, a base própria que você obterá será bastante semelhante a isso.
Pichenettes