сжатие изображений на процессорах NVIDIA10.08.2011

Ультра быстрое сжатие серий изображений от высокоскоростных камер в JPEG на процессорах NVIDIA

Компания Фаствидео (Дубна, Моск. обл.), разработчик оборудования и программного обеспечения для скоростной видеосъёмки, представляет свою последнюю разработку - систему длительной видеозаписи на базе технологии CUDA для высокоскоростных камер Fastvideo.

Данная задача возникла в контексте приложений для скоростных видеокамер, выпускаемых нашей компанией. Все наши скоростные видеокамеры работают по принципу онлайн передачи всего регистрируемого потока несжатых данных от камеры в кольцевой буфер оперативной памяти компьютера. Таким образом, в компьютер поступает очень большой поток данных, которые нужно быстро обработать и записать. Обычно такие потоки данных записывают либо в оперативную память компьютера, либо на RAID-массив или SSD. К сожалению, софт для CPU с обработкой таких потоков данных не справляется в принципе, поэтому для решения задач этого класса мы использовали видеокарты NVIDIA с технологией CUDA.

В системах скоростной съёмки обычно используются монохромные видеокамеры, поскольку их чувствительность значительно выше, чем у цветных, поэтому мы решали задачу онлайн сжатия видеопотока именно от монохромных камер. Наша цель состояла в том, чтобы в онлайне успеть сделать сжатие, а полученный выходной поток записать на жёсткий диск компьютера. Мы выбрали алгоритм сжатия JPEG с потерями, потому что он может обеспечить быстроту и минимальные искажения при значительном коэффициенте сжатия, а также может быть эффективно распараллелен. Вопрос быстрого декодирования задач скоростной съёмки не критичен, поэтому декодирование можно делать на CPU стандартным образом.

Конфигурация компьютера, видеокамеры, ОС и источника данных

Для тестирования программного обеспечения использовалась такую конфигурация компьютера:

  • ASUS P6T Deluxe V2 LGA1366, X58, ATX Core i7 920, 2.67 GHz, DDR-III 6 GB.
  • Видеокарты для вычислений: GeForce GT 240 (CC=1.2, 96 ядер) или GeForce GTX 580 (CC=2.0, 512 ядер)
  • Операционная система Windows-7, 64-bit, CUDA 4.0, driver 270.81
  • Пользовательское приложение Fastvideo Lab (кросс-платформенное ПО, QT 4.7).
  • В качестве первого источника видео данных мы использовали скоростную видеокамеру Fastvideo-500, которая регистрирует поток данных до 150 МБайт в секунду (монохромная, разрешение 640х480, 8 бит, частота 500 кадров в секунду).
  • В качестве второго источника видео данных мы использовали высокоскоростную камеру Fastvideo-500M, которая регистрирует поток данных до 650 МБайт в секунду (монохромная, разрешение 1280х1024, 8 бит, частота более 500 кадров в секунду).

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

Мы реализовали возможность программного сжатия потока монохромных изображений в формат JPEG на графических картах NVIDIA с помощью технологии CUDA. В качестве источника входных данных использовались скоростные видеокамеры Fastvideo. Для всех используемых в тесте видеокамер мы смогли в онлайне сжать видеопотоки и записать их на жёсткий диск при использовании видеокарты GeForce GTX 580. Были получены следующие результаты для средней пропускной способности используемого алгоритма на разных видеокартах (сжатие по алгоритму Baseline JPEG с потерями, коэффициент сжатия 20, сжимаются отдельные кадры независимо друг от друга, время загрузки изображений и их выгрузки после сжатия включено в представленные результаты):

  • GeForce GT 240 (96 ядер) - 210 МБайт в секунду
  • GeForce GTX 580 (512 ядер) - 1500 МБайт в секунду

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

Стоит отметить, что полученный результат 1500 МБайт в секунду для видеокарты GeForce 580 GTX для сжатия монохромных изображений по алгоритму JPEG с потерями, превосходит по производительности все известные нам аппаратные решения по сжатию изображений на ПЛИС (FPGA). Сравнивая наше решение с аппаратными кодерами на ПЛИС, стоит отметить, что кроме более высокой производительности полученного нами решения, по сравнению с Verilog/VHDL, код на Си для CUDA намного более понятный и приспособленный для модификации и создания на его базе новых, более сложных систем обработки и сжатия изображений.

Приложения скоростной съёмки для технологии CUDA

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

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

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

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

Более подробные описания кодера JPEG для CUDA, программного обеспечения Fastvideo Lab и программно-аппаратных комплексов на базе технологии CUDA для систем высокоскоростной съёмки можно посмотреть на сайте www.fastvideo.ru

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

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