2012-05-03 24 views
6

Czy mogę oczekiwać przyspieszenia podczas używania FFTW (http://www.fftw.org/) zamiast cvDFT OpenCV (http://goo.gl/YCHj0)?FFTW vs. OpenCV cvDFT

Środowisko uruchomieniowe mojego programu jest silnie zdeterminowane przez zastosowanie odwrotnego i przyszłego DFT i myślę o używaniu FFTW zamiast OpenVV cvDFT.

IIRC FFTW wykonuje pewnego rodzaju "kompilację środowiska wykonawczego", podczas gdy cvDFT jest prostą implementacją FFT, więc myślę, że mogłoby przyspieszyć przetwarzanie.

Więc zanim sam tego wypróbuję, pomyślałem o tym tutaj, na wypadek gdyby ktoś potknął się o to samo pytanie i rozwiązał je wcześniej.

góry dzięki

Odpowiedz

11

Użyłem zarówno (OpenCV i FFTW) i można się spodziewać FFTW się szybciej niż prostszej implementacji w OpenCV (ile zależy wiele od procesora i rozmiarów obrazu, oczywiście). Jeśli jednak planujesz używać komercyjnego oprogramowania, FFTW ma dość drogie prawo jazdy (7500,00 $). W przypadku komercyjnym polecam Intel's IPP przez FFTW, ponieważ wydajność jest podobna w przypadku znacznie tańszej licencji (199,00 USD) + masz znacznie większą funkcjonalność w IPP niż w przypadku FFTW (tj. Tylko biblioteka FFT).

Here to kilka benchmarków między FFTW i różnymi bibliotekami konkurentów. Wyniki są stare, ale przydatne do porównania. Nie jestem pewien, dlaczego transformacje IPP 2D nie są uwzględnione (być może, gdy te testy zostały wykonane, nie istniały jeszcze).

Jeśli przejdziesz na trasę IPP, możesz zbudować OpenCV z obsługą IPP i zastąpi natywną implementację cvDFT z odpowiednikiem IPP. Zapewni to przyjemny wzrost wydajności (szczególnie w przypadku układów Intela) i nie trzeba zmieniać kodu.

+0

Wielkie dzięki! Najpierw spróbuję rekompilacji IPP. Jednak musisz sprawdzić te problemy z licencjonowaniem. –

+0

Nie ma problemu! Mam nadzieję, że IPP jest wystarczająco szybki dla twoich potrzeb! Najprawdopodobniej będzie działać najlepiej na najnowszych procesorach Intel Core-i7. – mevatron