传感器开发平台
直播中

李倩

7年用户 242经验值
私信 关注

嵌入式系统采集图像数据的远程测量有什么优点?

随着后PC时代的到来和嵌入式的蓬勃发展,运用嵌入式系统实现远程数据采集已成为社会需求的趋势。本文采用嵌入式系统采集图像数据实现加工零件的远程测量,代替传统的人工检测。其特点有:网络化,准确性高,节约人力和物力。


回帖(3)

王欣

2019-8-30 16:28:58
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所示:

举报

殷夏

2019-8-30 16:29:13
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代表用户程序对设备的控制命令,省略号一般表示类型长度的参数, 也可没有。
举报

罗红

2019-8-30 16:29:15
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转换,远程终端
处理零件图像,实现远程检测系统具有微型化,图形化,方便和经济等特点。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分