Технологии цифровой обработки изображений предоставляют художнику или дизайнеру массу новых творческих возможностей. Одной из таких возможностей является виртуальное изменение условий, при которых фотография была получена. В данной статье описывается один из способов достижения такого эффекта, а именно превращение фотографии, снятой днем, в снятую ночью.
Традиционно для решения задач моделирования ночного изображения использовался стандартный алгоритм, состоящий из следующих этапов: суммарное понижение контрастности, суммарное понижение яркости изображения, размытие границ предметов, добавление оттенков синего цвета. В данной статье рассматриваются два основных фактора, влияющих на зрительное восприятие человека ночью, предложенных в работе [1]. А именно так называемый зрительный шум и <обобщение> предметов. Под обобщением понимается редукция некоторых деталей изображения.
Снижения четкости очертаний за счёт применения фильтра низких частот к исходному изображению не приводит к качественной имитации ночной сцены. Предметы кажутся размытыми, а их границы не так четко видны, как должны при ночной съемке. Удивительно, но очень мало исследований было посвящено тому, как формируется ощущение размытости у человека. Простой частотный анализ также не дает ответа на вопрос о четкости изображений, т.к. кажущееся четким изображением может иметь тот же частотный спектр, что и размытая картинка. Некоторые исследователи утверждают, что чувствительность к размытию зависит не только от количества высоких частот в изображении, но и от плотности распределения мелких деталей. Поэтому изображения не создают впечатления размытых, если края мелких деталей достаточно четкие.
Изображения, полученные ночью, субъективно кажутся зашумленными. Это неудивительно, если представить глаз в виде системы с положительной обратной связью, в которой слабый сигнал будет сильно зашумлен по сравнению с сигналом с большой амплитудой.
Один из методов имитации ночного освещения, заключается в использовании анизотропического рассеивания, которое сглаживает границы объектов, но сохраняет резкость деталей внутри объектов. В качестве альтернативы можно использовать обычное пространственное размытие, не требующее большого количества итераций, и легко контролируемое.
Значения пикселов исходного изображения I масштабируется в интервал [0,1]. Затем применяется фильтр низких частот, в качестве которого используется свертка с ядром Гаусса Gblur, где стандартное отклонение Gblur выбирается таким образом, чтобы подавить мелкие, не видные ночью детали.
![]()
После этого вторично применяется свертка, но уже с новым ядром Гаусса Gblur = 1/6 * Gblur, и берется разность обоих полученных изображений:
![]()
![]()
является довольно близкой аппроксимацией
градиента, используемого для выделения границ в изображении.
может быть разложена на две компоненты:
![]()
Видимость шума при сохранении резкости границ может быть сохранена за счет подчеркивания границ. Таким образом, ночное изображение может быть получено как:
![]()
, где a > 1.0
Однако более качественного эффекта можно
добиться с помощью другого подхода, подчеркивающего контраст
возле близких к 0 значений:
, ![]()
Для моделирования шума при съемке ночью можно использовать стандартный некоррелированный гауссов шум с нулевым математическим ожиданием.
Исходными данными для описываемого алгоритма являются изображения в RGB формате. На первом этапе необходимо для каждого пикселя определить соответствующую ему яркость ночью. При этом наибольшее предпочтение отдается пикселям с большей долей синего цвета, т.к. именно синие тона лучше всего различаются в темноте. Для этого сначала изображение переводится из RGB в пространство XYZ:

После этого яркость ночью вычисляется по формуле:

Затем применяются вышеописанные алгоритмы обработки. Однако, если яркость некоторых точек превышает определенный порог, например, в присутствие ярких ламп или пламени, то в данных точках результирующее изображение будет получено смешением исходного (дневного) и ночного изображений.
![]() | ![]() |
| Figure 1 Исходная фотография, полученная днем | Figure 2 Обработанная "ночная" фотография |
[1] W.B.Thompson, P.Shirley A Spatial Post-Processing Algorithm for Images of Night Scenes, 2002
Комментарии
Опечатка
Для нового ядра свертки нужно умножить не на 1/6, а на 1.6.
Сигма=1.6 при использовании ядра 5х5 дает:
0,013 0,023 0,028 0,023 0,013
0,023 0,042 0,051 0,042 0,023
0,028 0,051 0,062 0,051 0,028
0,023 0,042 0,051 0,042 0,023
0,013 0,023 0,028 0,023 0,013
отклонение сигма=1/6 дает ядро:
0 0 0 0 0
0 0 0 0 0
0 0 5,73 0 0
0 0 0 0 0
0 0 0 0 0
Что явно неверно, следовательно, опечатка.
Пояснение
1. При нахождении значения V (яркость при плохом освещении), если использовать значения x, y ,z в диапазоне от 0 до 255, необходимо V разделить на 3.2(критическое значение при цвете 0,255,254), а затем на 255, чтобы нормализовать значение в пределах [0,1].
2. При конвертации изображения в цветовое пространство XYZ CIE изображение приобретает голубой оттенок, но для имитации ночной картины этого недостаточно, необходимо добавить серых и синих тонов. Для этого каждая составляющая цвета домножается на Cblue(1.27, 0.97, 1.05), масштабируется коэффицентом k=0.7874 и умножается на V. После этого на основе полученного и исходного изображения получаем значения для каждого пиксела по формуле C=s*Cnight+(1-s)*Cday, гд s-коэффицент, который выбирается эмпирически или выводится на основе V. Только после этого применяется Размытие с ядром гаусса - Iblur и unsharp mask - Idiff.
Отправить комментарий