Мой инстинкт подсказывает мне попробовать вашу реализацию в OpenCL. Вы можете оптимизировать размер изображения и графическое оборудование, разбив изображения на отдельные куски данных, которые затем суммируются параллельно. Может быть очень быстро на самом деле.
Фрагментные шейдеры отлично подходят для сверток, но этот результат обычно записывается в gl_FragColor, так что это имеет смысл. В конечном итоге вам придется перебрать каждый пиксель текстуры и суммировать результат, который затем считывается в основной программе. Генерация статистики изображения, возможно, не соответствует тому, для чего был разработан фрагментный шейдер, и неясно, что следует добиться значительного прироста производительности, поскольку не гарантируется, что конкретный буфер находится в памяти GPU.
Похоже, вы применяете этот алгоритм к сценарию обнаружения движения в реальном времени или к какому-либо другому приложению автоматического обнаружения функций. Может быть быстрее вычислить некоторую статистику из выборки пикселей, а не всего изображения, а затем создать классификатор машинного обучения.
Удачи тебе в любом случае!