|
1111111111111111
(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.
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.
|