Unificación tonal con coincidencia de histograma - Técnicas para igualar el color de varias imágenes

· 9 min de lectura

Qué es la coincidencia de histograma - Una técnica para igualar el tono entre imágenes

La coincidencia de histograma (Histogram Matching / Histogram Specification) es una técnica de transformación que hace coincidir el histograma (la distribución de luminancia) de una imagen con el histograma de otra imagen que sirve de objetivo. Con ella se puede unificar el tono de varias imágenes tomadas en condiciones distintas, o transferir a otra imagen el tono de una imagen con una atmósfera determinada.

Diferencia con la ecualización del histograma:

La ecualización del histograma (Histogram Equalization) es una técnica que transforma el histograma en una distribución uniforme para maximizar el contraste. En cambio, la coincidencia de histograma es una técnica de uso general que permite transformarlo en cualquier distribución objetivo. La ecualización puede considerarse un caso especial de la coincidencia en el que la distribución objetivo está fijada en la distribución uniforme.

Situaciones de aplicación:

  • Producción de video: unificación tonal entre tomas grabadas con cámaras u objetivos distintos
  • Composición de panoramas: eliminación de las diferencias de brillo / tono entre imágenes adyacentes
  • Imágenes de satélite: análisis comparativo de imágenes tomadas en épocas distintas
  • Imágenes médicas: normalización de imágenes tomadas con equipos distintos
  • Transferencia de estilo: aplicación del tono de una imagen de referencia a otra imagen

Idea básica:

La coincidencia de histograma construye una aplicación (tabla de consulta) que transforma cada valor de píxel de la imagen de entrada de modo que en la imagen de salida se obtenga el histograma objetivo. Esta aplicación se calcula a través de la función de distribución acumulada (CDF). Al hacer corresponder la CDF de la entrada con la CDF objetivo, se puede lograr cualquier transformación de distribución.

Algoritmo de transformación basado en la CDF

El núcleo de la coincidencia de histograma es una transformación que usa la función de distribución acumulada (CDF: Cumulative Distribution Function). Se calculan las CDF de la imagen de entrada y de la imagen objetivo, y se deriva la función de transformación haciendo corresponder ambas.

Pasos del algoritmo:

1. Calcula el histograma H_src y la CDF_src de la imagen de entrada. 2. Calcula el histograma H_ref y la CDF_ref de la imagen objetivo. 3. Para cada valor de entrada s, busca el valor t cuya CDF_ref(t) sea la más cercana a CDF_src(s). 4. Construye la tabla de transformación T[s] = t. 5. Aplica la tabla de transformación a cada píxel de la imagen de entrada.

Derivación matemática:

Sea C_s(s) la CDF del valor de píxel s de la imagen de entrada y C_r(r) la CDF objetivo. La función de transformación T se define como T(s) = C_r^(-1)(C_s(s)). En el caso discreto, la función inversa de C_r se calcula de forma aproximada como "el menor r que cumple C_r(r) >= C_s(s)". Esta operación puede precalcularse como una tabla de consulta O(256), lo que permite una transformación rápida que no depende del tamaño de la imagen.

Implementación en imágenes en escala de grises:

En el caso de una imagen en escala de grises de 8 bits, el histograma se calcula con 256 bins. La CDF es la suma acumulada del histograma normalizada por el número total de píxeles. En NumPy se puede calcular con cdf = np.cumsum(hist) / np.sum(hist). La construcción de la tabla de transformación se puede hacer de forma eficiente con np.searchsorted(cdf_ref, cdf_src).

Extensión a imágenes en color:

En las imágenes en color, el método más sencillo es aplicar la coincidencia de histograma de forma independiente a cada canal R, G, B. Sin embargo, como se ignora la correlación entre canales, puede producirse un desplazamiento del tono. Para obtener resultados de mayor calidad, existen el método de convertir al espacio de color Lab y aplicar la coincidencia al canal L (luminosidad) y el método de usar un histograma 3D.

Coincidencia de histograma multicanal / multidimensional

Con el método sencillo de procesar los canales RGB de forma independiente, se pierde la correlación entre canales y pueden aparecer colores poco naturales. Los métodos más avanzados realizan una coincidencia multidimensional que tiene en cuenta todo el espacio de color.

Coincidencia en el espacio de color Lab:

El espacio de color Lab se basa en la percepción humana, y sus 3 canales, L (luminosidad), a (verde-rojo) y b (azul-amarillo), son relativamente independientes. Si se aplica la coincidencia a cada canal de forma independiente en el espacio Lab, en muchos casos se obtiene un resultado más natural que al procesar en el espacio RGB. Una ventaja es, en particular, que la transformación de la luminosidad afecta poco al tono.

Coincidencia mediante Optimal Transport (transporte óptimo):

