ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:106.40KB ,
资源ID:30254332      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30254332.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSP课程设计报告人脸识别资料.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSP课程设计报告人脸识别资料.docx

1、DSP课程设计报告人脸识别资料DSP图像处理与应用课程设计基于DM642的人脸检测与识别作者 学号 学院 电子信息工程学院 班级 电子1102 指导教师 时间 2013年12月 1介绍随着社会的不断进步以及各方面对于快速有效的自动身份验证的迫切要求,生物特征识别技术在近几十年中得到了飞速的发展。作为人的一种内在属性,并且具有很强的自身稳定性及个体差异性,生物特征成为了自动身份验证的最理想依据。当前的生物特征识别技术主要包括有:指纹识别,视网膜识别,虹膜识别,步态识别,静脉识别,人脸识别等。与其他识别方法相比,人脸识别由于具有直接,友好,方便的特点,使用者无任何心理障碍,易于为用户所接受,从而得

2、到了广泛的研究与应用。此次研究报告,我们以所学DSP图像处理技术相关知识为背景,基于DM642芯片来实现对人脸的识别。实验的预期效果为,当A同学出现在摄像头前,屏幕上会显示与其对应的名字,当B同学出现在摄像头前,会显示与其对应的名字,而没有人在摄像头前会显示无字,从而实现人脸检测与识别。报告内容安排大致如下,首先我们进行所用知识进行简要的回顾,其次是提出编程思路,紧接着我们对关键的设计程序进行详细分析与解释,之后是实验结果展示,最后是实验总结。2知识回顾2.1 奇偶场PAL制式的模拟图像转换为数字图像后包含576行*720列个像素,一帧图像分解为奇数场和偶数场两幅图像 ,分别包含288行*72

3、0列个像素。一个场由帧中的奇数行组成,叫做奇场,另一个场由帧中的偶数行组成,叫做偶场。图2-1-1 奇偶场示意图2.2 YUV色彩空间在彩色视频信号传输中采用的YUV合成的方法。Y 代表亮度信息,U(Cb)代表蓝色色差(就是蓝色信号与亮度信号之间的差值),V(Cr)代表红色色差。YCbCr是YUV的一个特例。Y是亮度值信号,Cb、Cr是色差信号。图像处理与传输中,只传输和存储Y和Cb、Cr值,而且Cb和Cr的分辨率可以比Y低。这就减少了表示图像的数据量。在本图像处理实验中采用YCbCr211的格式。各色彩分量之间相关性小,适于进行处理操作。色差信号常做2:1 抽样处理以节省带宽。对于每2个像素

4、,Y 用2 个字节, Cb(蓝色色差)取相同的值,用一个字节,Cr (红色色差)取相同的值,用一个字节,平均每个像素2个字节。2.3 图像缓存区图像缓冲区包括图像采集缓冲区、图像临时缓冲区和图像显示缓冲区。每个缓冲区包括图像亮度缓冲区Y、图像色度缓冲区Cb、图像色度缓冲区Cr。其中色度缓冲区的大小是亮度缓冲区的一半,每个像素对应的Y(亮度)、Cb、Cr(色度)值在缓冲区中位置序号如下。像素亮度值在Y(亮度)缓冲区中的序号=缓冲区的起始地址+所在行号*每行的像素数+像素的列位置。像素色度值在Cb、Cr(色度)缓冲区中的序号=缓冲区的起始地址+所在行号*每行的像素数/2+像素的列位置/2。3编程思

5、路图3-1 编程思路首先我们对屏幕中的图像进行二值化,把符合人肤色的像素点设置为白色,把背景设置为黑色。然后我们进行人脸范围的捕捉,找出白色区域的左边界begX,右边界endX,上边界begY,下边界endY,然后根据找出的边界画出边框。最后我们利用某种算法实现人脸的识别,我们主要有两个编程思路,第一种是求出矩形框中白色区域所占的比例来实现人脸的识别,另一种是通过分析脸的上边界与下边界之间的长度来实现人脸识别。识别完成后,根据识别的结果在屏幕上显示识别出来的人的名字,从而实现人脸识别。4设计方法本部分,我们对此次设计的关键程序进行分析与解释,主程序详见附录。4.1 图像二值化程序如下,根据肤色

6、的色差范围把图形二值化。根据经验,我们把当像素点的蓝色色差Cb大于77小于177并且红色色差Cr大于133小于156时,将此像素点视为肤色的颜色。因此我们把亮度设置为白色(0xff),不在肤色色差范围内的我们把亮度设置为黑色。由于色差Cb和Cr每两个像素点只占用一个字节,而亮度Y每一个像素占用一个字节,因此在本程序中我们只设置了一个i值,对于奇场来说,总像素点有720*288个,在此i值的大小为numLines*numPixels/4,即720*144,因此它可以表示奇场中的色差坐标。同理偶场。我们通过判断把tmpYbuffer+i*2和tmpYbuffer+i*2+1的值设置为白色或者黑色。

