|
0
而最亮的像素点的值为b1111111111111111
(xFFFF
or d65535
)。然而,LabVIEW中NI Vision 和NI-IMAQ使用的Image数据类型是用一个符号数读取数据值的。如图1所示,当一个数值数组转换它的数据类型时会导致错译。
Figure 1: Unsigned and Signed Interpretation of Data
x8000
(d32768
) 的常量来解决。然而,无论是U16 还是I16数值范围都不允许这样的减法。(如果是将原始数值减去xFFFF
,将会发生下溢。)有两种标准方法来解决这个问题:
图 2:使用I32作为一个中间状态
图 3: 将一幅U16图像转换为LabVIEW中的图像数据类型
架构方法:
图 4 中的LabVIEW代码利用了电脑架构的优势并且使用一个常用的XOR门和一个强制类型转换来实现和图2的代码相同的功能。在实际的应用环境中,这段代码比图2的代码更快更高效。
图 4: 使用强制类型转换和XOR 把U16转换为I16型
|