domingo, 20 de julio de 2014

Nueva API para la cámara de Android L: más velocidad, HDR y RAW entre otras mejoras

En una entrada anterior hablé acerca de ART. Hoy quería señalar otra de las novedades de Android L, una nueva interfaz para poder acceder a la cámara de un dispositivo con Android. Con esta nueva API de manejo de cámara se vienen unas cuantas mejoras. Esta nueva interfaz propone un control mayor sobre la toma de fotos y vídeos permitiendo controlar cosas como el nivel ISO, balance de blancos, tiempo de exposición, foco, flash e incluso algoritmos de medición de la exposición. También permite escoger el formato de salida como JPEG, YUV, RAW/DNG o cualquier otro formato soportado.
No sólo eso sino que además la velocidad para sacar fotografías aumenta dado que internamente el cambio de las opciones escogidas para sacar una imagen no obliga a esperar a que se vacíe toda la cadena de eventos hasta que la foto es tomada.

Otro de los grandes cambios es que ya no hay distinción entre modo vídeo, modo foto o modo previsualización. Esto significa que se pueden tomar fotos a máxima resolución mientras se graba vídeo a una resolución menor o tomar una serie de fotos seguidas, también fotos con HDR. Para el HDR se suelen tomar varias imágenes con distintos niveles de exposición y combinarlos. Gracias al aumento de velocidad para sacar fotografías debido al no vaciado de la cadena de etapas hasta que el dispositivo devuelve la fotografía, es posible sacar varias fotos seguidas a alta velocidad cambiando las opciones para cada una de ellas y mezclarlas para sacar una foto con HDR. O incluso vídeo HDR.

Otra cosa buena es la posibilidad de capturar en RAW. Tomando como ejemplo la siguiente imagen se pueden apreciar claras diferencias entre la salida JPEG y RAW de un mismo sensor:


Si se amplía la imagen, el grano de cosas como asfalto y ladrillos aparecen mucho más nítidos, sin el difuminado que provoca la compresión JPEG. También se aprecia una clara mejora en los árboles. A partir del RAW se puede aplicar un filtro de ruido o compresión JPEG menos agresivos que conserve más detalle del original. La imagen que obtenemos actualmente de la cámara android es un JPEG, es decir, ha comprimido el RAW perdiendo calidad. Y no sólo eso sino que además el procesador de imagen acoplado al sensor suele aplicar un filtro para eliminar el ruido del RAW antes de comprimirlo con JPEG.

Dado que es una API, esto no se convierte directamente en funcionalidad para los usuarios finales, sin embargo las aplicaciones de cámara distintas a las del fabricante podrán tener mucha más funcionalidad de la que tenían hasta ahora. Actualmente sólo el fabricante del OEM podía ofrecer funcionalidad más avanzada creándose ellos mismos su propia biblioteca de acceso al driver de cámara, no documentada por supuesto. Los fabricantes de cámaras y de móviles tendrán que ofrecer soporte para esta nueva API de Android y las aplicaciones de terceros podrán tener la misma o incluso mejor funcionalidad que la que trae la aplicación por defecto, eso sí, a costa de una mayor dificultad dado que hay que manejar opciones por imagen a tomar en vez de tener unas opciones globales en un modo (vídeo, foto, previsualización) determinado. Sin embargo el control adicional que permite así como disponer de la información de cada etapa de la captura lo merecen. Aplicaciones tiene muchas, incluyendo visión por computador para procesar los distintos puntos característicos de una foto o vídeo como el objeto más cercano o caras detectadas, cuyas posiciones vienen dadas por la información que el procesador de imagen devuelva. Esto último (la información devuelta por el sensor) marcará por tanto qué funciones de todas las expuestas aquí estarán disponibles vía la nueva API en cada dispositivo. No todos podrán tener las mismas funciones disponibles ya que eso dependerá de lo que el hardware ofrezca.
Más detalles con algunas diapositivas del Google IO 2014 en Anandtech. La foto de esta entrada de blog se ha sacado de un post en Anandtech.

No hay comentarios:

Publicar un comentario