Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Цифра / ЦОСиИ_2014_2015_заочн / ЦОСиИ_лаб_3.docx
Скачиваний:
118
Добавлен:
18.05.2015
Размер:
220.36 Кб
Скачать

Лабораторная работа №3. Алгоритмы свертки и корреляции на основе БПФ

Цель: Изучение алгоритмов свертки и корреляции на основе БПФ. Программная реализация данных алгоритмов для одномерного сигнала.

Программное обеспечение: MS Visual Studio, OpenCV 2.4.0.

Теория

Корреляция

Пусть две последовательности данных, выбираются одновременно из двух соответствующих сигналов. Тогда меру их корреляции можно вычислить, взяв сумму произведений соответствующих пар точек. Отрицательная сумма указывает на отрицательную корреляцию, т. е. увеличение одной переменной связано с уменьшением другой. Таким образом, взаимную корреляцию двух последовательностей данных и , содержащих по N элементов можно описать так

(1)

Однако такое определение взаимной корреляции дает результат, который зависит от числа взятых точек. Поэтому используют нормированное значение (деленное на N):

(2)

Пример 1.

Найти корреляцию 2-ух последовательностей

Решение

В некоторых случаях корреляция, определенная по формуле 2, может быть нулевой, хотя две последовательности коррелируют на 100%. Это может произойти, например, когда два сигнала идут не в фазе (рисунок 1).

Рисунок 1 – Сигналы со 100% корреляцией, идущие не в фазе, - при нулевой задержке корреляция равна 0

Разность фаз может, например, объясняться тем, что - некий эталонный сигнал, а - запаздывающий выход схемы. Чтобы преодолеть подобный сдвиг фаз, необходимо сдвинуть (или задержать) один сигнал относительно другого. Обычно, чтобы выровнять сигналы перед определением корреляции, смещается влево. Как показано на рисунке 2, это эквивалентно замене на , где j – величина задержки, т.е. число точек выборки, на которое смещается влево.

Рисунок 2 – Сигнал , смещенный на j промежутков времени влево от сигнала

Альтернативной и эквивалентной процедурой является смещение вправо. В результате получаем такую формулу для взаимной корреляции:

(3)

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

Пример 2.

Найти корреляцию 2-ух последовательностей, изображенных на рис.2, с задержкой j=3:

Решение

В примере 2 при смещении влево сигналы уже не перекрываются, и данные в конце последовательностей не формируют парные произведения – возникает так называемый краевой эффект. В рассмотренном примере число пар при задержке 3 уменьшилось с 9 до 6. В результате наблюдалось линейное уменьшение при увеличении j. Одно из возможных решений возникшей проблемы заключается в том, чтобы длину одной последовательности сделать в два раза больше, длины, необходимой для нахождения корреляции. Для этого можно записать больше данных или, если одна из последовательностей периодична, повторить последовательность. Другое возможное решение – скорректировать рассчитанное значение корреляции на величину [1]:

(4)

Значения функции взаимной корреляции вычисляются согласно приведенным выше формулам в зависимости от абсолютных значений данных. Часто бывает необходимо измерить взаимную корреляцию в фиксированном диапазоне [-1;+1]. Чтобы определить значения из указанного диапазона, полученные величины нормируют на величину, зависящую от энергетического содержания данных.

Пример 3.

Например, рассмотрим две пары сигналов:

n

0

1

2

3

4

5

6

7

8

0

3

5

5

5

2

0,5

0,25

0

1

1

1

1

1

0

0

0

0

0

9

15

15

15

6

1,5

0,75

0

2

2

2

2

2

0

0

0

0

Рисунок 3 – Пары сигналов и ; и различных амплитуд, но с равными взаимными корреляциями

Как показано на рисунке 3 сигналы и подобны и отличаются только амплитудой. То же справедливо для пары и . В то же время, параметры корреляции и равны соответственно 1,47 и 8,83. Они отличаются, поскольку зависят от абсолютных значений элементов данных. Чтобы поправить эту ситуацию, нормируем взаимную корреляцию на коэффициент

(4)

И подобным образом нормируем . В результате нормированное выражение для приобретает такую форму:

(5)

Величина известна как коэффициент взаимной корреляции. Значение этого коэффициента всегда лежит между -1 и +1, причем “+1” означает 100% -ную корреляцию в прямом смысле, “-1” – 100% -ную корреляцию в противоположном смысле, например, как для сигналов в противофазе. Значение “0” указывает на нулевую корреляцию. Это означает, что сигналы совершенно независимы, например, если один из сигналов абсолютно случаен. Малые значения коэффициента указывают на незначительную корреляцию. Нормировочные коэффициенты для сигналов из примера 3 равны:

Для :

Для :

Тогда и .

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

Быстрая корреляция

Расчет корреляции можно ускорить, используя теорему о корреляции, которая формулируется следующим образом:

(4)

где обозначает ОДПФ.

Данный подход требует выполнения 2-ух ДПФ и одного ОДПФ. Если число членов в последовательностях достаточно велико, данный метод расчета корреляции с помощью БПФ дает результат быстрее, чем непосредственный расчет взаимной корреляции.

Пример 4.

Используя теорему о корреляции найти взаимную корреляцию 2-ух последовательностей:

Тогда

Теперь необходимо к этому результату применить ОДПФ:

  1. Далее из уравнения (4) получаем:

Эта корреляция будет круговой, поскольку все данные периодичны с периодом N.

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

Следовательно, если последовательность имеет длину , а - , то дополняется нулями, а - нулями. Далее на основе двух расширенных последовательностей рассчитывается взаимная корреляция. Этот метод вычисления взаимной корреляции с помощью теоремы о корреляции и БПФ называется быстрой корреляцией.

Свертка

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

(5)

Значения выходных отсчетов свертки (5) для любого аргумента k определяются текущим и "прошлыми" значениями входных отсчетов. Такой фильтр называется не рекурсивным цифровым фильтром (НЦФ). Интервал суммирования по n получил название "окна" фильтра. Окно фильтра составляет N+1 отсчет. Графически процесс вычисления свертки массива данных с массивом коэффициентов фильтра представлен на рисунке 4.

Рисунок 4 – Вычисление свертки массива данных с массивом коэффициентов фильтра

Связь между сверткой и корреляцией

Сравнивая процесс вычисления взаимной корреляции и свертки, можно заметить, что одна из последовательностей в функции взаимной корреляции идет в обратном порядке, по сравнению с тем как она идет в свертке. Следовательно, свертка эквивалентна функции взаимной корреляции двух сигналов, в которой одна из исходных последовательностей обращена во времени, а нормировочный коэффициент 1/N равен 1.

Быстрая линейная свертка Аналогично, теореме о корреляции, существует подобная теорема о свертке, позволяющая с использованием бпф ускорить вычисление свертки:

(6)

где обозначает ОДПФ;

- ДПФ-образ ;

- ДПФ-образ ;

- периодические последовательности длинны N.

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

Следовательно, если последовательность имеет длину , а - , то дополняется нулями, а - нулями. После этого обе последовательности получат равную длину , и будет вычислено правильное значение линейной свертки.