Cómo alinear una pila de imágenes para un lapso de tiempo con las herramientas de FOSS

Tomé varias series de fotogramas que pretendo procesar en una secuencia de lapso de tiempo. Cuando simplemente ejecuté StopMotion para procesarlos en una secuencia de película, me di cuenta de que la imagen parecía desigual por dos razones principales:

  • Algunas series se tomaron en condiciones de viento, lo que provocó que el trípode de la cámara se moviera un poco.
  • Otras fueron tomadas con la cámara de un teléfono inteligente en modo HDR. Dado que estas imágenes ya están procesadas, su campo de visión varía ligeramente, lo que es visible cuando se visualizan en secuencia. Parece como si el nivel de zoom estuviera ligeramente alterado entre ellos; sin embargo, a veces la variación es solo a lo largo de un eje, con la imagen ligeramente distorsionada.Dado que se trata de un artefacto de posprocesamiento, es posible que las herramientas que se basan en la geometría de la lente no funcionen aquí. He hecho esa parte una pregunta separada .

¿Cómo puedo alinear estas imágenes para que la secuencia de imágenes correspondiente no aparezca entrecortada? Las restricciones son:

  • Solo herramientas FOSS que están disponibles en Linux
  • Cada secuencia consta de alrededor de 250 imágenes (equivalente a 10 segundos a 25 fps), por lo que se necesita un alto nivel de automatización. Algunos de los enfoques presentados aquí funcionan bien para una secuencia HDR de 3 exposiciones, pero no se prestan bien a secuencias más largas.

Respuestas (1)

Hugin tiene un tutorial en su sitio web, que fue un buen punto de partida.

Herramientas necesarias:

  • Hugin
  • imagenmagia
  • cáscara de golpe

Crear un proyecto Hugin

Inicie Hugin y asegúrese de seleccionar Interfaz > Avanzado (Experto también lo hará). Vaya a la ventana de Panorama Stitcher .

Configure el campo de visión (50 ° funcionó bien para la cámara de mi teléfono inteligente), los parámetros de la lente y el tipo de proyección. Rectilíneo debería funcionar en la mayoría de los casos.

Cargue las imágenes para su secuencia.

Crear puntos de control

Los puntos de control son características de la imagen que Hugin utiliza para la alineación. Cada par de fotogramas consecutivos debe compartir puntos de control para alinearlos correctamente.

Todavía en la pestaña Fotos , en Coincidencia de funciones , seleccione una estrategia para crear puntos de control. Alinear la pila de imágenes funcionó bien para mí, es posible que tengas que experimentar un poco.

Antes de hacer esto por primera vez, debe asegurarse de que se creen puntos de control entre pares de imágenes cronológicamente consecutivas (el valor predeterminado es ordenar las imágenes por exposición). Vaya a Archivo > Preferencias y vaya a la pestaña Detectores de puntos de control . Seleccione Alinear pila de imágenes y haga clic en Editar… . En Argumentos , agregue --use-given-order. Luego cierre ambos cuadros de diálogo con Aceptar .

Selecciona el primer grupo de fotos y haz clic en Crear puntos de control . Desafortunadamente, Hugin no puede procesar más que un poco por debajo de 128 imágenes de una sola vez. Si tiene más de 120 imágenes en su serie, simplemente repita este paso en lotes de 120 imágenes. Asegúrese de incluir la última imagen de cada lote en el próximo lote también. El procesamiento puede demorar un tiempo.

Ahora vaya a la pestaña Puntos de control . Seleccione la imagen #0 en el panel izquierdo y la imagen #1 en el derecho. Debería ver los puntos de control compartidos entre las imágenes. Haga clic en el botón de flecha derecha para avanzar en la serie. Cada par de imágenes consecutivas debe compartir un conjunto de puntos de control. (Es posible que esto no siempre funcione cuando la cámara se está moviendo, por ejemplo, cuando se toman secuencias de lapso de tiempo desde un vehículo en movimiento).

Si su secuencia tiene grandes porciones de nubes, el paso anterior podría haber creado algunos puntos de control en el cielo. Dado que esto estropearía la alineación, debemos eliminarlos: vuelva a la pestaña Fotos , seleccione todas las imágenes, haga clic con el botón derecho en la lista y seleccione Puntos de control > Eliminar puntos de control en las nubes . Esto tomará un rato. Puede pasar por alto algunos puntos de control, pero en mi experiencia reduce su número lo suficiente como para que la alineación funcione como se esperaba.

Nota: Aparentemente, las últimas versiones de Hugin pueden excluir áreas nubladas durante la creación del punto de control, según la estrategia que se elija.

Verifique los parámetros de la lente

