2016-07-24 17 views
0

nicht sicher, ob dies der richtige Ort ist, um diese Frage zu stellen.Bildkomprimierung mit PCA

Ich habe eine Frage über PCA in Bezug auf Speicherplatz.

Wenn wir PCA verwenden waren Bilder zu komprimieren,

Ich zumindest hätte 1) die Anzahl der Hauptkomponenten speichern 2) Die numpy Array, in dem die mittleren

Da die extrahiert wurde Originalbild-Array-Größe und die mittlere subtrahierte Array-Größe ist gleich. Menge an Speicherbedarf wird gleich sein und daher wo ist dann die Kompression?

Antwort

1

Erstens: Mit PCA zu komprimieren Bilder ist möglich, aber es ist nicht möglich (macht keinen Sinn) ohne Verlust. Die Grundidee besteht darin, die Anzahl der Dimensionen zu minimieren und gleichzeitig die beibehaltene Varianz zu maximieren.

Angenommen, Sie haben n Bilder der Größe x * y.

Dann würden Sie ein einziges Mittelbild der Größe x * y berechnen, das Sie speichern müssten. Außerdem könnten Sie die Top-K-Eigenvektoren/Hauptkomponenten verwenden, um die Dimension zu reduzieren. Dadurch würden Sie jedes Bild (basierend auf Ihrer Auswahl, wie viel Varianz einzuhalten ist) von x * y Dimensionen auf k Dimensionen reduzieren. Schließlich müssten Sie die Top k Eigenvektoren/Hauptkomponenten speichern, die eine Matrix der Größe k * (x * y) ist.

Fazit: Sie können Bilder mit einer Größe x * y zu

reduzieren n könnte

a) n-Arrays der Größe k

b) einem einzigen mittleren Bild der Größe x * y

c) Eine Matrix der Größe k * (x * y) mit den obersten k Hauptkomponenten

Ob dies tatsächlich zu einer Komprimierung führt, hängt von Ihrer Wahl von k und von der Anzahl der Bilder ab.

Obwohl theoretisch möglich, enthält diese Komprimierung Verluste.