Спасибо за ответ. Пожалуйста, смотрите мой Изменить в вопросе.

я есть текущая реализация Gaussian Blur с использованием регулярной свертки. Он достаточно эффективен для небольших ядер, но как только размер ядра становится немного больше, производительность падает. Итак, я думаю реализовать свертку с использованием БПФ. У меня никогда не было опыта обработки изображений, связанных с БПФ, поэтому у меня есть несколько вопросов.

Можно ли разделить свертку на основе 2D БПФ на две одномерные свертки?

Если это правда, будет ли это выглядеть так - 1D FFT в каждой строке, а затем 1D FFT в каждом столбце, затем умножить на двумерное ядро, а затем обратное преобразование каждого столбца и обратное преобразование каждой строки? Или мне нужно умножать с 1D ядром после каждого 1D FFT Transform?

Теперь я понимаю, что размер ядра должен соответствовать размеру изображения (строка в случае 1D). Но как это повлияет на края? Нужно ли дополнять края изображения нулями? Если так, то размер ядра должен быть равен размеру изображения до или после заполнения?

Кроме того, это проект C ++, и я планирую использовать kissFFT, так как это коммерческий проект. Вы можете предложить любые лучшие альтернативы. Спасибо.

РЕДАКТИРОВАТЬ: Спасибо за ответы, но у меня есть еще несколько вопросов.

Я вижу, что мнимая часть входного изображения будет иметь все нули. Но будет ли на выходе мнимая часть также быть нулями? Нужно ли умножать ядро ​​Гаусса на действительные и мнимые части?

У меня есть случаи, когда одно и то же изображение размыто в разных масштабах, то есть одно и то же изображение масштабируется до разных размеров и размыто при разных размерах ядра. Нужно ли выполнять FFT каждый раз, когда я масштабирую изображение, или я могу использовать одно и то же FFT?

Наконец, если я хотел визуализировать БПФ, я понимаю, что к БПФ должен применяться фильтр журнала. Но я действительно заблудился, какую часть следует использовать для визуализации БПФ? Реальная часть или мнимая часть.

Также для изображения размером 512x512, что будет размером с реальной и мнимой частями. Будут ли они одинаковой длины?

Еще раз спасибо за ваши подробные ответы.

Ответы на вопрос(2)

Ваш ответ на вопрос