Los métodos basados en la teoría del transporte óptimo buscan la aplicación óptima que transforma la distribución de color de la entrada en la distribución de color objetivo. Calculan el plan de transporte que minimiza la distancia de Wasserstein y transforman de forma óptima el color de cada píxel. El costo de cálculo es alto, pero permite una transformación de color de alta calidad que conserva por completo la correlación entre canales. Se puede implementar con la biblioteca POT (Python Optimal Transport) de Python.

Método de transferencia de color de Reinhard:

El método propuesto por Reinhard et al. (2001) es una transferencia de color simplificada que hace coincidir la media y la desviación estándar de cada canal en el espacio de color Lab. Es una transformación lineal t = (s - μ_src) × (σ_ref / σ_src) + μ_ref, y su cálculo es extremadamente rápido. Es adecuado para transferir el tono general (brillo, saturación) sin cambiar la forma del histograma.

Métodos basados en redes neuronales:

También se están desarrollando métodos de transferencia de color con aprendizaje profundo. Superan el límite de la coincidencia de histograma (no tiene en cuenta la correspondencia espacial) y permiten una transferencia de color que tiene en cuenta las correspondencias semánticas (cielo con cielo, piel con piel). Sin embargo, la contrapartida es que el costo de cálculo es alto y se necesitan datos de entrenamiento.

Práctica de la igualación de color en la producción de video

En la producción de video es imprescindible la "igualación de color", que unifica el tono de tomas grabadas con cámaras, objetivos y condiciones de iluminación distintos. La coincidencia de histograma es una de sus técnicas básicas.

Unificación tonal entre tomas:

Cuando se graba la misma escena con varias cámaras, el tono difiere por las diferencias en las características del sensor de cada cámara y en el ajuste del balance de blancos. Si eliges una toma de base (la referencia) y ajustas el histograma de las demás tomas a la referencia, los cambios de plano en la edición resultan naturales.

Flujo de trabajo en DaVinci Resolve:

El software profesional de edición de video DaVinci Resolve incorpora una función de igualación de tomas. Es una función que iguala automáticamente el tono al indicar un clip de referencia. Internamente, además de la coincidencia de histograma, se realizan la detección del tono de piel y ajustes individuales de las luces / sombras. También es posible el ajuste fino manual, y se hacen correcciones adicionales con las ruedas de color y las curvas.

Coherencia en la dirección del tiempo:

Cuando se aplica la coincidencia de histograma a un video, la coherencia entre fotogramas es importante. Si se procesa cada fotograma de forma independiente, el tono puede parpadear entre fotogramas. Como medida, se usan el filtrado en la dirección del tiempo (promediar las CDF de los fotogramas anteriores y posteriores) y la interpolación basada en fotogramas clave (calcular la coincidencia en fotogramas concretos e interpolar los fotogramas intermedios).

Precauciones con el video HDR:

En el video HDR (High Dynamic Range), un histograma normal de 8 bits no basta. Hay que calcular el histograma con una precisión de 10 o 12 bits y hacer una transformación que tenga en cuenta las funciones de transferencia PQ (Perceptual Quantizer) o HLG (Hybrid Log-Gamma). La combinación con el mapeo de tonos también es importante, y a veces se aprovecha la coincidencia de histograma al convertir de HDR a SDR.

Corrección tonal en la composición de panoramas y en las imágenes de satélite

En la composición de panoramas y el análisis de imágenes de satélite, se aprovecha la coincidencia de histograma para eliminar las diferencias de tono entre imágenes adyacentes. Corrige las diferencias de tono debidas a condiciones de toma distintas y logra una composición sin costuras.

Unificación tonal en la composición de panoramas:

En la fotografía panorámica, la exposición y la temperatura de color cambian al cambiar la orientación de la cámara. Las tomas dirigidas al cielo quedan claras, y las dirigidas al suelo quedan oscuras. Se aplica la coincidencia de histograma en la zona de solapamiento de las imágenes adyacentes para minimizar la diferencia de tono en las uniones. Al tomar como referencia solo la zona de solapamiento, se suavizan las uniones conservando las características de cada imagen.

Compensación de ganancia:

En la composición de panoramas, a veces se usa la compensación de ganancia (corrección de exposición) en lugar de la coincidencia de histograma. Se multiplica cada imagen por un valor de ganancia escalar para minimizar la diferencia de luminancia en la zona de solapamiento. Es más sencilla que la coincidencia de histograma, pero corrige de forma eficiente la diferencia de brillo general. cv2.detail.ExposureCompensator de OpenCV ofrece esta función.

Análisis de series temporales de imágenes de satélite:

