Związek między DCT i PCA

12

Posiadam podstawową wiedzę na temat implementacji DCT 2D 8x8 stosowanej w kompresji obrazu i wideo. Podczas czytania o analizie składowej zasady widzę wiele podobieństw, choć PCA jest wyraźnie bardziej ogólne. Kiedy wcześniej czytałem o DCT, zawsze był on prezentowany w odniesieniu do DFT. Moje pytanie brzmi więc, jak można uzyskać DCT z perspektywy PCA? (wystarczy nawet delikatne wyjaśnienie)

Wielkie dzięki

trójkołowy
źródło

Odpowiedzi:

19

Główną różnicą między DCT i PCA (a dokładniej, reprezentującą zbiór danych w podstawie utworzonej przez wektory własne jego macierzy korelacji - znanej również jako transformacja Karhunena Loeve'a ) jest to, że PCA należy zdefiniować w odniesieniu do danego zbioru danych (z którego szacowana jest macierz korelacji), podczas gdy DCT jest „bezwzględny” i jest definiowany tylko przez wielkość wejściową. To sprawia, że ​​PCA jest transformacją „adaptacyjną”, podczas gdy DCT jest niezależny od danych.

Można się zastanawiać, dlaczego PCA nie jest częściej używany do kompresji obrazu lub dźwięku ze względu na jego adaptacyjność. Są dwa powody:

  1. Wyobraź sobie koder obliczający PCA zestawu danych i kodujący współczynniki. Aby zrekonstruować zestaw danych, dekoder będzie potrzebował nie tylko samych współczynników, ale także macierzy transformacji (zależy to od danych, do których nie ma dostępu!). DCT lub dowolna inna niezależna od danych transformacja może być mniej skuteczna w usuwaniu zależności statystycznych w danych wejściowych, ale matryca transformacji jest znana z góry zarówno przez koder, jak i dekoder, bez potrzeby jej przesyłania. „Wystarczająco dobra” transformacja, która wymaga niewielkiej ilości informacji pobocznych, jest czasem lepsza niż optymalna transformacja, która wymaga dodatkowego obciążenia informacji pobocznych ...

  2. Weź dużą kolekcję płytek 8x8 wyodrębnionych ze zdjęć. UtwórzNN×64matryca z jasnością tych płytek. Oblicz PCA na tych danych i wykreśl główne składniki, które zostaną oszacowane. To bardzo pouczający eksperyment! Istnieje bardzo duża szansa, że ​​większość wektorów własnych wyższego rzędu faktycznie będzie wyglądać jak rodzaj modulowanych wzorów fali sinusoidalnej na podstawie DCT. Oznacza to, że dla wystarczająco dużego i ogólnego zestawu kafelków obrazu DCT stanowi bardzo dobre przybliżenie podstawy własnej. To samo zostało również zweryfikowane w odniesieniu do dźwięku, w którym podstawa logarytmiczna energii sygnału w pasmach częstotliwościowych w odstępach mel, oszacowana na dużej objętości nagrań audio, jest zbliżona do podstawy DCT (stąd zastosowanie DCT jako transformacji dekorelacji podczas obliczania MFCC).

fenenety
źródło
1
To ciekawe, ale czy nie można zbudować innego zestawu baz na podstawie „zwykłych” statystyk obrazów na początek, a tych używanych zamiast DCT? Wyobrażam sobie, że taka podstawa nie byłaby tak dobra jak PCA, ale lepsza niż DCT nie?
Spacey,
@pichenettes - w odniesieniu do DCT, jakie są powszechnie postrzegane obrazy rosnącej częstotliwości poziomej i pionowej (np. goo.gl/XLMt5 )? Czy jest to reprezentacja graficzna podstawowych funkcji DCT? Jeśli tak jest, jeśli obliczę wektory PCA / wektory własne na podstawie macierzy kowariancji tych obrazów - czy zasadniczo dałoby mi to macierz współczynnika DCT?
trikanin
Btw @pichenettes wielkie dzięki za wnikliwą odpowiedź. Byłem świadomy punktu 1, ale tak naprawdę nie zastanawiałem się nad punktem 2
trikan
1
@Mohammad: to dobre pytanie i nie znam odpowiedzi. Widzę zalety korzystania z DCT: łatwiej jest napisać specyfikację (łatwiej jest wydrukować „nasza transformacja to funkcja o zamkniętej formie” niż „nasza transformacja to ta matryca 64x64 opublikowana w załączniku”), brak spotkań komitetów normalizacyjnych na temat tego, który zestaw danych trenować transformacja włączona, mniej tabel przeglądowych do osadzenia w pamięci ROM dekoderów i prawdopodobnie „symetrie” w macierzy transformacji, które umożliwiają jej przyspieszenie sprzętowe w porównaniu z brutalnym zwielokrotnieniem macierzy 64x64 - te zalety mogą przewyższać marginalną poprawę kompresji.
fenenety
1
@trican: obraz, do którego linkujesz, stanowi podstawę 2-D DCT dla kafelków 8x8. Każda z 64 małych płytek jest funkcją podstawową. Jeśli weźmiesz dużą kolekcję kafelków 8x8 z rzeczywistych obrazów i wykonasz PCA na danych, podstawa, którą otrzymasz, będzie bardzo podobna do tej.
fenenety