Tengo en mente escribir un artículo sobre el Focus Peaking, para que se pueda ver lo sencillo que en realidad resulta obtener esta facilidad desde el punto de vista de la implementación software, siempre partiendo de la base de una cámara con muestreo continuo de la escena, es decir con Live View y/o con visor electrónico como son las cámaras sin espejo. Hasta ahora es una facilidad solo implementada en las Sony NEX, pero su sencillez hace que sería una pena que otros no se suban al carro.
Detectar zonas enfocadas en una imagen no es otra cosa que detectar microcontraste en ella, algo que ya hacen estas cámaras para enfocar (porque no les queda otra al no disponer de enfoque por diferencia de fase).
Así partiendo de una imagen (la cámara dispone de ella porque está continuamente capturando la escena):
Cómo se detecta el microcontraste? basta hacer un filtrado paso alto (FPA) para detectar detalle: en las zonas en foco dicho detalle hará saltar al FPA, mientras que las zonas fuera de foco nunca tendrán detalle a nivel de píxel al estar difuminadas.
Sobre la anterior imagen pasada a BN (esto no solo hace las cosas más sencillas, sino que tiene toda la lógica porque lo ideal es hacer el procesado sobre los datos RAW sin procesar y así lo haré en el artículo) he aplicado este simple filtro paso alto (en Photoshop: Filtro -> Otros -> Personalizar):
Aplicando un umbral al resultado de este filtrado, detectamos los bordes en las zonas enfocadas, lo cual puede superponerse a la imagen como ya hacen las NEX. Las zonas fuera de foco quedan totalmente descartadas, en ellas el filtro paso alto no generó nunca un nivel de salida suficiente para superar el umbral:
Solo se marcan los bordes de las zonas en foco puesto que se detecta estrictamente el microcontraste. Para el fotógrafo quizá sea más util una vista de zonas en foco, como hace Capture One. Ésta además puede superponerse con transparencia a la imagen sin necesidad de animar la imagen. Así no hay motivo alguno para no poder tener en el visor una visión en tiempo real de este tipo:
Lo que se ha hecho es determinar que alrededor de cada borde en foco (puntos que con seguridad sabemos que están en foco), parece lógico pensar que haya una zona razonablemente enfocada en un determinado radio de influencia. Por supuesto se le puede dar más inteligencia al algoritmo, pero el concepto creo que queda claro.
Aquí otro ejemplo, esta planta con desenfoque:
Se detectaría así con este focus peaking:
Otro ejemplo, éste ya trabajando sobre el canal azul del RAW. El ruido genera muchos falsos píxeles en foco, lo que se soluciona reescalando a la baja la imagen por ejemplo (esto me hace pensar que al subir el ISO por falta de luz, la precisión del focus peaking se puede ver mermada):
Hay varios parámetros importantes para determinar la sensibilidad de la detección (no es igual jugar con aperturas muy abiertas, que con aperturas más cerradas u objetivos menos luminosos, que requerirán una detección más fina, o con objetivos poco nítidos que requerirán umbrales menos exigentes en el FPA). Algunos de estos parámetros de ajuste serían entonces:
- FPA (pueden probarse filtros más amplios)
- Umbral de detección aplicado al resultado del PFA
- Radio de influencia para generar la zona en foco en el segundo tipo de vista
- Posibilidad de eliminar falsos enfoques (en la primera imagen, en el hombro del pitcher hay 3 píxeles donde se detectó foco sin haberlo; sería fácil descartar píxeles de foco aislados), útil por ejemplo en imágenes ruidosas
Salu2