Dyskretna transformacja kosinusowa

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

Dyskretna transformacja kosinusowa, dyskretna transformacja cosinusowa (ang. Discrete Cosine Transform, DCT) – rodzaj blokowej transformacji wykonywanej na wartościach dyskretnych. Jest szczególnie popularna w dziedzinie stratnej kompresji danych.

Opis metody[edytuj | edytuj kod]

DCT przekształca skończony ciąg liczb rzeczywistych w ciąg liczb rzeczywistych zgodnie z zależnościami:

gdzie:

jest nazywane współczynnikiem DCT lub transformatą.

Definiuje się również odwrotną dyskretną transformację cosinusową (IDCT) jako:

Zaletą stosowania transformaty DCT w kompresji jest fakt, że większość współczynników jest zwykle bliska 0 – po kwantyzacji wyzerują się one, co zredukuje liczbę bitów potrzebną do reprezentacji sygnału bez wprowadzania 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, czyli 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 polega na podziale obrazu na bloki o stałych rozmiarach (np. 8×8), 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 zastosowanie większych bloków (w przypadku mocno skompresowanych obrazów używane przez algorytm JPEG bloki 8×8 są stanowczo za małe, 16×16 lub nawet 32×32 byłyby bardziej odpowiednie). Innym sposobem jest używanie zmodyfikowanej dyskretnej transformacji kosinusowej (MDCT), która wykorzystuje nachodzące na siebie bloki lub transformaty falkowe.

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

Zobacz też[edytuj | edytuj kod]