- Вейвлет сжатие монохромных изображений на CUDA | Фаствидео

Fastvideo JPEG 2000Вейвлет сжатие на CUDA (JPEG2000)

В системах скоростной съёмки обычно используются монохромные видеокамеры, поскольку их чувствительность значительно выше, чем у цветных, поэтому ниже мы рассмотрим задачу онлайн сжатия видеопотока от монохромной камеры. Наша цель состоит в том, чтобы успеть сделать сжатие в онлайне, а полученный выходной поток записать на жёсткий диск компьютера. Ранее для аналогичной задачи мы уже реализовали алгоритм сжатия JPEG с потерями, но для него характерны артефакты на границах блоков и меньшая степень сжатия при заданном качестве по сравнению с алгоритмом сжатия на базе вейвлетов. Поэтому мы сделали программное обеспечение для сжатия в онлайне потока данных от скоростных камер в формате JPEG2000 (вейвлет сжатие). Для сжатия с потерями использовался базис вейвлетов Добеши 9/7.

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

сжатие изображений по алгоритму JPEG2000 на CUDAОбщая схема работы приложения для онлайн кодера на базе вейвлетов

  • Загрузка приложения, инициализация и нумерация устройств, проверка их возможностей.
  • Выделение памяти, создание групп потоков, синхронизация с пользовательским приложением на CPU.
  • Получение от драйвера фреймграббера или от пользовательского приложения адреса или номера для последнего полученного кадра, находящегося в оперативной памяти компьютера.
  • Загрузка (копирование) кадра или серии последовательных монохромных кадров из оперативной памяти CPU в память GPU.
  • Численные расчёты: разбиение изображения на тайлы, разбиение на блоки, дискретное вейвлетное преобразование (DWT), квантование, контекстное моделирование и арифметическое кодирование для каждой плоскости блока. Все кадры кодируются по отдельности, корреляция кадров не учитывается.
  • Создание выходной строки байт для каждого сжатого блока, упорядоченная запись таких строк, запись выходного массива в отдельный буфер оперативной памяти или сразу на жёсткий диск компьютера. При этом вычисления для следующего кадра выполняются параллельно с записью результатов кодирования предыдущего.

Конфигурация компьютера

  • Для тестирования программного обеспечения использовалась такая конфигурация компьютера: CPU AMD Ryzen9 7950X (16 ядер, 4.5–5.7 ГГц)
  • Видеокарта для вычислений: GeForce RTX 4090
  • Операционная система Windows-10, 64-bit, CUDA 12.6, драйвер 572.83

Результаты тестирования алгоритма сжатия JPEG2000 с потерями

Мы реализовали программное сжатие потока монохромных изображений в формат JPEG2000 на графических картах NVIDIA с помощью технологии CUDA. В качестве источника входных данных использовались скоростные видеокамеры Fastvideo. Для всех используемых в тесте видеокамер мы смогли в онлайне сжать видеопотоки и записать их на жёсткий диск в онлайне при использовании видеокарты GeForce RTX 4090.

Таким образом, показана принципиальная возможность онлайн сжатия входного потока данных от скоростных видеокамер, причём для довольно широкого класса графических карт, в том числе бюджетных и даже мобильных. Такое решение позволит значительно увеличить длительность скоростной съёмки и даст возможность записывать сжатый поток данных на жёсткий диск компьютера даже без использования RAID или SSD. Полученные на видеокарте GeForce RTX 4090 результаты значительно превосходят пропускную способность скоростных видеокамер, использовавшихся в тестах. Это говорит о том, что есть широкие возможности по использованию более сложных алгоритмов для онлайн обработки данных от таких видеокамер.

Приложения для систем онлайн-сжатия в формате JPEG2000

Данное решение может использоваться не только в скоростной видеосъёмке. Существует немало других задач, связанных с необходимостью быстрого сжатия больших объёмов данных:

  • Системы получения, обработки и хранения медицинских изображений
  • Охранные системы
  • Промышленные системы
  • Научные исследования
  • Системы машинного зрения

В настоящее время реализован алгоритм сжатия с потерями не только для 8-битных монохромных изображений, но и для цветных изображений с разрядностью до 16 бит на канал.

Как достичь лучших результатов

Существует ряд методов, с помощью которых мы расчитываем в дальнейшем получить увеличение производительности подобных систем:

  • Оптимизация алгоритма сжатия, схемы его распараллеливания и реализации.
  • Использование новых решений NVIDIA в последних моделях видеокарт
  • Использование более мощных видеокарт Quadro
  • Распараллеливание алгоритма между разными видеокартами, увеличение количества видеокарт для организации параллельных вычислений.

Форма для отправки запроса

Эта форма сохраняет вашу должность и адрес электронной почты.