Konvoluce
Konvoluce je matematický operátor zpracovávající dvě funkce.
Spojitá konvoluce (značí se hvězdičkou) jednorozměrných funkcí a je definována vztahem:
Funkci se říká konvoluční jádro. Hodnota konvoluce funkce s jádrem v bodě je integrál ze součinu funkce s otočenou funkcí konvolučního jádra (integrační proměnná má v argumentu konvolučního jádra záporné znaménko) posunutou do bodu .
Pokud jde o konvoluci při zpracovávání obrazu, je funkce většinou zkoumaný obrázek a funkce nějaký filtr.
Vlastnosti konvoluce
Komutativní
Asociativní
Distributivní
Existence jednotky
kde δ je tzv. Diracova delta funkce (distribuce):
a . Integrál Delta funkce je roven 1:
Jde tedy o puls trvající nekonečně krátkou dobu.
Asociativita při násobení skalárem
pro všechna reálná (nebo komplexní) čísla .
Konvoluční teorém
kde značí Fourierovu transformaci
Dk.:
substituce: a tedy
Diskrétní konvoluce
Příklad
V případě dvou konečných řad se samozřejmě nesčítá od −∞ do +∞, ale pouze přes existující prvky. (Případně si lze na pozici neexistujících prvků řady představit nuly.) Výsledná řada je o jeden prvek kratší než je součet délek konvoluovaných řad.
Konvoluce dvou řad:
(a, b, c, d) * (e, f, g) = = (a*e) (a*f) (a*g) (b*e) (b*f) (b*g) (c*e) (c*f) (c*g) (d*e) (d*f) (d*g) ----------------------------------- následuje sečtení pod sebou
Výsledek je stejný, jakoby se jednalo o součin dvou polynomů. (Koeficienty násobených polynomů by představovaly dvě konvoluované řady, koeficienty součinu polynomů by odpovídaly výsledku konvoluce.)
Konkrétní čísla:
(1, 2, -2, -1) * (1, -1, 2) = = 1 -1 2 2 -2 4 -2 2 -4 -1 1 -2 ------------------ (1, 1,-2, 5,-3,-2)
Jinou možností výpočtu je použití maticového násobení.
Konkrétní čísla:
Využití v počítačové grafice
Konvoluce se často používá při algoritmech zpracování dvourozměrného diskrétního obrazu v počítačové grafice. Vzorec diskrétní konvoluce má potom tvar:
V případě diskrétní konvoluce lze jádro chápat jako tabulku (konvoluční maska), kterou položíme na příslušné místo obrazu. Každý pixel překrytý tabulkou vynásobíme koeficientem v příslušné buňce a provedeme součet všech těchto hodnot. Tím dostaneme jeden nový pixel.
Například mějme konvoluční masku o rozměru 3×3 (bude překryto 9 pixelů) a všechny buňky mají koeficient 0,111 (1/9). Nový pixel, který vypočteme po aplikaci na jedno místo v původním obraze, tedy bude průměrem z devíti okolních pixelů. Neudělali jsme totiž nic jiného, než že jsme sečetli hodnoty 9 pixelů a vydělili 9. Pokud aplikujeme konvoluci na celý obraz, pak dostaneme rozostřený obraz. Pokud použijeme větší konvoluční masku 5×5 s koeficienty 1/25, pak bude obraz rozostřen více.
Koeficienty uvnitř konvoluční masky udávají vliv hodnoty pixelu pod nimi. Lze tak nadefinovat velké množství operací, např. derivace obrazu (u diskrétního obrazu mluvíme o tzv. odhadu derivace), tedy zvýraznění hran (viz detekce hran).
Externí odkazy
- Obrázky, zvuky či videa k tématu konvoluce na Wikimedia Commons