边干边学机器视觉系列 图像采集部分.pdf

边干边学机器视觉系列 图像采集部分.pdf

ID:23644222

大小:999.63 KB

页数:8页

时间:2018-11-09

边干边学机器视觉系列 图像采集部分.pdf_第1页
边干边学机器视觉系列 图像采集部分.pdf_第2页
边干边学机器视觉系列 图像采集部分.pdf_第3页
边干边学机器视觉系列 图像采集部分.pdf_第4页
边干边学机器视觉系列 图像采集部分.pdf_第5页
资源描述:

《边干边学机器视觉系列 图像采集部分.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、边干边学机器视觉系列图像采集部分当选定好机器视觉的软硬件平台后,下一步就是图像采集。本章将详细讨论基于USB摄像头的图像采集和工业相机的图像采集,大家可以根据手中硬件的不同而选读不同的部分。从软件的视角来看,尽管硬件不同,但编程的思路和模式是基本一致的。本文使用的工业相机是Panasonic的BP330,它是一款遵循CCIR标准的黑白相机,图像采集卡是NI公司的PCI-1407(任何标准制式的黑白模拟相机都可以接到PCI-1407)。把相机连接到PCI-1407后,即可在MAX下找到PCI-1407,点击Grab按钮,还可以采集到图像,如图3.1所示。图3.1在MAX里面采集图像如果你使用的是

2、USB摄像头,那么请参考Error!Referencesourcenotfound.Error!Referencesourcenotfound.,运行imaqUSBexamples.llb中的Grab.vi。在软硬件正常工作的情况下,可以看到从USB摄像头中传出的图像,如Error!Referencesourcenotfound.所示。在进行机器视觉系统开发前,我们通常都会如上所示先验证软硬件是否能正常工作,以便后续开发。1.1采集单幅图像1.1.1基于图像采集卡的Snap操作采集单幅图像是基本的图像采集操作之一,对应的动作叫Snap。每次Snap时,图像数据先从相机传到图像采集卡,然后再传到

3、计算机的内存(图像处理缓冲区)中去,如图3.2所示。图3.2Snap方式采集图像过程Snap方式的图像采集程序如图3.3所示:第1步:调用IMAQInit.vi完成图像采集板卡的初始化工作。第2步:调用IMAQCreate.vi为图像数据创建一个数据缓冲区。第3步:调用IMAQSnap.vi从图像采集板卡中读入一帧图像数据,并把它放入先前创建的数据缓冲区中,并放入Image中显示。第4步:当图像数据缓冲区被释放后,我们在前面板上将看不到采集的图像了,所以特地添加一个人为的延时程序,等待用户停止。第5步:调用IMAQClose.vi,释放占有的图像采集板卡。第6步:调用IMAQDispose.v

4、i,释放占有的图像数据缓冲区。图3.3Snap范例程序单幅图像采集的运行结果,如图3.4所示。图3.4单幅图像采集读到这里,大家可能跟我一样都有一个疑问,为什么必须有第二步和第六步,即创建图像数据缓冲区和释放图像数据缓冲区。这是因为每帧图像的数据量都特别大,如果在处理图像的过程中直接传递图像数据,则非常耗时。最好的方式是仅仅传递指向该数据缓冲区的引用。IMAQCreate.vi完成的就是创建图像数据缓冲区并返回指向该数据缓冲区的引用的过程。1.1.2基于USB摄像头的Snap操作USB摄像头的Snap操作的程序实现与上面的基本相同,只需要用IMAQUSB函数选板中的函数替代相应步骤即可,如图3

5、.5所示。图3.5USB摄像头Snap范例程序USB设备在正常工作以前,第一件要做的事就是枚举,所以USB摄像头在进行初始化前,需要先执行第0步,枚举系统中的USB摄像设备,接着:第1步:调用IMAQUSBInit.vi完成USB摄像设备的初始化工作。第2步:调用IMAQCreate.vi为图像数据创建一个数据缓冲区。第3步:调用IMAQUSBSnap.vi从USB摄像设备中读入一帧图像数据,并把它放入先前创建的数据缓冲区中,并放入Image中显示。第4步:当图像数据缓冲区被释放后,我们在前面板上将看不到采集的图像了,所以特地添加一个人为的延时程序,等待用户停止。第5步:调用IMAQUSBCl

6、ose.vi,释放占有的USB摄像设备。第6步:调用IMAQDispose.vi,释放占有的图像数据缓冲区。USB摄像头Snap范例程序运行结果如图3.6所示。图3.6USB摄像头Snap范例程序运行结果1.1.3使用Snap.vi进行连续图像采集的速度问题在实际工程应用中,连续图像采集的应用占绝大多数。当我们会使用Snap.vi后,很自然的想到最简单的连续采集图像实现方式是把Snap.vi放到While循环中,如图3.7所示。图3.7使用Snap进行连续图像采集在While循环中,加入可以计算每次循环消耗的时间。运行上述程序,可以看到使用Snap进行连续图像采集时,获得每帧图像所消耗的时间高

7、达120ms(不同的系统,时间略有不同),如图3.8所示。换句话说,在这种方式下,每秒钟只能获得大约8帧图像,这种速度在大多数实际应用中是不能容忍的。图3.8120ms采集一帧图像为实现高速的连续图像采集,NIVisionModule提供了一个专用于连续图像采集的VI,IMAQGrabAcquire.vi,。下节本文将详述如何进行连续图像采集。1.2采集连续图像IMAQSnap.vi运行速度之所以

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。