Dyskretna transformacja kosinusowa

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Dyskretna transformacja kosinusowa, (DCTang. discrete cosine transform, czyli dyskretna transformacja cosinusowa) – jedna z najpopularniejszych blokowych transformacji danych. Jest szczególnie popularna w stratnej kompresji danych.

DCT przekształca skończony ciąg N liczb rzeczywistych g(0), \ldots, g(N-1) w ciąg liczb rzeczywistych G(0), \ldots, G(N-1) zgodnie z zależnościami:

G(0) = \frac{1}{\sqrt{N}} \sum_{m=0}^{N-1} g(m)
G(k) = \sqrt{\frac{2}{N}} \sum_{m=0}^{N-1} g(m) \cos \frac{\pi k (2m+1)}{2N} \quad \textrm{dla} \quad k=1, 2, \ldots, N-1

G(k) są nazywane współczynnikami DCT lub transformatą. Definiuje się również odwrotną dyskretną transformację cosinusową (IDCT):

g(m) = \frac{1}{\sqrt{N}} G(0) + \sqrt{\frac{2}{N}} \sum_{k=1}^{N-1} G(k) \cos \frac{\pi k (2m+1)}{2N} \quad \textrm{dla} \quad m=0, 1, \ldots, N-1

Zaletą stosowania transformaty DCT w kompresji jest to, że większość współczynników jest zwykle bliska 0 – po kwantyzacji wyzerują się, co redukuje liczbę bitów potrzebną do reprezentacji sygnału bez wnoszenia dużego błędu.

Przetwarzanie sygnałów wielowymiarowych wymaga zastosowania przekształcenia o odpowiedniej liczbie wymiarów. Ponieważ przekształcenie wielowymiarowe DCT jest separowalne, odpowiednie transformaty można uzyskać przez kolejne wykonanie jednowymiarowych przekształceń we wszystkich wymiarach. Na przykład przekształcenie bloków obrazu (sygnału 2-wymiarowego) sprowadza się do obliczenia wyniku DCT we wszystkich wierszach danego bloku, a następnie przekształcenie tych współczynników kolejnym zestawem operacji DCT liczonych po wszystkich kolumnach (kolejność operacji jest dowolna).

DCT w multimediach[edytuj | edytuj kod]

DCT jest używana m.in. w kompresji JPEG i MPEG. Standardowy algorytm to podział obrazka na bloki o stałych rozmiarach (np. 8x8), transformację tych bloków, kwantyzację i kompresję bezstratną.

Głównym problemem kodowania transformatowego opartego na blokach DCT są gwałtowne skoki wartości na granicach zrekonstruowanych bloków (tzw. efekt blokowy). Jednym ze sposobów minimalizacji tego zjawiska jest używanie większych bloków (w przypadku mocno skompresowanych obrazków używane przez JPEG bloki 8x8 są stanowczo za małe, 16x16 lub nawet 32x32 byłyby bardziej odpowiednie). Innym sposobem jest używanie zmodyfikowanej dyskretnej transformacji kosinusowej (MDCT), która używa nachodzących na siebie bloków lub transformat falkowych.

Ze względu na to, że w przypadku dźwięków efekty blokowe byłyby słyszalne jako trzaski, DCT praktycznie nie jest tam używana, natomiast bardzo popularna jest w tym przypadku transformacja MDCT.