1. coursebook
  2. poznámky k pg

Filtrace obrazu

Pojem filtr je poněkud obecný a může se pod ním skrývat celá řada operací. Mezi filtry lze například zařadit:

Filtrovat obraz lze obecně více způsoby, dost často se jedná o lineární filtraci obrazu s použitím konvoluce, s jejím použitím lze implementovat 4 příklady filtrace uvedené v seznamu výše. Jiné typy filtrace mohou zahrnovat např. filtraci ve frkvenční oblasti (viz Fourierova transformace) nebo nelineární filtraci (viz bilatelární filtr níže).

Konvoluce

$$(f * g)(s, t) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(x, y) \cdot g(s−x,t−y) dxdy$$ nebo také diskrétně $$(f * g)(s, t) = \sum_{x}\sum_{y} f[x, y] \cdot g[s − x, t − y]$$ jsou předpisy pro konvoluci. K čemu? Za $f$ je možné dosadit upravovaný snímek jako dvourozměrnou funkci, za $g$ libovolné konvoluční jádro a jednoduše lze obrázek filtrovat řadou způsobů prostou výměnou jádra za jiné. Pokud za $g$ dosadíme např gaussian, jednoduše lze na snímek aplikovat rozmazání:

aplikace gaussianu s rozptylem 10, 20, 30 a 40px

Pro lepší pochopení konvoluce lze vřele doporučit video vytvořené ke kurzu Introduction to Computational Thinking - MIT 18.S191.

TODO praktické aplikace konvoluce

TODO metody akcelerace výpočtu kovoluce

Bilaterální filtr

Pokud pracujeme se zašuměnými snímky, hodí se lehké rozmazání pro odšumění. Problémem ovšem je, že touto operací ze snímku odstraňujem detaily a ostré hrany. Z toho důvodu se hodí použít Bilaterální filtr, jehož předpis může nápaditě připomínat konvoluci výše $$f_{filtered}(s, t) = \frac{1}{W_p}\sum_{x}\sum_{y} f[x, y] \cdot g[s - x, t - y] \cdot h[\left|f[x, y] - f[s, t]\right|],$$ kde $$W_p = \sum_{x}\sum_{y} g[s - x, t - y] \cdot h[\left|f[x, y] - f[s, t]\right|].$$ Objevil se člen $h$, který reprezentuje jednodimenzioální gaussian a váží originální konvoluční jádro $g$. K čemu to? Prakticky jsme pomocí tohoto vylepšeného filtru schopni zachovat ostré přechody a zároveň se zbavit šumu.

vlevo originál, vpravo snímek s potlačeným šumem