среда, 3 марта 2010 г.

Свёртка


Свертка (англ. convolution) — это операция, показывающая «схожесть» одной функции с отражённой и сдвинутой копией другой.
Java апплет, илюстрирующий функцию свёртки

На одном из форумов нашла более простое для понимание описание:
Есть два сигнала во времени. 1-й и 2-й. Задача: определить, похож ли 1-й сигнла на 2-й и в каких местах.Для этого производим свёртку сигналов.
Операция свёртки это зависимость интеграла по времени произведения 1-го сигнала на 2-й от сдвига по времени второго сигнала относительно первого.
Для свёртки берётся копия первого сигнала. К ней прикладывается копия второго сигнала с определённым сдвигом. Копии сигналов перемножаются. Берётся интеграл по времени от этого перемножения.
Значение интеграла наносится на график напротив выбранного сдвига. Затем сдвиг меняется, сигналы опять перемножаются. Опять берётся интеграл от произведения сигналов и наносится на график. Так повторяем для всех значений сдвигов. Полученый график и будет свёрткой.

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

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

Комментариев нет: