触摸屏(三)---电阻屏校准算法
为什么电阻屏要校准
其实就是一种坐标的转换,lcd屏幕有自己的扫描方向,但是触摸屏也有自己的扫描方向,可能两个坐标系不一定相同,这样触摸的点就不能对应显示反馈到显示屏,这个时候就要校准,目的就是在这两种坐标系之间找到一种合适正确的映射关系,使触摸屏上显示的图形经过变换,与LCD显示的图形保持一致。
电阻触摸屏的基本线性校准算法
我们设这里Q(x,y)为触摸屏上的点,称为物理坐标;Qd(xd,yd)为LCD显示屏上的点,称为显示坐标。
设物理坐标(用极坐标表示):
考虑到两个屏之间可能还会存在角度上的误差,每个点的x和y可能存在缩放的问题,还会有移动的误差,那么综合一下,抽象一个抽象的数学模型出来😅
假设角度差为φ,缩放因子为kx和ky,位移因子为Sx和Sy,可得到显示坐标:
一般情况,触摸屏和 LCD 显示屏之间的角度误差 φ 极小,则 sinφ≈φ,cosφ≈1。那么,LCD 显示屏上点坐标可以化简为:
由上式中可以看出,除了x和y,方程式右边各项均为常量,即触摸屏和显示屏的坐标系可以认为是线性的,基于此方程实现的校准也称为线性校准。现在用一般情况来代替各乘积项的系数,则可以得到:
显然,如果能求出线性变换的参数(A,B,C,D,E,F),就可以通过上述等式来校准从触摸屏那里得来的显示坐标了,为了求出这六个参数,在触摸屏上任意取三个点(但是要尽量避免边界的点
)。
设物理坐标分别为:(x1,y1)、(x2,y2)、(x3,y3)
设显示坐标分别为:(xd1,yd1)、(xd2,yd2)、(xd3,yd3)
然后带入方程,得到以下六个等式:
然后通过两两相消(其实就是消掉一个未知数):
然后通过以下计算就可以求出六个参数:
同理:
这个算法的前提就是,只有在触摸屏和LCD显示屏之间的角度误差φ极小
的情况下,上述的基本线性校准算法才适用。
电阻式触摸屏校准算法的优化
为了使校准更加精确,现在触摸屏上任意取五个点,设物理坐标和显示坐标分别为(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4)、(x5,y5)和(xd1,yd1)、(xd2,yd2)、(xd3,yd3)、(xd4,yd4)、(xd5,yd5)。
带入xd的坐标方程得:
将等式做以下处理(其实跟三点差不多):
- 第一步:将原方程 5个等式直接相加,得第 1个总等式:
- 第二步:将原方程 5 个等式分别乘以参数x然后 5 个等式相加,得第 2个总等式:
- 第三步:将原方程 5 个等式分别乘以参数y然后 5 个等式相加,得第 3个总等式:
由这三个总等式构成一个 x坐标的三阶线性方程组,用克莱姆法则可以将参数 A,B,C求出,对于剩下三个参数也是同理哈,笔者就不赘述啦。
克拉姆法则
克莱姆法则是一种求解线性方程组的方法,例如对于如下的线性方程组:
运用克莱姆法则,这个方程组的解可以如下:
其中D,Dx,Dy,分别是以下行列式:
对于更一般的情况:
解可以由同样的公式给出:
其中:
Ai是将矩阵A的第i
纵列换成向量b之后得到的矩阵。
可以看出,这些表达式只有在D=det(A)存在并且不等于0的时候才是有意义的,这点只有在有效方程数等于未知数的个数的时候才能得到保证。
举个栗子🌰:
那么D就是以下行列式:
那么D1,D2,D3就是以下行列式:
那么就能求出x1,x2,x3是多少啦!
本章结束啦。🐧