GPU версия mean shift сегментации
Существует очень хорошая реализация mean shift сегментации в EDISON (Edge Detection and Image SegmentatiON system).
К сожалению она обладает несколькими недостатками:
- Оптимизированная версия (HIGH_SPEEDUP) не только не оптимизирована под современные процессоры, но работает даже медленнее чем неоптимизированная версия (NO_SPEEDUP)
- Отсутствует оптимизация под многоядерные CPU
- Отсутствует реализация под GPU
Поэтому реализация была модифицирована с учетом следующих целей:
- Результаты должны быть максимально близки к оригинальной версии (к NO_SPEEDUP)
- Распараллеливание под многоядерные CPU (OpenMP)
- Адаптация под GPU (OpenCL)
- Возможность ускорения множеством видеокарт вместе с процессором (просто из любопытства)
Получившаяся модификация с замерами производительности на различных процессорах и видеокартах выложена на github.
Пример результата: