4.12. La canalización del ISP

El procesador de señal de imagen (ISP) es la canalización de hardware que convierte los valores de píxel en bruto del sensor en una imagen de color terminada. Las correcciones a nivel de píxel en el propio sensor son las primeras etapas de esa canalización. Tras ejecutarse estas, el resto de la canalización realiza el procesamiento de color y el formateo de salida en un orden fijo en cada fotograma.

Un diagrama de canalización vertical con ocho cajas etiquetadas, de arriba abajo: extracción de estadísticas, balance de blancos automático, debayering, corrección por matriz de color, corrección gamma, escalado de imagen, recorte de imagen y empaquetado de píxeles. Una flecha en la parte superior está etiquetada como "píxeles Bayer corregidos" y una flecha en la parte inferior está etiquetada como "fotograma terminado".

Las etapas de procesamiento de color y de salida del ISP. La canalización ejecuta cada etapa sobre todos los píxeles del fotograma antes de que comience la siguiente.

4.12.1. Las etapas

Cada etapa aplica por turno una transformación bien definida. El orden importa – las etapas posteriores suponen que las anteriores ya se han ejecutado, y un par de etapas también toman entradas de la salida del fotograma anterior.

  1. La extracción de estadísticas mide el brillo promedio por región y las sumas por canal del fotograma Bayer corregido. Esos números alimentan los bucles de control de exposición automática, ganancia automática y balance de blancos automático, que a su vez actualizan los ajustes del sensor para el siguiente fotograma.

  2. Las ganancias de balance de blancos automático escalan cada píxel Bayer por un multiplicador por color – los píxeles rojos por una ganancia R, los píxeles verdes por una ganancia G, los píxeles azules por una ganancia B – empujando la referencia de blanco de la escena hacia un gris neutro para que los colores registrados se vean como los percibió el ojo. Los multiplicadores provienen de las estadísticas de AWB del fotograma anterior.

  3. El debayering reconstruye los dos canales de color que faltan en cada píxel a partir del mosaico Bayer, convirtiendo los datos en bruto de un canal por píxel en RGB de tres canales. (Consulta Debayering.) Todo lo posterior a esta etapa se ejecuta sobre píxeles RGB en lugar de sobre el mosaico Bayer.

  4. La corrección por matriz de color (CCM) aplica una multiplicación por matriz de 3x3 a cada píxel RGB que mapea la respuesta nativa rojo-verde-azul del sensor a un espacio de color estándar. Los filtros de cada sensor tienen su propia respuesta espectral, que no es exactamente lo que espera ningún estándar; la matriz es una transformación calibrada por sensor que convierte el «RGB del sensor» en «RGB estándar».

  5. La corrección gamma aplica a cada canal una curva no lineal que comprime la señal lineal del sensor en una codificación adaptada a la percepción. El ojo nota más las diferencias entre tonos oscuros que las diferencias entre tonos claros, por lo que una codificación que dedica más de su presupuesto de bits al extremo oscuro captura más detalle visible para una profundidad de bits dada.

  6. El escalado de imagen redimensiona el fotograma desde la resolución nativa del sensor a la resolución de salida deseada. La mayoría de las aplicaciones funcionan con menos del número total de píxeles del sensor, y reducir la escala disminuye tanto el ancho de banda como la presión sobre la memoria de todo lo que sigue.

  7. El recorte de imagen extrae un subrectángulo del fotograma escalado y descarta los píxeles que quedan fuera. Se utiliza para capturar una región de interés, ajustarse a una relación de aspecto concreta o eliminar un borde que la aplicación no necesita.

  8. El empaquetado de píxeles convierte la representación interna por canal (normalmente 10 o 12 bits por canal) al formato de salida elegido y escribe el resultado en la RAM.

4.12.2. La realimentación del bucle de control

Las etapas 1 y 2 forman un bucle de control que abarca varios fotogramas. Las estadísticas extraídas del fotograma N le indican al sensor cuán brillante era la escena y cómo estaba su balance de color en ese fotograma; los controladores de exposición automática, ganancia automática y balance de blancos automático usan esos números para elegir nuevos valores de registro de exposición, ganancia y balance de blancos para el fotograma N+1. Los nuevos valores surten efecto en la lectura del siguiente fotograma, las estadísticas del nuevo fotograma regresan y el bucle se cierra.

Para una escena que no cambia, el bucle converge en unos pocos fotogramas y se mantiene en un ajuste constante. Para una escena cuyo brillo o tinte de color cambia – la cámara desplazándose desde el interior hacia una ventana iluminada por el sol, por ejemplo – el bucle sigue el cambio a lo largo de varios fotogramas, y el usuario percibe una breve deriva de brillo o de color en el camino hacia el nuevo estado estable.

4.12.3. Dónde se ejecuta el ISP

Hay dos disposiciones habituales.

  • Un ISP en el sensor ejecuta toda la canalización dentro del chip del sensor y emite una imagen RGB terminada. El MCU se limita a recoger el resultado.

  • Un ISP fuera del sensor reside en el MCU o SoC anfitrión. El sensor emite Bayer en bruto; el silicio del MCU (o su código de controlador) ejecuta la canalización antes de entregar el fotograma terminado al código de usuario.

La separación afecta a qué formatos de salida puede entregar el sensor directamente al usuario. Un sensor con un ISP completo en el chip permite al usuario elegir cualquier formato terminado que admita el chip. Un sensor sin él solo emite Bayer, y las conversiones de formato ocurren en el silicio o el software del MCU.