Как правильно рассчитать динамический диапазон изображения - Фотопедия
0 голосов
/ 03 октября 2019

Я пытаюсь сравнить динамический диапазон правильно экспонированного изображения LDR с динамическим диапазоном изображения HDR, полученного с 3 изображениями LDR.

Прямо сейчас я вычисляю DR как:

 stops = log2(max) - log2(min);

Где

max = maximum pixel value found in the image
min = minimum pixel value found in the image

Эталон правильно выставленного изображения - 8-битный JPEG, поэтому динамический диапазонвсегда 8 ступеней, так как значения идут от 0 до 255. Изображение HDR - это карта сияния RGBe, поэтому значения представляют собой 32-разрядные числа с плавающей запятой.

Мне было интересно несколько вещей:

  1. Это правильный способ вычисления динамического диапазона по изображению?
  2. Все файлы jpg имеют значения пикселей от 0 до 255, поэтому каждый правильно отображаемый jpg будет иметь одинаковый динамический диапазон. Это правильно?
  3. Иногда рассчитанный динамический диапазон изображения HDR ниже исходного. Как это возможно?

Спасибо за вашу помощь

РЕДАКТИРОВАТЬ: добавление изображения, чтобы лучше объяснить мои рассуждения

Left: standard correcly exposed image - Right: HDR image blended from 3 bracketed photos

Слева: стандартное правильно экспонированное изображение - Справа: изображение HDR, смешанное с 3 фотографиями в скобках

Ответы [ 4 ]

2 голосов
/ 04 октября 2019

Конечный результат Отображение с высоким динамическим диапазоном (HDRI) не позволяет получить изображение с динамическим диапазоном столь же высоким, как сцена, которую он пытается воспроизвести. У нас нет доступных технологий отображения, которые могут это сделать. По крайней мере, не практичные.

Цель HDRI - снять сцену с очень высоким динамическим диапазоном и воспроизвести ее таким образом, чтобы мы могли видеть очень яркие и очень темные детали в реальной сцене, используя наши ограниченныетехнологии отображения, которые имеют гораздо более ограниченный динамический диапазон.

Это не сильно отличается от того, когда Ансель Адамс использовал систему зон, чтобы зафиксировать до 14 остановок динамического диапазона на своих негативах, а затем сжать всю эту информациюна бумагу, которая была способна только к 6-8 ступеням динамического диапазона.

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

2 голосов
/ 03 октября 2019

Во-первых, независимо от конкретного определения динамического диапазона, вычисление яркости «все против нуля» бесполезно, потому что тогда отношение становится бесконечным. Ваш:

log2(max)-log2(0)

- это еще один способ сказать:

log(max/0)

, и мы не можем делить на ноль (а log2 (0) не определено)

Такдавайте забудем 0 на данный момент (ноль означает, что изображение в любом случае недостаточно хорошо экспонировано, потому что на уровне 0 детализации быть не может), тогда, действительно:

log2(255)-log2(1) = ~8 (EV)

Но это тоже не динамический диапазонпотому что в JPEG (и sRGB в целом) значения пикселя не являются пикселем яркости .

Принимая во внимание правильную формулу гамма , мынаконец получаем:

log2(1)-log2(1/3294.6) = ~12 (EV)

(См. также: 8-битный монитор, теоретическая контрастность )

0 голосов
/ 08 октября 2019

Хорошо, я думаю, что нашел решение сам. Я постараюсь объяснить это здесь, дайте мне знать, что вы, люди, думаете об этом.

INPUT : 3-битные изображения в оттенках серого 8

OUTPUT : 1 карта сияния HDR (одинарная точность)

Итак, для вычисления изображения HDR я использую алгоритм Devebec

Этот алгоритм выводит карту сияния, вычисленную из 3(или более) входные фотографии. Каждое значение пикселя представляет относительную освещенность (фактически, освещенность) соответствующей точки на сцене. Затем я могу рассчитать динамический диапазон, просто используя максимальное и минимальное значение пикселя из этой матрицы:

stops = log2(max) - log2(min);

Не важно, что значения освещенности не являются абсолютными, потому что мы вычисляем диапазон:

absolute_value = scale_factor + relative_value

range = absolute_max - absolute_min = (relative_max + scale_factor) - (relative_min + scale_factor) = relative_max - relative_min

Чтобы смешать изображения, алгоритм должен восстановить функцию отклика камеры. Эта функция связывает значения пикселей с относительной освещенностью сцены. Это означает, что когда у меня есть кривая отклика камеры и максимальное и минимальное значение пикселей в исходном изображении (в данном случае 0 и 255), я могу также получить относительные значения яркости исходного изображения:

exp(g(255)-ln⁡(dt) ) = E_max
exp(g(0)-ln⁡(dt) ) = E_min

где

g = inverse of camera response function (calculated by the script)
dt = shutter speed used on the original image

Затем я могу вычислить фактический динамический диапазон исходного изображения и сравнить его с динамическим диапазоном изображения HDR.

Тем не менее, некоторые изображения теряют DR при смешиваниивместе. Так что я немного растерялся. Например, эти изображения после смешивания имеют более узкий DR, чем раньше.

0 голосов
/ 06 октября 2019

Во-первых, 8-битный JPEG имеет 24-битный цвет;8 бит на цвет. Ваш 32-битный HDR также имеет 8-битный цвет и дополнительный 8-битный общий канал (Альфа).

Во-вторых, не каждое правильно экспонированное изображение будет иметь значения от мин (черный / 0) до макс (белый / 255). HDR переписывает значения в соответствии с возможностями отображения / воспроизведения ... если при этом он устраняет любые настоящие черные или белые цвета, которые существуют в оригинале, то результатом будет уменьшенный DR.

Выне желая измерять разницу между мин / макс, она всегда будет одинаковой из-за ограничений воспроизведения / отображения. То, что вы хотите измерить, это разница в количестве шагов / значений, которые существуют между мин и макс.

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

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