微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于FPGA的手势语音转换器

基于FPGA的手势语音转换器

时间:06-04 来源:互联网 点击:

种情况下,轮廓和区域图像拥有同样的信息量。而轮廓数据少的多,而且具有很多一维的特性,可以很方便地转成一维数据来进行分析,这比直接分析区域的二维特征更加简单和直观。

在提取轮廓特征后进行几何矩的计算,则形态学特征转换成一维数据。

4.4.1 图形矩定义简单说明

将一幅图像看成一个二维密度分布f(x,y),函数值f(x,y)表示点(x,y)处图像像素的亮度值。

图像f(x,y)的(p+q)阶几何矩的定义为:

其中f(x,y)是图形函数

是图像亮度函数f(x,y)定义的像素空间区域

是变换核

称为p+q级几何矩。

4.4.2 使用几何矩进行图像的形状描述

图像不同阶的几何矩表示了图像亮度分布的不同空间特征。因而一个几何矩集可以成为一幅图像整体形状的描述子。下面说明其中一些几何矩的物理意义。

零阶几何矩代表一副图像的总高度。对于剪影图像,是目标区域的集合面积。

一阶几何矩,是图像关于x轴和y轴的亮度矩。其亮度的“矩心”

对于一副剪影图像,点给出了图像区域的几何中心。通常,能方便计算出将参照系原点移至图像亮度矩心的几何矩,称为中心矩。这一变化使矩的计算独立于图像的参照系。

中心矩:一幅图像相对于亮度矩心所计算出来的几何矩成为中心矩。它表示为:

这一矩相当于将坐标原点移至处,并计算得到了对于图像位移不变的中心矩

4.4.3 几何矩不变量

图像平面变换中具有不变形的几何矩函数被应用与目标鉴别和模式识别等领域中,图像的形状特征通过一系列的计算能得到一组几何矩特征不变量的集合,能够用来识别可以的不同大小和不同方向上的具有相同特征的某一类图像。

根据Hu氏理论,通过各种不同级别几何矩的数学组合,可以得到七个特征量。这七个特征量具有当图像f(x,y)移动、转动与比例大小改变时保持其数值不变的特性。因此称它们为不变矩特征量。这七个分量分别是:

其中:是归一化的中心矩:

不变矩特征量的平移、移动与比例大小改变而其数值不变的性质以及其它这里就不证明了。

正是由于几何矩具有这样的不随位置、方向、大小的变化而变化的良好性质,所以才将这一方法引用到手势识别(手势图像的位置、方向、大小极易发生变化)这一系统中来。

4.4.4 本系统的特征空间

考虑到实现的效果和计算复杂度,决定使用前四个不变矩特征量,并利用这四个矩的集合组合形成特征向量,由于这每一分量都具有旋转、平移、比例等不变性,故由其组合而成的矢量也具有相应的不变性。这样可以初步形成特征空间,取七个特征向量的前四个组合成特征空间。

4.4.5 图像矩特征的匹配

一副图像或一组图像集的特征向量或特征矩阵必须与先验存储的一类特征向量或特征矩阵进行比较和匹配,以便建立给定图像和标准图像之间的一致性关系,用于模式识别、目标鉴别和图像分类中。

对于一种矩特征向量的前n个元素可组成一个有限特征向量。所以,我们用下式来表示第k个图像所对应的一个特征向量:

我们的样本图像取了四个特征量组合成矩特征向量。

下面的工作即是计算矩特征匹配算法的选择。

计算方法有:

加权欧几里德距离法,相关系数法,对数距离法。

本系统主要用到加权欧几里德距离法。

向量的加权欧几里德距离法定义如下:

这里表示对分量的加权系数,这样做可以在动态范围内平衡各变量。使得函数D取最小值的k所对应的图像被选作匹配图像。

4.5 实现结果及分析

系统在Windows XP 的VC6.0环境下工作,再移植到Virtux-5开发板上。故这里只做VC6.0处理的说明。

图5-1 系统流程图说明

4.5.1 手势图像几何矩的提取

下面列出几何矩计算的部分源码:

finger_charactor DIBBARYCENTERMOMENT(unsigned char *imgBufIn,int imgWidth,int imgHeight)

{

int lineByte=(imgWidth+3)/4*4;

int PixelValue;// 图象象素值

float nBarycentrMoment;//图像重心矩

float m00,m10,m01;//0次矩m00,x方向的一次矩m10,和y方向的一次矩m10

int BarycenterX,BarycenterY;//重心x y坐标

int i,j;

float temp;

finger_charactor temp_charactor;

m00=0;m01=0;m10=0;nBarycentrMoment=0;

int m02,m20,m11,m03,m30,m21,m12;

float u20,u11,u21,u30,u02,u12,u03;

float t1,t2,t3,t4,t5,t6,t7,t8,t9;

m02=0;m20=0;m11=0;

m03=0;m12=0;m21=0;

m30=0;u20=0;u11=0;

u21=0;u30=0;u02=0;

u12=0;u03=0;t1=0;

t2=0;t3=0;t4=0;

t5=0;t6=0;t7=0;

t8=0;t9=0;

//求0次矩m,x方向的一次矩m01和y方向的一次矩m10

for(j=0;jimgHeight;j++)

{

for(i=0;iimgWidth;i++)

{

PixelValue=*(imgBufIn+i*lineByte+j)/255;

m00=m00+PixelValue;

temp=i*PixelValue;//有问题的地方

m01=m01+temp;

temp=j

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top