Я немного в затруднительном положении - я слишком глубоко, чтобы быстро применить другую технику, так что ничего не выйдет...
Я отслеживаю линии, сопоставляя каждую строку матрицы со строкой ниже и беря максимум корреляции для вычисления смещения. Это работает очень хорошо, ЗА ИСКЛЮЧЕНИЕМ случаев, когда сигналы находятся на краю домена. Это просто дает 0. Я подозреваю, что это потому, что выгодно просто добавлять на место, а не сдвигать 0 к краю. Вот несколько примеров сигналов, которые вызывают проблему. Эти сигналы не имеют нулевого среднего, но они есть, когда я коррелирую (я вычитаю среднее значение). Я получаю правильное смещение для третьего изображения, но не для первых двух.
Вот мой код корреляции
x0 -= mean(x0)
x1 -= mean(x1)
x0 /= max(x0)
x1 /= max(x1)
c = signal.correlate(x1, x0, mode='full')
m = interp_peak_offset(c)
foffset =(m - len(x0) + 1) * (f[2] - f[1])
Я пробовал обрезать один из сигналов по 20 сэмплов с каждой стороны, коррелировать градиент сигнала и некоторые другие шаткие методы, но безуспешно...
Любая помощь приветствуется! Большое спасибо!