Configuración del Entorno
Para implementar la detección de objetos OBB mediante LabVIEW y Halcon, se requiere LabVIEW 2018 en su versión de 64 bits y Halcon 22.05. La enstalación de ambos entornos sigue procedimientos estándar: en LabVIEW, seleccione la arquitectura de 64 bits durante el proceso; para Halcon, asegúrese de configurar las rutas de las bibliotecas correctamente. Tras la instalación, verifique que no haya errores al iniciar cada aplicación.
Código Clave para la Integración
1. Inicialización de Halcon
Antes de operar con Halcon, se debe establecer una ventana de visualización. A continuación, un ejemplo de código adaptado:
// Configurar ventana de Halcon para visualización
Nodo de Llamada a Biblioteca
Nombre de Biblioteca: halconcpp.dll
Nombre de Función: HOperatorSet::HDevOpenWindow
Entradas:
0 (ancho), 0 (alto), 150 (posFila), 150 (posColumna), 0 (ventanaPadre), "visible", "", RefVentana
Esta función crea una ventana visible en la posición especificada (150,150), con dimensiones ajustables según el contenido. El parámetro RefVentana almacena la referencia para operaciones posteriores.
2. Carga del Modelo de Detección
El modelo preentrenado para OBB se carga mediante una función dedicada:
// Cargar modelo de clasificación para OBB
Nodo de Llamada a Biblioteca
Nombre de Biblioteca: halconcpp.dll
Nombre de Función: HOperatorSet::ReadClassifier
Entradas:
'ruta/modelo/clasificador.hclass', RefModelo
Aquí, RefModelo guarda el identificador del modelo, esencial para las operaciones de detección.
3. Procesamiento de Imágenes
Las imágenes se leen y preprocesan antes de la detección:
// Lectura de imagen desde archivo
Nodo de Llamada a Biblioteca
Nombre de Biblioteca: halconcpp.dll
Nombre de Función: HOperatorSet::ReadImage
Entradas:
'ruta/imagen/entrada.jpg', ImgOriginal
// Conversión a escala de grises
Nodo de Llamada a Biblioteca
Nombre de Biblioteca: halconcpp.dll
Nombre de Función: HOperatorSet::Rgb1ToGray
Entradas:
ImgOriginal, ImgGris
La conversión a escala de grises reduce la complejidad computacional y facilita la extracción de características.
4. Ejecución de la Detección OBB
Con el modelo cargado y la imagen preparada, se invoca la detección:
// Aplicar detección de objetos con OBB
Nodo de Llamada a Biblioteca
Nombre de Biblioteca: halconcpp.dll
Nombre de Función: HOperatorSet::ClassifyObject
Entradas:
ImgGris, RefModelo, 'metodo_clasificacion', 0, [], [], PosY, PosX, AnguloRot, Confianza
Los resultados incluyen las coordenadas del centro (PosY, PosX), el ángulo de rotación AnguloRot y el puntaje de confianza Confianza, que definen el bounding box oirentado.
5. Visualización de Resultados
Finalmente, se muestra la imagen con las detecciones:
// Mostrar imagen original en ventana
Nodo de Llamada a Biblioteca
Nombre de Biblioteca: halconcpp.dll
Nombre de Función: HOperatorSet::DispObj
Entradas:
ImgOriginal, RefVentana
// Añadir texto informativo
Nodo de Llamada a Biblioteca
Nombre de Biblioteca: halconcpp.dll
Nombre de Función: HOperatorSet::DispMessage
Entradas:
RefVentana, 'Objeto Detectado', 'ventana', 10, 10, 'negro', 'verdadero'
Esto superpone un mensaje indicativo sobre la imagen visualizada.
Uso del Conjunto de Pruebas
El conjunto de pruebas proporcionado permite evaluar el modelo con diversas imágenes. Reemplace la ruta en la función de lectura de imágenes por cada archivo del conjunto para validar la precisión y generalización. Analice resultados para identificar falsos positivos o negativos, lo que facilita la optimización del modelo.