2011-12-18 2 views
0

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

при работе:

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

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

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

благодарит

ответ

1

Это путь свертка работы.

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

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

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

+0

Hi; Есть ли какой-то метод того, что значения слегка перевернуты. Добавление вручную для меня не является выбором Например, при обработке изображения 320-240 я добавляю 30 к каждому размеру, и результат получается 321-241 (я вручную вычитал один из верхнего и правого. Что я имею в виду с помощью метода например, если келевая сторона четна, тогда исправить, если нечетное не (или что-то) –

+0

Размер ядра должен быть нечетным, потому что он применяется симметрично влево и вправо: n значений влево, n вправо + центр. размер ядра должен быть (2n + 1). Если вы отправляете четное ядро ​​(60/60), возможно, оно просто добавляет один столбец и одну строку в ядро, а также делает то же самое для изображения. – Sam

+0

Но позвольте мне дать вы дружелюбный совет: прежде чем приступать к работе над оптимизацией CUDA и сложными задачами обработки изображений, пожалуйста, прочитайте, поймите и примените основы. Потому что вы не сможете идти вперед таким образом. Итак, google для 'wiki convolution' и читать это действительно, очень осторожно. – Sam

Смежные вопросы