Tonemap — модуль адаптивного локального контраста на GPU
Обновлено:
Локальный тон-маппинг и адаптивный контраст на GPU — детерминированный алгоритм без ИИ: вытягивает тени, добавляет локальный контраст, снимает дымку. Около 10 ГПикс/с на RTX 4090 и ~2,3 ГПикс/с на Jetson AGX Orin — тот же алгоритм и на борту, в реальном времени.
Tonemap — модуль адаптивного локального контраста (локального тон-маппинга) в составе Fastvideo SDK: работает на видеокартах NVIDIA внутри GPU-конвейера, без применения ИИ. Он сжимает динамический диапазон, восстанавливает тени и сохраняет детали. На GeForce RTX 4090 обрабатывает 65 МПикс за 6,3 мс (10 ГПикс/с) — при условии, что исходные и обработанные данные лежат в памяти видеокарты, а измеряется только время вычислений.
Не нейросеть — и это преимущество. ИИ-улучшайзеры «додумывают» детали и дают нестабильный, невоспроизводимый результат — неприемлемо для измерительных и промышленных задач. Tonemap — классический детерминированный алгоритм: один и тот же вход всегда даёт один и тот же выход, без «галлюцинаций», на скоростях реального времени от сервера до Jetson.
Две формы одного алгоритма
Один и тот же адаптивный локальный контраст поставляется в двух видах. ALTMapper — самостоятельная программа с графическим и консольным интерфейсом, работает с файлами на диске. Tonemap — модуль Fastvideo SDK, работает внутри GPU-конвейера, где данные не покидают память видеокарты. Качество картинки одинаковое; различаются место обработки и скорость.
Мы сами написали эти алгоритмы
Кодеки и ISP-модули Fastvideo — это не обёртки над чужим кодом. Алгоритмы демозаики, шумоподавления, тон-маппинга и кодеков JPEG/JPEG2000 мы спроектировали — а многие и придумали — сами и сами реализовали на CUDA, на базе экспертизы в обработке изображений, которую нарабатываем с 2009 года. Поэтому вы получаете цельное, настроенное решение, а не набор GPU-примитивов; и если вашей задаче нужно что-то специфическое, мы можем изменить сам алгоритм, а не просто вызвать его.
Мы предлагаем решение для работы с одиночными изображениями HDR. Адаптивный алгоритм локального контраста используется для сжатия динамического диапазона изображения, что делает детали изображения более яркими и, самое главное, обеспечивает визуально приятное воспроизведение.
Мы создали высокоэффективный и точный адаптивный алгоритм локального контраста (локального тонмаппинга) для одиночных HDR изображений. Он предназначен для приложений с камерами, поскольку с помощью брекетинга мы не можем получать несколько кадров за один раз в реальном времени, поэтому нам приходится обрабатывать каждый кадр после его захвата. Это применимо не только к HDR-изображениям или изображениям с высокой битовой глубиной, но и к 8/24-битным монохромным или цветным изображениям в формате jpg для улучшения качества и восстановления теней.
Алгоритм локального контраста для HDR-изображений основан на преобразовании интенсивности для достижения лучшей визуализации за счет использования информации из локальных областей каждого изображения. Tonemap определяет эти локальные области на каждом изображении в виде сетки из прямоугольных фрагментов. Он обрабатывает каждый фрагмент для вычисления локальных параметров, которые будут использоваться при дальнейших преобразованиях. Мы минимизируем этот набор параметров, чтобы добиться очень быстрой обработки. Наконец, мы используем локальные и глобальные параметры для построения набора локальных тональных кривых и преобразований, которые будут применены к каждому пикселу изображения. Алгоритм, по сути, является локальным и адаптивным, что очень важно для сохранения детализации и контраста изображения.
Обычно видеокамера работает таким образом, чтобы автоматически выбирать наилучшие экспозицию и коэффициент усиления (gain), чтобы избежать пересветов. Таким образом, в тенях может быть недостаточная освещенность, и обычно есть смысл их улучшить. Именно в этом и заключается задача Tonemap.
Возможности Tonemap
- Адаптивный алгоритм локального контраста
- Сохранение и усиление локального и глобального контраста
- Локальная регулировка усиления
- Восстановление теней
- Сохранение деталей изображения
- Вычисления с точностью 16/32 бит
- Компактный алгоритм без ИИ
- Реализация и оптимизация параллельного алгоритма на видеокарте NVIDIA