Vaya a la ventana de vista previa de panorama rápido ( Ver > Ventana de vista previa rápida ) y verifique la vista previa de la esfera. La imagen debe llenar solo una parte de la esfera, con contornos casi rectangulares y los bordes solo mínimamente distorsionados (similar a los televisores CRT antiguos).

Si los contornos de la imagen son casi circulares, es posible que deba reajustar los parámetros de la lente. (Descubrí que esto sucedía con las imágenes HDR; aparentemente, el posprocesamiento en el dispositivo descarta la información de la lente). Vuelva a Panorama Stitcher y, en la pestaña Fotos , seleccione todas las imágenes y haga clic con el botón derecho en la lista. Entonces tambien:

  • Cámbielos a parámetros de lente buenos conocidos ( Lente ): la lente de su cámara debe estar en la base de datos si ha procesado previamente una imagen no HDR desde el mismo dispositivo
  • O configure manualmente el campo de visión ( Editar variables de imagen ).

Luego verifique nuevamente en Fast Panorama Preview .

Calcular alineación

De vuelta en la ventana de Panorama Stitcher , en la pestaña Fotos , seleccione uno de los siguientes en Optimizar > Geométrico :

  • Posiciones (y, p, r) para corregir solo el movimiento de la cámara
  • Posiciones y Vista (y, p, r, v) para eliminar también los artefactos de procesamiento HDResto aún no funciona para los artefactos descritos anteriormente, donde las imágenes están ligeramente distorsionadas a lo largo de un eje. Todavía estoy tratando de averiguar cómo lidiar con esto...

Haga clic en Calcular . Esto tomará algún tiempo otra vez.

Alinear y recortar

Cambie a la ventana de vista previa de panorama rápido .

En la pestaña Proyección , seleccione la misma proyección que su tipo de lente. En la pestaña Mover/Arrastrar , haga clic en Ajustar y, en la pestaña Recortar , seleccione Recorte automático HDR .

renderiza los fotogramas

De vuelta en la ventana de Panorama Stitcher , vaya a la pestaña Stitcher .

En Campo de visión , haga clic en Calcular campo de visión . (Es posible que esto ya esté configurado correctamente).

En Tamaño del lienzo , haga clic en Calcular tamaño óptimo .Luego, en Recortar , haga clic en Ajustar recorte a las imágenes .(No use la opción de recorte aquí, ya que puede dejar áreas en blanco cerca de los bordes de algunas imágenes).

Anule la selección de todo en Salidas panorámicas .

En Imágenes reasignadas , seleccione Sin corrección de exposición, rango dinámico bajo .

Haga clic en Coser . Se le pedirá que seleccione un prefijo: esta es una ruta y una cadena que se antepondrá a cada archivo generado. Recomiendo colocar los archivos generados en un directorio separado.

Renderizar los cuadros tomará un tiempo nuevamente.

Limpiando las imágenes

Después de que Hugin haya terminado su trabajo, terminará con una serie de imágenes. Solo faltan dos cosas:

  • Las imágenes están en formato TIFF: este es el formato que usa Hugin internamente y no hay forma de cambiarlo.
  • Después de alinear las imágenes, Hugin las recortó a la parte que corresponde a cada fotograma de la serie. Por lo tanto, las imágenes resultantes serán un poco más pequeñas que las originales.

Afortunadamente, estas dos cosas se pueden arreglar en un solo paso. Como beneficio adicional, si tomó las exposiciones a una resolución superior a la resolución objetivo para la secuencia de la película, este paso también cambiará su tamaño.

Inicie bash, muévase al directorio que contiene los archivos generados, luego ejecute:

for i in *.tif ; do convert $i -resize 1920x1080^ -gravity center -extent 1920x1080 `echo $i | sed s/.tif/.jpg/` ; done
rm *.tif

(si su resolución objetivo es diferente a 1920 × 1080, cambie la primera línea en consecuencia).

Esto escalará cada imagen para llenar la resolución de destino y la recortará al tamaño si las proporciones no encajan del todo. La segunda línea eliminará los archivos generados por Hugin.

¡Eso es todo! Ahora use su herramienta favorita para procesar la secuencia resultante de imágenes en un clip de película.

1) Bash no es necesario aquí, cualquier shell POSIX funcionará 2) Cita tus variables, por ejemplo, use "$i"en lugar de $i3) Usa la expansión de parámetros en lugar de hacer eco sed, por ejemplo, convert "$i" "${i%.tif}.jpg"4) Usa mogrifyen lugar de convertpara que no necesites el bucle. Ejemplomogrify -resize '1920x1080^' -gravity center -extent 1920x1080 -format jpg -- *.tif