Control de imágenes Halcon
El control de imágenes Halcon es un contenedor de interfaz gráfica desarrollado por MVTec para plataformas C#/.NET. Se trata de un componente UI que encapsula el motor de renderizado de Halcon, permitiendo mostrar y manipular imágenes procesadas por Halcon dentro de interfaces WPF o WinForms.
Tres funciones clave: capacidades industriales esenciales
1. Visualización de imágenes: el "ojo" del sistema de visión
Función principal: mostrar imágenes procesadas por Halcon (imágenes en escala de grises, color, profundidad, etc.) Ejemplo de implementación:
controlHalcon.HalconWindow.DispObj(imagenProcesada); // Mostrar imagen de rayos X mejorada
Necesidad técnica: los controles estándar de WPF no pueden mostrar objetos HImage de Halcon, siendo este el único canal oficial para la visualización.
2. Dibujo de elementos: el "anotader" de resultados
Función principal: dibujar formas (rectángulos, círculos, texto) para visualizar resultados de detección Ejemplo de implementación:
controlHalcon.HalconWindow.SetColor("green"); // Cambiar color
controlHalcon.HalconWindow.DispRectangle1(120, 120, 380, 680); // Dibujar región de interés
Valor industrial: permite identificar posiciones de defectos, áreas de interés (ROI) y resultados de medición de forma visual.
3. Integración con procesamiento de imágenes: puente entre algoritmos y visualización
Función principal: conectar algoirtmos de Halcon (ruido, contraste, segmentación) con la visualización en tiempo real Ejemplo de implementación:
imagenLimpia = imagenOriginal.MeanImage(3, 3); // Algoritmo de reducción de ruido
imagenMejorada = imagenLimpia.ScaleImage(1.5, 0); // Ajuste de contraste
controlHalcon.HalconWindow.DispObj(imagenMejorada); // Mostrar resultado
Ventaja clave: no requiere conversión de formato de imagen, mostrando directamente los resultados de los algoritmos.
4. Retroalimentación de estado: registro visual del proceso
Función principal: mostrar información de progreso y estado en tiempo real Ejemplo de uso:
- Mostrar imagen al completar escaneo de posición
- Actualizar imagen cada 200ms durante escaneo continuo
- Mostrar alerta al activar límite Valor industrial: permite a los operadores detectar anomalías rápidamente.
5. Gestión de recursos: guardian de la memoria
Función principal: manejar recursos del entorno Halcon para evitar fugas de memoria Ejemplo de uso: el control libera automáticamente el entorno Halcon al destruirse, sin necesidad de llamadas manuales a CloseWindow Aviso crucial: nunca llamar a OpenWindow manualmente (el control ya lo inicializa), de lo contrario se generará un error de parámetro.
En tu sistema de detección de rayos X: función crítica
1. Inicialización al inicio del programa
public MainViewModel(ControlHalcon controlHalcon)
{
this.controlHalcon = controlHalcon; // Vincular control, obligatorio
Cargar(); // Mostrar "listo" tras inicialización
}
Función: sin este control, el sistema visual sería "ciego" y no podría mostrar imágenes de rayos X.
2. Único punto de salida para funciones visuales
El método ShowXrayImage() es la única entrada para mostrar imágenes, cuyo núcleo es:
controlHalcon.HalconWindow.ClearWindow(); // Limpiar pantalla
controlHalcon.HalconWindow.DispObj(imagenProcesada); // Mostrar imagen
Escenarios cubiertos:
- Botón de imagen de prueba → llamada directa
- Posición alcanzada → llamada automática
- Escaneo continuo → llamada repetida
3. Garantía de seguridad visual
En caso de emergencia o alarma de límite, el control muestra el estado:
controlHalcon.HalconWindow.ClearWindow();
controlHalcon.HalconWindow.DispText("Alarma de límite", "ventana", 12, 12, "rojo");
Monitoreo en tiempo real del estado del eje
Tres funciones críticas
1. Visualización en tiempo real (función de panel de instrumentos)
Este texto en tu interfaz: Eje: en ejecución | X:50.0 Y:0.0 se actualiza cada 200ms mediante este método. Sin él, las coordenadas del eje y el estado nunca cambiarían.
2. Protección segura (función de guardián) → más importante en equipos industriales
Si el eje avanza continuamente, podría dañar la estructura mecánica. Este método supervisa el interruptor de límite:
- Al activar LimitAlarm (fuera de rango)
- Llama automáticamente a EmergencyStop()
- Detiene el sistema inmediatamente, protegiendo el equipo
3. Integración con lógica de negocio
- Escaneo de posición: verificar si el eje está en posición → disparar captura de imagen
- Escaneo continuo: obtener posición del eje en tiempo real → calcular barra de progreso
- Alarma/Reinicio: sincronizar cambios de estado en la interfaz