Компенсация экспозиции после съемки

У меня есть стопка фрагментов изображений (взятых с дрона), которые я хочу объединить в единое изображение. Я хочу сделать компенсацию экспозиции, чтобы уменьшить разницу в освещении между фрагментами изображения перед созданием мозаики из-за различий в каждом изображении. Я видел следующую формулу, используемую для такой задачи:компенсация экспозиции

где:

p' - правильный пиксель

p — исходный нескорректированный пиксель

k - число F диафрагмы

t - время экспозиции

К - это ISO

Из моих метаданных EXIF ​​я получаю следующие значения:

к = 2,200000078

т = 0,002007692122

К = 100

Это дает мне поправочный коэффициент 24,1072836326 (на основе приведенного выше уравнения), который, если я использую его для умножения на все пиксели (p) в изображении, приводит к резкому изменению значений пикселей (p'). Есть ли что-то, что я делаю неправильно здесь? Например, мои единицы измерения правильные?

Я вообще этого не понимаю. «Правильный» пиксель? Что значит умножить пиксель? Что ты умножаешь? И если у вас есть какой-то коэффициент умножения, который рассчитывается для каждого пикселя... о, я не знаю. В общем, что?!
Были ли все изображения сделаны при одинаковых условиях освещения? Или в разное время при разном освещении?
Возможно, вам потребуется преобразовать время затвора из десятичного значения (0,002007692122) в знаменатель дробного значения 1/x (500).
Снято при разном освещении; т. е. прерывистая облачность, прямой солнечный свет, переменная высота солнца

Ответы (2)

В: «Как мне компенсировать экспозицию группы фотографий, чтобы я мог склеить их вместе?».

Я тоже не согласен с формулой, не так ли: p' = p + (p * (k^2)/(t*k)) ? [Примечание: вы хотели бы исправить «t», как указано выше в комментарии @Michael Clark.]

В любом случае, ваш «метод компенсации» состоит в том, чтобы просто сделать каждый пиксель на конкретной фотографии немного темнее или немного ярче, выровнять их, а затем сшить вместе.

Посмотрите на блок-схему демонстрации OpenCV Stitching:

Блок-схема сшивания

Видеть? (ваш метод не даст красивых и идеальных результатов в его нынешнем виде).

  • Во-первых (ну, я начну с этого) вам нужны Регистрационные данные (желтый блок посередине).

  • Регистрационные данные идут в «Деформацию изображений», одно из которых идет в «Оценить ошибки экспозиции», а затем «Компенсировать ошибки экспозиции».

  • Затем деформированные и компенсированные изображения смешиваются.

Вы можете просмотреть исходный код , чтобы увидеть, как реализована формула.

Вы можете просто загрузить исполняемый файл Windows с SourceForge, чтобы не тратить время на чтение, изучение и компиляцию.

Есть много других бесплатных программ для сшивания, большинство из которых имеют исходный код.

Я предполагаю, что ваша формула даст такой результат:

Видны линии сшивания

Вместо этого вы, вероятно, хотите получить такой результат:

Демонстрационный результат сшивания OpenCV

Есть ли что-то, что я делаю неправильно здесь?

Да. Вы предполагаете, что вид на каждом изображении должен иметь одинаковую среднюю яркость. Но когда вы направляете камеру в разные стороны при одинаковых условиях освещения, вы меняете композицию сцены. Возможно, вы снимаете менее яркое небо и более темный передний план. Или вы можете снимать меньше светлой травы и больше темных деревьев. Нельзя ожидать, что все изображения будут иметь одинаковую среднюю яркость, когда каждое изображение снимается с разных направлений на разные объекты.

Самый эффективный способ избежать этой проблемы — установить одинаковую экспозицию для всех кадров перед съемкой (т. е. ручная экспозиция или блокировка экспозиции ). Поскольку вы этого не сделали, лучше всего отрегулировать относительную экспозицию каждого кадра, чтобы компенсировать разницу в экспозиции при съемке изображений. То есть вам нужно выбрать значение экспозиции в одном кадре, а затем нормализовать все остальные кадры, компенсируя разницу в ISO, времени затвора и диафрагмы значением экспозиции в выбранном вами изображении.

разве это не именно то, что должна делать формула? для меня это выглядит как нормализация для изменений в настройках экспозиции.
Нет, потому что разные вещи имеют разную яркость. Если вы хотите, чтобы все было одинаково ярко, все, что у вас будет, — это сплошное серое изображение.
формула применяет постоянный коэффициент коррекции экспозиции ко всем пикселям изображения. фактор зависит только от параметров воздействия.
@ths формула, если она верна, была бы полезна для нормализации изображений одного и того же поля зрения , снятых с разной экспозицией. Но когда поле зрения изменяется и экспозиция «усредняется» для соответствия, одни и те же точки, включенные в оба поля зрения, почти наверняка будут иметь разную яркость. Точка средней яркости с очень яркими объектами с одной стороны и очень тусклыми объектами с другой будет отображаться в кадре, который в основном включает тусклые объекты, как очень яркие, но будет отображаться как тусклая в кадре, который включает в основном более яркие части. сцены.