Интернет-журнал ТелеФото Техника           Главная    |    E-mail    |    16.04.2024      
Главная страница   |   О журнале   |   Авторам   |   Редколлегия   |   Контакты            

Научно-технический интернет-журнал        Свидетельство о регистрации Эл № ФС 77-31314      


   


 

Новости отрасли
На главную / Все новости / Все новости раздела

Дата   :   20 сентября 2011 года  |  просмотров: 214

Ультра быстрое сжатие серий изображений от высокоскоростных камер в 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 330M (48 ядер, мобильный вариант) - 120 МБайт в секунду
  • GeForce GT 240 (96 ядер) - 210 МБайт в секунду
  • GeForce GTX 580 (512 ядер) - 1500 МБайт в секунду

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

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

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

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

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

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

www.fastvideo.ru/news/2011-nvidia-jpeg.htm