La correlación de trayectorias por umbral difuso es un método basado en la lógica difusa para asociar estimaciones de objetivos provenientes de múltiples sensores. Calcula la pertenencia a conjuntos difusos a partir de múltiples características, como la discrepancia en posición, velocidad y rumbo, para generar una medida de similitud integral mediante una evaluación difusa. La decisión final de correlación se toma comparando esta similitud contra un umbral predeterminado.
Este enfoque resulta particularmente útil en la fusión de datos de sensores heterogéneos (por ejemplo, radar y AIS) y en entornos con baja relación señal-ruido o errores sistemáticos, donde la incertidumbre en las mediciones es elevada.
Principio operativo
El algoritmo opera en cuatro fases clave: primero, se extraen y comparan las características relevantes entre una trayectoria predictiva y una medición. Segundo, estas diferencias se "fusifican" mediante funciones de pertenencia (como la gaussiana), transformándolas en grados de compatibilidad. Tercero, se aplica un operador de composición difusa (por ejemplo, una media ponderada) para fusionar estos grados en un índice de similitud global. Finalmente, este índice se evalúa frente a un umbral para decidir si la medición corresponde a la trayectoria existente.
Implementación conceptual en MATLAB
El siguiente esquema ilustra una implementación simplificada. Se asume un conjunto de posiciones de referencia y un conjunto de mediciones con ruido. El código se estructura para mayor claridad y reutilización.
%% Definición de parámetros y datos simulados
parametros.distancia.sigma = 30; % Parámetro de dispersión para distancia (metros)
parametros.rumbo.sigma = 2; % Parámetro de dispersión para rumbo (grados)
parametros.umbral = 0.65; % Umbral de decisión para la similitud combinada
% Posiciones de referencia y mediciones ruidosas (en formato [x, y])
posiciones_ref = [1000, 500; 2000, 600; 3000, 700];
mediciones = posiciones_ref + 50 * randn(3, 2);
%% Cálculo de las funciones de pertenencia (tipo gaussiano)
funcion_pertenencia = @(delta, desviacion) exp(-(delta.^2) / (2 * desviacion^2));
% Diferencia absoluta en coordenadas
delta_x = abs(mediciones(:, 1) - posiciones_ref(:, 1));
delta_y = abs(mediciones(:, 2) - posiciones_ref(:, 2));
% Grados de pertenencia calculados
grado_distancia = funcion_pertenencia(delta_x, parametros.distancia.sigma);
grado_rumbo = funcion_pertenencia(delta_y, parametros.rumbo.sigma);
%% Fusión difusa y decisión
% Pesos para cada atributo (distancia y rumbo)
pesos = [0.65, 0.35];
indice_similitud = pesos(1) * grado_distancia + pesos(2) * grado_rumbo;
% Aplicación del umbral
asociaciones = indice_similitud >= parametros.umbral;
%% Visualización de resultados
figure('Name', 'Resultado de la Correlación');
hold on;
plot(posiciones_ref(:,1), posiciones_ref(:,2), 's-', 'Color', [0.8 0.2 0.2], 'LineWidth', 1.5);
plot(mediciones(:,1), mediciones(:,2), 'd', 'MarkerEdgeColor', [0.1 0.4 0.8], 'MarkerSize', 8, 'LineWidth', 1.5);
% Dibujar líneas de asociación donde sea positivo
for idx = 1:size(mediciones, 1)
if asociaciones(idx)
plot([posiciones_ref(idx,1), mediciones(idx,1)], ...
[posiciones_ref(idx,2), mediciones(idx,2)], 'g:', 'LineWidth', 1.2);
end
end
legend('Trayectorias de Referencia', 'Mediciones', 'Correlación Aceptada');
xlabel('Coordenada X (m)'); ylabel('Coordenada Y (m)');
grid on;
Estrategias de mejora
Para incrementar la robustez, el esquema básico puede extenderse. Una mejora común es incorporar más atributos, como la velocidad estimada. Esto se logra añadiendo un término adicional al cálculo del índice de similitud:
%% Ejemplo de extensión con atributo velocidad
parametros.velocidad.sigma = 5; % Parámetro de dispersión para velocidad
diferencia_velocidad = abs(velocidades_medidas - velocidades_ref); % Suponiendo datos disponibles
grado_velocidad = funcion_pertenencia(diferencia_velocidad, parametros.velocidad.sigma);
% Actualización de pesos y cálculo final
pesos_extendidos = [0.5, 0.3, 0.2]; % Para distancia, rumbo y velocidad
similitud_extendida = pesos_extendidos(1)*grado_distancia + ...
pesos_extendidos(2)*grado_rumbo + ...
pesos_extendidos(3)*grado_velocidad;
Otra optimización consiste en ajustar dinámicamente el umbral de decisión basándose en la calidad de la señal. Un método simple es hacerlo inversamente proporcional a una estimación de la relación señal-ruido (SNR), relajando el umbral en condiciones más ruidosas. Asimismo, pre-filtrar las mediciones con un filtro de Kalman puede reducir significativamente los efectos del ruido impulsivo y la clutter antes de la fase de correlación difusa.
Evaluación del desempeño
Las métricas clave para evaluar este algoritmo son la tasa de aciertos (correlaciones correctas sobre el total), la tasa de falsas alarmas (correlaciones incorrectas sobre el total) y el costo computacional. En una simulación típica, se pueden obtener tasas de acierto superiores al 90%, con un tiempo de procesamiento que escala con el cuadrado del número de trayectorias y mediciones (complejidad O(n²)) cuando se aplica una búsqueda por fuerza bruta. La eficiencia puede mejorarse mediante algoritmos de búsqueda espacial o técnicas de hashing sensible a la localidad.
Aplicaciones y extensiones
Este método se aplica en sistemas de fusión de datos marítimos (radar + AIS) y aéreos. Para tratar objetivos altamente maniobrables, se puede sustituir el modelo de movimiento constante por uno que incluya aceleración. En sistemas a gran escala, el cálculo puede paralelizarse para procesar múltiples hipótesis de correlación simultáneamente, reduceindo el tiempo total de ejecución.