Konvoluce

Z testwiki
Verze z 15. 2. 2025, 15:15, kterou vytvořil imported>MartinVitVavrik (Vlastnosti konvoluce: přebytečná tečka)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání
Konvoluce dvou signálů: obdélníkového pulsu a impulsní charakteristika RC článku. Výsledkem konvoluce je odezva RC článku na obdélníkový puls.

Konvoluce je v matematice binární operátor zpracovávající dvě funkce.

Spojitá konvoluce (značí se hvězdičkou) jednorozměrných funkcí f(x) a g(x) je definována vztahem:

(f*g)(x)=f(α)g(xα)dα

Funkci g(x) se říká konvoluční jádro. Hodnota konvoluce funkce f s jádrem g v bodě x je integrál ze součinu funkce f s otočenou funkcí konvolučního jádra (integrační proměnná α má v argumentu konvolučního jádra g(xα) záporné znaménko) posunutou do bodu x.

Pokud jde o konvoluci při zpracovávání obrazu, je funkce f(x) většinou zkoumaný obrázek a funkce g(x) nějaký filtr.

Vlastnosti konvoluce

Konvoluce má následující vlastnosti:

f*g=g*f
f*(g*h)=(f*g)*h
f*(g+h)=(f*g)+(f*h)
f*δ=δ*f=f,
kde δ je Diracova delta funkce (distribuce) (představující např. pulz jednotkové velikosti trvající nekonečně krátkou dobu):
δ(x)={0x0x=0,δ(x)dx=1
  • asociativita při násobení skalárem:
a(f*g)=(af)*g=f*(ag)a

Konvoluční teorém

Konvoluční teorém říká, že Fourierova transformace konvoluce dvou funkcí odpovídá součinu jejich Fourierových transformací:

(f*g)=[(f)][(g)]=FG,

kde (f) značí Fourierovu transformaci f:

[f(x)]F(k)f(x)exp(2πikx)dx.

Důkaz lze provést následovně:

h(z)(f*g)(z)=f(x)g(zx)dx
H(k)[h](k)=h(z)exp(2πikz)dz=[f(x)g(zx)dx]exp(2πikz)dz=f(x)[g(zx)exp(2πikz)dz]dx

Zavedeme substituci y=zx a tedy dy=dz:

H(k)=f(x)[g(y)exp(2πik(y+x))dy]dx=f(x)exp(2πikx)dxg(y)exp(2πiky)dy=F(k)G(k)

Diskrétní konvoluce

Diskrétní konvoluce dvou nekonečných řad je definována vztahem

(f*g)k =def i=figki=i=fkigi

V případě dvou konečných řad se nesčítá od do +, ale pouze přes existující prvky (případně si lze na pozici neexistujících prvků představit nuly). Výsledná řada je o jeden prvek kratší než je součet délek konvoluovaných řad.

Příklad

Příklad konvoluce čtyřprvkové a tříprvkové řady:

(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.

Příklad s konkrétními hodnotami:

(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)

Alternativně můžeme konvoluci zapsat pomocí maticového násobení:

[abcd]*[efg]=[abcd][efg0000efg0000efg0000efg]

Konkrétní hodnoty:

[1221]*[112]=[1221][112000011200001120000112]=[112532]

Využití v počítačové grafice

Konvoluce se často používá v algoritmech zpracování dvourozměrného diskrétního obrazu v počítačové grafice. Vzorec diskrétní konvoluce má potom tvar

(f*h)(x,y)=i=kkj=kkf(xi,yj)h(i,j).
Princip diskrétní dvourozměrné konvoluce

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 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

Šablona:Autoritní data