2012-06-20 3 views
0

Я читал блог Histogram Equalization for Image Enhancement, который дает 7 шагов для преобразования обычных изображений в HDR-изображение (см. Ниже). Говорят, что программа C/C++ для выравнивания гистограммы может быть легко записана с использованием Open Computer Vision Library или OpenCV. Основные этапы такой программы включают:Как работает HDR, как сделать эффект HDR

  1. Прочитать исходное изображение. Это может быть в большинстве форматов изображений благодаря OpenCV. Это входное изображение содержит n пикселей: n = height × width

  2. Преобразование из RGB (странно, хранящуюся в порядке синий, зеленый, красный от OpenCV) к HSV: оттенок, насыщенность и Value.

  3. Рассчитать гистограмму входного изображения. Это массив значений 256, где H[x] содержит количество пикселей со значением x.

  4. Рассчитать функцию суммарной плотности гистограммы. Это массив из 256 значения, где cdf[x] содержит количество пикселей со значением x или менее: cdf[x] = H[0] + H[1] + H[2] + ... + H[x]

  5. Loop через n пикселей во всем изображении и заменить значение на каждом i «я точки: V[i] <-- floor(255*(cdf[V[i]] - cdf[0])/(n - cdf[0]))

  6. Конвертировать изображение с HSV на RGB.

  7. Сохраните изображение в нужном формате и названии файла.

На шаге 3 я не понимаю, что такое H[x]? x относится к значениям R, G, B или H, S или V? Кроме того, на шаге 5 значение значения i?

+0

Это всего лишь алгоритм выравнивания гистограммы, не связанный с реальной HDR-визуализацией. –

ответ

2

Первый вопрос:

Н (х) гистограмма изображения.

Гистограмма цифрового изображения с уровнями интенсивности в диапазоне [0, 255] представляет собой дискретную функцию h (r_k) = n_k, где r_k - значение k-й интенсивности, а n_k - количество пикселей в изображении с интенсивность r_k.

От: цифровой обработки изображений третьего издания по Гонсалес/Woods странице 120

Второй вопрос: что я?

i - переменная, чередующаяся над изображением.

+0

спасибо С вашей помощью я уже вычислил гистограмму [IMG] http://t1.qpic.cn/mblogpic/816e11b21ea928198bce/2000 [IMG] теперь как конвертировать "V [i] <- floor (255 * (cdf [V [i]] - cdf [0])/(n - cdf [0])) " Код C++ спасибо! – stonexing

+0

Это задание.Вы можете заменить '<-' на '=' – Thomas

+0

@stonexing, пожалуйста, отметьте как разрешено – Thomas