利用LabVIEW进行图像采集与处理

[复制链接]
loveplc | 2010-5-16 02:31:04 | 显示全部楼层

利用LabVIEW进行图像采集与处理

1 利用LabVIEW进行图像采集与处理


利用LabVIEW进行图像处理是一个非常重要的应用。在许多行业中采用图像的采集和识别来进行判断、控制,使操作更加精确,具有可信度、人性化、智能化。本节将讲解利用LabVIEW进行图像采集和处理的实例。

1 .1  图像处理介绍


图像处理也可以称作视觉处理。LabVIEW提供了多种图像处理的方法。其中NI公司的视觉采集软件提供的驱动和函数,既能够从数千种连接到 NI 帧接收器上的不同相机上采集图像,也能够从连接在PC、PXI系统或笔记本计算机上标准端口的IEEE 1394和千兆位以太网视觉相机采集图像。

LabVIEW中的视觉开发模块作为强大的机器视觉处理库,配有各类函数,其中包括:边缘检测、颗粒分析、光学字符识别和验证、一维和二维代码支持、几何与模式匹配、颜色工具。该模块可与NI公司的所有软件、C++、Microsoft Visual Basic、Microsoft .NET 相互调用,为用户提供了相当便利的操作。用户可通过视觉开发模块的同步功能,实现与运动或数据采集测量的同步。

NI公司提供的图像处理软件包Vision 8.5.1 Acquisition Software ,是专门为LabVIEW 8.5服务的。它可以在LabVIEW 8.5中完成各种关于图像处理、视觉运行的控制。

1 .2  实例内容说明


本实例主要完成通过USB摄像头采集图像,并经过一些运算对图像进行数据分析。在实例中用采集到的图片作样本,让系统认识一个像素,然后开始自动查找图像中的相同像素,查找时还要对图片进行翻转,以全面找到相同的像素,最后再标注出这些点的中心位置和点数。

1 .3  Vision安装与介绍


本例主要通过Vision 8.5.1 Acquisition Software软件包来实现。Vision 8.5.1 Acquisition Software软件包是一种专门的图像处理软件,需要单独安装。此软件一般可以通过供应商购买,也可以通过NI公司网站下载。

1.Vision安装


Vision 8.5.1 Acquisition Software安装步骤如下:

(1)把光盘放入计算机光驱,系统会自动识别,并显示出安装自检界面,如图10-34所示。

(2)当安装程序自检完成后,“Next”按钮显示为可操作状态。此时单击“Next”按钮进入下一个界面,选择安装路径,如图10-35所示。

 

图10-34  安装自检                               图10-35  选择安装路径

(3)一般此路径就是LabVIEW软件安装的默认路径。如果在安装LabVIEW软件时没有改动路径,则不需要修改此路径。单击“Next”按钮,进入下一步选择安装驱动的界面,如图10-36所示。

(4)在驱动选择界面中,可以选择要安装的驱动类型。这里可以看到有4种驱动可安装。当不需要某种驱动时,在其选项上打叉即可。当选择完要安装的驱动后,单击“Next”按钮,进入下一步的安装确认界面,如图10-37所示。

 

图10-36  驱动选择                          图10-37  信息确认

(5)对显示的信息确认无误后,单击“Next”按钮开始安装,如图10-38所示。

(6)当安装完上面的所有软件包后,系统会显示安装完成界面,并提示是否选择激活此软件。根据自己的需要选择后,单击“Next”按钮进入下一步骤。最后安装完成的界面如图10-39所示。

 

图10-38  正在安装                            图10-39  安装完成

2.Vision介绍


Vision是一个图像处理的工具包,当安装完成后,启动LabVIEW软件,可以在前面板与后面板上看到相应的控件和函数。

(1)前面板控件

安装完Vision后,前面板中会自动出现一个Vision选项列表,打开它后可以看到有三个显示控件,如图10-40所示。

— IMAQ Image.ctl:对图像进行分析和处理时用到的一些控件,可用于对图像的类型。图像处理的方式、不同的形态算子,以及颜色的类型的选择等。

— Image Display用于设置图片显示方式,包括放大、移动、选择等。

— Image Display(Classic)也用于对图像显示的设置。它只是设置以经典的方式显示图像。

(2)后面板函数

