Sistema Automático de Registro de Impactos de Tiro Simulado con Matlab

Flujo General del Proceso

El sistema automatizado para detección de impactos en blancos de tiro utiliza procesamiento digital de imágenes y visión computacional. Las etapas principales incluyen: filtración inicial, sustracción de imágenes, umbralización, eliminación de ruido, corrección geométrica, identificación de orificios y cálculo de puntuación.

Implementación de Etapas Clave

Filtración de Imágenes

Suaviza la imagen para reducir interferencias mediante filtro Gaussiano:

imgOriginal = imread('blanco.jpg');
imgFiltrada = imgaussfilt(imgOriginal, 1.8); 
% Parámetro sigma controla intensidad de suavizado

Sustracción de Imágenes

Detecta cambios entre imágenes pre-post disparo:

imgDiferencia = imabsdiff(imgPosterior, imgPrevia); 
% Áreas modificadas muestran valores altos de píxel

Umbralización

Convierte a imagen binaria para segmentación:

imgGris = rgb2gray(imgDiferencia);
nivelUmbral = graythresh(imgGris);
imgBinaria = imbinarize(imgGris, nivelUmbral);

Eliminación de Ruido

Remueve artefactos pequeños con operaciones morfológicas:

elemento = strel('square', 4);
imgLimpia = imopen(imgBinaria, elemento); 
% Elimina objetos menores a 4 píxeles

Crorección Geométrica

Ajusta perspectiva del blanco mediante transformcaión proyectiva:

tform = fitgeotrans(puntosOrigen, puntosDestino, 'projective');
imgCorregida = imwarp(imgLimpia, tform);

Identificación de Impactos

Detecta regiones conectadas válidas:

[imgEtiquetada, numObjetos] = bwlabel(imgCorregida);
propiedades = regionprops(imgEtiquetada, 'Area', 'Centroid');
umbralArea = 15; % Filtra por tamaño mínimo

for k = 1:numObjetos
    if propiedades(k).Area > umbralArea
        coordenadas(k,:) = propiedades(k).Centroid;
    end
end

Cálculo de Puntuación

Determina puntaje según distancia al centro:

centro = [x0, y0];
radios = [20,40,60,80]; % Radios de anillos concéntricos
puntajes = [10,9,8,7]; % Puntajes correspondientes

for m = 1:size(coordenadas,1)
    dist = norm(coordenadas(m,:) - centro);
    idx = find(dist <= radios, 1);
    if ~isempty(idx)
        resultado(m) = puntajes(idx);
    end
end

Interfaz Gráfica de Usuario

La GUI desarrollada con App Designer permite cargar imágenes, ejecutar el procesameinto en cadena y visualizar resultados intermedios y finales. Incluye controles para ajustar parámetros y exportar datos.

Etiquetas: matlab ProcesamientoImagenes ComputerVision IdentificacionObjetos GUIMatlab

Publicado el 8-3 14:49