- Дебайер на CUDA. Восстановление цвета на CUDA. GPU дебайер.
бенчмарки Fastvideo SDK

Интерполяция цвета (дебайер) на CUDA

Цветные видеокамеры обычно устроены так, что на поверхности матрицы нанесена решётка из светофильтров, поэтому каждый пиксел регистрирует свет только определённого цвета (зелёного, красного или синего). Такая решётка называется байеровским шаблоном или просто байером (по имени создателя). Поэтому в каждом пикселе изображения есть точная информация только об одной цветовой компоненте, а значения остальных цветовых компонент можно восстановить с помощью информации о значениях других цветовых компонент в соседних пикселах.

Если цветовая гамма на изображении меняется непрерывно, то даже простые алгоритмы типа усреднения по соседним пикселам дают неплохой результат. Однако, если есть резкая граница с изменением цвета, то проявляются различные артефакты в виде ложных цветов, лесенки, размытия. Для устранения таких артефактов используют разнообразные и довольно сложные модели, описывающие поведение цветов и взаимосвязи их компонент на естественных изображениях.

байеровкая решёткаОсновные алгоритмы, используемые для восстановления цвета

  • простейшее усреднение по соседним пикселам (билинейная интерполяция, AN3)
  • фильтры для окрестностей 5х5, 7х7 и т.д.
  • учёт локальных изменений цветовых разностей G-R и G-B
  • учёт локальных вертикальных и горизонтальных градиентов
  • учёт шума и его влияния на восстановление цвета
  • адаптивные методы для улучшения локальных оценок

Поскольку задача восстановления цвета после байеровского шаблона является локальной, то её можно эффективно распараллелить и оптимизировать для создания программного обеспечения на основе технологии CUDA. Такое решение позволит существенно поднять скорость цветовой интерполяции и даст возможность в онлайне обрабатывать большие потоки данных, например, от цветных скоростных видеокамер или от камер с очень большим разрешением. Программное обеспечение GPU Debayer является высокопроизводительным решением на базе видеокарт NVIDIA для интерполяции данных от байеровскоих паттернов.

cuda debayerЧто может дебайер на видеокарте

Основной результат: для 8-битного байеровского изображения с разрешением 1920 х 1080, загруженного в оперативную память компьютера, программа GPU Debayer восстанавливает цвет за 0,83 мс на видеокарте NVIDIA GeForce GTX 980, что соответствует производительности более 2400 Мпикселов в секунду или частоте 1200 кадров в секунду при разрешении Full HD. Это в 200 раз быстрее аналогичного алгоритма AHD из библиотеки Intel IPP-7.1 на Core i7 2600 (3,4 ГГц).

Для тестирования использовались необработанные изображения, полученные от матрицы фотоаппарата или видеокамеры. У этих изображений на один пиксел приходится 1 байт данных, а после дебайера получаются цветные изображения с прежним разрешением, у которых на один пиксел приходится уже 3 байта, т.е. размер изображения увеличивается в 3 раза. В случае, если исходное изображение находится в памяти компьютера, то для выполнения вычислений на видеокарте нужно эти данные сначала передать в видеокарту через шину PCI-Express, затем провести расчёты, потом вернуть увеличившиеся в 3 раза данные по шине PCI-Express назад, в оперативную память компьютера. По сравнению с работой программ на центральном процессоре, при вычислениях на видеокарте получаются две дополнительные стадии по пересылке данных в видеокарту и обратно, которые вносят дополнительную задержку.

При использовании набора изображений Кодака, на котором обычно выполняется стандартное тестирование программ по восстановлению цвета, был получен результат 39 дБ, что очень неплохо, причём визуальное качество получилось очень хорошим. К примеру, самый качественный дебайер (алгоритм AHD) из библиотеки Intel IPP-7.1 на этом же наборе изображений даёт среднее значение порядка 37,4 дБ, а производительность алгоритма AHD при многопоточной реализации составляет 12 Мпикселов в секунду на процессоре Core i7 2600.

