Как применить фазовую корреляцию в одномерном сигнале?

Логополярное преобразование обычно используется в изображении с фазовой корреляцией с использованием преобразования Фурье для оценки вращения и трансляции и т. Д. Однако я немного не понимаю, как применять его в аудиосигнале. Я пытаюсь оценить временной сдвиг между двумя аудиосигналами с помощью логарифмического полярного преобразования (LPT) и фазовой корреляции. Я применил LPT, используя https://en.wikipedia.org/wiki/Log-polar_coordinates в звуковом сигнале и плоттере с использованием Matlab с полярным (theta, rho), пока здесь нет проблем, проблема в том, что я не уверен, как применить фазовую корреляцию для этого преобразованного сигнала. Спасибо.


person pcu    schedule 23.02.2016    source источник


Ответы (1)


Фазовая корреляция есть не только для 2D. То же самое можно использовать и с одномерными сигналами. В частности, ваши два аудиосигнала уже находятся во временной области, а вы просто хотите знать временной сдвиг между ними.

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

Вот пример на Python:

import numpy as np

# sig1, sig2 = your audio signals
# ...
fft_sig1 = np.fft.fft(sig1)
fft_sig2 = np.fft.fft(sig2)
fft_sig2_conj = np.conj(fft_sig2)

R = (fft_sig1 * fft_sig2_conj) / abs(fft_sig1 * fft_sig2_conj)
r = np.fft.ifft(R)

time_shift = np.argmax(r)
print('time shift = %d' % (time_shift))

Удачи!

person Youngsun Kim    schedule 24.02.2016
comment
Спасибо. Однако я знаю упомянутый вами метод. - person pcu; 25.02.2016