基于DM6446嵌入式虹膜识别系统视频驱动的开发与实现

2014-11-15 02:51罗茂元胡春林
电子测试 2014年18期
关键词:虹膜寄存器应用程序

罗茂元,胡春林

(1.电子科技大学物理电子学院,成都,610054;2.电子科技大学电子工程学院,成都,611731)

0 引言

随着社会和科技的发展,身份认证的重要性日益显现。在身份识别方式中,虹膜识别以其最精确、非接触性等特点,居于各种生物特征识别系统的首位。目前,虹膜识别系统实现平台可分为基于PC机和基于嵌入式两大类。前者主要用于大型管理系统等领域,结构复杂,信息量大,体积大;而后者适用于小范围认证,信息处理量小,系统结构较为简单的领域,如高安全级别门禁系统等。

本课题重点研究在DM6446嵌入式虹膜系统的硬件平台下,通过配置视频前端寄存器,设计视频驱动程序。其目的在于实现分辨率为640*480的虹膜视频图像的采集,并将捕获到的虹膜图像在DDR2内存中保存,为后端的DSP虹膜算法提取特征值、完成相应编码提供基础。

1 视频处理前端(VPFE)的设计与实现

嵌入式DM6446处理器的视频处理子系统模块(VPSS)由用于视频输入及前端处理的视频前端模块(VPFE)和用于视频显示及后端处理的视频后端模块(VPBE)两部分组成。

视频处理前端(VPFE)主要由CCDC、IPIPE、IPIPEIF、H3A四个模块组成。CCDC提供了一个连接图像传感器和数字视频源的接口。在硬件设计上,将CCDC控制器与CMOS图像传感器芯片MT9T001相连接,通过设置CCDC相应的寄存器,使只接收原始图像/视频数据图像,而非多种形式的YUV视频数据,完成图像的采集。如图1所示,CMOS摄像头原始图像数据以RAW格式的视频流通过粗实线路径流向A2口,通过对下图中3个寄存器的配置,可设置图像数据采集的锁存时刻、输入数据传递是否按位取反以及数据比特数。

图1 RAW模式下CCDC的配置

在图2中,设置寄存器使A1路径的YCC数据不能通过,A2路径的RAW数据通过。由于后续均使用原始RAW图像数据,因此,不需图像调节功能,其他寄存器均保持默认值。RAW图像数据经粗实线路径流到B端口。

图2 RAW模式下数据选择

CCDC控制器后端处理采集的视频流不分奇偶场,如图3所示,采用连续存储模式将图像原始数据存储到DDR2内存中,由寄存器DDR_ADDR.ADR的值决定每一帧图像数据在实际物理内存DDR2中的起始地址,设置SDOFST寄存器根据场的ID号确定奇偶行在DDR2内存中额外偏移。

图3 RAW模式下CCDC控制器后端处理

2 视频前端抓捕驱动程序的设计

在Linux中,V4L2为Linux下的视频设备程序开发提供了一套接口规范。本系统采用V4L2视频驱动管理虹膜图像传感器MT9T001,视频驱动的整体构架主要由应用程序、V4L2核心层、MT9T001驱动等组成,下面对相关构架单元着重分析。

2.1 V4L2驱动核心层数据结构

在Linux系统中视频驱动子系统是围绕struct video_device结构体建立的,用于描述当前视频设备所支持的视频功能和传输类型。在该结构体中,主要包含三组不同的函数指针集,用于移植虹膜摄像头的V4L2架构驱动程序。

第一组函数指针针对V4L2自身架构所设计,实现对不同的视频设备进行配置操作、输入帧率控制以及其他操作,是API函数的核心。

第二组由release()函数作为一个函数指针,进行整个结构体销毁工作。由于video_device是针对多个应用层设备文件,如果在每次应用程序调用完相应的视频设备后,就尽快对这一结构体进行销毁,那么非常容易出现内核不稳定的情况,所以release()单独作为一个函数指针。

