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

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 的放大系数



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值