logo

Koncept konvoluce

Konvoluce se používá pro mnoho věcí, jako je výpočet derivací, detekce hran, aplikování rozostření atd. a to vše se provádí pomocí „konvolučního jádra“. Konvoluční jádro je velmi malá matice a v této matici má každá buňka číslo a také kotevní bod.

přidávání řetězců java

Kotevní bod se používá ke zjištění polohy jádra vzhledem k obrázku. Začíná v levém horním rohu obrázku a pohybuje se postupně po každém pixelu. Jádro překrývá několik pixelů na každé pozici na obrázku. Každý pixel, který se překrývá, se vynásobí a poté sečte. A součet je nastaven jako hodnota aktuální pozice.

Koncept konvoluce

Konvoluce je proces, při kterém je každý prvek obrazu přidán k jeho místním sousedům a poté je vážen jádrem. Souvisí s formou matematické konvoluce.

V konvoluci matice neprovádí tradiční násobení matic, ale je označena *.

Předpokládejme, že existují dvě matice 3x3, jedna je jádro a druhá je obrazový kus. Při konvoluci se řádky a sloupce jádra převracejí a poté se násobí a poté se provádí sčítání. Prvky, které jsou přítomny ve středu matice, tj. v [2,2] obrázku, budou váženou kombinací matice obrázku a váhy budou dány jádrem. Podobně budou zváženy všechny ostatní prvky matice a poté budou vypočteny váhy.

Následuje pseudo kód pro popis procesu konvoluce:

 For each image row in input image: For each pixel in image row: Set accumulator to zero For each kernel row in kernel: For each element in kernel row: If element position corresponding* to pixel position then Multiply element value corresponding*to pixelvalue Add result to accumulator Endif Set output image pixel to accumulator 

Konvoluci lze vypočítat pomocí více smyček for. Ale použití for smyček způsobuje mnoho opakovaných výpočtů a také se zvětšuje velikost obrazu a jádra. Pomocí techniky diskrétní Fourierovy transformace lze výpočet konvoluce provést rychle. V této technice je celá operace konvoluce převedena na jednoduché násobení.

Při konvoluci nastává problém, když je jádro blízko okraje nebo rohů, protože jádro je dvourozměrné.

K překonání těchto problémů lze udělat následující věci:

  1. Jedny lze ignorovat
  2. V blízkosti okrajů lze vytvořit další pixely.

Další pixely lze vytvořit následujícími způsoby:

  1. Duplicitní okrajový pixel.
  2. Odrážet hrany
  3. Pixely lze kopírovat z druhého konce.