Я читал блог Histogram Equalization for Image Enhancement, который дает 7 шагов для преобразования обычных изображений в HDR-изображение (см. Ниже). Говорят, что программа C/C++ для выравнивания гистограммы может быть легко записана с использованием Open Computer Vision Library или OpenCV. Основные этапы такой программы включают:Как работает HDR, как сделать эффект HDR
Прочитать исходное изображение. Это может быть в большинстве форматов изображений благодаря OpenCV. Это входное изображение содержит
n
пикселей:n = height × width
Преобразование из RGB (странно, хранящуюся в порядке синий, зеленый, красный от OpenCV) к HSV: оттенок, насыщенность и Value.
Рассчитать гистограмму входного изображения. Это массив значений 256, где
H[x]
содержит количество пикселей со значениемx
.Рассчитать функцию суммарной плотности гистограммы. Это массив из 256 значения, где
cdf[x]
содержит количество пикселей со значениемx
или менее:cdf[x] = H[0] + H[1] + H[2] + ... + H[x]
Loop через
n
пикселей во всем изображении и заменить значение на каждомi
«я точки:V[i] <-- floor(255*(cdf[V[i]] - cdf[0])/(n - cdf[0]))
Конвертировать изображение с HSV на RGB.
Сохраните изображение в нужном формате и названии файла.
На шаге 3 я не понимаю, что такое H[x]
? x
относится к значениям R, G, B или H, S или V? Кроме того, на шаге 5 значение значения i
?
Это всего лишь алгоритм выравнивания гистограммы, не связанный с реальной HDR-визуализацией. –