logo

Konvoliucijos samprata

Konvoliucija naudojama daugeliui dalykų, pavyzdžiui, apskaičiuojant išvestines, aptinkant briaunas, taikant suliejimus ir tt ir visa tai daroma naudojant „konvoliucijos branduolį“. Konvoliucijos branduolys yra labai maža matrica ir šioje matricoje kiekviena ląstelė turi skaičių ir tvirtinimo tašką.

Tvirtinimo taškas naudojamas norint sužinoti branduolio padėtį vaizdo atžvilgiu. Jis prasideda viršutiniame kairiajame vaizdo kampe ir paeiliui juda kiekviename pikselyje. Branduolys perdengia kelis pikselius kiekvienoje vaizdo pozicijoje. Kiekvienas persidengęs pikselis padauginamas ir pridedamas. Ir suma nustatoma kaip dabartinės padėties vertė.

Konvoliucijos samprata

Konvoliucija yra procesas, kurio metu kiekvienas vaizdo elementas pridedamas prie vietinių kaimynų, o tada jį įvertina branduolys. Tai susiję su matematinės konvoliucijos forma.

Konvoliucijoje matrica neatlieka tradicinės matricos daugybos, tačiau ji žymima *.

Tarkime, yra dvi 3x3 matricos, viena yra branduolys, o kita - vaizdo gabalas. Konvoliucijos metu branduolio eilutės ir stulpeliai apverčiami, tada jie padauginami, o tada sumuojama. Elementai, esantys matricos centre, t. y. vaizdo [2, 2], bus svertinis vaizdo matricos derinys, o svorius pateiks branduolys. Panašiai bus pasverti visi kiti matricos elementai ir tada apskaičiuojami svoriai.

Toliau pateikiamas pseudo kodas, apibūdinantis konvoliucijos procesą:

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

Konvoliuciją galima apskaičiuoti naudojant kelias kilpas. Tačiau naudojant for ciklus, daug kartų skaičiuojama, taip pat padidėja vaizdo ir branduolio dydis. Naudojant diskrečiosios Furjė transformacijos techniką, galima greitai apskaičiuoti konvoliuciją. Taikant šią techniką, visa konvoliucijos operacija paverčiama paprastu daugyba.

Konvoliucijos metu problema kyla, kai branduolys yra šalia krašto arba kampų, nes branduolys yra dvimatis.

Norėdami išspręsti šias problemas, galite atlikti šiuos veiksmus:

  1. Vienus galima ignoruoti
  2. Prie kraštų galima sukurti papildomų pikselių.

Papildomi pikseliai gali būti sukurti šiais būdais:

  1. Pasikartojantis krašto pikselis.
  2. Atspindi kraštus
  3. Pikselius galima kopijuoti iš kito galo.