Свёртка изображений
Другие названия: image filtering, image convolution. Да-да, ровно то, что применяется в свёрточных нейронных сетях.
Считаем, что работаем с чёрно-белым изображением. То есть оно может быть представлено как двумерная матрица байт (прозрачности нет, метаданных нет).
Ядро свёртки — квадратная матрица нечётного, как правило небольшого, размера.
Пусть есть изображение произвольного размера и ядро свёртки размера . Пусть .
Тогда свёртка изображения ядром — это изображение (также матрица) , такая что.
Обратите внимание на то, что формула выше не учитывает обработку пикселей на краю изображения, которая может быть организована разными способами. |
Обратите внимание на то, фильтр можно представить как матрицу (часто чисел с плавающей точкой), а можно и как целочисленную матрицу и коэффициент перед ней. |
Если пиксель на краю, то возможно несколько вариантов.
-
Использовать дефолтное значение
-
Копировать край
-
Применять свёртку так, чтобы не было выхода за границу. Тогда размер выходного изображения будет меньше входного.
В нейронных сетях веса в матрице как раз таки "обучаются". Но существуют предопределённые ядра, выполняющие вполне конкретные операции: размытие, выделение границ. Больше примеров:
Обязательно порешайте упражнения. |