Разница между filter2d () с гауссовым ядром и GaussianBlur () - PullRequest
3 голосов
/ 26 января 2012

Я новичок в opencv. Я должен выполнить операции для проекта, включающего использование 2D фильтра нижних частот Гаусса. Я использую OpenCV 2.2, а внутри есть две функции: filter2d () и GaussianBlur ().

Выполнить ту же работу? Позвольте мне объяснить, что если filter2d () перешагнет ядро ​​Гаусса getGaussiankernel, созданное с помощью (), и применит фильтр и запустит его непосредственно с GaussianBlur (), у меня будет тот же результат? Очевидно, что я приму одинаковые значения для двух функций ядра.

Ответы [ 2 ]

2 голосов
/ 29 января 2012

GaussianBlur() - это просто ярлык для более сложного в настройке filter2d () с теми же значениями ядра.Он выполняет то же самое, с той же скоростью, вызывая ту же основную функцию.

0 голосов
/ 27 января 2012

Разница, которую вы можете увидеть, состоит в том, что filter2D выполняет взаимную корреляцию вместо операции свертки.X-корреляция и свертка дают одинаковые результаты при использовании симметричных ядер / фильтров.Чтобы выполнить свертку с использованием ядра, вам необходимо перевернуть его и установить опорную точку на середину ядра.См. Документацию: http://opencv.willowgarage.com/documentation/cpp/image_filtering.html#cv-filter2d

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...