Средний фильтр - это оконный фильтр линейного класса, который сглаживает сигнал (изображение). Фильтр работает как низкочастотный. Основная идея фильтра заключается в том, что любой элемент сигнала (изображения) принимает среднее значение по его окрестности.
Если у нас есть матрица m x n
, и мы хотим применить к ней средний фильтр с размером k
, то для каждой точки в матрице p:(i,j)
значение точки будет средним для всех точек в квадрат
Эта цифра для квадратного ядра фильтрации с размером 2
, что желтый квадрат - это пиксель, который должен быть усреднен, а вся сетка является квадратом соседних пикселей, что новое значение пикселя будет в среднем для них.
Проблема в том, что этот алгоритм очень медленный, особенно на больших изображениях, поэтому я подумал об использовании GPGPU
.
Вопрос теперь, как это можно реализовать в cuda, если это возможно?