Wienerův filtr

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Tento filtr byl navržen tak, aby dokázal zpětně rekonstruovat obrázek, který byl poničen šumem nebo špatnou impulzní odezvou snímacího zařízení. Tato problematika je popsána v článku o rekonstrukci a předzpracování obrazu. Opět jde o to vyřešit tzv. radiometrický inverzní problém, tedy vyjádřit z následující rovnice proměnou u(x, y)\,, což je požadovaný obrázek ještě před deformací špatným fotoaparátem nebo šumem.

z(x,y) = (u * h)(x, y) + n(x, y) \,

h(x, y) \, značí impulzní odezvu snímacího zařízení a n(x,y) \, přidaný šum

Požadavky kladené na filtr[editovat | editovat zdroj]

Jak je zřejmé z prvního matematického vztahu, Wienerův filtr má za úkol spočítat inverzní konvoluci za přítomnosti nenulového šumu. Problém inverzní konvoluce řeší i inverzní filtr, ale jeho korektní funkčnost je omezena jen na obrázky bez šumu. K odvození Wienerova filtru vedly následující dva předpoklady:

  • E(\|f'(x, y) - f_i(x, y)\|^2) \, → minimální

tedy, že střední hodnota druhé mocniny přes všechny realizace šumu a pro jejich všechny parametry bude mít od hledaného obrázku minimální vzdálenost. f_i(x, y) \, značí hledaný obrázek se všemi známými realizacemi šumu a jejich parametry, f'(x, y) \, značí náš obrázek před deformací šumem. Jak patrné z prvního kritéria, tak metoda vychází z empirických znalostí šumů a pravděpodobnosti jejich rozdělení v obrázku. Druhý požadavek na Wienerův filtr je, aby byl lineární. Tento požadavek se formuluje pro frekvenční oblasti obrázků. Tedy nechť \mathcal{F}(f') = F \, je Fourierova transformace původní obraz, tak jak vypadá bez šumu. \mathcal{F}(g) = G \, je zašuměný obrázek, který má být opraven a R \, je nějaká transformační matice, jež násobením transformuje poškozený obrázek do jeho "opravené" varianty. Zmiňovaná linearita filtru má tedy tvar (parametry funkcí (u, v) \, označují souřadnice ve frekvenční (Fourierově) oblasti):

  • \mathcal{F}(f')(u, v) = \mathcal{F}(g)(u, v) \cdot R(u, v) \,  →  F'(u, v) = G(u, v) \cdot R(u, v)

Vzorec filtru a jeho parametrizace[editovat | editovat zdroj]

Z předchozích požadavků byl odvozen následující filtr, který po vynásobení (jedná se o násobení matic po prvcích) s maticí poničeného obrázku dá rekonstruovaný obraz:

R(u, v) = \frac{1}{H(u, v)} \cdot \frac{|H(u, v)|^2}{|H(u, v)|^2 + S_n(u, v)/S_f(u, v)} \,

V tomto vzorci H(u, v) \, značí Fourierův obraz impulzní odezvy h(x, y) \, a podíl S_n(u, v)/S_f (u, v) \, je jiný zápis tzv. Signal to Noise Ratio, což nám určuje míru zašumění obrázku. Vidíme, že tento výraz obecně závisí na parametrech frekvence (u, v) \,. Ale za předpokladu bílého šumu můžeme S_n(u, v) \, psát jako rozptyl šumu \sigma_n^2 \, (což je konstanta v celém obrázku), dále budeme předpokládat nekorelovanost obrázku (což v reálu neplatí, ale jako přiblížení se dá použít) a můžeme tedy S_f(u, v) \, aproximovat rozptylem obrázku \sigma_f^2 \,. (Rozptyly jsou vlastně odhady energie šumu a energie obrázku). Z tohoto přiblížení nám vyjde, že podíl S_n(u, v)/S_f(u, v)\, máme roven konstantně (číslu) \sigma_n^2 / \sigma_f^2 \,. V praxi to znamená, že za tento podíl dosazujeme různá čísla (např. od 0.001 do 1000) a koukáme, co nám dá nejlepší výsledek. Když Wienerův filtr aplikujeme na nezašuměný obrázek (tedy S_n(u, v) \, bude rovno nule), pak nám tento filtr R(u, v) \, přechází v R(u, v) = \frac{1}{H(u, v)} \,, což je předpis pro inverzní filtr.