第三组是常规的文件操作,根据实际设备进行输入或输出,实现相应函数内部的具体功能。通过对该函数调用可对底层视频设备进行初始化控制、配置底层设备视频图像数据格式和视频缓冲区的大小设置等。

2.2 V4L2驱动注册

V4L2视频驱动位于应用程序和硬件设备之间的中间层,它是一个两层驱动系统。在实现内核空间拷贝数据时,使用mmap函数转换成应用程序中的绝对地址,切换数据指针将内核空间的视频驱动图像数据与用户空间共享。

2.3 多级缓存内存管理

由于摄像头采集图像传送数据的速度和DSP应用程序处理速度不同,为避免视频数据丢帧,上层和底层并行处理互不干扰,采用多级缓存方式实现FIFO视频内存管理。如图4所示,在视频缓冲区将视频图像分成多个同样大小的缓存块,当视频采集开始时,将采集数据存到DM6446输入视频端口的FIFO,先填写第一个缓存块bufferA,当bufferA填满后,DSP 发出信号产生EDMA 中断,启动EDMA 通道,搬运FIFO中的bufferA图像数据,将其存入SDRAM中,等待图像处理。在每场图像采集完成后触发VPORT中断,中断服务程序更新图像存储区,EDMA 通道自动把指针指向第二个缓存块bufferB,继续采集另一场图像,已完成的视频缓存块bufferA就作为了空闲模块,归还给输入队列以便再次使用,以此实现多个同样大小的缓存块交替接收数据。解决了摄像头采集和DSP应用并行处理且互不干扰。

图4 采用多级缓存技术采集图像示意图

3 视频前端抓捕测试

在DM6446 VPFE视频驱动设计完成后,还需编写视频采集程序,通过调用V4L2控制命令字实现对视频采集设备的控制,以验证驱动开发的正确性。

将V-MT9V0011 连接到DM6446的视频处理前端,通过 UART0调试串口启动嵌入式操作系统,将视频采集程序通过 tftp 下载至 DM6446 核心板中。在 PC 机上利用 VLC 播放器打开 RTSP 媒体流观察输出图像,进行初级测试。视频捕捉结果如图5所示,输出图像显示统计帧率正常,最高到达60FPS的传输速度;图像清晰、流畅。验证了本 DM6446 VPFE驱动的正确性。

图5 采集到的虹膜图像

4 结束语

综上所述,本文以DM6446为开发平台,实现了基于 V4L2 的视频处理前端驱动的设计,并通过进行视频采集程序测试,证明其可以进行长期、稳定、实时的,对虹膜图像数据进行采集,并且并没有图像数据位置不正确或者是丢帧的情况出现,到达了预期设计目的。

[1]朱瑞慧.基于局部特征分析的虹膜识别[D].天津:中国民航大学,2006

[2]张彦龙.基于DM6446的立体图像显示系统和视频捕捉系统的设计与实现[D].天津 天津大学,2007

[3]杜春雷.ARM体系结构与编程[M].1版.北京:清华大学出版社,2003

[4]XU FEN,ZENG JIAN-JUN,ZHANG YUN-LONG.Design of a DSP-based CMOS imaging system for embedded computer vision [C]//Proceedings of 2008 IEEE Conference on Cybernetics and Intelligent Systems.Washington, DC: IEEE Computer Society, 2008:430-433.

猜你喜欢
虹膜寄存器应用程序
双眼虹膜劈裂症一例
STM32和51单片机寄存器映射原理异同分析
基于轮廓匹配和多项式拟合的虹膜分割算法
Lite寄存器模型的设计与实现
删除Win10中自带的应用程序
一种基于虹膜识别技术的车辆启动系统
谷歌禁止加密货币应用程序
“刷眼”如何开启孩子回家之门
高速数模转换器AD9779/AD9788的应用
一种可重构线性反馈移位寄存器设计