Суммарная интенсивность изображения в графическом процессоре

У меня есть приложение, в котором мне нужно взять среднюю интенсивность изображения примерно для 1 миллиона изображений. Это «ощущается» как работа для фрагментного шейдера графического процессора, но фрагментные шейдеры предназначены для попиксельных локальных вычислений, а усреднение изображения - это глобальная операция.

Один из подходов, который я рассмотрел, - это загрузка изображения в текстуру, применение блочного размытия 2x2, загрузка результата обратно в текстуру N / 2 x N / 2 и повторение до тех пор, пока результат не станет 1x1. Однако для этого потребуется log n приложений шейдера.

Есть ли способ сделать это за один проход? Или мне просто сломаться и использовать CUDA / OpenCL?

8
задан Kyle Simek 30 October 2013 в 21:01
поделиться