Линейная фильтрация OpenCV

OpenCV

Линейная фильтрация

Фильтрация изображений и фильтры

Фильтрация изображения относится к подавлению шума целевого изображения при максимально возможном сохранении характеристик изображения и является неотъемлемой частью обработки изображения.

Технология фильтрации в пространственной области для плавного улучшения низких частот в студии преследует две цели: во-первых, размытие, а во-вторых, устранение шума. Общие фильтры:

  • Блочная фильтрация -- функция BoxBlur
  • Средняя фильтрация -- функция размытия
  • Фильтр Гаусса -- функция Gaussianblur
  • Медианный фильтр -- функция mediaBlur
  • Двусторонняя фильтрация -- функция двустороннего фильтра

Введение в линейную фильтрацию

Линейная фильтрация часто используется для удаления нежелательных частот из входного сигнала или для выбора желаемой частоты из множества частот.

  • Фильтр нижних частот пропускает низкие частоты
  • Фильтр высоких частот пропускает высокие частоты.
  • Полосовой фильтр пропускает определенный диапазон частот
  • Полосовой фильтр пропускает определенный диапазон частот и блокирует прохождение других частот.
  • All-pass filter пропускает все частоты, изменяя только фазу
  • Режекторный фильтр блокирует узкий частотный диапазон от прохождения

Фильтр и размытие

  • Фильтрация Гаусса относится к операции фильтрации, которая использует функцию Гаусса в качестве функции фильтрации;
  • Размытие по Гауссу — это фильтр нижних частот по Гауссу.

Операторы окрестности и линейная фильтрация окрестности

Оператор соседства — это оператор, который использует значения пикселей вокруг заданного пикселя для определения конечного выходного значения этого пикселя. Линейная фильтрация является распространенным оператором соседства.

卷积核卷积

Выходное значение пикселя g(i, j) процесса линейной фильтрации представляет собой взвешенную сумму значений входных пикселей f(i + k, j + I) следующим образом:

加权值和

Среди них h(k,l), назовем его «ядро», — весовой коэффициент фильтра, то есть «коэффициент фильтрации» фильтра,fпредставляет значение входного пикселя,hпредставляет весовой коэффициент «ядро»,gПредставляя значение выходного пикселя, все можно просто записать как:

卷积公式简单表达

常见的线性滤波操作

  • Блочная фильтрация -- функция boxblur
  • Средний фильтр -- функция размытия
  • Фильтр Гаусса -- функция GaussianBlur

блочный фильтр

void boxFilter(
    InputArray src,
    OutPutArray dst,
    int ddepth,  //输出图像的深度,-1表示原图深度
    Size ksize,  //内核的大小
    Point anchor = Point(-1,-1),  //表示锚点,即平滑的那个点
    boolnormalize = true,  //一个标识符,表示内核是否被其区域归一化
    int borderType = BORDER_DEFAULT  //用于推断图像外部像素的某种边界模式
)

Когда normalize=true, блочный фильтр становится знакомым нам средним фильтром, а средний фильтр является частным случаем нормализации блочного фильтра.

方框滤波

Эффект

Размер ядра(5,5) Размер ядра(7,7)
内核大小(5,5)
内核大小(7,7)

средний фильтр

Фильтрацию среднего также называют линейной фильтрацией, и ее основным методом является метод усреднения по окрестностям. Основной принцип линейной фильтрации заключается в замене каждого значения пикселя в исходном изображении средним значением, то есть текущей обрабатываемой точкой пикселя (x, y), выберите шаблон, шаблон состоит из нескольких пикселей его соседей, и найти значение всех пикселей в шаблоне Среднее значение, а затем присвоить среднее значение текущей точке пикселя (x, y) как шкале серого g(x, y) обработанного изображения в этой точке, что g(x, y)=1/m ∑f(x, y) m — общее количество пикселей в шаблоне, включая текущий пиксель.

void blur(
    InputArray src,
    OutPutArray dst,
    Size ksize,  //内核的大小
    Point anchor = Point(-1,-1),  //表示锚点,即平滑的那个点
     int borderType = BORDER_DEFAULT  //用于推断图像外部像素的某种边界模式
)

均值滤波

фильтр Гаусса

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

void GaussianBlur(
    InputArray src,
    OutPutArray dst,
    Size ksize,  //高斯内核的大小
    double sigmax,   //表示高斯函数在X方向的标准偏差
    double sigmay = 0,  //表示高斯函数在Y方向的标准偏差
    int borderType = BORDER_DEFAULT  //用于推断图像外部像素的某种边界模式
)

一维高斯函数

一维高斯函数

二维高斯函数

二维高斯函数

Эффект

Гауссовский размер ядра (5,5) Гауссовский размер ядра (9,9)
高斯内核大小(5,5)
高斯内核大小(9,9)