在后面板中,打开函数选板,可以看到“视觉与运动”下拉列表。打开此列表将显示Vision安装后所有的函数,其中包括运动控制方面的函数,如图10-41所示。

                  

图10-40  Vision显示控件                             图10-41 “视觉与运动”函数

在后面板的函数选板中,可以看到有5大类的“视觉与运动”函数。它们主要是一些图像采集和图像处理的函数。

— NI-IMAQ列表:是图像采集函数列表,主要用于通过NI的系列图像采集板卡来获得图像。其中包括任务的建立、设备的初始化以及硬件参数的设定等函数,如图10-42所示。

— Vision Utilities列表:是视觉应用函数列表,用于对图像进行一些初步的整体操作。它包括的函数节点如图10-43所示。

其中,Image Management 是图像管理模块,包括建立和清除图像任务,获取图像的各类信息,图像的类型转换等函数节点,如图10-44所示。Files是图像文件模块,完成对图像文件的读写,以及图像附加信息的读写操作,如图10-45所示。

                    

图10-42  NI-IMAQ函数列表                        图10-43  Vision Utilities函数列表

                    

图10-44  Image Management函数列表                           图10-45  Files函数列表

External Display是图像的外部显示模块,如选中某一光标区域等。Pixel Manipulation是图像像素处理模块。此模块中的函数节点对图像的像素直接进行操作,包括图像上的点、线、面像素值的获取和设定,以及在图像中插入文本。Overlay是图像覆盖模块,可以对图像上的某一点、线、面(多边形、矩形和圆)进行覆盖。此种覆盖为非破坏性的覆盖,即不破坏原有的图像,覆盖信息可以另外和图像一起保存。Color Utilities是颜色应用模块,用于彩色图像中色彩的提取,图像中某点、线、面中色彩的设定或获取,以及不同色彩模型的转换。

1 .4  图像采集


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

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

            

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

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

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

1 .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  完整界面

1 .6  程序调试


程序编写完成后,要对系统进行软硬件的联机调试。这里把NI公司的USB摄像头和计算机连接,并在计算机上安装此软件工具包。具体操作如下:

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

(2)当采集完一次后,在界面上可以看到清晰的采集结果。此时我们用光标在需要进行识别的地方画出一个区域。此时光标变为绿色,表示用光标选中了要记录的像素。然后单击“学习标记”按钮,此光标消失,表示已经记录(学习)完成,如图10-62所示。

从图上可以看出,这里选中的是电路板上字母C,让程序学习记录,并找出界面上所有的字母C。



图10-61  图像采集



图10-62  设置学习区域

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



图10-63  查找结果

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

(4)完成查找后,单击“停止工作”按钮中断此程序的运行。系统退出图像采集和处理环节。

1 .7  实例总结


本例讲解了LabVIEW中图像处理方面的具体应用,主要对如何利用Vision工具包采集图像进行了详细的讲解。同时采集到图像后进行了各类复杂的运算,其中编程的思路也是笔者的经验展示,读者需要用心体会,掌握设置不同事件的合理运行顺序。
原文:http://book.csdn.net/bookfiles/1185/100118535319.shtml

yt5408 | 2010-5-16 11:57:57 | 显示全部楼层

Re:利用LabVIEW进行图像采集与处理

呵呵,,你把这个贴上来了?!
gongkongf | 2010-5-16 18:38:25 | 显示全部楼层

Re:利用LabVIEW进行图像采集与处理

精辟的东西     大家是不是要摸一下LabView 咧?

loveplc | 2010-5-16 22:41:51 | 显示全部楼层

Re:利用LabVIEW进行图像采集与处理

以下引用yt5408在2010-5-16 3:57:57发表的评论:

呵呵,,你把这个贴上来了?!

yt5408 | 2010-5-17 12:46:39 | 显示全部楼层

Re:利用LabVIEW进行图像采集与处理

以下引用loveplc在2010-5-16 14:41:51发表的评论:

以下引用yt5408在2010-5-16 3:57:57发表的评论:

呵呵,,你把这个贴上来了?!


得了积分,别忘了分我一半哦
yt5408 | 2010-5-18 10:13:00 | 显示全部楼层

Re:利用LabVIEW进行图像采集与处理

