基于USB与DSP的指纹识别系统的设计实现
芯片,所以关于USBl.1协议规范的实现都必须靠DSP(TMS320VC5402)控制PDIUSBDl2芯片完成:在DSP(TMS320VC5402)的平台上编写程序,以完成USBl.1规范所要求的标准请求及用户根据产品需要自己定义的请求。
当设备连接到主机后,主机通过给PDIUSBDl2的端点0发送包含标准USB请求的控制传输(即Setup包),PDIUSBDl2产生一个中断给MCU(1NT0),MCU通过读PDIUSBDl2的中断寄存器和最后一次传输状态寄存器来对每一个请求做出响应,并通过PDIUSBDl2的端点0回送请求信息。主机从返回的信息中读取描述数据(包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符),分配和载入一个设备驱动程序并对设备进行配置。设备配置完成后,就可以使用配置中支持的端点传输数据。固件程序结构如图2所示。
3.2 设备驱动
在Win32系统中,把每一个设备都抽象为文件,此时的应用程序只需通过几个简单的文件操作APl函数,就可以实现与驱动程序中某个设备的通信。
PC机的驱动程序由Philips公司提供。用VC++6.0通过调用API函数,编写PC的应用程序。这样即可实现PC机对DSP(TMS320VC5402)指纹取像系统的控制以及图像的传输。主要使用的API函数是DeviceIOControl()、ReadFile()、WriteFile()。其中DeviceIOControl()用于PC(主机)向DSP图像采集系统发送请求;ReadFile()和WriteFile()分别用于从图像采集系统读出数据以及向图像采集系统写入数据。在设计过程中必须注意的问题是:由于USB接口是主从方式的接口,其一切传输过程都必须通过主机向外设发送请求后才可以开始,所以在使用ReadFile()、WriteFile()读写数据前,必须先通过DeviceIOControl()向图像采集系统发送请求。
3.3 指纹识别流程
系统上电时,TMS320VC5402通过12C总线操作对OV6620进行设置,然后进入指纹图像采集阶段。在该阶段,TMS320VC5402处于空闲状态,CPLD占用数据总线,
将数据直接存储到图像RAM中。采集完一帧指纹图像后由CPLD发握手信号,通知DSP进人数据处理阶段。在该阶段,TMS320VC5402先将图像RAM中的数据分块搬运到用户RAM中,进行图像预处理、特征点提取等运算,最后通过USB将结果输出给上位机。上位机调出指纹数据库,并将提取的结果与指纹特征库中的数据进行比对,从而与库中特征指纹进行指纹匹配识别。
DSP算法具体如下:(1)预滤波。方向滤波:设计了一个水平模板,然后将水平模板旋转到所需增强的方向进行滤波。(2)二值化。背景分离:采用标准差阈值跟踪法,图像的指纹部分由黑白相间的纹理组成,灰度变化很大,具有较大的标准差,而背景部分灰度分布比较平坦,标准差小。因此计算以各点为中心的一组像素的标准差,当标准差大于某一门限时,就可以确定该点为前景,否则为背景。(3)计算方向图:采用基于法线向量的方法,其中还涉及到方向场的平滑锐化。(4)特征点提取:采用了脊线跟踪法,其基本思想是直接对图像进行脊线跟踪,在跟踪过程中检测特征点。
整个软件流程如图3所示。
- Linux系统下USB摄像头驱动程序开发(04-25)
- 基于uClinux嵌入式系统的汽车黑匣子的设计(07-08)
- 基于WinCE操作系统的通用USB数控键盘设计(08-05)
- 基于WinCE的ARM视频监控系统(11-14)
- 基于LabVIEW的USB实时数据采集处理系统的实现(03-26)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)