矩阵论还真有用:触摸屏校准

来源:互联网 发布:win 2008 如何打开端口 编辑:程序博客网 时间:2024/04/19 20:28

tslib 主要做了两件事,坐标系映射和按键的滤波。

屏幕的校准主要原理是两个坐标系的映射,通过平移,旋转,缩放。

即原坐标系的坐标点左乘,平移矩阵,旋转矩阵,缩放矩阵,可以得到校准后的矩阵。

由此可以推导出方程组:

X_ = aX + bY + c

Y_ = dX +eY + f

只要求出abc和defi就可以得出两个坐标系的映射关系。


tslib用的是5点校准,推倒公式如下:

X_ = a*X + b*Y + c

X_*X = a*X*X + b*Y*X + c*X

X_*Y = a*X*Y + b*Y *Y+ c*Y


Y_ = d*X +e*Y + f

Y_*X = d*X*X +e*Y*X + f*X

Y_*Y = d*X*Y +e*Y*Y + f*Y


ts_calibration.c

typedef struct {
int x[5], xfb[5];
int y[5], yfb[5];
int a[7];
} calibration;


x和y用来存触摸屏采样的五个点坐标(getxy函数获取,读取触摸屏设备而来)

xfb和yfb用来存lcd的五个坐标点(即lcd上的五个十字架,坐标已知)

a[0..2]对应方程组的a b c(根据克莱姆法则计算而来)

a[3...5]对应方程组的d e f(根据克莱姆法则计算而来)

a[6] a b c d e f 的放大系数



0 0
原创粉丝点击