Вопрос:

FFTW против OpenCV cvDFT

opencv runtime fftw dft

4068 просмотра

2 ответа

75 Репутация автора

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

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

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

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

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

Автор: Arvid Terzibaschian Источник Размещён: 03.05.2012 05:45

Ответы (2)


12 плюса

11863 Репутация автора

Решение

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

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

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

Автор: mevatron Размещён: 03.05.2012 06:20

0 плюса

1 Репутация автора

Я заменил OpenFX на FFT (как и здесь ), но он стал медленнее! (OpenCV занял 35 мс, а FFTW - 220 мс!)

Чем медленнее производительность FFTW была также сообщили здесь .

Странно то, что fft2 MATLAB был зарегистрирован намного быстрее, чем DFT OpenCV, из-за использования FFTW ( ссылка ).

Если кто-то нашел более быстрый 2D FFT на C ++, сообщите об этом здесь.

Автор: user8120852 Размещён: 03.11.2018 08:33
Вопросы из категории :
32x32