7、另外,通过这种定义方法,我们可以在同一个对i的循环中实现对奇场和偶场的处理,并不需要在对列像素再做循环。for(i=0;i77) & (*(Uint8 *)(tmpCbbuffer+i)133)&(*(Uint8 *)(tmpCrbuffer+i)156) (*(Uint8 *)(tmpYbuffer+i*2)=0xff; (*(Uint8 *)(tmpYbuffer+i*2+1)=0xff; (*(Uint8 *)(tmpYbuffer+i*2+numLines*numPixels/2)=0xff; (*(Uint8 *)(tmpYbuffer+i*2+1+numLines*numPixel

8、s/2)=0xff; else (*(Uint8 *)(tmpYbuffer+i*2)=0x00; (*(Uint8 *)(tmpYbuffer+i*2+1)=0x00; (*(Uint8 *)(tmpYbuffer+i*2+numLines*numPixels/2)=0x00; (*(Uint8 *)(tmpYbuffer+i*2+1+numLines*numPixels/2)=0x00; 4.2 人脸范围的捕捉如下程序是实现寻找人脸所在范围的左边界、右边界、上边界和下边界。我们先对行进行循环,在对同一行的列进行循环。根据像素亮度条件找到肤色区域的最右边的点与肤色区域宽度,让最右边点对应的j

9、减去宽度则得到最左边的点。同上下边界。理寻找因此将找到最右边的点将找到的左边界的值放到begX里面,右边界的值放到endX里面,上边界的值放到begY里面,下边界的值放到endY里面。for (i=15 ;inumLines/2-18;i+) for (j=10;jpixelnum) pixelnum=curnum; begX=j-pixelnum; endX=j; c=begX; d=endX; curnum=0; pixelnum=0; curnum=0; /计算Y起点与终点 for (j=10;jnumPixels-10;j+) for (i=15;ipixelnum) pixelnum

10、=curnum; begY=i-pixelnum; endY=i; e=begY; f=endY; curnum=0; 4.3 人脸识别算法方案一:如下程序是我们实现人脸识别的第一种方案,即求出所画边框中肤色像素所占的比例,通过该比例实现不同人之间的识别。如上,a为人脸在整个矩形框中所占的像素点,b为矩形框的所有像素点,g=(double)a/(double)b即为人脸的范围所占的比例,通过判断该比例实现人脸识别。如上h为1时,显示“王”字,h为2时,显示“黄”字,h为3时,显示“无”字。此方法是个粗略的识别方法,因此实际操作中有一定识别误差。/计算框内白像素百分比 b=(d-c)*(f-e)

11、; for(j=e;jf;j+) for(i=c;id;i+) if (*(Uint8 *)(tmpYbuffer+i*numPixels+j)=0xff) a+; g=(double)a/(double)b; if(g!=0) if(g0.25) h=2; else h=1; else h=3;方案二:如下程序是我们实现人脸识别的第二种方案,即找出人脸的上边界与下边界之间的距离,即人脸的数值高度,从而判断出不同的人,同样,h为1时,显示“王”字,h为2时,显示“黄”字,h为3时,显示“无”字。这种方法要求人脸固定于屏幕的某个特定位置。g=f-e;if(g210)h=1;else h=2;4.

12、4 名字显示如下程序使我们的名字显示部分,如下通过人脸识别过程中识别的h值显示不同的名字,当h为1时,显示“王”字,h为2时,显示“黄”字,h为3时,显示“无”字。本程序,我们定义的字体的大小为32*32,数组中每一个八位二进制数值对应八个像素点,每次判断八位数值中的一位,当其为1时,在屏幕上显示黑色,为0时显示白色。void NAME(int init_lie, int init_hang,int wenzi) unsigned int i=0,j=0, num=0,n=0; /static unsigned int num; unsigned char test_word=0x80,tre

13、_coast=0x00; /while(F16x16num!=0) for(i=init_hang;iinit_hang+32;i+) for(j=init_lie;jinit_lie+32;j+) n=j-init_lie; if(j=init_lie|(n%8=0) if(wenzi=1) tre_coast=wangnum; else if(wenzi=3) tre_coast=WUnum; else if(wenzi=2) tre_coast=huangnum; num+; if(test_word&tre_coast) *(Uint8 *)(tmpYbuffer + i*numPix

14、els + j) = 0x00; else *(Uint8 *)(tmpYbuffer + i*numPixels + j) = 0xff; tre_coast=tre_coast1; num=0; for(i=numLines/2+init_hang;inumLines/2+init_hang+32;i+) for(j=init_lie;jinit_lie+32;j+) n=j-init_lie; if(j=init_lie|(n%8=0) if(wenzi=1)tre_coast=wangnum; else if(wenzi=2)tre_coast=huangnum; else if(we

15、nzi=3)tre_coast=WUnum; num+; tre_coast=tre_coast1; if(test_word&tre_coast) *(Uint8 *)(tmpYbuffer + i*numPixels + j) = 0x00; else *(Uint8 *)(tmpYbuffer + i*numPixels + j) = 0xff; 5实验结果6实验感想为期半个学期的DSP课程的学习就此告一段落,通过此次结课设计,我们利用所学知识,最终克服困难实现了。总体来讲,我们收获颇丰。首先,通过此次结课设计,我们又进一步掌握利用DSP进行图像处理的方法,了解利用仿真软件以及实验箱的对

16、DSP图像的相关设计过程,特别是实验中所实现的图像二值化、人脸捕捉,画边框,显示名字等功能,无不体现着课堂中所学关于图像采集、阈值分割以及图像处理的相关知识,可以说这次结课设计就是对这半个学期所学内容的很好总结。其次,此次设计我们并非一帆风顺,我们选择题目以后,收集了多方面的资料进行查阅,并及时交流讨论,通过这个过程,我们对所学知识有了更加多面的理解。比如关于奇偶场图像处理这一块,上课的时候虽然老师给过例程,但是通过我们查找的很多资料进行参考后有了更加简单的算法,可以说这给予了我们的学习的动力。总之,结合着我们的所学理论知识,我们对于本次设计所用的相关知识有了更加深入的理解。当然,通过这次研讨

17、,我们也存在着遗憾,那就是关于程序在BIOS上的实现还没有完成。我们曾经做过尝试,因为考虑到BIOS是个更加底层的系统,它更面向硬件,因此处理速度更快。但是,我们却遇到了诸如不能合适地建立临时缓存区这个问题,我们也请教过老师,但是由于所学知识的局限性以及设计截止日期的紧迫性,我们最终还是选择不在BIOS上实现了。通过此课程的学习我们已经对DSP图像处理萌生了兴趣,在今后的学习中我们一定会在多做尝试。最后,衷心感谢高海林老师长达半个学期的实验讲授以及对本设计的指导!7附录/*/* Copyright 2004 by SEED Incorporated. */* All rights reserv

18、ed. Property of SEED Incorporated. */* Restricted rights to use, duplicate or disclose this code are */* granted through contract. */* */*/#include #include #include #include #include #include #include #include iic.h#include vportcap.h#include vportdis.h#include sa7121h.h#include TVP51xx.h#include s

19、eeddm642.h const unsigned char WU=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0xE0,0x0F,0xFF,0xFF,0xF0,0x04,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x10,0x00,0x03,0x00,0x38,0x3F,0

20、xFF,0xFF,0xFC,0x30,0x03,0x60,0x00,0x00,0x03,0x60,0x00,0x00,0x07,0x60,0x00,0x00,0x06,0x60,0x00,0x00,0x06,0x60,0x00,0x00,0x0E,0x60,0x00,0x00,0x0C,0x60,0x00,0x00,0x0C,0x60,0x00,0x00,0x18,0x60,0x08,0x00,0x38,0x60,0x08,0x00,0x30,0x60,0x08,0x00,0x60,0x60,0x08,0x00,0xC0,0x60,0x0C,0x03,0x80,0x60,0x1E,0x07,0

21、x00,0x7F,0xFC,0x1C,0x00,0x3F,0xF8,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ;/*-黄-*/ const unsigned char huang=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x1C,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x70,0x0F,0xFF,0xFF,0xF0,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0

22、x18,0x18,0x7F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFE,0x00,0x01,0x80,0x00,0x01,0x01,0x80,0x80,0x01,0xFF,0xFF,0xC0,0x01,0x81,0x81,0xC0,0x01,0x81,0x81,0x80,0x01,0x81,0x81,0x80,0x01,0x81,0x81,0x80,0x01,0xFF,0xFF,0x80,0x01,0x81,0x81,0x80,0x01,0x81,0x81,0x80,0x01,0x81,0x81,0x80,0x01,0xFF,0xFF,0x80,0x01,0x98,0

23、x01,0x80,0x00,0x3C,0x1C,0x00,0x00,0x78,0x07,0x80,0x00,0xE0,0x03,0xE0,0x03,0x80,0x00,0xF0,0x0E,0x00,0x00,0x70,0x18,0x00,0x00,0x30,0x00,0x00,0x00,0x00, ;/*-王-*/const unsigned char wang=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x

24、70,0x0F,0xFF,0xFF,0xF8,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0xC0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xE0,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x

25、00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x18,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;EMIFA_Config Seeddm642ConfigA =0x00052078,/*gblctl EMIFA(B)global control re

26、gister value */*将CLK6、4、1使能;将MRMODE置1;使能EK2EN,EK2RATE*/0xffffffd3,/*cectl0 CE0 space control register value*/*将CE0空间设为SDRAM*/0x73a28e01,/*cectl1 CE1 space control register value*/*Read hold: 1 clock;MTYPE : 0000,选择8位的异步接口Read strobe :001110;14个clock宽度TA:2 clock; Read setup 2 clock;Write hold :2 cloc

27、k; Write strobe: 14 clockWrite setup :7 clock-14c/1c-/ */0x22a28a22, /*cectl2 CE2 space control register value*/0x22a28a42, /*cectl3 CE3 space control register value*/0x57115000, /*sdctl SDRAM control register value*/0x0000081b, /*sdtim SDRAM timing register value*/0x001faf4d, /*sdext SDRAM extension register value*/0x00000002, /*cesec0 CE0 space secondary control register value*/0x00000002, /*cesec1 CE1 space secondary control register value*/0x00000002, /*cesec2 CE2 space secondary control register value*/0x00000073

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1