Přepočet 2D transformace z 1D

úvod:

Asi Vás také napadlo, jestli by se výsledku po dvojrozměrné transformaci nedalo dojít přes jednorozměrnou transformaci. Odpověď zní, že dalo, a to právě bude našim cílem.

Teorie:

Běžně jsme zvyklí používat transformace signálů jednorozměrných. Pokud chceme transformovat obrázek, který je signálem dvourozměrným, musíme tomu transformaci přizpůsobit. Toto přizpůsobení není nijak složité a jistě nepřekvapí. Lze postupovat dvěma způsoby. Buď nadefinujeme dvourozměrnou transformaci, nebo aplikujeme jednorozměrnou transformaci nejprve na řádky, resp. sloupce matice dvourozměrného signálu a následně na sloupce, resp. řádky matice dvourozměrného signálu.

Rozdíl mezi 1D a 2D transformací

Na začátek bychom se rádi zastavily u dimenzí, kterými se tady "oháníme". Co to vlastně je ta zajímavá zkratka 1D nebo 2D, 3D atd. Ve stručnosti by se to dalo (pro naše účely) vyložit jako způsob uložení (zapsání) dat, ale proti tomu by se jistě ohradili matematikové.

Vezměme si tu první možnost (Způsob uložení dat).
Asi nejnázornější je to na tabulkách. První způsob je uložení v 1D, je to jednorozměrné pole

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Graf :

Nebo můžeme ta samá data uložit v 2D. Dvojrozměrné pole.

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

Graf:

Slovy matematika by to bylo, že funkce je jednorozměrná, prokud je závislá na jedné proměnné. y=f(x) a dvojrozměrná funkce je závislá na dvou promněnných z=f(x,y) a tak bychom mohli pokračovat.

A díky tomu jak budeme na uložená data nahlížet, můžeme rozlišit jejich integrální transformace na jednorozměrné a dvojrozměrné. Vyššími prostory se nebudeme zabývat, protože pro transformaci obrazu je 2D to dostačující.

Pro názornost rozdíly ve spektrech (stejná data obr1) při 1D a 2D transformaci.

Jednorozměrná DCT Dvojrozměrná DCT

Jak je vidět z těchto grafů, tak při 2D transformaci je pouze malé zvlnění na začátku spektra, takže při prahování se zbytek informací ztratí.(Nemusíme je uchovávat.) Naproti tomu u 1D spektra (transformace) je patrné, zvlnění v celé šířce. Z těchto závěrů je patrné že pro metody komprese bude vhodnější 2D transformace.

A jak vypočítat 2D spektrum z jednorozměrné transformace?

Postup je celkem jednoduchý.Pro jednoduchost jsem si vybral DCT, ale platí to pro všechny zde uváděné integrální transformace
Máme obrázek v YCbCr barevném prostoru. Počítáme pro složku Y Aplikujeme jednorozměrnou DCT Máme jednorozměrné spektrum.
=>
Aby jsme nemuseli předělávat již vytvořenou funkci na výpočet DCT, tak si data transpozicí "otočíme" Aplikujeme podruhé jednorozměrnou DCT Dostali jsme 2D spektrum, ale transponované oproti spektru vypočteného dvojrozměrnou transformací.
=>
Teď jen vypočtené spektrum transponujeme a máme námi hledané dvojrozměrné spektrum.

spekrum vypočtené 2D DCT. Funkce dct2 v Matlabu

Pozn.Spektra jsou opět vynásobena koeficientem 2 kvůli vyniknutí detailů.

Program v Matlabu


tr1Dto2D.zip

Závěrem:

Jak je vidět, tak i s jednorozměrnou transformací se je možné dopočítat 2D spekter. Tato spektra se často využívají ve ztrátových kompresních metodách, a také mají nezastupitelné místo ve fyzice při zkoumání vln.

Leoš Maršálek, Jan Skapa © 2003 Leos.Marsalek@tiscali.cz, jeniczek.s@seznam.cz