Компенсация экспозиции после съемки - Фотопедия
0 голосов
/ 15 декабря 2017

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

где:

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

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

k - число апертуры F

t - время выдержки

К - это ISO

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

k = 2.200000078

t = 0,002007692122

K = 100

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

Ответы [ 2 ]

1 голос
/ 16 декабря 2017

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

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

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

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

Block Diagram of Stitching

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

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

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

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

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

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

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

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

Stitching lines visible

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

OpenCV Stitching Demo result

0 голосов
/ 15 декабря 2017

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

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

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

Добро пожаловать на сайт Фотопедия, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...