现在只做到用摄像头把图片采集进来,一直没太大进展。

如何分析呢?

NI软件可能有,但用的不熟。大家一块想办法!

yt5408 | 2010-5-21 06:56:10 | 显示全部楼层

Re:利用LabVIEW进行图像采集与处理

第七届中国国际机器视觉展览会

机器视觉技术及工业应用研讨会

2010、10、27-29

北京

中国国际展览中心

yt5408 | 2010-6-3 00:56:43 | 显示全部楼层

Re:利用LabVIEW进行图像采集与处理

机器视觉基础入门(给初学者)(转贴)

机器视觉基础入门

机器视觉",即采用机器代替人眼来做测量和判断; 可以简单称之为机器眼

机器视觉系统是指通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)把图像抓取到,然后将该图像传送至处理单元,通过数字化处理,根据像素分布和亮度、颜色等信息,来进行尺寸、形状、颜色等的判别。进而根据判别的结果来控制现场的设备动作。

机器视觉伴随计算机技术、现场总线技术的发展,技术日臻成熟,已是现代加工制造业不可或缺的产品,广泛应用于食品和饮料、化妆品、制药、建材和化工、金属加工、电子制造、包装、汽车制造等行业。

利用机器视觉,可以 代替传统的人工检测方法,可以极大提高产品质量,提高生产效率。

优越性

由于机器视觉系统可以获取大量信息,而且易于自动处理,也易于同信息控制系统集成; 因此,在现代自动化生产过程中,人们将机器视觉系统广泛地用于工况监视、成品检验和质量控制等领域。

机器视觉系统的特点是提高生产的柔性和自动化程度。在一些不适合于人工作业的危险工作环境或人工视觉难以满足要求的场合,常用机器视觉来替代人工视觉。
同时,在大批量工业生产过程中,用人工视觉检查产品质量效率低且精度不高,用机器视觉检测方法可以大大提高生产效率和生产的自动化程度。
而且机器视觉易于实现信息集成,是实现计算机集成制造的基础技术。

机器视觉检测系统的类型

机器视觉工业检测系统就其检测性质和应用范围分为: 定量和定性检测两大类,每类又分为不同的子类。

机器视觉在工业在线检测的各个应用领域十分活跃,如印刷电路板的视觉检查、钢板表面的自动探伤、大型工件平行度和垂直度测量、容器容积或杂质检测、机械零件的自动识别分类和几何尺寸测量等。

此外,在许多其它方法难以检测的场合,利用机器视觉系统可以有效地实现。机器视觉的应用正越来越多地代替人去完成许多工作,这无疑在很大程度上提高了生产自动化水平和检测系统的智能水平。

机器视觉常用术语

pass
指的是用“视觉系统”对被测体进行检测之后的结果为正确。也就是说被测体是正品。

fail
指的是“视觉系统”检测结果被测体不符合要求,为次品。

underkill(escape)
指的是原本应该被“视觉系统”检测为次品的,结果系统却将它认为是正品。

overkill
与underkill相反。指的是应该被检测为正品的被测品,却被当作是次品了。

Threshold
这是指系统所确定的一个临界灰度值。举例说明:现有一个系统,要对一个放在白色背景下的黑色物体进行测量。为了简化测量时的运算,以及提高测量速度。一个简便有效的方法就是set Threshold(设置灰度值)。硬性的让系统记住一个临界灰度值。具体到这个例子中,就是在黑色物体上找出最亮(颜色最白)部分的灰度值(如80),存到系统中。在系统测量时,拍照后对照片进行扫描。具体扫描过程如下:从每个象素中读出该象素的灰度值,与之前存在系统中的灰度值作比较。上面我们将灰度值80存在系统里,现在就拿每个象素灰度值比。比80高,就是颜色更白,我们认为这个象素属于是白色背景;如果比80低,就是颜色更黑,系统就认为这个象素属于黑色物体的一部分。

Auto (manual)Threshold
指系统不用操作者自己去设定Threshold,而是由系统自动地进行设定工作。相反,manual Threshold 就是指手动设定

