Imágenes de 16 bits en NI Vision



Software Primario:
Versión de Software Primario: 7.0
Versión de Software Primario Corregido: 7.1
Software Secundario: Driver Software>>NI-IMAQ, Driver Software>>NI-IMAQ for IEEE-1394, Driver Software>>NI-IMAQ for USB Cameras

Problema:
Necesito analizar imágenes de 16 bits usando NI Vision. Guardé información usando valores sin signo, pero el tipo de dato de mi imagen queda definido como valores con signo.


Solución:
Varios controladores de cámaras y algunas aplicaciones crean imágenes de 16 bits usando valores sin signo. Esto significa que el pixel más oscuro tiene un valor de 0 y el más brillante tiene un valor de b1111111111111111 (xFFFF o d65535). Sin embargo, el tipo de dato de la imagen usado en LabVIEW por NI Vision y NI IMAQ lee valores y los interpreta como valores con signo. Como lo indica la Fig 1 ello implica que se malinterpreten imágenes cuando un arreglo de valores se cambia de tipo de dato.


Figura 1: Interpretación de información sin signo (izquierda) y con signo (derecha)

Esta diferencia se resuelve restando un valor constante de x8000 (d32768) de los valores originales. Sin embargo, ni el rango de U16 ni el de I16 permiten esta resta (si a los valores originales se les resta xFFFF ocurrirá desbordamiento). Hay dos soluciones estándar a este problema.

Solución intuitiva:

La Figura 2 muestra que un entero de 32 bit con signo, cuyo rango puede acomodar cada valor posible de la operación, puede ser usado en un estado intermedio. La imagen con información de tipo U16 se transforma a I32, se resta la constante,  y entonces, el nuevo valor (que se encuentra en el rango permitido de I16) se transforma a I16.


Figura 2: Usando la representación I32 como intermediaria.

El código de LabVIEW mostrado en la Figura 3 ejemplifica este ajuste y usa el arreglo resultante para convertir el tipo de dato de la imagen. (nota: el VI IMAQ ImagetoArray es parte del módulo de desarrollo de Visión y no se incluye con el controlador de NI-IMAQ). Esta solución es ideal para ambientes de aprendizaje y programas de ejemplo.


Figura 3: Importing a U16 image to the Image datatype in LabVIEW


 

Solución de la arquitectura:

El código de LabVIEW mostrado en la Figura 4 hace uso de la arquitectura de la PC y usa una compuerta XOR y un VI que invoca al tipo de imagen para realizar la misma tarea que la de la figura 3. En una aplicación práctica, este código se ejecutará más rápido y será más eficiente que el mostrado arriba.


Figura 4: Convirtiendo U16 a I16 con la función Type Cast y XOR.



Ligas Relacionadas:
KnowledgeBase 12QD8K3Q: How does IMAQ display 16-bit or Floating Images (inglés)
KnowledgeBase 2EBFQ4VT: Adjusting Brightness and Contrast for 16-bit Images (inglés)

Archivos Adjuntos:


Conversion_using_LV.Jpg - Conversion_using_LV.JpgU16vsI16.jpg - U16vsI16.jpg
Cast_and_Subtract1.jpg - Cast_and_Subtract1.jpg
XOR_Solution.JPG - XOR_Solution.JPG



Día del Reporte: 04/07/2006
Última Actualización: 04/21/2009
Identificación del Documento: 3W6EEVD3