Использование графической карты вместо GDI + для управления изображениями - PullRequest
2 голосов
/ 14 июля 2009

У меня есть вопрос, который может быть несбыточной мечтой, но я хотел знать, может ли кто-нибудь из моих товарищей по переполнению стека помочь мне.

В компании, в которой я работаю, каждый месяц мы делаем миллиардов манипуляций с изображениями. По сути, мы берем массивное изображение, разрезаем его на квадратные изображения размером 256 пикселей, квантуем их по цвету и сохраняем как png - и переходим к следующему гигантскому изображению. Мы используем ряд методов, чтобы сделать это как можно быстрее, и в настоящее время это очень быстро, но я думаю, что есть шанс, что мы сможем сделать его звездным по скорости.

Самым приложением является .Net 2.0, которое просматривает различные байты в большом изображении, считывает байты для каждого меньшего изображения и использует GDI для сохранения изображения после того, как оно прошло через алгоритм квантования. У нас есть десятки машин, которые запускают это приложение, и все они имеют видеокарты Nvidia Geforce 8 (или лучше).

Есть ли способ, которым я могу использовать графический процессор вместо центрального процессора для выполнения любой или всех вышеуказанных задач? Если да, то как мне это сделать? К сожалению, я никогда раньше не кодировал ничего подобного, поэтому, если кто-то может мне помочь, мне может понадобиться это объяснение достаточно тщательно (и медленно).

Ответы [ 2 ]

2 голосов
/ 14 июля 2009

Определить массивно? (Другими словами, массив является относительным.)

Возможно использование CUDA - графических процессоров NVIDIA -

http://developer.download.nvidia.com/compute/cuda/sdk/website/projects/dxtc/doc/cuda_dxtc.pdf

1 голос
/ 14 июля 2009

Несколько технологий для изучения:

  1. Компоненты Windows Imaging . это не совсем то, что вам нужно, поскольку я не думаю, что он использует графический процессор (хотя я мог бы быть вонгом), но он должен быть значительно быстрее, чем GDI +.

  2. Direct2D . он использует графический процессор для многих операций рисования и хорошо интегрируется с компонентами обработки изображений Windows. но из вашего описания не ясно, соответствуют ли операции рисования, оптимизированные графическим процессором, именно тому, что вам нужно.

Кроме того, вы можете попробовать использовать пиксельные шейдеры для манипулирования изображениями. это область, в которую я не углубился, поэтому я оставлю это для других, чтобы комментировать.

Другими словами, компоненты обработки изображений Windows должны значительно уменьшить узкое место загрузки / сохранения PNG. операции, которые он предоставляет, вероятно, также помогут разрезать изображение гораздо более оптимальным способом, чем GDI +. Direct2D и / или пиксельный шейдер должны помочь с манипулированием на уровне пикселей. пиксельный шейдер необходим только в том случае, если нет более прямого способа выполнить операцию квантования цвета, которая вам нужна на изображениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...