Cómo adquirir de cámaras "GigE Vision" con software de adquisición de visión

Actualizado el Nov 24, 2021

Ambiente

Software

  • LabVIEW

Controlador

  • Vision Acquisition Software

Este tutorial continúa la discusión en la Parte I sobre el uso de cámaras GigE Vision con Vision Acquisition Software. En esta parte, discutiremos los requisitos de hardware y software para la adquisición. Luego revisamos el uso de la  LabVIEW API para adquirir primero imágenes de la cámara, controlar la configuración de la cámara y luego configurar el disparo de la cámara.

Para comprender los conceptos básicos del estándar GigE Vision, lea la Nota de aplicación:
Adquisición de cámaras GigE Vision con software de adquisición de visión

Configuración de hardware y software

Para adquirir imágenes de una cámara GigE Vision, primero debe asegurarse de tener todo el hardware y software correctos. A continuación se muestra una lista de requisitos.

Hardware

  • Cámara GigE Vision : la cámara debe ser compatible con el estándar GigE Vision. Si tiene una cámara que tiene un puerto Gigabit Ethernet pero no es compatible con GigE Vision, no puede adquirir imágenes con el software Vision Acquisition. Debe encontrar el logotipo de GigE Vision en el manual del usuario de la cámara o en la documentación de marketing.
  • Puerto Gigabit Ethernet : si bien es posible adquirir imágenes con puertos Ethernet y Fast Ethernet, que admiten 10 MB / sy 100 MB / s respectivamente, esto solo funcionará a velocidades de cuadro muy lentas y resoluciones pequeñas. Se recomienda encarecidamente que utilice un controlador de interfaz de red (NIC) Gigabit Ethernet.

Software

  • Software de adquisición de visión : Necesitará el software de adquisición de visión 8.2.1 o superior, que instalará NI-IMAQdx 3.0 o superior. NI-IMAQdx es el controlador que incluye la funcionalidad para adquirir imágenes de cámaras USB3 Vision, GigE Vision e IEEE 1394.
  • Interfaz de desarrollo de aplicaciones (ADE) : Puede usar LabVIEW, LabWindows / CVI, Visual Studio 6.0 o cualquier compilador ANSI C para adquirir imágenes.

Configuración de la red

Una vez que tenga el hardware y el software instalados correctamente, también debe configurar la red. Como se discutió en la Parte I, las cámaras GigE Vision pueden obtener una dirección IP de un servidor DHCP o seleccionar una por sí misma usando Link Local Addressing (LLA). Si conecta la cámara a una red Gigabit Ethernet con un servidor DHCP, la cámara se detecta automáticamente. Si la cámara está conectada directamente a la computadora (usando un cable normal o cruzado), deberá esperar aproximadamente un minuto para que la cámara se agote en la solicitud de DHCP y use LLA. El sistema operativo Windows puede mostrar una advertencia de que la tarjeta de red tiene un funcionamiento limitado. Puede ignorar esta advertencia. Nota : que el retraso solo se aplica a Windows XP y 2000, no al sistema operativo Windows Vista.


Figura 1 . Windows muestra una advertencia cuando la cámara está conectada directamente

Paquetes Jumbo

Normalmente, los controladores de red dividirán los datos de más de 1500 bytes en varios paquetes. Sin embargo, el estándar GigE Vision permite tamaños de paquetes de hasta 9014 bytes. Estos grandes paquetes, también conocidos como paquetes Jumbo, permiten que la cámara transfiera datos de manera más eficiente a través de la red. Puede habilitar paquetes Jumbo en muchas tarjetas de red desde el Administrador de dispositivos de Windows haciendo clic con el botón derecho en la tarjeta de red y seleccionando Properties .


Figura 2 . Ejemplo de configuración de paquetes Jumbo en el adaptador Intel PRO / 1000

Cortafuegos de red

