Tengo una pila de mosaicos de imágenes (tomados de un dron) que quiero crear en mosaico en una sola imagen. Quiero hacer una compensación de exposición para reducir la variación en la iluminación entre los mosaicos de la imagen antes del mosaico debido a las variaciones dentro de cada imagen. He visto la siguiente fórmula utilizada para tal tarea:
dónde:
p' es el píxel correcto
p es el píxel original sin corregir
k es el número F de apertura
t es el tiempo de exposición
K es la ISO
De mis datos de metadatos EXIF obtengo los siguientes valores:
k = 2.200000078
t = 0,002007692122
K = 100
Esto me da un factor de corrección de 24.1072836326 (basado en la ecuación anterior), que si uso para multiplicar contra todos los píxeles (p) en la imagen, resulta en un cambio drástico en los valores de píxeles (p'). ¿Hay algo que estoy haciendo incorrectamente aquí? Por ejemplo, ¿mis unidades son correctas?
P: "¿Cómo compenso la exposición de un montón de fotos para poder unirlas?".
Yo tampoco estoy de acuerdo con la fórmula, ¿no debería ser: p' = p + (p * (k^2)/(t*k)) ? [Nota: le gustaría corregir "t" como se mencionó anteriormente en el comentario de @Michael Clark.]
En cualquier caso, su "método de compensación" es simplemente hacer que cada píxel de una foto en particular sea un poco más oscuro o un poco más brillante, igualarlos y luego unirlos.
Mire un diagrama de bloques para la demostración de unión de OpenCV:
¿Ver? (su método no producirá resultados hermosos y perfectos, en su forma actual).
Primero (bueno, comenzaré por ahí) necesita Datos de registro (bloque amarillo en el medio).
Los datos de registro van a "Deformar imágenes", uno de los cuales va a "Estimar errores de exposición" y luego a "Compensar errores de exposición".
Luego se mezclan las imágenes deformadas y compensadas.
Puede ver el código fuente para ver cómo se implementa la fórmula.
Simplemente puede descargar un ejecutable de Windows desde SourceForge para ahorrar algo de lectura, aprendizaje y compilación.
Hay muchos otros programas de unión gratuitos, la mayoría con código fuente disponible.
Sugiero que su fórmula producirá este tipo de resultado:
En cambio, probablemente desee este tipo de resultado:
¿Hay algo que estoy haciendo incorrectamente aquí?
Sí. Está asumiendo que la vista en cada imagen debe tener un brillo promedio igual. Pero cuando apuntas la cámara en diferentes direcciones bajo las mismas condiciones de iluminación, estás cambiando las composiciones de la escena. Es posible que esté capturando un cielo menos brillante y un primer plano más oscuro. O puede estar capturando menos hierba de colores claros y árboles de colores más oscuros. No puede esperar que la totalidad de cada imagen tenga el mismo brillo promedio cuando cada imagen se toma apuntando en diferentes direcciones a diferentes objetos.
La forma más eficaz de evitar este problema es establecer la exposición en el mismo valor para todos los fotogramas antes de tomar las imágenes (es decir, exposición manual o bloqueo de exposición ). Como no lo hizo, lo mejor que puede hacer es ajustar la exposición relativa de cada cuadro para compensar las diferencias en la exposición cuando se tomaron las imágenes. Es decir, debe seleccionar el valor de exposición en un cuadro y luego normalizar todos los otros cuadros compensando las diferencias en ISO, tiempo de obturación y apertura al valor de exposición en su imagen seleccionada.
osullico
miguel c
miguel c
Landini135