¿Es posible saber cuándo estamos ante una captura del mundo real y cuándo delante de un producto de la imaginación de una red neuronal? Sí, existen técnicas de detección basadas en redes profundas, pero también aproximaciones clásicas que se basan en los fundamentos de la visión artificial. Hoy te contamos una de las más sencillas y transparentes: analizar la estructura luminosa y los gradientes de una imagen para encontrar patrones de fabricación artificial.
Luminancia: extraer la intensidad de luz
El primer paso consiste en separar la luminancia del color. La luminancia refleja la cantidad de luz percibida por el ojo humano y se calcula a partir de los canales R, G y B. El estándar Rec. 709 utiliza la siguiente combinación lineal de los canales linealizados de la imagen:
L(x,y)=0,2126 R(x,y) + 0,7152 G(x,y) + 0,0722 B(x,y)
Este método es habitual en procesado de vídeo y respeta la sensibilidad del ojo a cada color: el verde pesa mucho más que el azul. Extraer la luminancia permite centrarse en la estructura de luz y sombra, dejando a un lado el color, algo esencial para un análisis físico de la escena.
Tip técnico: en la mayoría de librerías de visión por ordenador, la conversión a escala de grises utiliza coeficientes de Rec. 601 (
0,299 R + 0,587 G + 0,114 B). Si quieres aplicar exactamente Rec. 709, usa los coeficientes anteriores. En Python con OpenCV puedes crear la luminancia así:import cv2
import numpy as np
img = cv2.imread(‘imagen.jpg’).astype(np.float32) / 255.0
luminancia = 0.2126 * img[:,:,2] + 0.7152 * img[:,:,1] + 0.0722 * img[:,:,0]
Gradientes espaciales: cómo cambian las intensidades
Una vez tenemos la luminancia, calculamos sus derivadas espaciales. Los gradientes Gx y Gy representan cómo cambia la luminancia en dirección horizontal y vertical. Son la base de detectores de bordes como Sobel o Canny. En las fotografías reales, los gradientes se alinean con superficies, sombras y texturas del mundo físico; en las imágenes sintéticas aparecen patrones más uniformes o ruido de des–difusión producido por el modelo generador.
Tip técnico: para obtener gradientes suaves utiliza filtros Sobel de OpenCV. Por ejemplo:
# gradiente horizontal y vertical
Gx = cv2.Sobel(luminancia, cv2.CV_32F, 1, 0, ksize=3)
Gy = cv2.Sobel(luminancia, cv2.CV_32F, 0, 1, ksize=3)
Si la imagen contiene ruido o compresión JPEG, aplica un filtro gaussiano antes de calcular los gradientes para reducir falsos bordes.
Matriz de covarianza y PCA: estadística en acción
Cada píxel de la imagen genera ahora un vector de dos componentes (Gx,Gy). Al apilar estos vectores en una matriz y calcular su covarianza, obtenemos una descripción estadística de cómo se distribuyen las direcciones y magnitudes de los gradientes. Mediante Análisis de Componentes Principales (PCA) se descomponen esas covarianzas en direcciones dominantes y varianzas asociadas.
En distintos estudios se ha observado que las fotografías y las imágenes generadas por IA presentan ratios de varianza y relaciones entre autovalores distintas. Las imágenes reales muestran gradientes coherentes con la óptica de una cámara, mientras que las generadas presentan estructuras de alta frecuencia más inestables. Esa diferencia se mantiene incluso sin emplear redes neuronales.
Tip técnico: puedes usar la biblioteca scikit-learn para calcular la PCA de los vectores de gradiente:
from sklearn.decomposition import PCA
import numpy as np
# reshape gradientes a una matriz de N×2
M = np.stack((Gx.ravel(), Gy.ravel()), axis=1)
pca = PCA(n_components=2)
pca.fit(M)
print(pca.explained_variance_ratio_)
Un ratio muy desequilibrado (por ejemplo, 0.9, 0.1) suele indicar un patrón natural; valores más cercanos (por ejemplo, 0.6, 0.4) son más habituales en imágenes generadas. Este umbral no es universal, así que conviene entrenarlo con tu propio conjunto de datos.
Limitaciones de la técnica
Aunque el análisis de luminancia y gradientes es elegante y fácil de interpretar, no es infalible. Los modelos de difusión modernos imitan muy bien el ruido de los sensores y las texturas microestructurales. Además, compresiones fuertes o reescalados pueden destruir la estructura de gradiente, generando falsos positivos. Investigaciones recientes señalan que los detectores entrenados en un único generador fallan al enfrentarse a otros modelos. Por ello, esta técnica debe tomarse como un indicador complementario, no como prueba absoluta.
Para reforzar el análisis, combina este método con otros enfoques de forense digital:
-
Análisis en frecuencia: examina la distribución de energía en el dominio de Fourier para detectar patrones de difusión.
-
Detección de huellas digitales: cada arquitectura generadora deja trazas estadísticas propias; algunos modelos las capturan a partir de residuos de compresión.
-
Credenciales de contenido (C2PA): sistemas de firma y metadatos que certifican el origen de las imágenes.
La expansión de la IA generativa plantea nuevos retos para la autenticidad visual. El método de la luminancia y los gradientes nos recuerda que, antes de recurrir a grandes modelos, podemos apoyarnos en herramientas matemáticas básicas para encontrar pistas sobre la procedencia de una imagen. Implementarlo en casa es sencillo y te ofrece un primer filtro para separar lo real de lo artificial. Sin embargo, no olvides que se trata de una carrera armamentística: cada detector empuja a los generadores a mejorar, y viceversa. La combinación de técnicas y la estandarización de la procedencia digital serán claves para recuperar la confianza en lo que vemos.


Deja una respuesta