Кодек RawZipper для сжатия RAW изображений с потерями и без потерь

Множество задач обработки изображений требуют сохранения необработанных кадров без преобразования в RGB. Это преобразование может быть выполнено впоследствии или в автономном режиме. Это утверждение применимо ко множеству задач, включая картирование, аэрофотосъемку и аэрокосмические приложения. Кодек RawZipper был разработан для сжатия необработанных данных.

Кодек RawZipper был реализован с целью сжатия и сохранения необработанных данных изображений, снятых монохромными и цветными (bayer) камерами. Данные камер Bayer соответствуют шаблону (RGGB, BGGR, GRBG или GBRG), в котором каждый пиксел отображает только один цветовой канал. Для сохранения исходных данных для последующей обработки может быть использовано сжатие как с потерями, так и без потерь.

Приложения для RawZipper

  • Картирование городов и аэрофотосъёмка
  • Аэрокосмические приложения
  • Машинное зрение
  • Системы сбора данных для автономного вождения
  • Стриминг сырых данных
  • Медицина
  • Фотограмметрия
  • Фотография и цифровое кино
  • Управление RAW данными

В некоторых случаях приемлемым вариантом является реализация кодирования RAW-изображений без потерь. Однако коэффициент сжатия (CR) этих алгоритмов обычно равен примерно двум, что не так много. Тем не менее, алгоритмы сжатия без потерь также востребованы и они гарантируют, что каждое изображение будет восстановлено в точности таким, каким оно было сразу после получения (до сжатия). В настоящее время широко используются такие алгоритмы сжатия изображений без потерь: Lossless JPEG (1–16 бит), JPEG-LS (1–16 бит), JPEG 2000 (до 16 бит), JPEG XS (до 16 бит), JPEG XL (до 16 бит), и т.д. В некоторых случаях применение сжатия без потерь является обязательным, особенно в контексте научных исследований.

Также существует несколько вариантов использования видеокодеков без потерь. Видеокодеки обычно обеспечивают гораздо более высокую степень сжатия по сравнению с результатами сжатия неподвижных изображений. Алгоритм кодирования H.265 без потерь может работать с цветными видеопотоками, но он применим только к 8/10-битному цветному (NV12, YUV) выходу, а не к RAW. То же самое верно и для кодека AV1 без потерь, который может кодировать 10-бит YUV (4:2:0, 4:2:2, 4:4:4), но не RAW. Эти методы неприменимы для наиболее распространенного варианта использования, а именно для сжатия необработанных изображений (Bayer или монохром) с количеством бит на пиксел 12 или выше, вплоть до 16 бит. Однако в некоторых случаях видеокодеки могут быть подходящим решением для такой задачи. Логарифмическая кривая способна преобразовывать входные данные в диапазон 8/10 бит. Впоследствии мы можем применить сжатие с потерями с помощью алгоритма H.265 или AV1.

Хотя применение кодирования с потерями к необработанным изображениям действительно логично для достижения значительно большей степени сжатия, крайне важно контролировать ухудшение качества изображения, что является необходимым условием эффективности таких алгоритмов. Незначительные искажения в кадрах, закодированных в формате RAW, могут привести к значительным искажениям. Однако эти искажения станут заметны только после преобразования RAW в RGB. Такой подход потенциально позволяет достичь более чем двукратного значения CR, что требует поиска оптимизированного решения, учитывающего как требования к качеству изображения, так и к степени сжатия.

Алгоритмы сжатия RAW данных в кодеке RawZipper

  • Сжатие без потерь для RAW (восстановление бит-в-бит)
  • "Сжатие почти без потерь" для RAW с небольшим уровнем потерь
  • Сжатие "визуально без потерь"
  • Кодирование с потерями с высокой степенью сжатия
  • Сжатие RAW видео

Преимущества сжатия RAW данных

  • Было продемонстрировано, что использование этих технологий приводит к значительной экономии мест для хранения данных и полосы пропускания.
  • Сохранение исходных данных имеет первостепенное значение в области сжатия данных. Сжатие без визуальных потерь - это метод, который позволяет осуществлять последующую обработку данных (например, преобразование RAW в RGB) без ущерба для целостности исходных данных.
  • Повышение производительности: в контексте приложений реального времени можно обойтись без полноценного использования алгоритмов обработки (ISP) для преобразования RAW в RGB. Этот подход предполагает оптимизацию конвейера ISP за счет интеграции предварительной обработки и кодирования необработанных данных.
  • Размер данных, которые необходимо обработать при работе с RAW данными сокращается в три раза по сравнению с RGB.
  • Рассматриваемое решение отличается простотой использования, что объясняется его способностью функционировать независимо от какой-либо предварительной калибровочной информации, поступающей от камеры.
  • Повышение качества изображения во время постобработки в автономном режиме: использование алгоритмов реального времени часто приводит к снижению качества изображения. Следовательно, существует возможность использования более сложной обработки в автономном режиме для повышения качества изображения во время постобработки.
  • Этот подход применим к необработанным изображениям и к RAW видео.
RawZipper

Основные возможности кодека RawZipper

  • Обработка RAW для байеровских или монохромных изображений/видео с произвольной шириной и высотой
  • Ввод данных: необработанные байеровские или монохромные кадры из памяти HDD/RAID/SSD или CPU/GPU
  • Вывод данных: сжатые данные на жестком диске/RAID/SSD или в памяти процессора/GPU
  • Разрядность данных ввода/вывода: 8/10/12/14/16 бит
  • Алгоритмы: компрессия и декомпрессия с потерями и без потерь
  • Коэффициент сжатия от 5:1 до 10:1, вплоть до 20:1
  • Дополнительная функция для ограничения степени сжатия изображений
  • Оптимизирована для новейших графических процессоров NVIDIA, включая Jetson
  • Совместимость с 64-разрядными версиями Windows-10/11, Linux Ubuntu, L4T

