¿Puede el software detectar automáticamente el enfoque de la imagen?

Me preguntaba si había algún software de administración de fotos que pudiera detectar automáticamente y "calificar" las imágenes en función de qué tan enfocadas están. Esto me ocurre con bastante frecuencia cuando miro una gran serie de imágenes macro del mismo tema.
En un mundo perfecto, Light Room (o cualquier programa) podría resaltar las áreas enfocadas y desenfocadas de la misma manera que detecta las áreas quemadas de una imagen. Además, el algoritmo que espero que exista sea inteligente y no se distraiga con fondos borrosos y solo busca que un área suficiente esté lo suficientemente enfocada.
¿Algo así por ahí?

Como otro pensamiento para las personas que hablan de que las imágenes están enfocadas en el lugar equivocado, y que los modelos de enfoque de cámara ya analizan esto. Otro factor importante para la falta de claridad en una imagen macro es el desenfoque del movimiento de la cámara. Esto daña todos los puntos de una imagen y no es algo que la cámara tenga en cuenta al enfocar.

¿Qué cámara estás usando? Algunas cámaras incluyen la información del punto de enfoque en sus archivos RAW y datos EXIF, con un poco de esfuerzo, no sería demasiado difícil usar esa información para medir la nitidez y el contraste para determinar una calificación de enfoque. Aunque no conozco nada que haga esto...
@Benjamin Anderson: esta es solo una solución parcial. Por lo general, enfoca y luego recompone, por lo que la indicación del punto de enfoque será engañosa en este caso y clasificará muchas imágenes perfectas como desenfocadas.
@ysap: cierto, especialmente cuando se trata de tomas macro.
Sería aún mejor si pudieras ver más claramente lo que está enfocado antes de tomar una foto. Por ejemplo, la vista en vivo podría usar códigos de colores para resaltar claramente las áreas enfocadas y desenfocadas. Me pregunto si hay cámaras que puedan hacer eso...
@Jukka, lo que está pidiendo se llama pico de color y se encuentra en cámaras de video digitales de alta gama (que a menudo se enfocan manualmente). Creo que puede obtenerlo en la Canon 5D mkII a través del truco del firmware Magic Lantern.

Respuestas (7)

Es una pregunta interesante. Ciertamente, es posible que el software detecte las partes de una imagen que está enfocada, ya que es la base para el software de apilamiento de enfoque como Helicon Focus .

El apilamiento de enfoque es una técnica utilizada por los fotógrafos macro. La profundidad de campo en muchas tomas macro es muy reducida, por lo que para ampliarla es posible tomar un conjunto de fotografías del sujeto, modificando el punto focal en cada una. Helicon Focus toma la pila de fotos y detecta las partes más enfocadas de cada imagen, y las combina para producir un resultado en el que todo el sujeto está enfocado. También es posible hacer esto con parte de la tecnología detrás de Hugin , pero es un poco más complicado de configurar.

Creo que la dificultad de extender esto para una verificación general "enfocada" sería determinar si el sujeto está enfocado. ¿Cómo determinamos automáticamente cuál es el sujeto? ¿Cuánta profundidad de campo requirió el fotógrafo?

Creo que la necesidad de controlar el sistema de enfoque automático de la cámara demuestra que es imposible saber, sin el aporte del fotógrafo, cuál es la intención. También hay una especie de problema de Gódel, en el que puedo tomar una imagen desenfocada en la pared y tomar una fotografía de ella, que está correctamente enfocada. Sería imposible identificar esto último como correcto.

Lo que está pidiendo es problemático en el sentido de que una detección de enfoque basada en software utilizará esencialmente el mismo algoritmo que utiliza un sistema de enfoque automático de cámara basado en contraste. Eso significa que necesita escanear la imagen y buscar el lugar con mayor contraste para determinar la cantidad de "enfoque". Sin embargo, es posible que haya fotografiado un sujeto con pocos detalles (bajo contraste), por lo que, aunque su enfoque esté en su objetivo, el algoritmo del software determinará una imagen con poco enfoque o desenfocada.

Además, ¿cómo sabrá el software cuál era su punto de enfoque real previsto? Si está fotografiando un retrato y los ojos están mal enfocados, el software detectará un enfoque perfecto en la oreja, pero esta es realmente una imagen de baja calidad o inutilizable.

