2012-05-28 10 views
7

Perché la compressione JPEG elabora l'immagine di blocchi 8x8 invece di applicare la trasformazione del coseno discreta all'intera immagine?Perché la compressione JPEG elabora l'immagine con blocchi 8x8?

+0

ritengono che il DCT è bravo a comprimere aree piuttosto lisce con basso contenuto di frequenze, ma molto male a comprimere aree di contenuto ad alta frequenza. –

+0

domanda identica: http://stackoverflow.com/questions/11147666/why-do-image-compression-algorithms-process-the-image-by-sub-blocks/11147696#11147696 –

+0

Precedente domanda identica: http: // stackoverflow.com/questions/74892/is-there-a-quality-file-size-or-other-benefit-to-jpeg-izes-being-multiples-of –

risposta

1

Perché, ci vorrebbe "per sempre" per decodificare. Non ricordo bene ora, ma penso che siano necessari almeno tanti coefficienti quanti sono i pixel nel blocco. Se si codifica l'intera immagine come un singolo blocco, penso che sia necessario, per ogni pixel, iterare attraverso tutti i coefficienti DCT.

Non sono molto bravo in calcoli O grandi, ma suppongo che la complessità sarebbe O ("per sempre"). ;-)

Per i moderni codec video, penso che abbiano iniziato a utilizzare i blocchi 16x16.

+2

Se hai bisogno di iterare su ogni cosa ogni iterazione, è O (n^2), non "per sempre", che è O (n!). – Triang3l

2

8 X 8 è stato scelto dopo numerosi esperimenti con altre taglie.

Le conclusioni degli esperimenti sono: 1. Qualsiasi matrici di dimensioni superiori a 8 X 8 sono più difficili da eseguire operazioni matematiche (come le trasformazioni ecc.) O non supportate dall'hardware o richiedono più tempo. 2. Eventuali matrici di dimensioni inferiori a 8 X 8 non dispongono di informazioni sufficienti per continuare con la pipeline. Ne risulta una cattiva qualità dell'immagine compressa.

Leggi, il mio blog, http://nboddula.blogspot.com/2013/05/image-compression-how-jpeg-works.html