LINUX.ORG.RU

В Matlab - XCORR2 http://matlab.exponenta.ru/imageprocess/book3/9/xcorr2.php

В Scilab проще всего через fft2 (Scilab/help_ brouser/signal_processing/twu-dimension_Fast_fourier_transform)

P.S. Иногда для кросс-корреляции ( http://alglib.sources.ru/fasttransforms/crosscorrelation.php ) вместо Фурье используют быстрые алгоритмы Хаара, Уолша, Уолша-Адамара, Уолша-Пэли, ...

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Двумерное БПФ в scilab не осилил — в пакете нет обратного преобразования как в матлабе ifft2.

Переписал из Octave функции conv2 и xcorr2 :)

А за ALGLIB спасибо, полезно!

CBP
() автор топика
Ответ на: комментарий от CBP

на пальцах объяснить алгоритм ВКФ для двумерных матриц

1. Получаем при помощи какого-нибудь алгоритма БПФ Фурье-образы обеих матриц A1=F(a1), A2=F(a2)

2. Перемножаем эти образы почленно (с учетом того, что они являются комплексными функциями): C_i = A1_i * A2_i

3. Получаем ВКФ как обратное БПФ от C: c = F^{-1}(C).

Двумерное Фурье реализуется через одномерные, исходя из определения: сначала находим Фурье-образы каждой строки (или столбца) матрицы, затем получаем итоговое двумерное преобразование как Фурье-образы по столбцам (или строкам) полученной на предыдущем шаге матрицы.

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

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.