LabVIEW Vision之Overlay-Line覆盖线
在NI LabVIEW做图像处理时,经常要用到覆盖Overlay功能,将一些目标信息标示在图像上,如目标点、直边、圆、结果等。本文介绍的是Overlay中的覆盖线函数。覆盖线功能,其作用是在图像上显示一条直线,主要是用于显示一些有线特征输出的函数,如找边函数、高级找边函数、拟合直线函数等。
Overlay Line函数位置
NI LabVIEW VISION中的覆盖Overlay函数位于编程>函数>视觉与运动>Vision Utilities>Overlay,其中本节介绍的Overlay Line覆盖线函数,是第一排第二个函数IMAQ Overlay Line。
IMAQ Overlay Line覆盖线函数功能与接线端
覆盖线函数,和覆盖点函数一样,可以适用所有NI支持的图像类型,灰度图、彩色图、8位图、16位图等等,都是可以的。下面来看一下其引脚的具体说明。
Group specifies the group to which you want to add the overlay information. If no name is specified, the overlay information is added to the default group.
组:指定你想添加的覆盖信息属于哪个组。如果没有指定名称,则覆盖的信息添加到默认的组中。覆盖信息可以分组,有可能有许多的覆盖信息,所以如果有必要,则可以对相应的覆盖信息进行分组,不过一般情况下,都不使用分组功能,这里不连接使用默认值即可。
Image is a reference to the source image.
图像:这个是图像的引用。用于连接需要覆盖的图像上。一个图像处理程序中,可能有许多的图像缓存引用,这时可能每个覆盖信息是覆盖在不同的图像上,因此要注意Image接线端连接到哪个缓存引用上。
Start Point is a point-coordinate cluster that defines the starting point of the line.
起点:指定在图像上覆盖线的起始点的坐标,使用簇来表示,包含X、Y两个像素坐标值。此值必须输入,否则函数报错。
End Point is a point-coordinate cluster that defines the end point of the line.
终点:指定在图像上覆盖线的终点的坐标,使用簇来表示,包含X、Y两个像素坐标值。此值必须输入,否则函数报错。因为一条确定直线是由两个不重合的点来确定的,因此一般起点和终点是两上不重合的点坐标。如果起点和终点的坐标重合,对于覆盖线函数来说,不会报错,但是其覆盖的线将变成一个点,而不再是一线条。
错误输入,没太多介绍的,基本上NI LabVIEW函数,都有错误输入与输出。
Color is the color of the overlay. Note The alpha color channel is not supported. Setting the Color to transparent has the same effect as selecting black.
颜色:即覆盖信息的颜色。可以使用颜色盒直接选择。注意一点的是,覆盖的颜色不能使用阿尔发颜色通道。如果设置颜色为透明,则和设置黑色的效果是一样。
Image Out is a reference to the destination image.
图像输出:已经覆盖信息后的图像引用输出。这里的图像输出,是已经覆盖了信息后的图像。因此,如果使用Image Display显示控件连接,如果连接在覆盖点函数前,则是没有覆盖的,而连接在覆盖点函数后,则是有覆盖的。当然如果在同个帧图像中进行显示,因为其时间非常快,可能看不出这种变化。
error out contains error information.
错误输出:与错误输入相同,基本上所有函数都包含了这样接线端。
下面来看一下其具体使用方法:
覆盖线效果
采集图像并覆盖线程序框图
当然,有时候得到的特征可能不是线的两个端点,而是一条线段。不过NI VISION中的线段,其实就是两个端点组合成的簇。因此只需要按名称解簇,再输入到起点和终点即可。
覆盖线段
覆盖线段程序框图
覆盖线功能,是比较简章的。只需要输入相应的起点、终点坐标即可。这里需要注意一点,因为输入的点坐标是I32整形的,因此其只能取整数,输入到图像上也是整数坐标。而对于某些函数输出的点信息,可能是小数的,这样就会使用四舍五入的方法进行处理。所以最后覆盖的线位置与实际得到的目标线位置会有零点几个像素的偏移。