Ядро свертки

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

В цифровой обработке изображений ядро свёртки, маска, свёрточная матрица — матрица для размытия, выделения границ изображения и других эффектов. Данные эффекты достигаются путем свёртки ядра и изображения, где каждый пиксель интерпретируется как трёхмерный RGB-вектор.

Детали[править | править код]

Свёртка ядра и изображения выражается формулой

,

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

В зависимости от ядра, операция может создавать разные графические эффекты, такие как:

Операция Ядро Изображение
Тождественное отображение
Выделение границ
Резкость
Размытие по Гауссу (3 х 3)
Тиснение

Алгоритм[править | править код]

Каждый пиксель изображения, представляемый в виде вектора RGB-значений, умножается на ядро, после чего полученное значение вектора преобразуется в цвет, и устанавливается как пиксель нового изображения в соответствующих координатах. Данный алгоритм может быть выражен в виде псевдокода:

для каждой строки пикселей в изображении:
   для каждого пикселя строки в строке пикселей:
       переменная буфер = 0
       для каждой строки элементов в ядре:
           для каждого элемента ядра в строке элементов:
               если позиция элемента ядра соответствует позиции пикселя строки тогда:
                   умножить элемент ядра на пиксель строки
                   добавить результат к буферу
               конецесли
       установить значение буфера в пиксель выходного изображения

Обработка краев[править | править код]

При применении алгоритма зачастую он предполагает наличие пикселей за границами изображений. В таком случае могут использоваться несколько методов для учёта этого случая:

Расширение
Расширение
Краевые пиксели экстраполируются за границы изображения, чтобы предоставить значения для матрицы
Зацикливание
Пиксели для матрицы берутся с противоположного края, «зацикливая» изображение
Обрезание
Зацикливание
Любой пиксель изображения, который предполагает выход матрицы за границы, пропускается. В таком случае размер конечного изображения отличен от размера изначального изображения
Постоянное значение
При выходе за границу используется постоянное значение цвета