logo

Поняття згортки

Згортка використовується для багатьох речей, таких як обчислення похідних, виявлення країв, застосування розмиття тощо, і все це робиться за допомогою «ядра згортки». Ядро згортки — це дуже маленька матриця, і в цій матриці кожна комірка має число, а також точку прив’язки.

Точка прив’язки використовується для визначення положення ядра відносно зображення. Він починається у верхньому лівому куті зображення та послідовно переміщується на кожен піксель. Ядро перекриває декілька пікселів у кожній позиції на зображенні. Кожен піксель, який перекривається, множиться, а потім додається. А сума встановлюється як значення поточної позиції.

Поняття згортки

Згортка — це процес, у якому кожен елемент зображення додається до його локальних сусідів, а потім зважується ядром. Це пов’язано з формою математичної згортки.

У Convolution матриця не виконує традиційне множення матриць, але позначається *.

Припустимо, є дві матриці 3x3, одна є ядром, а інша є частиною зображення. Під час згортки рядки та стовпці ядра перевертаються, потім перемножуються, а потім виконується підсумовування. Елементи, які присутні в центрі матриці, тобто в [2,2] зображення, будуть зваженою комбінацією матриці зображення, а ваги будуть задані ядром. Подібним чином, усі інші елементи матриці будуть зважені, а потім будуть обчислені ваги.

Нижче наведено псевдокод для опису процесу згортання:

 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 

Згортку можна обчислити за допомогою кількох циклів for. Але використання циклів for викликає багато повторних обчислень, а також збільшується розмір зображення та ядра. Використовуючи техніку дискретного перетворення Фур’є, обчислення згортки можна виконати швидко. У цій техніці вся операція згортки перетворюється на просте множення.

У згортці проблема виникає, коли ядро ​​знаходиться біля краю або кутів, оскільки ядро ​​є двовимірним.

Щоб подолати ці проблеми, можна зробити наступне:

  1. Одиниці можна ігнорувати
  2. Біля країв можна створити додаткові пікселі.

Додаткові пікселі можна створити такими способами:

  1. Дубльований крайовий піксель.
  2. Відбивати краї
  3. Пікселі можна скопіювати з іншого кінця.