Документация Engee

Технические основы

Введение

Фильтр изображения может быть представлен следующей функцией:

где (i = 1,2). Обычно задаются условия и , где и  — целые числа, что позволяет гарантировать нечетный размер измерений фильтра. Как правило, равно , поэтому, если опустить нижние индексы, фильтр имеет размер . Поскольку область фильтра представляет сетку пространственных координат, фильтр часто называют маской и визуализируют как сетку.

Например, маску можно изобразить так:

Значения называют коэффициентами фильтра.

Свертка и корреляция

Есть две основополагающие и тесно связанные операции, часто применяемые при фильтрации изображений. Это дискретная корреляция и свертка.

Операция корреляции, обозначаемая символом , определяется в двух измерениях выражением

в то время как соответствующая операция свертки, обозначаемая символом , определяется в двух измерениях выражением

Так как цифровое изображение имеет конечную протяженность, обе эти операции не определены на его границах. В частности, для изображения размером , the function is only defined for and . На практике эта проблема решается путем искусственного расширения области изображения. Например, изображение можно дополнить нулями. Возможны и другие стратегии дополнения, которые более подробно рассматриваются в разделе Параметры этой документации.

Одномерный пример

Различие между корреляцией и сверткой проще всего понять, обратившись к одномерному примеру, взятому с некоторыми изменениями из работы [1]. Предположим, фильтр имеет следующие коэффициенты:

Рассмотрим дискретную функцию единичного импульса f: \{x \in \mathbb{Z} \mid 1 \le x \le 7 \} \rightarrow \{0,1\}, дополненную нулями. Эту функцию можно визуализировать как изображение:

Операцию корреляции можно рассматривать как проход по изображению и вычисление суммы произведений в каждой позиции. Например,

дает результат g: \{x \in \mathbb{Z} \mid 1 \le x \le 7 \} \rightarrow \mathbb{R}, который при визуализации в виде цифрового изображения выглядит так:

Операцию свертки можно рассматривать аналогичным образом за тем исключением, что фильтр повернут на 180 градусов. В частности,

дает результат , что равносильно

Вместо поворота маски фильтра можно повернуть и получить тот же результат свертки. На самом деле традиционная форма записи свертки предполагает поворот , а не . В случае симметричности свертка и корреляция дают один и тот же результат.

Двухмерный пример

Для двухмерного случая предположим, что фильтр имеет следующие коэффициенты:

и рассмотрим двухмерную дискретную функцию единичного импульса

дополненную нулями.

Операция корреляции дает такой результат:

а операция свертки такой:

Свертка и корреляция как умножение матриц

Дискретные операции свертки и корреляции можно также сформулировать как умножение матриц: один из входных объектов преобразуется в матрицу Теплица, а другой представлен в виде вектора столбцов. Например, рассмотрим функцию и фильтр . Тогда умножение матриц

эквивалентно свертке при условии, что граница дополнена нулями.

Чтобы представить многомерную свертку как умножение матриц, необходимо преобразовать многомерные массивы в векторы столбцов и далее действовать так же. Естественно, результат умножения матриц потребуется преобразовать в соответствующий многомерный массив.