OpenCV GPU свернутая функция и отсутствующая граница - PullRequest
0 голосов
/ 18 декабря 2011

У меня есть вопрос о функции Convolve в OpenCV с использованием ускорения графического процессора. Скорость свертки примерно на 3,5 быстрее при использовании графического процессора

при работе:

convolve(src_32F, kernel, cresult, false, cbuffer);

Однако границы изображения отсутствуют (в результате)

Результат отличный, хотя (размер ядра 60x60)

спасибо

1 Ответ

1 голос
/ 19 декабря 2011

Так работает свертка.

Рассчитывает значение каждого пикселя как средневзвешенное значение для окружающих.Таким образом, если принять во внимание 30 пикселей с каждой стороны, для всех пикселей, которые ближе к границе изображения, чем 30 пикселей, свертка не определена.

В реализации функции фильтрации в CPU эти недостающие пиксели дополняются фиктивными значениями, основанными на заданной стратегии (копирование, зеркало, пробел и т. Д.).

Что можно сделать, это вручнуюдобавьте в матрицу нужные значения в большую матрицу, отфильтруйте большую и обрежьте ее обратно.Для этого вы можете использовать функцию gpu :: copyMakeBorder ().

...