Konvolūciju izmanto daudzām lietām, piemēram, atvasinājumu aprēķināšanai, malu noteikšanai, izplūšanas lietošanai utt., un tas viss tiek darīts, izmantojot 'konvolūcijas kodolu'. Konvolūcijas kodols ir ļoti maza matrica, un šajā matricā katrai šūnai ir numurs un arī enkura punkts.
Enkura punkts tiek izmantots, lai zinātu kodola pozīciju attiecībā pret attēlu. Tas sākas attēla augšējā kreisajā stūrī un secīgi pārvietojas pa katru pikseļu. Kodols pārklājas ar dažiem pikseļiem katrā attēla pozīcijā. Katrs pikselis, kas pārklājas, tiek reizināts un pēc tam pievienots. Un summa tiek iestatīta kā pašreizējās pozīcijas vērtība.
java un šūpoles
Konvolūcija ir process, kurā katrs attēla elements tiek pievienots tā vietējiem kaimiņiem, un pēc tam to sver kodols. Tas ir saistīts ar matemātiskās konvolūcijas formu.
Programmā Convolution matrica neveic tradicionālo matricas reizināšanu, bet tā tiek apzīmēta ar *.
Pieņemsim, ka ir divas 3x3 matricas, viena ir kodols un otra ir attēla gabals. Konvolūcijā kodola rindas un kolonnas tiek apgrieztas, pēc tam tās tiek reizinātas un pēc tam tiek veikta summēšana. Elementi, kas atrodas matricas centrā, t.i., attēla [2,2], tiks svērta attēla matricas kombinācija, un svarus piešķirs kodols. Tāpat tiks svērti visi pārējie matricas elementi un pēc tam tiks aprēķināti svari.
Šis ir pseido kods, lai aprakstītu konvolūcijas procesu:
tējkarote vs ēdamkarote
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
Konvolūciju var aprēķināt, izmantojot vairākas cilpas. Bet cilpu izmantošana izraisa daudz atkārtotu aprēķinu, kā arī palielinās attēla un kodola izmērs. Izmantojot diskrētās Furjē transformācijas tehniku, var ātri aprēķināt konvolūciju. Šajā tehnikā visa konvolūcijas darbība tiek pārveidota par vienkāršu reizināšanu.
Konvolūcijas procesā problēma rodas, kad kodols atrodas netālu no malas vai stūriem, jo kodols ir divdimensiju.
Lai pārvarētu šīs problēmas, var veikt šādas darbības:
- Vienus var ignorēt
- Blakus malām var izveidot papildu pikseļus.
Papildu pikseļus var izveidot šādos veidos:
- Malas pikseļa dublikāts.
- Atspoguļo malas
- Pikseļus var kopēt no otra gala.