之前我们介绍了 MV-EM130M 工业相机的实时图像获取方法,本文再结合 labview 的图像处理函数给出一种简单的图像处理 VI。此处的图像处理包括对图像进行采样,找出与采样点相同的图像。为了找出角度放置的采样点,在查找的同时对图像进行了 360°的翻转,这样可以找出图像上相同点。

 

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

 

图像采集&整个程序流程图

 

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

 

设置查找像素

 

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

 

复位记录按钮

 

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

 

读取选择的像素

 

当读取像素后,利用顺序结构在第二帧的图像中继续查找。在这一帧中放置了一个循环,并限制循环次数为 4。此时先用一个 IMAQ Rotate 对图像进行翻转,每次翻转 90°。这样就可以在循环 4 次时翻转一周,对图像上各个角度的像素进行查找。再把图像送到 IMAQ Match Pattern 2 函数,对其进行查找。通过此函数直接输出找到的像素信息的数组。为了对找到的信息进行处理,又用一个 For 循环对此数据和簇进行拆分。

 

程序编写完成后,要对系统进行软硬件的联机调试。这里把维视图像的 MV-EM130M 工业相机用网线和计算机连接,并在计算机上安装驱动程序。具体操作如下:

 

(1)运行本程序,在摄像头下放置好一块电路板,并对其设置好焦距和亮度。单击“开始采集”按钮,对其进行采集,并显示实时采集到的图像。

 

图像采集

 

(2)当采集完一次后,在界面上可以看到清晰的采集结果。此时我们用光标在需要进行识别的地方画出一个区域。此时光标变为绿色,表示用光标选中了要记录的像素。然后单击“学习标记”按钮,此光标消失,表示已经记录(学习)完成。这里选中的是电路板上字母 C,让程序学习记录,并找出界面上所有的字母 C。

 

设置学习区域

 

(3)记录学习完成后,就可以查找相同像素的点了。单击“开始查找”按钮后,程序开始在此图上查找记录的像素点,并以此像素点为标准,进行比对,找出相同的点。查找的过程中标出了各个点的坐标和编号。这里把标签类型设置为“A”,以 Shift Invariant 的方式查找,精度设置为 700,最大数目设置为 40。这样就可找出所有相同的元素。

 

查找结果

 

从图中可以看出,查找过程中,程序找出了所有字母 C,并标注了它们的坐标和标签。此处的标签有些不是端正的,主要是由于在对图片进行翻转查找时,按相应的角度找到后直接就标记了。如标签 A43(70,471)表示的意义如下:字母 A 是对程序进行查找前设置的标签类型。4 表示此图片翻转到第 4 次找到的,即第 4 个角度。3 表示是此角度下的第 3 个点。(70,471)表示当前查找到像素的中心坐标,即此目标的 X=70,Y=471,坐标的值是从图像开始的左上角界面算起的。同时可以看到界面的下面显示了图片的属性,如图片大小、位数等。最后还可以看到一个“已查找到总个数”本框,此处显示的是 8 个目标。这和图上标注的一样,也和实际相符。

 

从以上的例程可以看出,使用可直接兼容 labview 驱动的工业相机在 labview 中做图像处理是较方便和高效的。