Алгоритм эффективного изображения 2d с скользящим окном max с прыжком › 1

Проблема аналогична применению максимального фильтра скользящего 2D-окна к изображению размера M x N. Однако, в отличие от обычного случая, скользящее окно скользит не просто на 1 пиксель, а на k-пиксельный скачок. Так, например, если k = 2, скользящее окно будет применяться по горизонтали к пикселю в точках (0,0), (2,0), (4,0), ... и аналогично по вертикали.

Для случая с 1 переходом уже существует реализация в библиотеке CUDA NPP (примитивы производительности). В частности, эти функции называются nppiFilterMax*. Тем не менее, мне не удалось найти более обобщенную версию скольжения k-hop. В качестве обходного пути я мог бы просто использовать функцию NPP для выполнения максимального фильтра с 1 переходом и просто выбрать результат в соответствующих позициях, хотя это кажется расточительным и неэффективным. Есть ли какая-либо существующая реализация или технический документ для этой проблемы?


person user1715925    schedule 27.10.2013    source источник


Ответы (1)


Эти функции свертки изображений обычно предназначены для hop == 1. При > 1 между разными смещениями передается меньше данных, поэтому производительность может снизиться.

Для hop > 1 вам может понадобиться написать собственное ядро, чтобы повысить производительность. Вы можете увидеть этот образец CUDA "разделимая свертка" для получения дополнительной информации.

http://docs.nvidia.com/cuda/cuda-samples/index.html#cuda-separable-convolution

Он поставляется с официальным документом, в котором обсуждаются детали. К счастью, максимальная свертка также разделима. Вы получите некоторые идеи о том, как написать ядро ​​для этой задачи.

http://docs.nvidia.com/cuda/samples/3_Imaging/convolutionSeparable/doc/convolutionSeparable.pdf

person kangshiyin    schedule 27.10.2013
comment
Спасибо за предложение. На самом деле я читал эту статью раньше и собирался реализовать свою собственную версию. Однако пока достаточно просто запустить 1-шаговую свертку и понизить дискретизацию результата. - person user1715925; 28.10.2013