Быстрый ресайз изображений JPEG на CUDA
Мы разработали систему быстрого ресайза изображений формата JPEG на видеокартах NVIDIA.
Общая схема ресайза изображений на CUDA
- При сохранении картинки в архив добавляем в неё маркеры
- По запросу загружаем изображение из архива в оперативную память компьютера
- Загружаем данные в память видеокарты и делаем декодирование JPEG
- Делаем кроп (обрезаем изображение) в соответствии с заданными размерами
- Изменяем размер изображения (ресайз)
- Усиливаем резкость (свёртка с гауссом)
- Полученное изображение сжимаем в формат JPEG (сохраняя исходный EXIF)
- Копируем новое изображение из памяти видеокарты в оперативную память компьютера
Конфигурация компьютера и ОС
- Настольный компьютер ASUS P6T Deluxe V2 LGA1366, X58, Core i7 920, 2,67 ГГц, DDR-III 6 ГБайт
- Видеокарта для вычислений: GeForce GTX 1080
- Операционная система Windows-10, 64-bit, CUDA 10
Бенчмарк для быстрого ресайза изображений формата JPEG
24-битное изображение с разрешением Full HD (1920x1080) в формате JPEG (сжатие 90%, 4:4;4) можно уменьшить до 960х540 на видеокарте NVIDIA GeForce GTX Titan за 8-10 мс. Таким образом, за сутки на одной видеокарте можно пережать более 8 миллионов изображений.
Данное решение может использоваться в разнообразных задачах, связанных с необходимостью быстрого декодирования и ресайза больших количество изображений в формате JPEG:
- Веб-сервисы, работающие с большим количеством изображений
- Системы получения и хранения медицинских изображений
- Охранные системы