En las imágenes de satélite, el tono de la imagen varía mucho incluso para la misma zona, por la diferencia de altura del sol según la época de la toma, los cambios en las condiciones atmosféricas y el deterioro del sensor con los años, entre otros factores. Antes de hacer una comparación de series temporales (detección de cambios), se normaliza la radiancia entre imágenes con la coincidencia de histograma. Si se elige una imagen de base y se hacen coincidir con ella las imágenes de otras épocas, se pueden detectar solo los cambios reales de la superficie terrestre.

Integración de imágenes de varias fuentes:

La coincidencia de histograma también se usa al integrar imágenes de satélite tomadas con sensores distintos (Landsat, Sentinel-2, SPOT, etc.). Corrige las diferencias en las características de respuesta espectral de cada sensor y construye un conjunto de datos coherente. Sin embargo, entre sensores con configuraciones de bandas físicamente distintas, la coincidencia de histograma simple no basta, y puede ser necesaria una calibración cruzada (Cross-Calibration).

Guía de implementación - Coincidencia de histograma en Python

Explicamos paso a paso la implementación de la coincidencia de histograma con Python, desde los métodos básicos hasta los avanzados. Presentamos código práctico que aprovecha scikit-image, OpenCV y NumPy.

Implementación con scikit-image:

scikit-image ofrece la función exposure.match_histograms(), con la que se puede ejecutar la coincidencia de histograma de la forma más sencilla. Con una sola línea, from skimage.exposure import match_histograms; matched = match_histograms(source, reference, channel_axis=-1), se completa la coincidencia por canal de una imagen en color. Internamente está implementada una transformación basada en la CDF.

Implementación manual con NumPy:

Si el objetivo es aprender o necesitas un control fino, impleméntala manualmente con NumPy. Calcula el histograma con hist_src, _ = np.histogram(src, bins=256, range=(0, 255)) y obtén la CDF con cdf_src = np.cumsum(hist_src).astype(float) / src.size. Construye la tabla de transformación con lut = np.searchsorted(cdf_ref, cdf_src).astype(np.uint8) y aplícala con matched = lut[src].

Coincidencia en una región parcial:

También es posible hacer la coincidencia tomando como base el histograma de una región concreta (ROI) en lugar de toda la imagen. Por ejemplo, se puede unificar el tono del cielo tomando como referencia solo la región del cielo, o igualar el tono de un retrato tomando como base la región del tono de piel. Se indica la ROI con una imagen de máscara y se calcula solo el histograma de esa región.

Procesamiento por lotes y aplicación a video:

En el procesamiento por lotes de varias imágenes, se elige 1 imagen de referencia y se hacen coincidir todas las imágenes con esa referencia. En el caso del video, se toma como referencia el primer fotograma o un fotograma representativo y se aplica a todos los fotogramas. Para evitar el parpadeo entre fotogramas, se recomienda aplicar un suavizado de la CDF en la dirección del tiempo (media móvil exponencial). La velocidad de procesamiento es de unos 5-10ms por fotograma en imágenes 1080p, así que el procesamiento en tiempo real es perfectamente posible.

Artículos relacionados

Ecualización de histograma para mejorar el contraste - Optimización de la distribución de brillo

Explicación sistemática de la técnica de ecualización de histograma. Cubre la ecualización global, el método adaptativo CLAHE, el procesamiento de imágenes en color y escenarios de aplicación práctica.

Introducción a la corrección de color de imágenes - Fundamentos de balance de blancos y curvas de tono

Aprende los fundamentos de la corrección de color de imágenes para principiantes, incluyendo ajuste de balance de blancos y manipulación de curvas de tono. Domina las técnicas para lograr una reproducción de color natural y hermosa.

Cómo leer histogramas y aplicar corrección de exposición - Comprender la luminosidad de imágenes numéricamente

Desde la lectura correcta de histogramas de imagen hasta la corrección de exposición práctica. Incluye métodos de detección de luces quemadas y sombras aplastadas, y flujos de trabajo para lograr la exposición correcta.

Análisis profundo del algoritmo de unión panorámica - De la detección de características a la fusión sin costuras

Explicación detallada del proceso completo de unión de imágenes panorámicas, incluyendo coincidencia de características, estimación de homografía, deformación de imagen, compensación de exposición, búsqueda de costuras y fusión multibanda.

Fundamentos de correspondencia de puntos característicos - Principios e implementación de SIFT, ORB y AKAZE

Explica la correspondencia de puntos característicos para encontrar correspondencias entre imágenes. Cubre algoritmos de detección y descripción SIFT, ORB, AKAZE, métodos de correspondencia y rechazo de valores atípicos con ejemplos.

Creación y aplicaciones de imágenes panorámicas - De los principios del stitching a la práctica

Guía completa de creación y aplicaciones de imágenes panorámicas. Incluye técnicas de captura, algoritmos de stitching, selección de herramientas e implementación de visores interactivos Web.

Términos relacionados