求助:LABVIEW图象处理

我近期做在一个课题:图象处理!我现时手上有以下的资料,上面有些程式我不太会写(我是新手)。希望能得到各位高手反映点下!谢谢!

<?:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />10.2.4  图像采集<?:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

要处理图像,必须先要获取一张图像。获取图像是通过调用Vision中的IMAQ USB函数来实现的。它的最大优势在于可以自动识别USB摄像头,并读取数据。选择函数|Vision and Motion|IMAQ USB”命令,打开IMAQ USB函数下拉列表,如图10-46所示。

在进行图像采集时,先要用IMAQ Create函数创建一个图像任务,此函数的接线如图10-47所示。

<?:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />            

10-46  图像采集函数                      10-47  IMAQ Create函数图标

这里通过此函数对图像的名称和类型大小等进行定义,否则后面的工作没有办法进行。然后再通过一个USB启动函数来调用USB摄像头设备。此函数是NI公司自己研发专门读取USB设备的函数,其内部通过调用ImaqDirectShowDll.dll文件来实现。

打开USB设备后,就要从此设备上获取数据,所以用了一个IMAQ USB Grab Acquire函数来实现。整个图像采集程序框图如图10-48所示。

10.2.5  图像处理过程

此处的图像处理包括对图像进行采样,找出与采样点相同的图像。为了找出各种角度放置的采样点,在查找的同时对图像进行了360°的翻转,这样可以找出图像上所有相同点。

1.整体设计

在本实例设计中,对一张图片先设置好要查找的内容,然后开始自动查找,最后对找出的内容进行标记和显示。

由于软件的运行比较复杂,数据的采集又是实时的,要求处理速度比较快,所以要对其进行整体设计,合理安排控件的调用和执行顺序。本程序中采用了一个大循环,保持程序的持续运行。在内部再调用一个顺序结构来控制程序的执行顺序,这样可以保证程序按编程者的思路进行。具体的工作流程图如图10-49所示。

         

10-48  图像采集                                  10-49  整个程序流程图

2.设置查找像素

读取了图像数据后,还要设置查找的像素。这里通过一个光标选择函数来实现。先用函数IMAQ Setup Learn Pattern 2来设置需要记录的各项,然后再用IMAQ Extract函数进行光标设置。这样就记录了此光标区域的图像数据。它的程序框图如图10-50所示。

10-50  设置查找像素

这里用一个条件结构来控制是否进入记录像素的程序。也就是当选择了要记录的像素后,才进入此分支程序。在这一分支程序中,又利用了一个顺序结构,这样提高了程序运行的效率。它的程序如图10-51所示。

10-51  复位记录按钮

3.开始查找

当设置完以上要查找的像素后,就可以在需要的图片中查找此像素。为了查找有用的像素,在选择了开始查找后,要先读取上面标记的像素,再进行查找。此处程序的设计中,也是先运行一个条件结构,再运行顺序结构,按顺序执行程序。读取光标选择像素的程序如图10-52所示。

10-52  读取选择的像素

当读取像素后,利用顺序结构在第二帧的图像中继续查找。在这一帧中放置了一个循环,并限制循环次数为4。此时先用一个IMAQ Rotate对图像进行翻转,每次翻转90°。这样就可以在循环4次时翻转一周,对图像上各个角度的像素进行查找。再把图像送到IMAQ Match Pattern 2函数,对其进行查找。通过此函数直接输出找到的像素信息的数组。为了对找到的信息进行处理,又用一个For循环对此数据和簇进行拆分。这里的For循环次数直接由数组大小来控制。把数组拆开后再找到像素的中心位置,并按设置好的字体和格式显示出来。对字体的设置,前面板如图10-53所示。

从图10-52中可以看出,其中包括字体名称、字体大小、下画线、加粗等标记方式。标记字体程序如图10-54所示。

 

        10-53  标记字体设置                    10-54  标记字体程序

可以看到,最复杂的设置是对标记内容的组合与写入。这里先由Draw Pattern Matches Position函数读取各个记录点的坐标值,然后用一个字符串组合函数把标记和坐标值组合成一个标记字符串。最后由IMAQ Draw Text函数把组合好的标记信息直接写入图像界面中。整个标记程序如图10-55所示。

10-55  完整标记程序

当第二帧执行完后,进入第三帧的图像大小设置。因为在前面查找的过程中,为了查找得更加精确,对图像进行了像素的放大,这里为了显示的方便,就需要对图像进行还原,这样才可以看得清楚。此处用了IMAQ Extract 函数,对显示的图像进行放大和缩小,但是没有改变真正的图像。它的程序框图如图10-56所示。

10-56  图像还原

4.程序前面板

当所有后面板程序编写完后,就要进行前面板控件布局。由于此程序中涉及的控件不多,所以很好设置整体布局。程序界面如图10-57所示。其中,标签类型是为了给标签进行不同的编号,在当前坐标前面加的一个前缀,这样更好区分不同的像素点。最大数目是查找出目标的最大限制。如果设置为40,则最多只能找出40个目标。当大于此值时,则将多出来的其他目标量忽略。

下面对查找时要放大的倍数进行设置,这里只是对二维的数据放大,所以在界面上设置两个值,一个是X,另一个是Y。前面板布局如图10-58所示。

                        

          10-57  控制项设置                       10-58  放大设置

为了对系统的工作进行控制,需要设置4个按钮。它们分别如下:

开始采集:用于启动采集,完成整个任务的第一个动作,采集一张图片。

记录标记:用于对光标选择的区域进行记录,以识别设置像素。

开始查找:启动整个系统,对采集到的图片进行查找,找出相同像素并进行标记。

停止工作:系统停止工作。

界面布局如图10-59所示。

接下来对查找后的图像进行显示,这是非常关键的一个步骤。这里还对查找到的总个数进行了统计,这样可以让人对查找结果一目了然,完整的前面板界面如图10-60所示。

   

         10-59  按钮设置                             10-60  完整界面