FFTW против OpenCV cvDFT

Могу ли я ожидать ускорения при использовании FFTW (http://www.fftw.org/) вместо cvDFT OpenCV (http://goo.gl/YCHj0)?

Время выполнения моей программы в значительной степени определяется применением обратного и прямого DFT, и я думаю об использовании FFTW вместо OpenCV cvDFT.

IIRC FFTW выполняет своего рода «компиляцию во время выполнения», тогда как cvDFT — это простая реализация FFT, поэтому я думаю, что это может немного ускорить мою обработку.

Поэтому, прежде чем я попробую это сам, я подумал спросить здесь, если кто-то наткнулся на тот же вопрос и решил его раньше.

заранее спасибо


person Arvid Terzibaschian    schedule 03.05.2012    source источник


Ответы (2)


Я использовал оба (OpenCV и FFTW), и вы можете ожидать, что FFTW будет быстрее, чем более простая реализация в OpenCV (конечно, насколько сильно зависит от вашего процессора и размеров изображения). Однако, если вы планируете использовать свое программное обеспечение в коммерческих целях, у FFTW довольно дорогая лицензия (7500 долларов США). В коммерческом случае я бы рекомендовал Intel IPP вместо FFTW, так как производительность аналогично с гораздо более доступной лицензией (199,00 долларов США) + вы получаете гораздо больше функций в IPP, чем с FFTW (т. Е. Только библиотека FFT).

Вот приведены несколько тестов между FFTW и различными конкурирующими библиотеками. Результаты немного устарели, но полезны для сравнения. Я не уверен, почему 2D-преобразования IPP не включены (возможно, когда эти тесты были сделаны, их еще не было).

Если вы пойдете по маршруту IPP, вы можете создать OpenCV с поддержкой IPP, и он заменит собственную реализацию cvDFT эквивалентом IPP. Это даст вам хороший прирост производительности (особенно на чипах Intel), и вам не придется менять свой код.

person mevatron    schedule 03.05.2012
comment
Большое спасибо! Сначала попробую перекомпилировать IPP. Тем не менее, нужно проверить эти проблемы с лицензированием. - person Arvid Terzibaschian; 04.05.2012
comment
Без проблем! Надеюсь, вы обнаружите, что IPP достаточно быстр для ваших нужд! Скорее всего, он будет работать лучше всего на последних чипах Intel Core-i7. - person mevatron; 04.05.2012

Более актуальное и довольно хорошо сделанное сравнение между несколькими вариантами БПФ, есть довольно быстрые и бесплатные варианты:

https://github.com/project-gemmi/benchmarking-fft

person Kaaf    schedule 15.09.2020