Five points calibration

Five points calibration

ID:41358755

大小:247.66 KB

页数:6页

时间:2019-08-22

Five points calibration_第1页
Five points calibration_第2页
Five points calibration_第3页
Five points calibration_第4页
Five points calibration_第5页
资源描述:

《Five points calibration》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Tslib中校准原理及其算法实现(1)触摸屏为什么需要校正?触摸屏与LCD显示屏是两个不同的物理器件。LCD处理的像素,例如我们通常所说的分辨率是600x800,实际就是指每行的宽度是600个像素,高度是800个像素,而触摸屏处理的数据是点的物理坐标,该坐标是通过触摸屏控制器采集到的。两者之间需要一定的转换。其次,在安装触摸屏时,不可避免的存在着一定的误差,如旋转,平移的,这同样需要校正解决。再次,电阻式触摸屏的材料本身有差异而且随着时间的推移,其参数也会有所变化,因此需要经常性的校正(电容式触摸屏只需要一次校正即可,这是由两者不同的材料原理造成的,具体可参阅有

2、关电阻式和电容式触摸屏对比的文章)(2)如何校正?触摸屏的校正过程一般为:依次在屏幕的几个不同位置显示某种标记(如"+"),用触摸笔点击这些标记,完成校正。如果PT(x,y)表示触摸屏上的一个点,PL(x,y)表示LCD上的一个点,校正的结果就是得到一个转换矩阵M,使PL(x,y)=M·PT(x,y)。(3)校正原理我们知道二维几何变换包含三种平移、旋转和缩放。这三者的矩阵表示为:平移MT:缩放MS:旋转MR:所以PL=MR·MT·MS·PT,将这个公式展开,其结果为:在上面的公式中,LCD上的坐标(XL、YL)和触摸屏上的坐标(XT、YT)是已知的,而其他的则

3、是我们需要求的:θ,SY,SX,TY,SX共有5个变量,至少需要五个方程,因为每组点坐标(PL,PT)可以得到两个方程,因此我们需要采集三组点坐标。但是上面的方程涉及三角函数,运算复杂,我们可以进一步简化为:变量虽然多了一个,但是解题过程简单多了,更适合计算机计算,而且采集点的数量仍然为3组。假设LCD三个点的坐标为(XL1,YL1),(XL2,YL2),(XL2,YL2),对应触摸屏上的三个点是(XT1,YT1),(XT2,YT2)。(XT3,YT3),则联立两个方程组为:这样,触摸屏的校正实际上就是解上面的方程组,得到6个系数:A、B、C、D、E、F。而上面

4、方程组按照克莱姆法则解即可。在得到6个系数后,以后通过触摸屏得到的所有坐标,带入公式(1)中就可以得到LCD上以像素表示的坐标。附:克拉姆法则在上面说过,只需要三组点坐标,我们就可以完成触摸屏的校正,其基本公式为:实际上,在校正时,采集的触摸屏的点坐标有一定的误差,也就是说采集几个三组点坐标,分别计算A、B、C、D、E、F,其结果不尽相同。在tslib的ts_calibrate中,采集了五组点坐标,具体代码参见ts_calibrate.c中的perform_calibration()。一般来说,采集的点越多,校正的精确性就越高。为了在计算过程中兼顾5个点的坐标,

5、ts_calibrate将公式(1)变换如下:以第一组(A、B、C)为例,进一步变换为:22n表示坐标的数量,ts_calibrate中就是5,分别对XT,YT,XL,XLXT,XLYT,(XT),(YT),YT求和,带入公式(3)中,就可以求出A、B、C,同理可求D、E、F。解的时候用的是逆矩阵的方法,即:-1P0=M·P1======>(M)P0=P1我们可以看出,运用上述方法可以处理任意多的采集点,而不局限于5个,只是采集点过多就会冗余,对校正精确性的提高作用很少,反而增加了计算时间。采用上述算法的程序源代码如下:intdo_calibration(voi

6、d){intj;floatn,x,y,x2,y2,xy,z,zx,zy;floatdet,det1,det2,det3;floatscaling=65536.0;n=x=y=x2=y2=xy=0;for(j=0;j<5;j++){n+=1.0;x+=(float)cal.x[j];y+=(float)cal.y[j];x2+=(float)(cal.x[j]*cal.x[j]);y2+=(float)(cal.y[j]*cal.y[j]);xy+=(float)(cal.x[j]*cal.y[j]);}det=n*(x2*y2-xy*xy)+x*(xy*y-x*

7、y2)+y*(x*xy-y*x2);if(det<0.1&&det>-0.1){printf("Determinantistoosmall!");return1;}z=zx=zy=0;for(j=0;j<5;j++){z+=(float)cal.xfb[j];zx+=(float)(cal.xfb[j]*cal.x[j]);zy+=(float)(cal.xfb[j]*cal.y[j]);}det1=n*(zx*y2-xy*zy)+z*(xy*y-x*y2)+y*(x*zy-y*zx);det2=n*(x2*zy-zx*xy)+x*(zx*y-x*zy)+z

8、*(x*xy-y*x2)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。