В программе GPU Debayer на данный момент реализованы три алгоритма дебайера: HQLI, DFPD и MG. Качество интерполяции при использовании этих алгоритмов заметно выше, чем при билинейной интерполяции, которая считается самым простым и самым быстрым алгоритмом

В реальной ситуации производительность клиентских программных приложений по цветовой интерполяции ограничена скоростью загрузки данных от HDD/SSD/RAID, хотя значительное ослабление нагрузки на ЦПУ будет актуально всегда. Тем не менее, существуют промышленные серверные приложения, когда такая высокая скорость действительно требуется. Поток данных от видеокамер, в том числе и от высокоскоростных, может достигать гигапикселов в секунду и выше, поэтому производительность расчётов в таких случаях играет огромную роль. Для дальнейшего увеличения производительности можно использовать более мощные видеокарты, компьютер с шиной PCI-Express 3.0, а также можно устанавливать в компьютер сразу несколько видеокарт, на которых одновременно будут выполняться вычисления.

Программа GPU Debayer распространяется бесплатно и её можно скачать по ссылке, приведенной ниже. Данная версия работает в Windows-7/8 (32/64) с видеокартами NVIDIA, у которых CC (compute capability) не ниже 3.0. Для корректной работы желательно установить последние драйверы NVIDIA. В программе также реализованы те же самые алгоритмы для CPU, есть возможности создания байеровских изображений, измерения времени выполнения интерполяции, можно оценивать результаты по методикам PSNR и MSE. Подробности есть в описании программного обеспечения.

   Fast Debayer on CUDA

загрузить приложение Fast Debayer

Fast Debayer on CUDA

Размер архива: 48.6 MB
Издатель: Fastvideo
ОС: Windows-7/8/10 (64-bit)
Лицензия: Freeware
Видеокарты NVIDIA Kepler, Maxwell, Pascal, Volta

Возможности программного обеспечения GPU Debayer

  • Поддерживаются все основные байеровские паттерны (RGGB, BGGR, GBRG, GRBG)
  • Алгоритм создания байеровских изображений (CFA) из 24-битных файлов формата PPM
  • Входной формат байеровских изображений – PGM
  • На выходе программа создаёт 24-битные изображения формата PPM
  • Минимальное разрешение 128 x 128
  • Максимальное разрешение до 12000 х 12000
  • Производительность программы (учитываются только вычисления, изображения формата Full HD) на видеокарте NVIDIA GeForce GTX 980:
    • Алгоритм HQLI (High Quality Linear Interpolation) - до 18,2 ГПикс/с, среднее значение PSNR = 36 дБ для набора изображений Kodak
    • Алгоритм DFPD (Directional Filtering and a Posteriori Decision) - до 5,25 ГПикс/с, среднее значение PSNR = 39 дБ для набора изображений Kodak
  • Производительность с учётом загрузки данных в видеокарту и выгрузки из видеокарты в оперативную память компьютера для NVIDIA GeForce GTX 980:
    • Алгоримт HQLI - до 2400 МПикс/с
    • Алгоритм DFPD - до 1800 МПикс/с
  • Программа включает реализации алгоритмов HQLI и DFPD для CPU
  • Оценка результатов цветовой интерполяции по метрикам MSE и PSNR
  • Измерения времени выполнения и производительности каждого алгоритма
  • Программа работает на видеокартах NVIDIA (Compute Capability >= 3.0), драйвер 396.38 или старше
  • Консольное приложение для Windows-7/8/10 (64)

Таким образом, показана возможность восстановления цвета с высокой производительностью и отличным качеством на графических картах NVIDIA по технологии CUDA. Производительность видеокарты GeForce GTX 980 для цветовой интерполяции значительно выше, чем возможности самых последних CPU. Полученные данные говорят о том, что есть возможность использовать более сложные алгоритмы для быстрого и высококачественного восстановления цвета и обработки изображений на видеокартах.

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

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