Вычисление выравнивания гистограммы после преобразования в значения HSB - PullRequest
1 голос
/ 21 февраля 2012

Я пытаюсь выровнять цветное изображение.Мне было сказано преобразовать его в HSB, а затем выполнить выравнивание на канале яркости перед преобразованием обратно в RGB.

Я рассчитал частоты, но у меня проблемы с масштабным коэффициентом.Как я понимаю, масштабные коэффициенты в случае цветов обычно составляют 255 / (высота * ширина) изображения.Может кто-нибудь помочь, пожалуйста, что делать в случае яркости?Спасибо.

1 Ответ

3 голосов
/ 21 февраля 2012

Вы правы, когда говорите, что вам необходимо преобразовать изображение RGB в цветовое пространство HSB (или HSV ), чтобы выровнять цветное изображение .

Однако я не понимаю, что вы подразумеваете под масштабным коэффициентом, поэтому я опишу алгоритм:

  1. Преобразование входного изображения в цветовое пространство HSB.

  2. Используя канал B (яркость), вычислите частоту каждого значения пикселя. Фактически, вы вычисляете уровень серого гистограмма изображения. Если ваше изображение имеет 256 различных значений яркости, вы можете сохранить гистограмму в векторе H[0..255], где H[i] дает вам частоту i-го значения яркости. Для вычисления H[i], подсчитайте количество пикселей со значением i и разделите на количество пикселей в изображении . Если вы суммируете все записи H[i], вы должны получить значение 1.0.

  3. Используя гистограмму H[i], вычислите новый вектор CDF[i], где:

    CDF[0] = H[0] and CDF[i] = CDF[i - 1] + H[i].

    Фактически, вектор CDF[i] хранит функцию кумулятивного распределения значений яркости по входному изображению.

  4. Последний шаг состоит в обновлении канала B вашего изображения: B'[x,y] = 255 * CDF[B[x,y]], где B[x,y] - это значение B пикселя в позиции (x, y), а B'[x,y] - это новое значение B пиксель в позиции (х, у). Опять же, это предполагает, что ваше изображение имеет 256 различных значений яркости.

...