[Detección de señales de tráfico múltiples GA-HOG-GRNN] Simulación Matlab de detección y reconocimiento de señales de tráfico en escenas naturales: algoritmo de red neuronal GRNN basado en la extracción de características HOG y optimización GA

1. Versión de software

matlab2017b

3. Principios relevantes

Requisitos específicos:

1. Entrada de imagen

2. Convertir a imagen en escala de grises

3. Detección de borde de imagen

4. Erosión de la imagen

5. Relleno de imagen

6. Elimina las distracciones de las imágenes

7. Ubique con precisión la ubicación de la señal de tráfico en la imagen y abra una figura nuevamente para mostrarla (recorte)

8. Convierta las señales de tráfico recortadas en imágenes en escala de grises

9. Uso del método de umbral dinámico para convertir señales de tráfico en imágenes binarias

10. Procesar imágenes con filtrado morfológico

11. Proceso de reconocimiento {1. Establecer una biblioteca de plantillas, todas las cuales son señales de tráfico binarias

12. Haga coincidir las señales de tráfico obtenidas anteriormente con la biblioteca de plantillas

13. Muestre una figura y emita el nombre de la señal de tráfico rápida }

Esquema de extracción de características comunes:

Método de función HOG:

El principio es el siguiente:

1. Características del HOG :

       La función de histograma de gradiente orientado ( HOG ) es un descriptor de funciones utilizado para la detección de objetos en la visión artificial y el procesamiento de imágenes. Construye características calculando y contando los histogramas de dirección de gradiente de las regiones locales de la imagen.

( 1 ) Idea principal:

       En una imagen, la apariencia y la forma de los objetos locales se pueden describir bien mediante gradientes o distribuciones de densidad direccional de borde. (Esencial: estadísticas de gradientes, y los gradientes existen principalmente en los bordes).

( 2 ) El método de implementación específico es:

       La imagen se divide primero en pequeñas regiones conectadas, que llamamos unidades de celda. Luego se recopila el histograma de gradiente o dirección de borde de cada píxel en la unidad de celda. Finalmente, estos histogramas se combinan para formar un descriptor de características.

( 3 ) Mejorar el rendimiento:

       La normalización del contraste ( contraste-normalizado ) se realiza en estos histogramas locales en un rango más grande de la imagen (lo llamamos intervalo o bloque ) , el método utilizado es: primero calcular cada histograma en este intervalo ( bloque ) La densidad en el intervalo luego se normaliza para cada unidad de celda en el intervalo de acuerdo con esta densidad. Después de esta normalización, puede obtener mejores efectos en los cambios de iluminación y sombras.

( 4 ) Ventajas:

       En comparación con otros métodos de descripción de características, HOG tiene muchas ventajas. En primer lugar, dado que HOG opera en las celdas de la cuadrícula local de la imagen, puede mantener una buena invariancia a la deformación óptica y geométrica de la imagen, que solo aparece en un campo espacial más grande. En segundo lugar, bajo las condiciones de muestreo de espacio aéreo grueso, muestreo de dirección fina y normalización óptica local fuerte, siempre que los peatones puedan mantener una postura erguida, se les puede permitir tener algunos movimientos corporales sutiles. Se ignora sin afectar el efecto de detección. . Por lo tanto , la función HOG es particularmente adecuada para la detección humana en imágenes.

2. El proceso de implementación del algoritmo de extracción de características HOG :

Proceso aproximado:

El método de extracción de características de HOG es tomar una imagen (el objetivo o la ventana de escaneo que desea detectar):

1 ) Escala de grises (ver la imagen como una imagen tridimensional de x, y, z (escala de grises));

2 ) Use el método de corrección Gamma para estandarizar el espacio de color de la imagen de entrada (normalización); el propósito es ajustar el contraste de la imagen, reducir la influencia de las sombras locales y los cambios de iluminación en la imagen y, al mismo tiempo, puede suprimir la interferencia del ruido;

3 ) Calcular el gradiente (incluido el tamaño y la dirección) de cada píxel de la imagen; principalmente para capturar información de contorno, mientras se debilita aún más la interferencia de la iluminación.

4 ) Divida la imagen en celdas pequeñas (por ejemplo, 6*6 píxeles /celda );

5 ) Cuente el histograma de gradiente de cada celda (el número de gradientes diferentes) para formar el descriptor de cada celda ;

6 ) Cada varias celdas se forman en un bloque (por ejemplo, 3*3 celdas /bloque ), y los descriptores de características de todas las celdas en un bloque se conectan en serie para obtener el descriptor de características HOG del bloque .

7 ) Concatene los descriptores de características HOG de todos los bloques en la imagen para obtener el descriptor de características HOG de la imagen (el objetivo que desea detectar) . Este es el vector de características final que se puede utilizar para la clasificación.

3. Parte del programa

clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'func\hog_catch\'



load test_image.mat
load alg1.mat

 
    
if  isempty(X4) == 0 & isempty(X5) == 1 & isempty(X6) == 1;
    ftest  = func_feature1(X4);
    yout   = round(net1(ftest'));
    
    figure;
    subplot(121);
    imshow(X3);
    subplot(122);
    imshow(X4);
    if yout == 1
       title('识别结果为:非机动车行驶');    
    end
    if yout == 2
       title('减速让车');    
    end
    if yout == 3
       title('禁止鸣笛');    
    end
    if yout == 4
       title('禁止左转');    
    end
    if yout == 5
       title('慢');    
    end
    if yout == 6
       title('人行通道');    
    end
    if yout == 7
       title('限制速度');    
    end
    if yout == 8
       title('右转');    
    end
end





if  isempty(X4) == 0 & isempty(X5) == 0 & isempty(X6) == 1;
    ftest   = func_feature1(X4);
    yout1   = round(net1(ftest'));
    ftest   = func_feature1(X5);
    yout2   = round(net1(ftest')); 
    
    figure;
    subplot(131);
    imshow(X3);
    subplot(132);
    imshow(X4);
    if yout1 == 1
       title('识别结果为:非机动车行驶');    
    end
    if yout1 == 2
       title('减速让车');    
    end
    if yout1 == 3
       title('禁止鸣笛');    
    end
    if yout1 == 4
       title('禁止左转');    
    end
    if yout1 == 5
       title('慢');    
    end
    if yout1 == 6
       title('人行通道');    
    end
    if yout1 == 7
       title('限制速度');    
    end
    if yout1 == 8
       title('右转');    
    end
    
    subplot(133);
    imshow(X5);
    if yout2 == 1
       title('识别结果为:非机动车行驶');    
    end
    if yout2 == 2
       title('减速让车');    
    end
    if yout2 == 3
       title('禁止鸣笛');    
    end
    if yout2 == 4
       title('禁止左转');    
    end
    if yout2 == 5
       title('慢');    
    end
    if yout2 == 6
       title('人行通道');    
    end
    if yout2 == 7
       title('限制速度');    
    end
    if yout2 == 8
       title('右转');    
    end
    
    
    
end

4. Efecto de prueba de simulación

Los resultados de la simulación se muestran en la siguiente figura:

Luego, después de dividir, se obtienen los siguientes resultados:

A10-37

5. Cómo obtener el código fuente completo

Método 1: Wechat o QQ para contactar al blogger
Método 2: Suscripción , acceso gratuito al código del caso del tutorial y cualquier código fuente completo de 2 de este blog

 

Supongo que te gusta

Origin blog.csdn.net/ccsss22/article/details/124352872
Recomendado
Clasificación