电磁式电子白板定位算法的设计和实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电磁式电子白板定位算法的设计和实现

【摘要】本文为了提高电子白板定位算法的速度和精度,提出了一种高效的透视变换定位算法,并给出了详细的实现步骤。经过测试,该定位算法取得了良好的效果。

【关键词】定位算法;透视变换;高斯消元法

0.概述

电磁交互式电子白板的硬件系统由电子白板、电子感应笔、投影仪和计算机组成,软件系统由驱动软件和应用软件组成。其结构如图1所示。电子白板采用USB线与计算机连接,实现交互操作。投影仪将计算机屏幕投影至电子白板。电子感应笔在电子白板上的操作将直接模拟成鼠标在计算机上的操作。当电子感应笔在电子白板上进行左击、双击、移动或右击时,感应产生的物理坐标和动作通过USB线传给计算机,计算机对物理坐标和动作的转换算法成为电子白板系统应用的关键问题,而定位算法直接决定了坐标转换的精确度。

图1 电磁交互式电子白板系统结构图

1.定位算法的设计

1.1电磁式电子白板工作原理

电磁式电子白板是采用一支可以发射电磁波的笔和水平垂直两个方向排列的接收线圈膜组成。定位原理是,发射电磁波的笔间歇式发射电磁波,当笔靠近接收线圈的膜时,线圈上会感应到笔发射的电磁波。离笔越近的线圈组感应到的电动势越高,根据水平方向和垂直方向感应到的电动势,通过计算可以获得笔在接收线圈膜的X、Y坐标的绝对位置。通过定位算法可以将接收到的线圈膜绝对坐标值映射到计算机的屏幕上。

1.2几种定位算法的比较

等比例缩放定位算法是把电子白板上的投影区域近似于一个矩形,并将该矩形和计算机屏幕进行等比例映射,建立线性映射函数。完成定位操作后,电子感应笔的每个有效操作将电子白板上的坐标传至计算机,并通过映射函数得到计算机屏幕的坐标。等比例缩放定位算法由于投影会导致失真,计算机矩形屏幕投影到电子白板上呈不规则矩形,因此将导致较低的坐标转换效率。

仿射变换[1]定位算法相对于等比例缩放定位算法在坐标转换效率上有大幅提高。但仿射变换只有 6 个自由度,3 点即可完成定位,因此,仿射变换不能保证将四边形及四边以上的多边形映射为同等边数的多边形。仿射变换定位法在3 个定位点确定的区域内坐标转换精确度较好,但区域外精确度将极大降低。

透视变换[2]是中心投影的射影变换,在用非齐次射影坐标表达时是平面的分式线性变换,透视变换常用于图象的校正,具有如下的形式:

X= Y= 且A=a a aa a aa a a≠0

大部分空间变换都可以用一个3×3的变换矩阵来表示:

[x,y,z]A=[X,Y,Z]

其中,x、y、z 和X、Y、Z分别为变换前后的坐标;H 为变换矩阵;z与Z是为了与三维矩阵构成齐次处理而引入的齐次坐标,通常取z=1。映射关系中存在9 个未知数。由于a与其他8个参数存在线性相关性,因此透视变换只有8个未知数,电子白板的定位只需4个定位点的坐标信息即可完成。电子白板上的坐标分别为(x,y)、(x,y)、(x,y)、(x,y)。计算机屏幕显示坐标分别为(X,Y)、(X,Y)、(X,Y)、(X,Y)。可得:

x y 1 0 0 0 -xX -yXx y 1 0 0 0 -xX -yXx y 1 0 0 0 -xX -yXx y 1 0 0 0 -xX -yX0 0 0 x y 1 -xY -yY0 0 0 x y 1 -xY -yY0 0 0 x y 1 -xY -yY0

0 0 x y 1 -xY -yYAAAAAAAA=XXXXYYYY

A、A、A、A、A、A、A、A是8个坐标转换参数,其中,A=,A=…A= 。

在坐标转换效率方面,透视变换定位法优于分区域2次仿射变换定位法。透视变换定位法在确定转换参数后,坐标转换计算只是简单的算术运算。大大提高了坐标转换的精度和效率。

2.定位算法的实现

电磁式电子白板采用透视变换定位算法具有较高的坐标转换速度和精度,在实践中取得了良好的效果,透视变换定位算法的实现具体步骤如下:

首先,选取电子白板投影区域的左上、右上、右下和左下四点作为定位点,此四点依次对应于计算机屏幕的左上、右上、右下和左下四点,如图2所示:

图2 投影区域定位点的选取

其次,利用电子白板的物理坐标左上(x,y)、右上(x,y)、右下(x,y)、左下(x,y)和计算机屏幕坐标左上(X,Y)、右上(X,Y)、右下、(X,Y)、左下(X,Y)的数据,根据[x,y,z]A=[X,Y,Z]编制程序,利用高斯消元法[3]求解方程组。编程序步骤如下:

(1)定义一个整型的二维数组int x[8][8]={x0,y0,1,0,0,0,-x0X0,-y0X0, x1,y1,1,0,0,0,-x1X1,-y1X1, x2,y2,1,0,0,0,-x2X2,-y2X2,

x3,y3,1,0,0,0,-x3X3,-y3X3,0,0,0, x0,y0,1, -x0Y0,-y0Y0, 0,0,0, x1,y1,1, -x1Y1,-y1Y1, 0,0,0, x2,y2,1, -x2Y2,-y2Y2, 0,0,0, x0,y0,1, -x3Y3,-y3Y3}。

(2)定义一个整型的一维数组int X[8]={ X0, X1, X2, X3, Y0, Y1, Y2, Y3}。

(3)将上述两个数组带入void GaoShiAlg(int x[][8],int X[])中,可以得到8个坐标转换参数。根据这8个坐标转换参数,可以将电子白板投影区域内的任意一点通过X=和Y=映射到计算机的屏幕上。

GaoShiAlg(int x[][8],int c[])

{ float a[10][10],b[10],d=0,t=0,sum=0;

int k=1,l=0,i=0,j=0,m,n;

n=8; m=8;

for(i=1;ifabs(d))

{ d=a[i][k];

l=i;

}

}

if(l!=k)

{ for(j=k;j=1;i--)

{ sum=0;

for(j=i+1;j<=n;j++)

{ sum=sum+a[i][j]*b[j]; }

b[i]=b[i]-sum;

}

}

3.结束语

相关文档
最新文档