Свёртка изображений

Другие названия: image filtering, image convolution. Да-да, ровно то, что применяется в свёрточных нейронных сетях.

Считаем, что работаем с чёрно-белым изображением. То есть оно может быть представлено как двумерная матрица байт (прозрачности нет, метаданных нет).

Ядро свёртки — квадратная матрица нечётного, как правило небольшого, размера.

Пусть есть изображение произвольного размера и ядро свёртки размера . Пусть .

Тогда свёртка изображения ядром  — это изображение (также матрица) , такая что.

Обратите внимание на то, что формула выше не учитывает обработку пикселей на краю изображения, которая может быть организована разными способами.
Обратите внимание на то, фильтр можно представить как матрицу (часто чисел с плавающей точкой), а можно и как целочисленную матрицу и коэффициент перед ней.

Если пиксель на краю, то возможно несколько вариантов.

  • Использовать дефолтное значение

  • Копировать край

  • Применять свёртку так, чтобы не было выхода за границу. Тогда размер выходного изображения будет меньше входного.

В нейронных сетях веса в матрице как раз таки "обучаются". Но существуют предопределённые ядра, выполняющие вполне конкретные операции: размытие, выделение границ. Больше примеров:

Обязательно порешайте упражнения.