OpenCv FFT i Matlab FFT

OpenCv FFT i Matlab FFT
KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Próbuję przetłumaczyć kod matlabowy do OpenCV. Ale za nic nie mogę dostać zbieżnych wyników, kiedy przychodzi do liczenia FFT.
W matlabie:
x = fft(x,[],1)
gdzie x to jakaś macierz (załóżmy, że trójwymiarowa). Na moje rozumienie ta linijka liczy transformatę fouriera ze względu na pierwszy wymiar macierzy i nie zmienia wielkości macierzy, bo zadana ilość punktów dla transformaty jest równa ilości punktów w wierszu.
W OpenCV powinno więc to wyglądać również jednolinijkowo,bez dopełniania zerami:

Kopiuj
Mat fourier;
dft(x,fourier, DFT_ROWS); 

Niestety obie metody dają diametralnie różne wyniki. Czy ktoś poratuje, co robię nie tak? Nie wykluczam, że błąd może wynikać z braku ogarnięcia samego algorytmu FFT...

B1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

Przeczytaj dokumentacje tych funkcji, bo chyba sposób w jaki ich używasz może dawać różne rezultaty.
http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#dft
http://www.mathworks.com/help/matlab/ref/fft.html

KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Odpowiedź była prosta: Matlab robi transformacje po kolumnach. Żeby uzyskać e same wyniki trzeba zarządzić transpozycję przed i po dft.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.