手势电视机遥控器Word下载.docx
《手势电视机遥控器Word下载.docx》由会员分享,可在线阅读,更多相关《手势电视机遥控器Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
2系统方案
手势电视机遥控器是摄像头采集图像能力和DSP处理视频流能力的测试,最终确定的系统结构如图1所示。
图1手势电视机遥控器的系统结构
由图1可知,本系统采用了双DSP共同工作的双核处理平台,该平台主要由六个模块组成:
(1)摄像头模块:
由摄像头OV7620及驱动电路组成,负责手势图像采集;
(2)DSP1:
TMS320F2812,负责采图像、对图像预处理及与上位机的网络通信;
(3)上位机软件:
显示实时采集的图像,图像处理结果和调试参数等。
上位机与DSP1之间通过以太网进行协议通信;
(4)双端口RAM模块:
为了实现两个DSP之间的高效数据通信,本系统采用了双端口RAM作为双方的外拓数据存储,根据双端口RAM的读写原则,达到双核有效通信;
(5)DSP2:
负责手势图像最终的识别和信息提取工作。
它从双端口RAM获取图像数据,从图像中提取有用的特征,并进行判断,将判断结果转换成相应的红外模块控制信号;
(6)红外遥控模块:
负责学习电视机配套遥控器的红外遥控指令,将其放入指定的存储空间中。
在DSP2给出发射指令时,查询存储空间,获取对应的红外指令,并发射。
本系统中运用的算法主要包括:
噪声消除算法,手势定位算法和方向判断算法。
其中,噪声消除算法是后续算法的前提和保证。
手势定位算法实现人手在摄像头拍摄区域的准确定位,为获取准确的手势特征提供可能。
方向判断算法通过手势特征来判断手部运动的方向,为红外发射指令提供参数。
系统实现的原理如图2所示。
图2手势遥控系统实现原理框图
3系统硬件设计
3.1双DSP处理平台及其内存空间的设计
图3硬件结构图
本设计使用DSP2812进行图像采集、图像处理并且实现红外遥控和网络通信等功能。
考虑到对处理器的多任务能力和速度有较高要求,为了让图像采集模块、网络通信模块、图像处理模块和红外遥控模块协同工作,实现DSP的快速响应,本系统为此定制了一个拥有双DSP2812的最小系统。
通过双核分工处理,共同完成手势遥控的各种功能。
该双DSP的系统硬件模块总结构图如图3所示。
DSP1主要负责图像采集,与上位机的网络通信和用户按键的输入。
按钮用于红外万能遥控功能设定。
DSP2主要负责手势识别的相关图像处理,红外遥控和用户界面。
为了实现双DSP之间的通信,该系统使用了Cypress公司的一款64k*16位的双端口RAM芯片CY7C028搭建了一个双DSP之间的数据通道,DSP1把采集到的图像通过时间控制有规律写入到数据通道中,DSP2从数据通道中取出图像数据存放到自己的RAM中,然后进行相关的图像处理,并把处理结果通过红外模块发射出去。
在连接上位机的情况下,DSP1同时也把采集到的图像根据上位机的要求,使用UDP网络协议发送到上位机,从而可以在上位机观察图像采集与处理的情况。
为了保证足够的空间给DSP进行相关的图像处理工作,除了通信用的双端口RAM之外,本系统特别地分别为两个DSP同时扩展了512k*16位的RAM空间,以满足图像处理的空间要求。
该系统双DSP的储存器设计总框架如图4所示。
图4双DSP的储存器设计框架图
3.2CY7C028工作原理及数据通道的设计
图5CY7C028内部功能框图
CY7C028是Cypress公司研制的64k*16位低功耗CMOS型静态双端口RAM,最大访问时间为12ns,可以与大多数高速处理器配合使用,而无需插入等待状态。
它具有真正的双端口,两端口可以同时进行数据存储,另外通过主/从选择可以方便地扩大存储容量和数据宽度。
其内部功能结构如图5所示。
CY7C028是一种性能优越的快速通信器件,对于大多数CPU的高速数字系统设计都非常适用。
其主要特点有:
提供两套完全独立的数据总线、地址总线、读写控制总线,允许两个处理器对双端口存储器同时进行操作;
具有两套中断逻辑,用于实现两个处理器之间的握手信号;
具备完全独立的忙逻辑,可保护两个处理器对同一地址单元进行正确的读写操作。
当两个处理器对CY7C028存取时,存在以下4种情况:
(1)两个处理器不同时对同一地址单元存取数据;
(2)两都把双端口RAM作为自己存储器的一部分,当两个CPU需要数据传送时,假设左端CPUL向右端CPUR传送,首先CPUL将需要传送的数据存放到双端口RAM某段约定的地址单元中,然后向双端口RAM的最高奇地址单元0xFFFF即右端口的邮箱进行写操作,用以向CPUR发出一个中断,这样CPUR就进入相应的中断服务子程序,将约定地址单元的数据读出,然后对双端口RAM的右端口的邮箱进行写操作,用以清除该中断。
在本系统中,双端口RAM是用来建立双DSP通信之间的数据通道,传递数据。
在设计工作状态中,两个DSP不会同时读写该双口RAM,而数据的传递都是采用握手的通信模式,所以该系统使用的是双端口的中断判优方式。
当DSP1往双端口RAM中写完数据之后,通过中断握手的形式,通知DSP2读取数据。
DSP2要求数据时,同样的通知DSP1。
如此,就可以高速有规律地实现双DSP的交流。
双端口RAM与两个DSP之间的硬件连接如图6所示。
图6双端口RAM与双DSP的硬件连接图
双口RAM在两个DSP中都是使用CS6作为片选信号线。
对于两个DSP,双端口RAM的起止地址都为0x100000。
3.3基于OV7620图像传感器芯片的图像采集方案
OV7620是OmniVision公司生产的一款高集成度的高分辨率逐行,隔行扫描CMOS数字彩色/黑白视频摄像芯片。
其功能组成模块包括一个664*492的高分辨率图像数组,一个模拟信号处理器,双10bitA/D转换器,模拟视频合成;
数字数据格式化器和视频输出端口。
其数字视频端口支持60HzYCrCb4:
2:
2,16/8位等输出格式。
内建的S用DSP1,通过外部中断nmi和int2,分别同步摄像头的vsn和href信号,同时通过绑定DSP的8根IO线同步读取图像到DSP内存中,从而实现了系统的图像采集工作。
另外,由于,OV7620接27MHz的时钟,pclk的输出时钟为12M左右,对于这个速度,纵然150MHz的DSP,其中断的速度也是根不上的。
为了让DSP能够顺利地读取到图像,我们必须要把摄像头的输出时钟降频,OV7620可以通过使用sccb,对摄像头内部的寄存器进行设置,从而达到减速的目的。
OV7620模块与DSP1的硬件连接和OV7620的同步读取时序分别如图7和图8所示。
图7OV7620与DSP1的硬件连接图
图8OV7620的同步读取时序图
从时序图中可以看出,DSP先捕获摄像头的场中断信号,标志一帧的开始,准备好存储一帧图像的数组。
然后,DSP等待href行中断信号。
最后,在行中断中,判断pclk信号,当pclk处于高的时候,此时,DSP读取该像素的值。
至于,采集图像大小,可以通过读取程序修改。
在该系统的,只需要采集手势动作的图像信息。
最大有效数据的情况,采集尽量小的图像。
于是,该系统的软件设置,DSP每一帧图像采集视野中间隔行的100*100大小的图像,每次存放在100*100的数组中。
如此就可以实现系统图像采集功能。
3.4RTL8019AS芯片及DSP网络通信的实现
RTL8019AS以太网控制器是由Realtek公司出的一款高集成度的以太网控制芯片,具有8/16位总A接口是把RTL8019AS与网线的连接通道,完成控制器与网线的数据交换。
MAC(介质访问控制)逻辑完成以下功能:
当DSP向网上发送数据时,先将一帧数据通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令;
当RTL8019AS完成了上帧的发送后,再开始此帧的发送。
RTL819接收到的数据通过MAC比较、CRC校验后,由FIFO存到接收缓冲区;
收满一帧后,以中断或寄存器标志的方式通知主处理器。
FIFO逻辑对收发数据作16字节的缓冲,以减少对本地DMA请求的频率。
RTL8019AS内部有两块RAM区。
一块16K字节,地址为0x4000~0x7fff;
一块32字节,地址为0x0000~0x001f。
RAM按页存储,每256字节为一页。
一般将RAM的前12页(即0x4000~0x4bff)存储区作为发送缓冲区;
后52页(即0x4c00~0x7fff)存储区作为接收缓冲区。
第0页叫Prom页,只有32字节,地址为0x0000~0x001f,用于存储以太网物理地址。
要接收和发送数据包就必须通过DMA读写RTL8019AS内部的16KB
RAM。
它实际上是双端口的RAM,是指有两套总线连接到该RAM,一套总线RTL8019AS读或写该RAM,即本地DMA;
另一套总线是DSP读或写该RAM,即远程DMA。
图98019AS与DSP的硬件连接图
本系统使用DSP1连接8019AS芯片,通过连接对应的地址数据总线,设置片选信号,实现DSP的以太网通信。
8019AS与DSP的硬件连接如图9所示。
3.5红外遥控模块的电路设计
图10红外遥控模块原理框图
红外遥控模块包括三个部分:
接收部分、发送部分和数据处理部分.接收部分包括光电转换、解调、高速采样以及数据分析等模块,发送部分包括遥控发送、和电光转换模块,数据处理部分包括中央处理、以及存储模块。
红外遥控模块结构如图10所示。
红外遥控模块有两种工作状态:
学习状态和发射状态。
在学习状态下,接收子程序启动。
当光电转换模块接收到红外信号后,将其转换成电信号,电信号经过解码芯片后被送给高速采样模块.高速采样模块以200KHz的频率定时对电信号采样,生成二进制比特流,并送给数据分析模块,数据分析模块将比特流组成一个编码单元,存放到存储单元中,同时建立和预定义的红外发射信号的绑定关系.当处于发射状态下,发射子程序启动,遥控发送模块将红外发射信号指向的存储单元中读取编码单元,根据编码单元中的二进制比特流,调制到38KHz的载波信号上,串行输出(位和位之间的时间间隔等于采样时的时间间隔)给红外发射二极管,并通过电光转换模块,以光脉冲的形式发送出去,从而实现对电视机的控制。
3.6液晶屏12864的工作原理
作为手势红外遥控器,系统只需要完成摄像头输入,红外遥控输出,基本功能就可以实现。
但是,为了使得系统更加完整和人性化,并且因为系统涉及红外信号的设置,为了方便操作和系统调试,我们在本系统添加了一个型号为12864的液晶显示模块。
12864汉字图形),视域尺寸为72×
40(mil)。
在本系统中,使用12864与DSP2连接,工作电压为3.3v,背光电压为5v。
数据模式为并口模式。
硬件连接图如图11所示。
图1112864液晶屏与DSP2的硬件连接图
4系统软件设计
4.1手势图像处理算法原理
手势图像处理部分包括:
手势图像预处理,特征特征和动作识别。
在三部分中,如何将消除噪声,只保留有用的手部图像是DSP进行后续图像处理的前提,也是手势识别最困难的一步。
如何将手部特征提取出来,将直接影响到后续识别的效果。
4.1.1图像预处理
目前主流的将人手从复杂背景中分离出来的方法有以下几种:
(1)增加限制的方法:
如使用与肤色反差较大的黑色墙壁、衣服等来简化背景,或是要求使用者戴上特殊手套来强调前景,简化手和背景的划分,加深两者之间的对比。
但是这种人为的限制约束了使用者,不利于手与电视机的自由交流。
(2)差影法及其改进算法:
差影法就是将目标图像和背景图像相减,此种方法对消除背景色在颜色空间中的分布受到光照和人种的影响很大,并且背景中与肤色相近的物体也会对检测结果产生很大的影响。
基于以上分析,我们希望能找到一种对背景限制较小并且简单有效的图像分割方法,可以大致检测到手部范围。
又由于我们的主要目标是检测手的运动方向,而不是精确获取手部轮廓,为此,我们选择基于帧间差分的方法来实现手部图像分割。
帧间差分法就是对视频图像序列中的相邻的或一定时间间隔的两帧进行逐个像素比较,来获得前后2帧图像亮度差的绝对值。
利用间隔短暂时间的两帧图像比较,可以得到两张图像运动方向的边缘围成的一小段白色区域。
用这段白色区域代手部位置。
这样做的优点在于:
(1)帧间差分法能够消除大部分的背景,并且经过帧间差分法处理之后图像中的噪声类型单一,容易用特定的滤波算法消除。
(2)帧间差分法得到的手部边缘围成的小区域来代替手部位置的处理算法比计算八连通域的Freeman链算法直接获取手部轮廓的处理算法简单,有利于图像的实时处理。
得到一组图像之后,采用阈值分割的方法对获取的图像二值化,消除噪声,最后根据此图像序列含有的白色像素点的多少来确定图像序列中有无物体。
下面对图像预处理的算法进行描述:
(1)从视频图像序列中选取相邻n帧的两帧图像,其中前一帧图像为
,后一帧图像为
;
图12(a)前一帧图像
图12(b)后一帧图像
(2)为了减少计算量,将480*640的图像隔4行6列提取像素点,左右各忽略20列,上下各忽略40行,获得两帧100*100的图像
和
图13(a)缩小后
图13(b)缩小后
(3)计算后一帧与前一帧的差为
,得到目标的变化量;
图14目标变化量
(4)对帧间差分法得到的图像按选定的阈值进行二值化,得到目标图像序列的二值化图像序列
。
其中,
(1)
上式中,T为阈值。
对于给定视频序列的图像,假设像素点k处没有运动,其帧差
服从均值为0,,
是帧差的统计方差,通常认为它等于摄像头噪声方差的两倍。
根据概率统计学假设检验“
”法则,并依据“正确的阈值T应该能消除大部分噪声”的原则。
经试验测试得阈值T选择在35~45之间是合适的。
二值化后的图像如图15所示。
图15二值化后的图像
观察
的图像序列,我们可以看到,图像中的噪声很少,这是因为
(1)帧间差分法达到了加大目标信息的权重,同时抑制了静态背景的效果。
(2)摄像头采集范围背景比较单一,光线均匀。
目标图像中主要存在两大类的噪声。
一种是由于光线变化产生的噪声,这种噪声往往以孤立的黑色像素点的形式出现,称为椒盐噪声。
第二种噪声是一些面积较小的背景块。
为了能尽可能消除这两种噪声,可以求每个N*M小块的灰度平均值,根据灰度平均值可估计出白色区域的大小。
当灰度平均值小于某一阈值时,就认为其是噪声,把对应的N*M个点赋值为0。
算法实现如下:
(1)建立一个大小是
的1/25倍的矩阵来存20*20个5*5像素块的平均灰度值
(3)
满足如下关系:
(3)
通过这种处理方法,原图像中的小块噪声和椒盐噪声基本被消除,手部图像的边缘的某些像素点也会被当做噪声消除。
但是这不影响后续处理。
经过噪声消除后的图像如图16所示。
图16噪声消除后的图像
使用同样的处理算法,可以得到后一帧的图像各处理阶段的图像如图17(a)、(b)、(c)、(d)、(e)、(g)所示。
图17(a)前一帧图像图17(b)后一帧图像
图17(c)缩小后的前一帧图像图17(d)缩小后的后一帧图像
图17(e)帧间差分法之后的图像图17(f)二值化后的图像
图17(g)噪声消除后的图像
4.1.2特征提取及动作识别
获取只含手部运动区域的图像
后,寻找手部区域与背景区域的临界点,临界点之间的进行比较和数学运算,判断出手的摆放位置和区域中心位置
手部摆放。
图像处理和特征提取、判断方向部分的流程图如图18所示。
图18图像处理部分算法流程图
(1)
是相同的纵向摆放位置,手部在左右运动;
(2)根据列坐标的大小来判断手左右方向的移动如下:
(4)
判断上下运动的算法与判断左右类似。
是相同的横向摆放位置,手部在上下运动;
(2)根据横坐标的大小来判断上下方向的移动如下:
(5)
若出现无法判断的情况,则重新采集图像,进行处理和判断,直到能够判断方向。
4.2红外遥控算法原理
4.2.1电视机万能红外遥控原理
万能遥控器是将一般遥控系统的发射和接收部分做到了一起,这样就可以既对其他遥控信号学习又可以用其控制受控设备.从而实现一器多用。
红外信号自学习的一般方法是用CPU对各个遥控器的红外遥控信号进行采集并存储,但由于红外信号编码格式种类较多,一般只能做到学习几种特定的编码格式。
本系统中,选择最常用的一种编码方式uPD6121进行学习,解码和发射。
uPD6121编码的一般一个设备动作,有效的防止多个设备之间的串扰。
键码反码用来检验键码接收的正确性,防止误动作增强系统的可靠性。
“0”和“1”均由毫秒量级的高低脉冲的组合代表,编码图如图19所示。
图19红外遥控“1”、“0”编码图
4.2.2基于DSP2812的红外遥控的实现
一体化红外接收头接收红外信号并放大,解调出TTL电平信号送至DSP,由DSP对红外遥控编码的脉冲宽度进行测量,并原封不动将发射信号中高、低电平的时间宽度记忆至存储都是通过38—40KHz(周期大约为26.3
)的载波进行调制而成。
如果直接记录载波信号的脉冲宽度,耗费的资源太多,因此必须先对接收到的红外信号进行解调,再记录遥控编码信号的脉冲宽度。
学习子程序的流程图如图20所示。
图20学习子程序流程图
本设计中采用计数器对信号高低电平计时的方法来采集数据并保存。
遥控学习程序的流程图如下所示。
初始化定时器T0,学习指示灯亮,当系统识别到起始码的低电平时,系统启动对低电平进行采集,计数器开始计数,当起始码的低电平结束时,保存计数器此时的值,延时一段时间之后再次判断,如果采集到编码信号位数大于32位时,就认为编码采集已经结束,学习子程序结束。
发射模块是根据DSP发送的指令找到其在寄存器对应的存储空间,将编码调入内存,然后通过编码发送子程序将编码调制在38KHz的载波上发送出去。
用定时中断0产生38KHz的载波信号,用学习到的遥控编码信号的低电平去控制载波的输出,此时定时器0定时长度由相应的遥控信号低电平宽度计数值确定,即如果需发射的遥控信号为高电平时,关定时中断0;
如果为低电平,则开定时中断0。
从而实现遥控信号的脉宽调制发射。
本设计发射子程序流程图如图21所示,接收到DSP发送的指令后,先进行初始化,使系统处于待发射状态,然后根据指令传送的地址在存储区间找出对印的编码,然后将调出的编码去调制由定时器T0产的38KHz载波。
图21发射子程序流程图
4.3网卡驱动程序及基于UDP协议的上位机软件方案
4.3.1网卡驱动程序及UDP协议的原理及实现
使用RTL8019AS芯片实现DSP平台下的网络通信,在硬件层8019AS已经实现了以太网通信物理层的功能,在DSP下对8019AS驱动的编写,相对来说,只需要初始化网络芯片相应的寄存器,并启动就可以。
为了通过网络把DSP采集到的图像网络发送到上位机,还需要在DSP上实现相应的网络通信协议。
本系统采用了TCP/IP协议族中的UDP协议进行通信。
UDP协议的全称是用户数据包协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。
在OSI模型中,在第四层——传输层,处于IP协议的上一层。
UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后另外一个原因是,UDP相对简单,在DSP上这些嵌入式设备上实现能够比TCP面向连接的协议大大简化,从而降低代码的复杂度,实现电脑与嵌入式DSP之间的快速通信。
在DSP上,驱动8019AS芯片工作之后,就是通过代码实现UDP通信协议。
用于UDP是面向无连接的,所以,在8019AS相应的缓冲区域中,将需要发送的数据以UDP协议的格式封装好,发送到目标主机,