全部博文(1293)
分类: C/C++
2011-04-24 16:42:34
转载时请表明原文出处(http://blog.sina.com.cn/wyw1976)及作者邮箱()
我们在《触摸屏校正原理》说过,只需要三组点坐标,我们就可以完成触摸屏的校正,其基本公式为:
实际上,在校正时,采集的触摸屏的点坐标有一定的误差,也就是说采集几个三组点坐标,分别计算A、B、C、D、E、F,其结果不尽相同。
在tslib的ts_calibrate中,采集了五组点坐标,具体代码参见ts_calibrate.c中的perform_calibration()。
一般来说,采集的点越多,校正的精确性就越高。 为了在计算过程中兼顾5个点的坐标, ts_calibrate将公式(1)变换如下:
以第一组(A、B、C)为例, 进一步变换为:
n表示坐标的数量,ts_calibrate中就是5, 分别对XT, YT, XL, XLXT,XLYT,(XT)2 ,(YT)2 ,YT 求和,带入公式(3)中,就可以求出A、B、C,同理可求D、E、F。
解的时候用的是逆矩阵的方法,即:
P0 = M · P1 ======> (M)-1 P0 = P1
我们可以看出,运用上述方法可以处理任意多的采集点,而不局限于5个,只是采集点过多就会冗余,对校正精确性的提高作用很少,反而增加了计算时间。