где — изображение после применения свёртки, — ядро свёртки, — изначальное изображение, — произвольные границы свёртки. Стоит заметить, что операция будет применена в диапазоне от до и от до для координат и соответственно.
В зависимости от ядра, операция может создавать разные графические эффекты, такие как:
Каждый пиксель изображения, представляемый в виде вектора RGB-значений, умножается на ядро, после чего полученное значение вектора преобразуется в цвет, и устанавливается как пиксель нового изображения в соответствующих координатах. Данный алгоритм может быть выражен в виде псевдокода:
для каждой строки пикселей в изображении:
для каждого пикселя строки в строке пикселей:
переменная буфер = 0
для каждой строки элементов в ядре:
для каждого элемента ядра в строке элементов:
если позиция элемента ядра соответствует позиции пикселя строки тогда:
умножить элемент ядра на пиксель строки
добавить результат к буферу
конецеслиустановить значение буфера в пиксель выходного изображения
При применении алгоритма зачастую он предполагает наличие пикселей за границами изображений. В таком случае могут использоваться несколько методов для учёта этого случая:
Расширение
Расширение
Краевые пиксели экстраполируются за границы изображения, чтобы предоставить значения для матрицы
Зацикливание
Пиксели для матрицы берутся с противоположного края, «зацикливая» изображение
Обрезание
ЗацикливаниеЛюбой пиксель изображения, который предполагает выход матрицы за границы, пропускается. В таком случае размер конечного изображения отличен от размера изначального изображения
Постоянное значение
При выходе за границу используется постоянное значение цвета