软件通过Video4Linux编程接口对图像或视频数据进行采集,并编写相应的网络传输程序实现远程传输图像数据。Video4Linux是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数,这些视频设备包括现今市场上流行的TV卡、视频捕捉卡和USB摄像头等。对于USB口摄像头,其驱动程序中需要提供基本的I/O操作接口函数open、read、write、close的实现。对中断的处理实现,内存映射功能以及对I/O通道的控制接口函数ioctl的实现等,并把它们定义在struct file_operations中。本系统采用内存映射法,即mmap()方式截取图像或视频数据。mmap()函数调用使得进程之间通过映射同一个普通文件实现共享内存。该映射内容区可读可写并且不同进程间可共享,不需要任何数据的拷贝。采集到图像数据后,运用网络接口无线传输到上位机或远程终端上进行数据处理。上位机中涉及到的程序有:将YUV420P格式的数据转换成RGB格式,提取Y,U和V分量值,将YUV格式的数据文件转换成txt文件便于运用Matlab仿真,测量加工零件的距离等(涉及到单目测距方法,在以后的论文中讨论);套接口是网络通信的基础,在Linux下定义的一些套接口的函数大致如下:对于一个简单TCP/IP服务器,其基本结构如下所示:
①建立套接字函数socket();②绑定地址和端口函数bind();③建立套接口队列函数listen();④接收连接函数accept();⑤处理连接函数read()/write();⑥关闭套接口close()。
与之对应的客户程序的基本结构如下所示:
①建立套接字函数socket();②连接服务器connect();③处理连接函数write()/read ();④关闭套接口close();
运用无线网络传回图像数据恢复的图片如图5.1,5.2和5.3所示(仅提取Y分量即灰度图,大小320X240,摄像头和黑斑距离50CM,+X代表摄像头向右移动XCM):
6. 结束语
本文提出了一套基于嵌入式平台(S3C2410芯片+Linux操作系统)的图像采集、无线传输和数控系统的设计和应用。在嵌入式数控系统加工零件过程中,运用图像采集模块和无线传输模块获取零件加工的过程,当前状态和精确测量。应用结果证明:系统很好的完成了图像采集和无线传输,得到的图像清晰,采集的数据可用于图像处理。特别是:平台中无线传输模块和数控制系统模块的结合实现传递信息,共享资源;使得数控领域具有分布式,移动性,微型化和智能化等特点。