Estoy empezando a ver cómo es posible diseñar un programa así. Para las caras, bueno, haz un programa de tipo reconocimiento facial, mira los ojos y mira si están enfocados. Algo debería ser posible para esto, aunque podría ser algo difícil...
Bueno, la técnica propuesta (resaltar áreas que parecían estar enfocadas) no tendría el problema de oreja contra ojo. Supongo que ver qué áreas son relativamente contrastantes vs. no contrastantes sería igualmente interpretable, y si le preocupa una serie de imágenes similares, entonces compararlas entre sí en lugar de una calidad de "enfoque" absoluta parece ser el forma correcta de hacerlo.
@Reid: supongo que la intención del OP es tener un proceso automatizado para eliminar imágenes malas. Mi respuesta aborda este requisito al señalar por qué esta característica será difícil de lograr, y también di ejemplos en los comentarios de otras respuestas. Si hay un humano en el circuito, entonces todo es posible...
Mi lectura de la pregunta es que el OP parece estar describiendo bastante claramente un proceso de iniciativa mixta, no uno completamente automatizado (por ejemplo, "resaltar áreas enfocadas y fuera de foco").

Como ser humano, preferiría calificarlos yo mismo con mi observación subjetiva, ya que sé dónde debería o no debería haber estado el enfoque, pero supongo que podría haber una forma aproximada de determinar la calidad del enfoque de una toma en función de la apertura, distancia focal, distancia al sujeto y áreas de enfoque/desenfocadas de la imagen.

Por ejemplo, distancia focal larga, apertura pequeña, sujeto cercano significa que es probable que haya un pequeño punto de enfoque con mucho bokeh (para aplicaciones comunes de esta receta).

Por otro lado, una distancia focal corta con una distancia del sujeto más larga significa que es probable que haya más áreas enfocadas que desenfocadas (piense en un paisaje o en una foto de grupo).

Supongo que lo más importante en cualquier foto es que, dondequiera que esté el área más enfocada de una foto, está enfocada . Esta simple verificación de "es el punto más enfocado en el enfoque" sería una que podría usar, ya que generalmente no tiene sentido usar una toma desenfocada o enfocada hacia atrás a menos que crea que funcionará.

su último punto es solo parcialmente cierto, ya que la mayoría de las veces se enfocará y luego recompondrá. Al igual que el ejemplo que di en otro comentario, puede ser que el oído esté perfectamente enfocado (y como tal, su imagen tendrá un gran punto de enfoque), pero el ojo estará fuera de lugar.
Ni siquiera pensé en eso, y sí, muy a menudo enfoco y recompongo, por lo que podría haber un ligero cambio en el plano de enfoque.

En un mundo perfecto, la sala de luz (o cualquier programa) podría resaltar áreas enfocadas y desenfocadas de la misma manera que detecta áreas quemadas de una imagen.

Entonces, para empezar, el manual de Darktable incluye:

ctrl-z amplía completamente la imagen y muestra las áreas enfocadas

Y eso se ve así en una imagen en foco parcial:

ingrese la descripción de la imagen aquí

Más específicamente, creo que puede obtener lo que está buscando cuantificando la cantidad de información de alta frecuencia en la transformada de Fourier de la imagen. (las frecuencias altas son los bits nítidamente enfocados que nos importan).

Afortunadamente, otra respuesta SE (que he votado por el privilegio de copiar y pegar) proporciona un código para extraer las frecuencias. Si es interesante para las personas, podría volver a esta respuesta y ver si puedo escribir el código que ordena un conjunto de imágenes según la cantidad de enfoque nítido (en lugar de total) que tienen.

Acabo de encontrarme con esta (ahora casi) pregunta de 9 años. Hay buena información en estas respuestas, pero muchas son bastante antiguas ahora, y ninguna responde realmente a la pregunta original del OP: ¿Puede el software detectar automáticamente el enfoque de la imagen?

Después de revisar las publicaciones aquí, encontré una aplicación llamada Fast Raw Viewer que tiene al menos una solución parcial.

Un recurso realmente económico para imágenes tomadas con la misma configuración de calidad de la cámara y la misma configuración de escena y luz es observar el tamaño de archivo del JPEG. Cuanto más material esté enfocado, el algoritmo de compresión JPEG con pérdida considera que la información más visiblemente discernible vale la pena conservar, lo que aumenta el tamaño del archivo.

Por supuesto, esto solo tiene sentido si la mayor parte del contenido de la imagen es lo que desea que esté enfocado. No ayuda contra sujetos desenfocados más pequeños contra un fondo enfocado, por ejemplo.

Pero puede ser útil como desempate rápido.

Capture 1 tal vez lo que necesita!

¿Podría ampliar esta respuesta para explicar qué es "Captura 1" y por qué podría ayudar?
La respuesta más inútil que he visto en SE