tolerance
只要“视觉系统”需要作“是”与“非”PASS与FAIL的判别的,就一定要有tolerance。tolerance指的是系统对被测体的容忍程度。例如:我们测量一个物体的长度。理论上,我们知道该物体应该是25MM长。我们设定系统的容忍程度(tolerance)为 /-2MM。在测量时,系统就要以测量数据与这个理论数据(25MM)相比较,如果是》(25-2)MM且《(25 2)MM,系统就确认该被测物为正品;如果是<(25-2)MM或》(25 2)MM,系统就认为视测体太短或太长,是一个次品。

机器视觉的光学镜头

机器视觉的集成和设计面临硬件、软件和电子方面的挑战,如果忽视光学性能规格,不了解如何评估光学器件,用户挑选合适的机器视觉镜头将会面临挑战。

视觉系统光学性能的4项最基本参数是:
1 视野(field of view)
2 分辨率(resolution)
3 工作距离(working distance)
4 景深(depth of field)

需要考虑的更高级的集成规格参数包括:
焦距(f)
失真(distortion)
变焦/聚焦特点(zoom/focus)
聚焦远心(telecentricity)。

注意: 放大倍数不是基本参数。

● 视野
  简单而言,视野应该是你需要检查的物体的尺寸。很多从事机器视觉系统规格的工程师是从放大倍数的角度来思考的。然而,放大倍数是一种相对规格,依赖于图像传感器的尺寸和显示器件的尺寸。从视野或分辨率的角度来说,它没有真正意义。例如,一种具备 50 倍放大倍数的系统可能具有 5.3 毫米的视野(假如该系统使用的是 1/2 英寸 CCD 和 13 英寸显示器)或 15.2 毫米的视野(1 英寸 CCD、19 英寸显示器)。你必须规定视野,以确保视觉系统能够检验你感兴趣的整个区域。

● 分辨率
  只有规定视野而不是规定放大倍数,才能确保系统将具有合适的分辨率。分辨率是系统可以测到的受检验物体上的最小可分辨特征尺寸。在多数情况下,视野越小,分辨率越好。系统的分辨率是由光学器件的调制传递函数(modulation transfer function, MTF)、摄像机、电缆和显示硬件等多个参数决定的。MTF 限定了部件在分辨率和对比度方面的总体成像性能。
  光学器件的 MTF 常常被忽略,而仅仅根据基本放大倍数和摄像机像素数量来计算系统的分辨率是。这种近似计算假定光学器件是完美的,往往导致镜头规格偏低,并使系统性能降低。如果了解镜头把来自物体的数据传递到摄像机芯片的精确度,集成商就可以使系统的视野达到最大,同时为手头的工作维持适当的分辨率。

● 工作距离
  有时,各种机械限制支配光学限制。工作距离是从镜头前部到受检验物体的距离。需要的工作距离越长,保持小视野的难度和成本就越高。通常,人们会出于需要而规定小视野,同时出于方便而规定相当长的工作距离。然而,这种配置会极大地增加成本,往往会降低分辨率,并削弱光学器件的采光能力,从而不必要地降低了系统的总体成像性能。当存在机械限制时(比如在真空箱内部获取某反应的图像),这种配置也许是必要的。不过,假如长工作距离不是必需的,那就不要把事情搞得过于复杂。

● 景深
  假如成像的物体是三维的,那么你还必须考虑景深。镜头的景深是物体离最佳焦点较近或较远时,镜头保持所需分辨率的能力。大的景深能够简化各种安装限制,这是因为不需要进行精确的移动来使物体定位于镜头的额定工作距离。不过要记住,虽然镜头会在规定的景深上保持最小分辨率,但它们不一定会在该景深上保持相同视野。放大倍数的这种变化可能对机器视觉测量应用造成灾难性后果。远心镜头可以把该问题减小到最低程度。
注意发贴格式
lynia | 2010-12-29 00:26:34 | 显示全部楼层

Re:利用LabVIEW进行图像采集与处理

HALCON的初学者,大家多多指教
fanyinfu | 2012-3-10 12:26:01 | 显示全部楼层
很详细,呵呵,学习了
http://www.gzbz5.com
http://www.cd610000.com
望望 | 2013-10-8 20:17:28 | 显示全部楼层
多谢楼主啊!但是用Labview有时系统不是也太稳定啊!再者可移植性行不是太好啊!
悱諴匢擾 | 2014-6-28 23:43:15 | 显示全部楼层
学习了进步了
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则