Хорошо, я думаю, что нашел решение сам. Я постараюсь объяснить это здесь, дайте мне знать, что вы, люди, думаете об этом.
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, чем раньше.