Diskrétní kosinová transformace

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

DFT. DCT koncentruje nejvíce energie na nejnižších frekvencích. Diskrétní kosinová transformace ( zkratka DCT) je diskrétní transformace podobná diskrétní Fourierově transformaci (DFT), ale produkující pouze reálné koeficienty. Je jednou z mnoha transformací příbuzných Fourierově transformaci. Existuje 8 standardních variant DCT, z nichž 4 jsou běžně používané.

Nejběžnější varianta diskrétní kosinové transformace je DCT typu II, která je často nazývána pouze „DCT“. K ní inverzní transformace je DCT typu III, také rovněž často nazývána pouze „inverzní DCT“ nebo zkratkou „IDCT“.

...

Aplikace

DFT (uprostřed) vstupního signálu (nahoře). +more DCT je často používána při zpracování signálu a obrazu, obzvláště pro ztrátovou kompresi. Je například použita v obrazovém formátu JPEG, formátech MJPEG, MPEG a DV. Její modifikace jsou použity v audio formátech AAC, Vorbis a MP3.

Definice

Formálně je DCT lineární invertovatelná funkce F : RN → RN (kde R značí množinu reálných čísel); nebo ekvivalentně čtvercová matice N × N. Existuje několik variant DCT s mírně modifikovanou definicí. +more N reálných čísel x0, …, xN-1 je transformováno do N reálných čísel X0, …, XN-1 podle jedné z rovnic:.

DCT-I

:X_k = \frac{1}{2} (x_0 + (-1)^k x_{N-1}) + \sum_{n=1}^{N-2} x_n \cos \left[\frac{\pi}{N-1} n k \right]

DCT-I není definována pro N < 2. (Všechny ostatní typy DCT jsou definovány pro libovolné N.)

Inverzní transformace k DCT-I je DCT-I násobená 2/(N-1).

DCT-II

:X_k = \sum_{n=0}^{N-1} x_n \cos \left[\frac{\pi}{N} \left(n+\frac{1}{2}\right) k \right]

DCT-II je pravděpodobně nejrozšířenější forma a je často uváděna pouze jako „DCT“.

Inverzní transformace k DCT-II je DCT-III násobená 2/N.

DCT-III

:X_k = \frac{1}{2} x_0 + \sum_{n=1}^{N-1} x_n \cos \left[\frac{\pi}{N} n \left(k+\frac{1}{2}\right) \right]

Protože je to inverzní transformace k DCT-II (až na „měřítko“), je tato forma někdy uváděna pouze jako „inverzní DCT“ („IDCT“).

Inverzní transformace k DCT-III je DCT-II násobená 2/N.

DCT-IV

:X_k = \sum_{n=0}^{N-1} x_n \cos \left[\frac{\pi}{N} \left(n+\frac{1}{2}\right) \left(k+\frac{1}{2}\right) \right]

Inverzní transformace k DCT-IV je DCT-IV násobená 2/N.

DCT V-VIII

Tyto varianty se v praxi používají zřídka.

Vícerozměrné DCT

Vícerozměrná transformace (transformace vícerozměrné funkce) může být spočítána jako série jednorozměrných transformací postupně v každém rozměru. Pro 2D například nejprve po řádcích a pak po sloupcích (nebo naopak).

2D DCT-II je například dána rovnicí: :X_{k_1,k_2} = \sum_{n_1=0}^{N_1-1} \sum_{n_2=0}^{N_2-1} x_{n_1,n_2} \cos \left[\frac{\pi}{N_1} \left(n_1+\frac{1}{2}\right) k_1 \right] \cos \left[\frac{\pi}{N_2} \left(n_2+\frac{1}{2}\right) k_2 \right]

Výpočet

Přestože přímá aplikace těchto rovnic může vyžadovat O(N2) operací, je možné spočítat stejnou transformaci pouze se složitostí O(N log N) použitím rychlé Fourierovy transformace ( FFT).

Příklad

Úseky zdrojového kódu v jazyce C (DCT typu II a typu III):

Dopředná

Dopředná 1D DCT (typu II):

void fct(const double *input, double *output) { for(int h=0; h

Zpětná

Zpětná 1D DCT (typu III):

void ict(const double *input, double *output) { for(int h=0; h

Související články

goniometrická funkce kosinus * diskrétní vlnková transformace

Reference

Externí odkazy

[url=http://planetmath. org/encyclopedia/DiscreteCosineTransform. +morehtml]DCT na serveru PlanetMath[/url] * [url=http://www. egr. msu. edu/waves/people/Ali_files/DCT_TR802. pdf]The Discrete Cosine Transform (DCT): Theory and Application[/url] * [url=http://www. root. cz/clanky/programujeme-jpeg-diskretni-kosinova-transformace-dct/]Programujeme JPEG: diskrétní kosinová transformace (DCT)[/url] - článek o DCT na root. cz.

Kategorie:Matematická analýza Kategorie:Zpracování digitálního signálu Kategorie:Diskrétní transformace

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top