Me pregunto si hay alguna herramienta (independiente, complementos de Lightroom/Photoshop u otras) que pueda tomar una foto, buscar líneas que sean casi verticales u horizontales (por ejemplo, horizontes, postes de teléfono, etc.) y rotar y recortar automáticamente el ¿imagen?
Este es un proceso manual para mí en este momento, y parece algo que podría automatizarse.
¿Existe algo así?
Bien puede haber programas que intenten hacer lo que usted describe, pero dudo que sea tan efectivo. Si la cámara está ligeramente inclinada hacia arriba o hacia abajo, podría tener una imagen perfectamente nivelada, a pesar de no tener una sola línea horizontal o vertical.
La razón de esto es que, a menos que su cámara esté completamente plana a lo largo del eje óptico (que corre paralelo a la lente), sus postes de telégrafo, etc. no estarán verticales en una imagen, incluso si la cámara está nivelada: las líneas se convergen en un punto de fuga imaginario en el cielo. Del mismo modo, si la cámara no está frente a una línea horizontal verdadera, no se mostrará horizontal en la imagen.
Es posible emplear un enfoque más sofisticado, ya sea tratando de identificar el horizonte en las imágenes, o incluso mejor agrupando líneas que comparten un punto de fuga común, estimando el ángulo de inclinación y, por lo tanto, el ángulo correcto para rotar la imagen, pero tal proceso sería involucrarse considerablemente más.
Secundo totalmente lo que dijo Matt Grum... tratar de "nivelar" automáticamente una imagen basada en un algoritmo puramente lógico realmente solo sería efectivo en la situación ideal: donde tiene un horizonte perfectamente plano en una imagen correctamente centrada que minimiza la lente y distorsiones de perspectiva.
Considere el escenario en el que usted, como fotógrafo, tomó una foto nivelada de algo, como un lago, que no tiene una orilla perfectamente "horizontalmente plana"... la orilla se curva y finalmente se encuentra con usted. Un algoritmo de computadora puede tratar de nivelar tal imagen haciendo que la orilla del lago sea lo más plana posible... pero eso es incorrecto. La orilla del lago debe estar inclinada y eventualmente curvarse hacia ti. El ojo humano puede detectar tal cosa, ya que involucra numerosas señales de toda la escena, no solo líneas primarias. Pequeñas cosas, como el aspecto "vertical" de los árboles (que puede ser algo muy efímero que sería difícil de acomodar para un algoritmo informático).
Creo que este es uno de esos buenos argumentos para hacer lo mejor que pueda en la cámara, antes de tomar la foto, para asegurarse de que sus tomas estén niveladas. Más allá de las dificultades técnicas de nivelar con precisión las tomas con un algoritmo automático, las rotaciones que no sean de 90 grados son una de las ediciones más destructivas que puede realizar, ya que requiere volver a muestrear cada píxel de la imagen. Si puede tomar sus fotos en la cámara de manera que estén correctamente niveladas, no tendrá que realizar ninguna rotación que provoque esa degradación en los detalles de la imagen.
Sí, no lo he hecho y hay algo de programación en C o Python, pero lo intentaré pronto.
Mi situación es una cámara montada en un mástil que está en una boya tomando una fotografía que siempre contiene el horizonte. Esta debería ser una aplicación más simple que la tuya.
Primero, busque en OpenCV . Específicamente la transformada de la línea de Hough .
Para mi caso, espero que el horizonte sea mucho más distintivo que cualquier otra línea, puedo ajustarlo para encontrar solo una línea. Luego puedo rotar según el ángulo de la línea.
Para su aplicación, creo que filtraría cualquier línea de más de X grados fuera de la horizontal o la vertical.
Un poco de estadísticas, y es posible que pueda averiguar cuánto rotar.
En cuanto a la calidad de imagen degradada, convertiré archivos RAW a ppm en lugar de jpeg, por lo que no debería haber mucho más allá de algunos recortes.
El módulo de desarrollo de Lightroom ahora tiene esto como una opción integrada. No se necesitan programas externos. Puede nivelarse horizontal o verticalmente o, en modo totalmente automático, también compensará las líneas divergentes, etc. Es razonablemente bueno en imágenes donde las líneas verticales y horizontales esperadas son obvias.
Google Photos https://photos.google.com/ también puede hacer esto hoy en día. Sin embargo, no hay compatibilidad con RAW ni procesamiento por lotes, y solo muestra la opción de nivelación automática cuando lo desea.
BBischof
mattdm
Michael Nielsen
Michael Nielsen
Chupvl