Software para Alinear Manualmente Fotogramas: ManualFrameAlignment

ManualFrameAlignment es una pequeña utilidad que permite hacer un alineado manual inicial no muy preciso de los fotogramas de un video. Este alineamiento manual puede facilitar en gran medida que otros programas como Registax sean capaces posteriormente de conseguir un alineamiento mucho más preciso de los fotogramas, evitando la aparición de muchos artefactos típicos cuando se usan videos muy mal alineados.

Este programa ha sido creado pensando específicamente en vídeos de la Luna en los que, por motivos de unas malas condiciones atmosféricas (viento, mal seeing) los fotogramas se "bambolean" e impiden hacer un alineamiento automático de calidad. ManualFrameAlignment no pretende ser una utilidad con grandes funcionalidades sino realizar exclusivamente la tarea para la que ha sido originalmente ideado.

Su funcionamiento es bastante sencillo. Se parte de un directorio que contiene los frames del video (en formato PNG, TIF o JPG) y un directorio destino donde se almacenarán los frames alineados. El programa presentará una ventana con el primer fotograma. El usuario debe centrar el cursor del ratón sobre alguna característica de la primera imagen (un cráter, por ejemplo). El programa comienza a mostrar sucesivamente los distintos frames del video y el usuario debe seguir con el ratón la característica en la que se fijó en el primer fotograma. Una vez recorrida toda la lista de fotogramas el programa realineará los distintos fotogramas de acuerdo con los desplazamientos del ratón que el usuario haya realizado.

A continuación se muestra un pequeño clip de la luna antes y después de procesarlo con este programa:

 

Descarga, Instalación y uso del Programa

ManualFrameAlignment está programado en el lenguaje Java, con lo que debe funcionar en la mayoría de sistemas operativos actuales, incluyendo: GNU/Linux, Unix, Mac OS e incluso Windows. Para que funcione es necesario instalar el JRE de Java. Consulta la página oficial de Java para instalarlo en tu ordenador.

El programa es software libre, con lo que junto al "ejecutable" de la aplicación encontrarás el código fuente del mismo por si quieres modificarlo, añadirle alguna funcionalidad o simplemente ver como funciona. Descargar ManualFrameAlignment de Sourceforge.

Para instalarlo solo tienes que descomprimir el fichero en un directorio de tu elección, buscar el fichero ManualFrameAlignment.jar (en el directorio dist) y lanzar la aplicación desde un shell con la siguiente instrucción:

  > java -jar ManualFrameAlignment.jar inputDir outputDir

donde inputDir es el directorio donde están los frames a alinear y outputDir es el directorio donde se copiarán los frames alineados.

El programa acepta algunos parámetros adicionales (que se pueden combinar de la manera que se quiera):


  -laLagBetweenFrames

especifica el tiempo que transcurrirá entre fotograma y fotograma mientras que el usuario alinea (en décimas de segundo). Por defecto tiene un valor de 9. Por ejemplo:

  > java -jar ManualFrameAlignment.jar inputDir outputDir -la8

presentará los frames a alinear cada 0.8 segundos.


  -ilInitialLag

especifica el retraso inicial antes de comenzara presentar frames consecutivos (en décimas de segundo). Por defecto tiene un valor de 40. Por ejemplo:

  > java -jar ManualFrameAlignment.jar inputDir outputDir -il100

esperará 10 segundos antes de comenzar a presentar los frames para el alineamiento.


  -bBorderSize

especifica un borde de pixels. Si una imagen se desplaza más de dicha cantidad con respecto al fotograma original se descartará (útil para evitar fotogramas muy descolocados). Por ejemplo:

  > java -jar ManualFrameAlignment.jar inputDir outputDir -b40

descartará todos los frames que se desplacen más de 40 píxeles con respecto a la imagen inicial.


  -bupperBorder,bottomBorder,leftBorder,rightBorder

Igual que la opción anterior pero permite especificar el tamaño del borde superior, inferior, izquierdo y derecho de manera específica. Por ejemplo:

  > java -jar ManualFrameAlignment.jar inputDir outputDir -b40,100,30,120

descartará todos los frames que se desplacen del frame de referencia más de cuarenta píxeles por encima del borde superior, más de 100 píxeles por debajo del borde inferior, más de 30 por el borde izquierdo o más de 120 por el borde derecho.


  -spSavePointsFile

guardará en un fichero los desplazamientos de cada fotograma para ser utilizados en una futura llamada al programa. Por ejemplo:

  > java -jar ManualFrameAlignment.jar inputDir outputDir -sppoints.txt

guardará los desplazamientos de cada fotograma en el fichero points.txt.


  -lpLoadPointsFile

cargará de un fichero los desplazamientos de cada fotograma. Esta opción no presentará la ventana de alineación de fotogramas proque asume que ese paso ya se ha llevado a cabo en una ejecución anterior del programa. Por ejemplo:

  > java -jar ManualFrameAlignment.jar inputDir outputDir -lppoints.txt

cargará los desplazamientos de cada fotograma del fichero points.txt.

Nota: Durante la fase de alineación de los frames, al hacer click pausaremos el proceso. Para continuarlo basta con repetir otro click.

 

Preguntas, Aclaraciones, Sugerencias, Errores

Si tienes alguna pregutna o duda sobre el programa, así como si quieres hacer alguna sugerencia o informarme de algún problema con el programa, puedes hacerlo contactando con nosotros.

Por favor, ten en cuenta que tiene como premisa el ser muy simple, fácil de usar y cumplir exclusivamente con su objetivo original. No pretendas que incorporemos "grandes" mejoras, porque muy probablemente no lo haremos. Por otro lado, no debes mandarnos preguntas relacionadas con Java o con tu sistema operativo ya que probablemente no sabremos resolverlas (o en el caso de Windows, no querremos responderlas).