Слева исходная картинка 16-бит TIFF, справа результат работы Tonemap (исходник тут)
Этот пример демонстрируют идею, лежащую в основе алгоритма. Слева исходное 16-битное изображение в формате TIFF, которое трудно правильно отобразить на 8-битном мониторе из-за его большой разрядности. Справа - обработанное изображение в формате jpg с гораздо лучшим визуальным качеством. Мы сохранили цвета и контраст, улучшили тени и сохранили детали. Локальное тональное отображение включает в себя вычисление карты коэффициентов усиления яркости HDR-изображения с использованием локальных тональных кривых и интерполяции.
Совместимость
- Совместимость с программным обеспечением FastVCR для камер машинного зрения
- OS Windows-10/11, Linux Ubuntu, L4T (Jetson Xavier / Orin)
- Поддержка NVIDIA GPU: Jetson, GeForce, CUDA-12.6
Бенчмарки Tonemap на видеокарте NVIDIA
- Параметры тестового изображения: 9344 × 7000 (65 МПикс), 16 бит на канал, RGB
- Условия измерений: все исходные данные находятся в памяти видеокарты, измеряем только время вычислений на видеокарте
- Установленное ПО: OS Windows-10, CUDA-12.6
- Железо: CPU AMD Ryzen9 7950X (16 ядер, 4.5–5.7 ГГц)
- Видеокарта: NVIDIA GeForce RTX 4090, PCI-Express 4.0 x16
- Время работы Tonemap на GeForce RTX 4090 - 6,3 мс (10 ГПикс/сек)
Такие тесты показывают порядок производительности для локального тонмаппинга и это особенно важно для случаев, когда необходимо обрабатывать огромные объемы изображений или видео. Алгоритм изначально разрабатывался именно для таких приложений.
Бенчмарки Tonemap на Jetson Orin AGX 32GB
- Тестовое изображение: 4128 × 3008 (12 MPix), 16 бит на канал, RGB
- Условия измерений: все исходные данные находятся в памяти видеокарты, измеряем только время вычислений на видеокарте
- Железо/софт: NVIDIA Jetson Orin AGX 32GB, Jetpack 6.2.1
- Время работы Tonemap на Jetson Orin AGX 32GB - 5,4 мс (2,3 ГПикс/сек)
| Платформа | Изображение | Время (производительность) |
| NVIDIA GeForce RTX 4090 | 65 МПикс (9344×7000), 16 бит | 6,3 мс (10 ГПикс/с) |
| NVIDIA Jetson Orin AGX 32GB | 12 МПикс (4128×3008), 16 бит | 5,4 мс (2,3 ГПикс/с) |
Насколько быстр Tonemap?
На GeForce RTX 4090 Tonemap обрабатывает 65-мегапиксельное изображение (16 бит) за 6,3 мс, что соответствует 10 ГПикс/с. На NVIDIA Jetson Orin AGX 32GB кадр 12 МПикс обрабатывается за 5,4 мс (2,3 ГПикс/с). Обе цифры — работа модуля внутри GPU-конвейера: данные лежат в памяти видеокарты, считается только время вычислений. Алгоритм компактный и не использует ИИ.
Где применяется Tonemap
- Цифровая фотография и цифровое кино
- Устройства отображения информации
- Компьютерное зрение
- Медицинская визуализация
- Приложения для промышленных камер
- Телетрансляции и потоковая передача данных
- Картографирование и аэрофотосъемка
Что уже сделано
- Движок HDR на видеокарте для цветных и монохромных изображений
- Локальный контраст на CPU отдельной библиотекой
- Оптимизация под CUDA
Чем занимаемся сейчас
- Локальный контраст для камер машинного зрения с двойным усилением (Dual Gain ADC)
- Работа с матрицами камер с высоким динамическим диапазоном
Дополнительная информация
Необходимо отметить, что алгоритм Tonemap не является ни AHE, ни CLAHE. Помимо применения адаптивного локального контраста для улучшения изображений, этот алгоритм также обеспечивает восстановление теней при условии сохранения контраста, что важно для получения приятного рендеринга без таких распространенных артефактов, как ореолы, шумы и темные облака. Мы можем делать это не только с HDR-изображениями, но и с 8/24-битными jpeg-файлами, если они содержат достаточно информации. Это может быть очень полезно не только для HDR с высокой битностью, но и для обычных изображений LDR для улучшения их качества. Этот эффект не может быть достигнут только с помощью глобальных кривых.
Алгоритм по сути является локальным и учитывает как глобальные, так и локальные особенности изображения, чтобы сгенерировать окончательное попиксельное преобразование для улучшения изображения.
Смежные продукты Фаствидео
- Денойзеры на GPU — вейвлет, билатеральный, NLM
- Дебайер на CUDA — быстрая демозаика
- Софт для аэрофотосъёмки — RAW-конвейер на борту
- Софт FastVCR — обработка кадров камер в реальном времени
- Fastvideo SDK — полная библиотека обработки изображений на GPU
- Решения Фаствидео для задач обработки изображений
Судите по своим данным
Пришлите нам несколько своих снимков или опишите задачу. Мы прогоним их через софт, покажем результат и разберём его вместе на созвоне. Если решаете двигаться дальше — заказ простой: коммерческое предложение, ваш заказ (договор/PO), наш счёт; условия лицензии уже входят в софт.