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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

dsp实验报告 2.docx

1、dsp实验报告 2DSP图像处理实验报告 组员: 张海星 通信1107班 陈淑菁 通信1103班 手势识别1.题目分析 不同的手势出现在屏幕上会显示手势的名字,找出不同手势在屏幕上显示的特点,用这个特点来区分出手势的名称,同时将名称显示在屏幕的左下角。2.步骤: (1)找特征:用运肤色检测的程序调试出来的显示屏幕上图像的特征我们发现肤色的面积大小会随着不同手势透出的皮肤面积的大小而变化,因此我们利用面积的大小来判断不同的手势,并将其名称显示在屏幕的左下角。 (2)采集图像:我们组用石头和剪刀两个手势。首先用loop2的显示采集两个手势的图像。在save data 中保存图像的数据,从程序中找到

2、图像的首地址,保存数据的首地址为:OX80000000,图像的大小设置为720*288/4。然后利用matlab程序读图像并计算框的面积大小的值。读图程序: % dat文件是由CCS保存的数据文件% dat文件中每个像素用8bit表示,% 0x245A3654表示第一个像素的值为0x54;第二个像素的值为0x36% 第三个像素的值为0x5A;第四个像素的值为0x24% 本例以图像大小为640*240,请根据你的实际做修改% 在使用本程序前请手动删除dat文件的第一行clc;clear all;close all;imagedata=zeros(720,288);% - 低温 -I = impo

