完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
随着后PC时代的到来和嵌入式的蓬勃发展,运用嵌入式系统实现远程数据采集已成为社会需求的趋势。本文采用嵌入式系统采集图像数据实现加工零件的远程测量,代替传统的人工检测。其特点有:网络化,准确性高,节约人力和物力。
|
|
相关推荐
3个回答
|
|
1.引言
随着后PC时代的到来和嵌入式的蓬勃发展,运用嵌入式系统实现远程数据采集已成为社会需求的趋势。本文采用嵌入式系统采集图像数据实现加工零件的远程测量,代替传统的人工检测。其特点有:网络化,准确性高,节约人力和物力。 2.系统软硬件平台 由于嵌入式设备资源有限,所以在开发嵌入式系统的软件部分需要在宿主机平台上实现,运用宿主机的资源编译目标机平台上可运行的软件。本文系统的宿主机平台:Redhat 9.0,交叉编译环境:ARM-Linux-Gcc;目标机平台: UBOOT 1.1,Linux 2.4.18和 YAFFS根文件系统。 系统硬件平台的处理器采用 Samsung公司的集成有 ARM920T内核的处理器S3C2410,该处理器资源丰富,具有 16KB的指令 Cache和 16KB数据 Cache、MMU虚拟存储器管理器、 LCD控制器、支持 NAND Flash系统引导, RAM控制器、3通道 UART、4通道 DMA、4通道带 PWM定时器、RTC、并行 I/O口、8通道 10位 ADC、触摸屏接口、IIC接口、IIS接口、2个 USB接口控制器、2通道 SPI及内部 PLL时钟倍频器,主频昀高可达 203MHz。此外,在处理器丰富资源的基础上还进行了相关的配置和扩展,配置了 64MB的 Flash和 64MB的 SDRAM,并引出了两个 HOST USB接口。在 USB接口上外接带 USB口的摄像头 Webeye V 2000。嵌入式 Linux操作系统上建立图像采集和图像恢复两个软件模块。开发板拥有 CS8900A-CQ3芯片,具有 10~100M自适应的网络通信能力。通过它实现图像数据的远程传输。整个系统的硬件概图如图 2.1所示: |
|
|
|
3.RGB数据流的采集 Webeye V 2000摄像头内部拥有 ov7620、ov511和一个存储芯片。由于Linux操作系统中嵌有ov511芯片的驱动,故在编译Linux操作系统时需要加载ov511驱动,主要步骤:
①(*)选择Multimedia device->下的Video for linux。加载video4linux模块,提供了编程接口; ②在u*** support->目录下(*)选择support for u***和u*** camera ov511 support。加入了对采用ov511接口芯片的USB数字摄像头的驱动支持。 在嵌入式Linux操作系统平台上驱动摄像头,通过Video4Linux接口控制摄像头参数、图片的格式和窗口大小等等。Video4Linux是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数。USB口摄像头驱动程序中需要提供基本的I/O操作接口函数open、read、write、close的实现。对中断的处理实现,内存映射功能以及对I/O通道的控制接口函数ioctl的实现等,并把它们定义在struct file_operations中。本系统采用内存映射法,即mmap()方式截取图像或视频数据。mmap()函数调用使得进程之间通过映射同一个普通文件实现共享内存。该映射内容区可读可写并且不同进程间可共享,不需要任何数据的拷贝。 typedef struct v4l_struct{ int fd; //文件描述符 struct video_capability capability; //包含摄像头的基本信息,设备名称、支持的昀大昀小分辨率、信号源信息等,分别对应着结构体中成员变量name[32] maxwidth、maxheight、minwidth、minheight、channels(信号源个数)、type等; struct video_channel channel; struct video_picture picture; //包含设备采集图象的各种属性,如brightness(亮度)、hue(色调)、contrast(对比度)、whiteness(色度)、depth(深度)等; struct video_window window; //VIDIOCGWIN VIDIOCSWIN struct video_capture capture; //VIDIOCSCAPTURE VIDIOCGCAPTURE struct video_buffer buffer; //VIDIOCGFBUF struct video_mmap mmap; //video_mmap 用于内存映射; struct video_mbuf mbuf; //video_mbuf 利用mmap进行映射的帧信息,实际上是输入到摄像头存储缓冲中的帧信息,包括size(帧的大小)、frames(昀多支持的帧数)、offsets(每帧相对基址的偏移)。 unsigned char *map; unsigned char *buf; }v4l_device;ioctl(vd->fd,VIDIOCGCAP,&(vd->capability)控制这里说明一下ioctl(int fd,int cmd,⋯)函数,它在用户程序中用来控制I/O通道,其中,fd代表设备文件描述符,cmd代表用户程序对设备的控制命令,省略号一般表示类型长度的参数, 也可没有。 |
|
|
|
4. 图像的恢复
上一节已经介绍了系统采集RGB图像数据流。为了满足用户观看采集的图像数据和相应测试,故需要将RGB流转换成在Linux系统和Windows系统下都可以浏览的BMP格式的图片。 BMP格式的图片分为文件描述区和图像存储区两部分。头文件信息中又包含了信息区和调色板区两部分,信息区又可以细分为文件信息区和图像信息区两部分。恢复BMP图片的关键是首先手动生成BMP文件的头文件,然后将采集到的RGB数据流填充到BMP文件的数据区。拍摄的物体为加工好的环行零件,检验其加工是否合格,中心点位置等等。以下将介绍BMP文件的数据结构和头文件,图片恢复如图4.1所示: 文件信息区: typedef struct tagBITMAPFILEHEADER{ 5. 图像的传输和处理 系统采用网络(FTP)方式读取 BMP文件。远程终端建立 FTP服务器,实现系统和 FTP服务器的连接建立,将 BMP文件放置到服务器上,具体命令: FTP open 服务器的 IP地址Put命令将 bmp文件放到FTP服务器上终端可以通过网络获得 FTP服务器上的 BMP文件,终端上安装 Matlab7.1应用程序,运用Matlab7.1做图像处理,从而得到对加工零件的中值滤波,边缘检测,二值化和中心点的坐标,查看零件合格。具体命令和结果如下: >> I=imread(711d.bmp); >> k1=medfilt2(I,[5,5]); %进行 5*5模版的中值滤波 >> BW2=edge(k1,roberts); %用 roberts算子检测边缘 >> imshow(BW2);title(roberts算子提取结果); 下面是中心点坐标的提取命令: >>I=imread(711d.bmp);>>K=im2bw(I,0.4); %转换成二值图像 >>L=bwlabel(k); >> STATS=regionprops(L, centroid); STATS = Centroid: [160.5000 120.5000] 6.结束语 本文基于嵌入式平台的实现了图像采集软硬件,RGB图像数据流向 BMP文件的转换和图像的处理(中值滤波,边缘检测,二值化和中心点的坐标)。实验结果证明:网络化检测加工零件准确性高,节约人力和物力。为今后完成机械手定位打下一定基础。 本文作者创新点: 嵌入式Linux平台集成图像采集软硬件,RGB流和BMP转换,远程终端 处理零件图像,实现远程检测系统具有微型化,图形化,方便和经济等特点。 |
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-30 14:23 , Processed in 0.787963 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号