Гауссово размытие с помощью БПФ

я пытаюсь реализовать размытие по Гауссу с использованием БПФ и найти здесь следующий рецепт.

Это означает, что вы можете взять Преобразование Фурье изображения и фильтр, умножить (сложный) результаты, а затем принять обратное Преобразование Фурье.

У меня есть ядро ​​K, матрица 7x7 и изображение I, матрица 512x512.

Я не понимаю, как умножить K на I. Это единственный способ сделать это, сделав К размером с меня (512x512)?

9
задан Dima 24 August 2010 в 16:08
поделиться

2 ответа

Да, вам нужно сделать K таким же большим, как I, дополнив его нулями. Кроме того, после заполнения, но до того, как вы возьмете БПФ ядра, вам нужно перевести его с переносом, чтобы центр ядра (пик гауссианы) находился в точке (0,0). В противном случае ваше отфильтрованное изображение будет переведено. Кроме того, вы можете перевести полученное отфильтрованное изображение, когда закончите.

Еще один момент: для небольших ядер без использования БПФ может быть быстрее. Двумерное гауссовское ядро ​​является разделимым, что означает, что вы можете разделить его на два одномерных ядра для x и y. Затем вместо 2D-свертки вы можете выполнить две 1D-свертки в направлениях x и y в пространственной области. Для небольших ядер это может оказаться быстрее, чем выполнение свертки в частотной области с использованием БПФ.

16
ответ дан 4 December 2019 в 11:39
поделиться

Если вы знакомы с пиксельным шейдером и если ваша основная цель здесь не БПФ, а свертка с ядром IS размытия по Гауссу, то я могу порекомендовать мой учебник о том, что такое свертка

относительно.

2
ответ дан 4 December 2019 в 11:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: