Кодек RawZipper для сжатия RAW изображений с потерями и без потерьМножество задач обработки изображений требуют сохранения необработанных кадров без преобразования в RGB. Это преобразование может быть выполнено впоследствии или в автономном режиме. Это утверждение применимо ко множеству задач, включая картирование, аэрофотосъемку и аэрокосмические приложения. Кодек RawZipper был разработан для сжатия необработанных данных. Кодек RawZipper был реализован с целью сжатия и сохранения необработанных данных изображений, снятых монохромными и цветными (bayer) камерами. Данные камер Bayer соответствуют шаблону (RGGB, BGGR, GRBG или GBRG), в котором каждый пиксел отображает только один цветовой канал. Для сохранения исходных данных для последующей обработки может быть использовано сжатие как с потерями, так и без потерь. Приложения для RawZipper
В некоторых случаях приемлемым вариантом является реализация кодирования 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 данных
Основные возможности кодека RawZipper
Мы можем интегрировать кодек 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 может работать как в режиме с потерями, так и без потерь. Когда мы работаем в режиме с потерями, мы получаем некоторые искажения изображения. Важно уметь измерять уровень потерь и оценивать их визуально и численно. Мы должны проверять как сигнал, так и шум, чтобы убедиться, что мы можем воспроизвести исходное изображение с высокой точностью. Крайне важно восстановить и сигнал, и шум одновременно. Что можно контролировать в первую очередь:
Для оценки мы взяли необработанный кадр с изображением ColorChecker с камеры DALSA/FLIR (20 мегапикселей, 4512 x 4512, 12-бит, RGBB). Мы применили байеровское кодирование с потерями при CR = 10 и получили значение PSNR = 45,3 дБ. Стандартное отклонение (σ) изменилось в среднем менее чем на 2%, а значение SNR - менее чем на 0,15 дБ. Мы произвели замеры для каждого участка ColorChecker. Конвейер графического процессора для необработанного декодирования, обработки и визуализации
Вышеупомянутый конвейер требует больших вычислительных ресурсов, и добиться высокой производительности для выполнения этой задачи непросто. Для облегчения процесса визуализации необходимо обеспечить частоту кадров не менее 60 кадров в секунду (fps). Для большинства разрешений эта цель может быть достигнута в режиме реального времени с помощью графического процессора NVIDIA. Мы используем наш SDK для обработки изображений на GPU для вышеупомянутого конвейера, и он может выполнять обработку данных со скоростью до 2-3 ГПикс/с на GeForce RTX 4090. Такое решение доступно для всех графических процессоров NVIDIA: мобильных, портативных, настольных, серверных. Полезные ссылки по этой теме |