Cuando una cámara adquiere una imagen, inmediatamente transmite esos paquetes de datos al host. Sin embargo, los firewalls de red no permitirán que los paquetes lleguen a su destino porque los firewalls normalmente bloquean el tráfico entrante no iniciado. Por lo tanto, deberá deshabilitar su firewall para adquirir imágenes de una cámara GigE Vision. Puede desactivar el Firewall de Windows desde el Panel de control (Start»Control Panel). Sin embargo, si tiene una tarjeta de red con un chipset Intel PRO / 1000 y está utilizando el controlador de alto rendimiento, no necesitará deshabilitar el firewall. Dado que el controlador de alto rendimiento redirige los paquetes entrantes de GigE Vision al controlador del kernel NI-IMAQdx antes de que llegue al firewall, la configuración del firewall no afectará la adquisición de imágenes.

Adquirir imágenes en MAX

El Explorador de medición y automatización (MAX) se utiliza para verificar que ha descubierto la cámara y puede adquirir imágenes. Dado que el controlador NI-IMAQdx admite Plug and Play (PnP), cualquier cámara GigE Vision en la misma subred que el host debería aparecer automáticamente en el Devices and Interfaces sub trees (Subárbol de Dispositivos e Interfaces(. Las cámaras GigE Vision se enumeran bajo el subárbol NI-IMAQdx y se identifican con un icono especial. Si está utilizando NI IMAQdx 4.3.5 o posterior, las cámaras GigE Vision aparecerán en el subárbol Network Devices.


Figura 3 . MAX detecta automáticamente cualquier cámara GigE Vision en la misma subred

MAX mostrará cualquier cámara GigE Vision en la misma subred que el host. Sin embargo, NI-IMAQdx también le permite adquirir imágenes de cámaras en subredes remotas. Puede descubrir cámaras en subredes remotas llamando a la función apropiada en la API NI-IMAQdx. Por ejemplo, la función C IMAQdxDiscoverEthernetCameras () tiene un parámetro para especificar la subred para descubrir cámaras.

Una vez que pueda descubrir la cámara en MAX, el siguiente paso es adquirir imágenes de ella. Seleccione la cámara del árbol secundario para abrirla en la ventana principal. A continuación se muestran las distintas partes de la pestaña Acquisition (Adquisición) y sus descripciones


Figura 4 . La página de atributos de adquisición

  • Video Mode: este atributo solo es válido para cámaras IEEE 1394. Está atenuado para las cámaras GigE Vision.
  • Pixel Format : muestra una lista de los formatos de píxeles disponibles. Los formatos típicos son Mono8, Mono16 y YUV422Packed.
  • Region of Interest: especifica las compensaciones a la izquierda y lop y el ancho y alto de la ventana de adquisición.
  • Timeout : establece el número de milisegundos que el controlador esperará a que se complete una adquisición antes de devolver un error de tiempo de espera.
  • Packet Size: especifica el número de bytes transferidos en cada paquete de datos. Este número debe ser menor que el tamaño máximo de paquete permitido por la tarjeta de red (1500 si los paquetes Jumbo están deshabilitados y 9014 si los paquetes Jumbo están habilitados).

Una vez que haya configurado los parámetros de adquisición correctamente, haga clic en Snap para adquirir una imagen o haga clic en Grab para adquirir imágenes continuamente.
 

Adquirir imágenes en LabVIEW

NI-IMAQdx proporciona una API unificada para adquirir imágenes de las cámaras IEEE 1394, USB3 Vision y GigE Vision. Si bien algunas funciones son específicas de un tipo de bus, la mayoría de las funciones y los VI se pueden usar con ambos tipos de cámaras. Esto permite un desarrollo más independiente del bus para la adquisición de imágenes. Puede reemplazar su cámara IEEE 1394 con una cámara GigE Vision, o viceversa, con poco o ningún cambio en su código.

La API NI-IMAQdx LabVIEW está dividida en VIs de alto y bajo nivel. Usando los VIs de alto nivel, puede programar una operación simple de captura, captura o secuencia. Los VI de bajo nivel le permiten realizar las mismas tareas que los VI de alto nivel pero le brindan un mayor control sobre los detalles de ejecución. Mire los ejemplos que se envían con LabVIEW para comprender cómo programar la adquisición de imágenes usando NI-IMAQdx.


Figura 5 . Un simple ejemplo de agarre

El ejemplo anterior ilustra una adquisición Grab simple en LabVIEW. Las imágenes adquiridas se muestran en el indicador de imagen. Este ejemplo muestra el número de búfer en el indicador de número de búfer. Puede perder búferes si la velocidad de bucle del bucle while no es mayor que la velocidad de fotogramas de la cámara. En tales casos, una imagen copiada en un búfer en la memoria se sobrescribe con otra imagen antes de que se pueda procesar la imagen original. En la mayoría de los casos de visión artificial, es importante notificar al usuario si se ha perdido algún marco.
 

Comprensión de los atributos de la cámara

Las cámaras suelen admitir varios atributos configurables que permiten que la cámara sea lo suficientemente flexible para trabajar en diferentes entornos con diversas restricciones. Si bien la mayoría de las cámaras de visión artificial admiten algunos atributos típicos, como la ganancia, la velocidad de obturación o la profundidad de bits, muchas cámaras tienen un subconjunto de atributos único que es específico solo para esa cámara o familia de cámaras.


Figura 6 . La pestaña Atributos de la cámara en MAX muestra todos los atributos

El estándar GigE Vision define un conjunto mínimo de atributos que se requieren para capturar una imagen. Estos atributos, como el ancho, la altura, el formato de píxeles, etc. de la imagen, deben ser compatibles con todas las cámaras GigE Vision. Sin embargo, los atributos adicionales admitidos por una cámara pueden exponerse utilizando el estándar GenICam.

El estándar GenICam

La especificación GigE Vision se basa en GenICam, que es un estándar de la Asociación Europea de Visión Artificial (EMVA) para describir las funciones (atributos) compatibles con una cámara. Cada cámara GigE Vision debe proporcionar un archivo de descripción de dispositivo XML que se ajuste a la sintaxis de GenICam. Cuando se conecta una cámara y se selecciona por primera vez en MAX, este archivo XML es recuperado e interpretado por NI-IMAQdx para enumerar los atributos admitidos por la cámara. Dado que cada proveedor de cámaras proporciona un archivo XML específico para cada cámara, NI-IMAQdx puede completar automáticamente los atributos específicos de esa cámara.

<Integer Name = "Gain" NameSpace = "Estándar">
<ToolTip> Configuración de ganancia analógica para la cámara </ToolTip>
<DisplayName> Ganancia </DisplayName>
<pValue> GainReg </pValue>
<Min> 0 </Min>
<Max> 128 </Max>
<Inc> 1 </Inc>
<Representación> Logarítmica </Representación>
</Integer>

<IntReg Name = "GainReg">
<ToolTip> Nodo de acceso para la función de ganancia de la cámara </ToolTip>
<Address> 0x0815 </Address>
<Longitud> 2 </Length>
<AccessMode> RW </AccessMode>
<pPort> Dispositivo </pPort>
<Firmar sin firmar </Sign>
<Endianess> BigEndian </Endianess>
</IntReg>

Figura 7 . Fragmento de un archivo XML que describe el atributo de ganancia
 

La Figura 7 muestra un ejemplo muy simple del atributo de ganancia que se describe en un archivo XML. Al analizar este fragmento de código XML, NI-IMAQdx determina lo siguiente:

  • El nombre de la función es Gain (Ganancia).
  • Tiene un valor mínimo y máximo de 0 y 128 respectivamente y tiene un incremento mínimo de 1.
  • El valor de la ganancia se representa en forma logarítmica.
  • El valor de ganancia actual se almacena en un registro con la dirección 0x0815 en formato BigEndian Unsigned y tiene 2 bytes de longitud.
  • El controlador tiene acceso de lectura y escritura a este registro.

Cada uno de estos atributos admitidos por la cámara tendrá una sección de código en el archivo XML que define los parámetros del atributo. Puede examinar el archivo XML manualmente abriéndolo desde el directorio <Program Files> \ National Instruments \ NI-IMAQdx \ Data \ XML. Nota : El ejemplo anterior es una representación muy simplista de un atributo y se proporciona como ejercicio académico. Los archivos XML típicos son mucho más complicados e implican muchas referencias cruzadas.

Controlar la configuración de la cámara mediante programación

La configuración de la cámara se puede controlar utilizando MAX (ver Figura 6) para establecer los valores de los atributos expuestos en el archivo XML. Sin embargo, muchas aplicaciones necesitan la capacidad de cambiar los atributos de la cámara mediante programación. La API NI-IMAQdx proporciona métodos para cambiar el valor de cualquier atributo expuesto en el archivo XML. Si bien los atributos de la cámara se pueden configurar en cualquier API compatible, discutiremos su implementación en LabVIEW.

Cada atributo admitido por una cámara está definido por estas propiedades (no exhaustivas):

  • Name (Nombre) : nombre único del atributo
  • Representation (Representación) : puede ser un número entero, flotante, booleano, enumeración, cadena o comando
  • Unit of Measurement (Unidad de medida) : Unidad que representa el valor (por ejemplo, microsegundos (μs))
  • Access (Acceso) : solo lectura, solo escritura o lectura / escritura

El fabricante de la cámara puede proporcionarle documentación que detalle las propiedades de cada atributo. Si la documentación no está disponible, puede utilizar MAX para determinar las propiedades de un determinado atributo. Para hacerlo, simplemente seleccione el atributo deseado en la pestaña  Camera Attribute. Por ejemplo, examinaremos el atributo ExposureTimeAbs de una cámara Basler Scout scA640-70gm. De la Figura 8, podemos determinar que el atributo ExposureTimeAbs es un número de punto flotante con microsegundos como su unidad.


Figura 8 . Atributo ExposureTimeAbs en MAX

En LabVIEW puede establecer los valores de los atributos usando un Nodo de Propiedad. Sin embargo, en el momento del desarrollo, LabVIEW no puede conocer el nombre o la representación del atributo. Por lo tanto, deberá proporcionar el nombre del atributo y llamar a la función adecuada según la representación del atributo (entero, cadena, booleano, etc.).


Figura 9 . Configuración del atributo ExposureTimeAbs de un Basler scA640-70gm

Si bien GenICam proporciona un método flexible para controlar cámaras, el estándar no es suficiente para garantizar la interoperabilidad. La interoperabilidad es la capacidad de cambiar entre diferentes cámaras y seguir manteniendo la funcionalidad del software de la aplicación. Por ejemplo, si reemplazamos la cámara Basler en el ejemplo anterior con una cámara de otro fabricante. Esta cámara puede tener el atributo ExposureTimeAbs representado en nanosegundos o como un número entero o incluso puede referirse al atributo con un nombre diferente. Claramente, cada cámara producirá diferentes resultados de adquisición para las mismas entradas.

Para mejorar la interoperabilidad, EMVA, en asociación con los fabricantes de cámaras, creó la Convención de nomenclatura de características estándar GenICam. El objetivo de este documento es estandarizar el nombre, la representación, el acceso, la unidad y la función de muchos de los atributos comunes a la mayoría de las cámaras. Al utilizar esta convención de nomenclatura al unísono con el estándar GenICam, los fabricantes de cámaras pueden promover la interoperabilidad con otras cámaras para funciones estándar y, al mismo tiempo, dar a los usuarios acceso a funciones únicas en sus cámaras.

 

Activación en GigE Vision

En la mayoría de las aplicaciones de visión artificial, la cámara necesita tomar imágenes basadas en eventos del mundo real. Por ejemplo, un sistema de inspección de botellas debe capturar cada imagen cuando una botella está exactamente en la misma posición en la cinta transportadora con respecto a la cámara. Esto hará que la botella aparezca exactamente en la misma ubicación en la imagen y, por lo tanto, simplificará el procesamiento de la imagen. Puede lograr dicho control utilizando activadores de hardware.

En los sistemas típicos activados por hardware, un sensor de proximidad o un codificador envía pulsos para activar una adquisición. En muchos casos, el disparador está conectado a un capturador de fotogramas que inicia una adquisición. Sin embargo, debido a las distancias potencialmente largas posibles con las cámaras GigE Vision (hasta 100 metros), no es posible activar el capturador de fotogramas. Por lo tanto, todas las señales de disparo deben conectarse directamente a la cámara.

En GenICam, la selección de modos de disparo funciona igual que la configuración de los atributos de la cámara. De hecho, los modos de disparo son atributos de GenICam. Puede utilizar la misma API descrita en la sección anterior para configurar los modos de activación. La Convención de nomenclatura de funciones estándar de GenICam define varias funciones de control de activación que le permiten personalizar el comportamiento de la acción activada. Si bien los fabricantes de cámaras no están obligados a implementar todos los modos de disparo, los modos más utilizados se describen a continuación.

  • AquisitionStart : Trigger inicia la adquisición en la cámara
  • AcquisitionActive : la cámara adquiere imágenes siempre que el disparador esté activo
  • FrameStart : la cámara captura una imagen para cada disparador
  • LineStart : la cámara captura una línea por cada disparador (se usa en las cámaras de escaneo de línea)
  • ExposureStart : el disparador inicia la exposición de un fotograma (o línea)
  • ExposureActive : el marco (o línea) está expuesto mientras el disparador esté activo

Figura 10 . Atributos de disparo para una cámara Prosilica GE650
 
Como ejemplo, veamos los modos de disparo de una cámara Prosilica GE650 GigE Vision. La pestaña Camera Attributes en MAX se puede ver en la Figura 10. Observe que hemos seleccionado que la cámara debe capturar una imagen por cada flanco ascendente de un disparador conectado a Line1. Estos ajustes, una vez guardados en MAX, se cargan automáticamente cuando se abre la cámara en cualquier API. Sin embargo, es posible que desee establecer la configuración mediante programación. La Figura 11 usa LabVIEW para configurar programáticamente la cámara a la misma configuración que la Figura 10.

Figura 11 . Un ejemplo de activación simple en LabVIEW

Advertencias y trampas

Jumbo Packets: si su dispositivo NIC, o cualquier hardware de red intermedio (conmutador, enrutador, etc.), no admite paquetes Jumbo, estará limitado a un tamaño de paquete de menos de 1500 Bytes. El tamaño del paquete de GigE Vision no puede ser mayor que el tamaño máximo de paquete permitido por la NIC.

Firewalls: muchas redes corporativas emplean cortafuegos para la seguridad de la red. Sin embargo, no puede adquirir desde cámaras GigE Vision con el firewall habilitado, a menos que use el controlador High Performace. Si la política de red de su empresa no le permite desactivar el cortafuegos o utilizar un controlador de red diferente, deberá utilizar un sistema dedicado a la adquisición de imágenes, que no forma parte de la red corporativa.

Corrupt XML files: al igual que con cualquier estándar nuevo, las empresas de fabricación de cámaras publican periódicamente una nueva revisión de su firmware. Si recibe un error que indica que el archivo XML está dañado, comuníquese con el fabricante de la cámara para obtener la última revisión de su firmware.

Interoperability: si bien GenICam brinda a los fabricantes de cámaras la flexibilidad de crear un conjunto de atributos personalizados, dificulta el cambio fácil entre cámaras sin modificar su código. Si bien la Convención de denominación de funciones estándar de GenICam alivia este problema hasta cierto punto, la mayoría de las convenciones son solo recomendaciones y no requisitos. Por lo tanto, el fabricante de una cámara puede desviarse de la convención, en cuyo caso, el software de la aplicación deberá modificarse para que sea interoperable con otras cámaras.