делаем N кадров с экспозициями от T₀ до T₁ секунд (T₀ < T₁);
определяем пороги (нижний, I₀, и верхний, I₁), в пределах которых считаем уровень серого приемлемым;
открываем все изображения и построчно считываем;
для каждой строки вычисляем уровень серого (по какой-нибудь из формул вроде 0.3R+0.5G+0.2B);
каждому пикселю считанной строки делаем подборку изображений, у которых I₀ <= I <= I₁; если таких нет (т.е. везде передержано, или везде черно), берем значение I, равное медиане в квадрате 3x3 (или больше, смотря какого размера картинка) соответствующего "крайнего" изображения (для I < I₀ берем изображение с T₀, а для I > I₁ — с T₁); если же такие значения есть, вычисляем I как медиану интенсивностей в данном кадре;
значение цвета берем из медианы 3x3 изображения, у которого уровень серого наиболее близок к 127; если же у нас крайние варианты (пересвет/чернота), берем R=G=B=255 для белого, R=G=B=0 для черного;
полученное новое значение I для каждого оставшегося на шаге 4 изображения делим на экспозицию (приводя таким образом к единой системе); лучше всего было бы дальше сделать линейную интерполяцию, но можно и просто опять взять медиану из полученных значений; это число, Inorm, мы умножаем на полученные на предыдущем шаге значения R,G,B, и сохраняем в бинарный файл (как тройку float или даже double); параллельно вычисляя экстремальные значения Inorm;
по окончанию преобразований, опять откатываемся к началу полученного бинарника, и, считывая из него тройки чисел, приводим их логарифмы к шкале 0..255 (используя вычисленные на предыдущем шаге экстремальные значения Inorm);
получаем красивое изображение.
Сами картинки и графики могу подготовить в octave.
no subject
Date: 2013-05-13 04:17 am (UTC)Принцип такой:
Сами картинки и графики могу подготовить в octave.