logo

Konvolúció fogalma

A konvolúciót sok mindenre használják, mint például deriváltak kiszámítására, élek észlelésére, elmosódások alkalmazására stb., és mindezt egy „konvolúciós kernel” segítségével végzik. A konvolúciós kernel egy nagyon kicsi mátrix, és ebben a mátrixban minden cellának van egy száma és egy rögzítési pontja is.

A rögzítési pontot arra használjuk, hogy ismerjük a rendszermag helyzetét a képhez képest. A kép bal felső sarkától kezdődik, és az egyes pixeleken egymás után mozog. A kernel a kép minden pozíciójában néhány pixel átfedésben van. Minden átfedésben lévő pixelt megszoroz, majd hozzáad. És az összeg az aktuális pozíció értékeként van beállítva.

Konvolúció fogalma

A konvolúció az a folyamat, amelyben a kép minden elemét hozzáadják a helyi szomszédokhoz, majd a kernel súlyozza azokat. Ez a matematikai konvolúció egyik formájához kapcsolódik.

A konvolúcióban a mátrix nem hajtja végre a hagyományos mátrixszorzást, hanem *-gal van jelölve.

Tegyük fel, hogy van két 3x3-as mátrix, az egyik kernel, a másik pedig egy képdarab. A konvolúció során a kernel sorait és oszlopait átfordítják, majd megszorozzák, majd összegzést hajtanak végre. Azok az elemek, amelyek a mátrix közepén, azaz a kép [2,2] részében vannak, a képmátrix súlyozott kombinációja lesz, és a súlyokat a kernel adja meg. Hasonlóképpen, a mátrix összes többi eleme súlyozásra kerül, majd a súlyok kiszámításra kerülnek.

A következő pszeudokód a konvolúciós folyamat leírására szolgál:

 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 

A konvolúció kiszámítható többszörös for ciklus használatával. A for ciklusok használata azonban sok ismételt számítást okoz, és a kép és a kernel mérete is megnő. A Discrete Fourier Transform technikával a konvolúció kiszámítása gyorsan elvégezhető. Ennél a technikánál a teljes konvolúciós műveletet egyszerű szorzássá alakítják.

A konvolúció során a probléma akkor jelentkezik, ha a kernel a széléhez vagy a sarkokhoz közel van, mivel a kernel kétdimenziós.

Ezeknek a problémáknak a leküzdése érdekében a következőket lehet tenni:

  1. Az egyiket figyelmen kívül lehet hagyni
  2. A szélek közelében további képpontok hozhatók létre.

További képpontok a következő módokon hozhatók létre:

  1. Az élpixel megkettőzése.
  2. Tükrözik a széleket
  3. A pixelek a másik végéről másolhatók.