дебайер CUDA

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

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

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

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

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

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

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

Основной результат: для 8-битного байеровского изображения с разрешением 1920×1080, загруженного в оперативную память компьютера, программа GPU Debayer восстанавливает цвет за 0,83 мс на видеокарте NVIDIA GeForce GTX 1080, что соответствует производительности более 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.

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

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

Программа Fast Debayer распространяется бесплатно и её можно скачать по ссылке, приведенной ниже. Данная версия работает в Windows-10 (64-бит) с видеокартами NVIDIA, у которых CC (compute capability) не ниже 5.0. Для корректной работы желательно установить последние драйверы NVIDIA.

   Fast Debayer on CUDA

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

Fast Debayer on CUDA

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

Возможности дебайера на CUDA

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

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

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

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