Мы можем интегрировать кодек RawZipper в ваше решине, чтобы вся работа выполнялась на GPU. Возможности обработки изображений и видео на GPU можно посмотреть в описании нашего GPU Image & Video Processing SDK.

Дополнительная информация о качестве изображений и степени сжатия

В контексте необработанных байеровских кадров, полученных с помощью обычных 12-битных датчиков изображения производства Sony, Gpixel, On-Semi и CMOSIS, степень сжатия CR~2 обычно достигается для алгоритмов без потерь. То же самое касается 14-битных необработанных данных с фотокамер SONY, Canon, Nikon и т.д. Это связано с тем, что полезные данные также содержат шум, который может быть важен в научных приложениях, требующих сжатия данных без потерь. Кодирование без потерь также демонстрирует более низкую производительность по сравнению с кодеками с потерями.

Применение кодирования с потерями обычно приводит к компромиссу между потерями и улучшенной производительностью, эффективность которого зависит от содержимого изображения, используемых параметров и используемого аппаратного обеспечения. Крайне важно понимать механизмы контроля уровня потерь, чтобы обеспечить сохранение высококачественных изображений для конкретной задачи. В большинстве случаев можно кодировать необработанные кадры со степенью сжатия (CR) в 5-10 раз, тем самым достигая пикового отношения сигнал/шум (PSNR) для 12-битных байеровских изображений на уровне 50-55 децибел (дБ) или выше. PSNR вычисляется для исходного необработанного байеровского изображения и того же изображения после обработки, кодирования, декодирования и восстановления.

Общеизвестно, что показатель PSNR имеет ограниченную полезность. С этой целью проводится визуальная оценка качества изображения для определения наиболее подходящих параметров обработки по умолчанию для данного проекта. Было проведено визуальное сравнение не между необработанными изображениями, а между RGB-изображениями, которые подверглись обработке с идентичными параметрами. Например, при просмотре с увеличением 500% не должно быть заметных различий между исходным и обработанным изображениями.

Для приложений, требующих максимального качества изображений, можно использовать диапазон CR 4-5, что позволяет достичь уровней PSNR для необработанных изображений, превышающих 60 дБ.

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

Необходимо признать, что данный RAW кодек со сжатием с потерями - это не просто кодек в обычном смысле этого слова. Это решение отличается своей сложностью и широким спектром возможностей, которые выходят за рамки сжатия и распаковки данных. Предлагаемая методика обеспечивает баланс между сохранением необработанных данных и выполнением дополнительной обработки изображений для улучшения соотношения сигнал/шум и минимизации искажений изображения. Качество необработанных изображений можно сохранить благодаря внедрению передовых технологий, о чем свидетельствуют превосходная цветопередача и качество изображения, достигаемые в конечном итоге по сравнению с обычными кодеками JPEG и JPEG 2000. Данное программное обеспечение может быть настроено таким образом, чтобы оптимизировать результаты для конкретных приложений.

Управление качеством при сжатии и восстановлении RAW

Кодек RawZipper может работать как в режиме с потерями, так и без потерь. Когда мы работаем в режиме с потерями, мы получаем некоторые искажения изображения. Важно уметь измерять уровень потерь и оценивать их визуально и численно. Мы должны проверять как сигнал, так и шум, чтобы убедиться, что мы можем воспроизвести исходное изображение с высокой точностью. Крайне важно восстановить и сигнал, и шум одновременно. Что можно контролировать в первую очередь:

  • Гастограмма RAW
  • Пиковое соотношение сигнал/шум, PSNR
  • Стандартное отклонение для выбранной "плоской" области кадра
  • Отношение сигнал/шум SNR

Для оценки мы взяли необработанный кадр с изображением ColorChecker с камеры DALSA/FLIR (20 мегапикселей, 4512 x 4512, 12-бит, RGBB). Мы применили байеровское кодирование с потерями при CR = 10 и получили значение PSNR = 45,3 дБ. Стандартное отклонение (σ) изменилось в среднем менее чем на 2%, а значение SNR - менее чем на 0,15 дБ. Мы произвели замеры для каждого участка ColorChecker.

Конвейер графического процессора для необработанного декодирования, обработки и визуализации

  • Распаковка и восстановление необработанного изображения
  • Создание исходного несжатого изображения RAW с использованием шаблона Байера
  • Линеаризация необработанного изображения
  • Баланс белого
  • Коррекция яркости
  • Шумоподавитель
  • Цветокоррекция
  • лютня (1D, 3D)
  • Обрезка / поворот /изменение размера/резкость
  • Локальный контраст
  • Вывод OpenGL
  • Дополнительно выводить сжатие MJPEG в формат AVI или кодирование изображений в формат JPEG

Вышеупомянутый конвейер требует больших вычислительных ресурсов, и добиться высокой производительности для выполнения этой задачи непросто. Для облегчения процесса визуализации необходимо обеспечить частоту кадров не менее 60 кадров в секунду (fps). Для большинства разрешений эта цель может быть достигнута в режиме реального времени с помощью графического процессора NVIDIA. Мы используем наш SDK для обработки изображений на GPU для вышеупомянутого конвейера, и он может выполнять обработку данных со скоростью до 2-3 ГПикс/с на GeForce RTX 4090. Такое решение доступно для всех графических процессоров NVIDIA: мобильных, портативных, настольных, серверных.

Полезные ссылки по этой теме

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

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