Как я могу эффективно рассчитать сумму всех пикселей изображения, используя пиксельный шейдер HSLS? Мне интересен Pixel Shader 2.0, который я мог бы вызвать как эффект шейдера WPF.Эффективная сумма пиксельных шейдеров всех пикселей
ответ
Эффекты в WPF гораздо больше подходят для получения визуального результата. Похоже, вы хотите использовать их для другого типа вычислений, для этого вам нужно будет обработать результат изображения в качестве данных, для этого потребуется RenderTargetBitmap, который будет выполняться в программном обеспечении в любом случае. Возможно, вы захотите посмотреть эти проекты, предназначенные для GPGPU.
OpenTK Я не знаю, состояние креплений OpenCL в OpenTK. Другие технологии, такие как DirectCompute и CUDA, также заслуживают внимания.
Существует гораздо более простое решение, которое не использует шейдеры: загрузите изображение в виде текстуры, создайте цепочку mipmap и верните значение последнего mipmap (1x1 пиксель). Этот трюк используется в играх, чтобы рассчитать, например, среднюю бригичность сцены (для применения тонирования HDR). Это отличный трюк, если вы цените простоту и эффективность над точностью.
Как именно вы создаете цепочку mipmap из изображения в WPF, это так же быстро, как применение пиксельных шейдеров? – luvieere
Изменив размер изображения, используя 1x1, используя фильтр окна. –
Спасибо за это. Мои текстуры несколько вырождены (высокоточные числовые БПФ), и вместо этого использование треугольного фильтра дает очень хорошие результаты (плюс или минус 1% от желаемого результата), что достаточно для меня. Тем не менее, фильтр в коробке был выключен. – Thomas
Предполагая, что вы хотите суммировать значения г/г/б канала в изображении (и предполагая, что вы можете уничтожить исходные пикселы) - вот мое частное решение:
- Каждый десятый пиксель будет рассчитать средний цвет 10 соседних пикселей и поместите этот усредненный цвет на изображение.
- Затем на стороне процессора сумма
Pix_Value*10
каждого 10-го пикселя.
В этом случае мы получаем примерно 10-кратное ускорение по сравнению с суммированием значений пикселей только на стороне ЦП.
- 1. Данные пиксельных пикселей в OpenCV
- 2. Ограничение пиксельных шейдеров по определенной области изображения
- 3. Инструмент для пиксельных и вершинных шейдеров
- 4. Использование пиксельных шейдеров для текстур в Direct3D9
- 5. Использование пиксельных шейдеров для выполнения быстрых вычислений?
- 6. Как включить в пиксельных шейдеров в Ogre3D
- 7. Как получить версию пиксельных шейдеров из .NET?
- 8. Альтернативы сглаживания Floyd-Steinberg для пиксельных шейдеров
- 9. Эффективная сумма подход
- 10. Эффективная двойная сумма продуктов
- 11. сумма изображений пикселей
- 12. Получение всех пиксельных координат вектора внутри изображения
- 13. Более эффективная ограниченная суммарная сумма
- 14. Текущая лучшая практика для компиляции пиксельных шейдеров в WPF?
- 15. Сколько циклов пиксельных шейдеров приходится на тяжелые для iPad2
- 16. HLSL, программа пиксельных шейдеров с алгоритмами спустившихся разные Texture2D
- 17. У вас есть несколько пиксельных (фрагментных) шейдеров в одной программе?
- 18. DirectX 11, Объединение пиксельных шейдеров для предотвращения узких мест
- 19. Недостатки пиксельных рисунков?
- 20. Мат против массива для обработки пиксельных пикселей в OpenCv C++
- 21. Эффективная область взвешенная сумма с помощью NumPy
- 22. directx9, могу ли я использовать только вершинный шейдер без пиксельных шейдеров?
- 23. Сумма всех аргументов
- 24. LINQ Сумма всех свойств
- 25. Сумма - Группировка всех данных
- 26. Сумма продуктов всех подмножеств,
- 27. Фибоначчи: Сумма всех чисел
- 28. Вычислительная сумма всех случаев
- 29. Сумма всех чисел Фибоначчи
- 30. Получение всех значений пикселей (rgba)
Что вы подразумеваете под словом «сумма всех пикселей» - это сумма всех значений R/G/B или что-то другое? –