3、rtdata(C:Documents and SettingsAdministrator桌面s1.dat); M,N = size(I);for i=1:720*288/4 a=cell2mat(I(i);imagedata(i*4) = hex2dec(a(3:4);imagedata(i*4-1) = hex2dec(a(5:6);imagedata(i*4-2) = hex2dec(a(7:8);imagedata(i*4-3) = hex2dec(a(9:10);endimagedata = uint8(imagedata);imshow(imagedata,0,720)用matlab

4、计算面积值的程序:将图像中手势出现的范围截框,在算出像素点的值就是面积大小。 clc;clear;close all;I=imread(C:Documents and SettingsAdministrator桌面q1.png);figure,imshow(I)I0=imcrop;figure,imshow(I0)l,w = size(I0);s=l*w;计算的结果值:我们用matlab计算出来的值分别为:石头:126420布:478296进行改程序显示不同的名称是用大约的中间值300000进行判断。 (3)程序的修改:在肤色检测的程序中加入一个判断语句,当框的面积大于300000时显示“布”

5、,否则显示“石”。 读字过程: 我们用取模软件取出字的像素值,然后编程将像素值读入屏幕上,程序如下:判断模块: /计算框内总像素点 b=(d-c)*(f-e); if(b5000) h=2; c=begX; d=endX;e=begY;f=endY;显示模块: const unsigned char shi= 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3F,0xFF,0xFF,0xFC,0x00,0x07,0x00,0x00,0x00

6、,0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x70,0x00,0xC0,0x00,0xFF,0xFF,0xC0,0x01,0xB0,0x00,0xC0,0x03,0x30,0x00,0xC0,0x06,0x30,0x00,0xC0,0x0C,0x30,0x00,0xC0,0x18,0x30,0x00,0xC0,0x30

7、,0x30,0x00,0xC0,0x40,0x30,0x00,0xC0,0x00,0x30,0x00,0xC0,0x00,0x30,0x00,0xC0,0x00,0x3F,0xFF,0xC0,0x00,0x30,0x00,0xC0,0x00,0x30,0x00,0xC0,0x00,0x30,0x00,0xC0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00;const unsigned char bu=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x80,0x00,0

8、x00,0x03,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0C,0x00,0x18,0x1F,0xFF,0xFF,0xFC,0x00,0x18,0x00,0x00,0x00,0x18,0x40,0x00,0x00,0x30,0x70,0x00,0x00,0x30,0x60,0x00,0x00,0x60,0x60,0x00,0x00,0x60,0x60,0x60,0x00,0xFF,0xFF,0xE0,0x01,0xA0,0x60,0x60,0x03,0x20,0x60,0x60,0x06,0x20,0x60,0x60,0

9、x0C,0x20,0x60,0x60,0x08,0x20,0x60,0x60,0x30,0x20,0x60,0x60,0x40,0x20,0x60,0x60,0x00,0x20,0x60,0x60,0x00,0x20,0x60,0x60,0x00,0x20,0x66,0x60,0x00,0x20,0x63,0xE0,0x00,0x20,0x60,0xC0,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00f(test_word&tre_coast) *(Uint8 *)(tmpYbuff

10、er + i*numPixels + j) = 0x00; else *(Uint8 *)(tmpYbuffer + i*numPixels + j) = 0xff; tre_coast=tre_coast1; num=0;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=shinum; else if(wenzi=2)tre_coast=bu

11、num; num+; f(test_word&tre_coast) *(Uint8 *)(tmpYbuffer + i*numPixels + j) = 0x00; else *(Uint8 *)(tmpYbuffer + i*numPixels + j) = 0xff; tre_coast=tre_coast1; num=0;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(w

12、enzi=1)tre_coast=shinum; else if(wenzi=2)tre_coast=bunum; num+; tre_coast=tre_coast1; if(test_word&tre_coast) *(Uint8 *)(tmpYbuffer + i*numPixels + j) = 0x00; else *(Uint8 *)(tmpYbuffer + i*numPixels + j) = 0xff; 3.出现的问题 我们发现判断值用300000时,只出现“布”,当判断值用100时,只出现 “石”。我们不断的调试值的大小,最终发现用50000是最合适的值,结果也很正确。只是

13、屏幕出现的结果显示不太稳定。而且图像上出现的框变化不是很快,使得结果的出现很慢很不稳定。图像变化很慢,因为程序要处理大量的像素值,因此反应很慢,处理不连续的点。4.其他的设计想法 (1)可以不利用肤色检测所圈出的框来判断,直接数出肤色的像素点总数进行判断。 (2)可以用模板匹配法来判断。 (3)可以用边缘检测出白色点的周长来比较判断,因为不同手势的边缘周长不一样。5.总程序/*/* Copyright 2004 by SEED Incorporated. */* All rights reserved. Property of SEED Incorporated. */* Restricted

14、 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 seeddm642.h const unsigned char shi= 0x00,0x00,0x0

15、0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3F,0xFF,0xFF,0xFC,0x00,0x07,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x70,0x0

16、0,0xC0,0x00,0xFF,0xFF,0xC0,0x01,0xB0,0x00,0xC0,0x03,0x30,0x00,0xC0,0x06,0x30,0x00,0xC0,0x0C,0x30,0x00,0xC0,0x18,0x30,0x00,0xC0,0x30,0x30,0x00,0xC0,0x40,0x30,0x00,0xC0,0x00,0x30,0x00,0xC0,0x00,0x30,0x00,0xC0,0x00,0x3F,0xFF,0xC0,0x00,0x30,0x00,0xC0,0x00,0x30,0x00,0xC0,0x00,0x30,0x00,0xC0,0x00,0x20,0x0

17、0,0x00,0x00,0x00,0x00,0x00;const unsigned char bu=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0C,0x00,0x18,0x1F,0xFF,0xFF,0xFC,0x00,0x18,0x00,0x00,0x00,0x18,0x40,0x00,0x00,0x30,0x70,0x00,0x00,0x30,

18、0x60,0x00,0x00,0x60,0x60,0x00,0x00,0x60,0x60,0x60,0x00,0xFF,0xFF,0xE0,0x01,0xA0,0x60,0x60,0x03,0x20,0x60,0x60,0x06,0x20,0x60,0x60,0x0C,0x20,0x60,0x60,0x08,0x20,0x60,0x60,0x30,0x20,0x60,0x60,0x40,0x20,0x60,0x60,0x00,0x20,0x60,0x60,0x00,0x20,0x60,0x60,0x00,0x20,0x66,0x60,0x00,0x20,0x63,0xE0,0x00,0x20,

19、0x60,0xC0,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00;EMIFA_Config Seeddm642ConfigA = 0x00052078,/*gblctl EMIFA(B)global control register value */ /*将CLK6、4、1使能;将MRMODE置1;使能EK2EN,EK2RATE*/ 0xffffffd3,/*cectl0 CE0 space control register value*/ /*将CE0空间设为SDRAM*/ 0x

20、73a28e01,/*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 clock; Write strobe: 14 clock Write setup :7 clock - - 14c /1c -/ */ 0x22a28a22, /*cectl2 CE2 space control register value*/

21、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

22、 space secondary control register value*/ 0x00000002, /*cesec2 CE2 space secondary control register value*/ 0x00000073 /*cesec3 CE3 space secondary control register value*/ ;I2C_Config SEEDDM642IIC_Config = 0, /* master mode, i2coar;采用主模式 */ 0, /* no interrupt, i2cimr;只写,不读,采用无中断方式*/ (20-5), /* scl

23、low time, i2cclkl; */ (20-5), /* scl high time,i2cclkh; */ 1, /* configure later, i2ccnt;*/ 0, /* configure later, i2csar;*/ 0x4ea0, /* master tx mode, */ /* i2c runs free, */ /* 8-bit data + NACK */ /* no repeat mode */ (75-1), /* 4MHz clock, i2cpsc */;CHIP_Config SEEDDM642percfg = CHIP_VP2+ CHIP_V

24、P1+ CHIP_VP0+ CHIP_I2C;I2C_Handle hSeeddm642i2c;int portNumber;extern SA7121H_ConfParams sa7121hPAL45;extern SA7121H_ConfParams sa7121hNTSC45;Uint8 vFromat = 0;Uint8 misc_ctrl = 0x6D;Uint8 output_format = 0x47;/ 地址为0 for cvbs port1,选择复合信号做为输入Uint8 input_sel = 0x00;/*地址为0xf,将Pin27设置成为CAPEN功能*/ Uint8

25、pin_cfg = 0x02;/*地址为1B*/Uint8 chro_ctrl_2 = 0x14;/*图像句柄的声明*/VP_Handle vpHchannel0;VP_Handle vpHchannel1;VP_Handle vpHchannel2;/*确定图像的参数*/int numPixels = 720;/每行720个像素int numLines = 576;/每帧576行(PAL)double a=0;double b=0;int c=0;int d=0;int e=0;int f=0;int h=0;double g=0;void NAME(int init_lie, int in

26、it_hang,int wenzi);/*采集与显示缓冲区的首址*/Uint32 capYbuffer = 0x80000000;Uint32 capCbbuffer = 0x800675c0;Uint32 capCrbuffer = 0x8009b0a0;/Uint32 capCbbuffer = 0x6190; /Uint32 capCrbuffer = 0x6190;Uint32 disYbuffer = 0x80100000;Uint32 disCbbuffer = 0x801675c0; Uint32 disCrbuffer = 0x8019b0a0;Uint32 tmpYbuffe

27、r = 0x80200000;Uint32 tmpCbbuffer = 0x802675c0; Uint32 tmpCrbuffer = 0x8029b0a0;Uint32 dstYbuffer = 0x80300000;/*图像格式标志*/Uint8 NTSCorPAL = 0;extern far void vectors();extern volatile Uint32 capNewFrame;extern volatile Uint32 disNewFrame;/*此程序可将四个采集口的数据经过Video Port0送出*/void main() Uint8 addrI2C; int

28、i,j,n;/ int maxrow; int pixelnum,curnum; int begX,endX,begY,endY; /*-*/* perform all initializations */*-*/ /*Initialise CSL,初始化CSL库*/ CSL_init(); CHIP_config(&SEEDDM642percfg);/*-*/ /*EMIFA的初始化,将CE0设为SDRAM空间,CE1设为异步空间 注,DM642支持的是EMIFA,而非EMIF*/ EMIFA_config(&Seeddm642ConfigA);/*-*/ /*中断向量表的初始化*/ /Point to the IRQ vector table IRQ_setV

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

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