3. 反射与折射:触摸物表面反射特性、光路折射补偿模型、多路径干扰抑制
光学触控里,反射和折射这两个物理现象,可以说是精准度的头号敌人。我刚开始做光学触控系统那会儿,总觉得算法能搞定一切,结果被现实狠狠教育了一回——明明手指按下去,坐标却飘了半个屏幕。后来才明白,不把光路里的反射和折射理清楚,算法再强也是白搭。
这一节,咱们就聊聊怎么对付这两个家伙。说白了,就是三件事:摸清触摸物的反射特性、建一个折射补偿模型、再把多路径干扰压下去。
3.1 触摸物表面反射特性
你想想看,手指、触控笔、甚至一张纸,它们的表面反射特性完全不一样。手指有皮肤纹理,会散射;触控笔是光滑的塑料,会镜面反射;纸张表面粗糙,又是另一种散射模式。
我在项目中遇到过最头疼的情况——用户戴着手套操作。手套的织物表面会把红外光打得乱七八糟,接收端收到的信号强度直接掉了一半。嗯,这里要注意,反射特性直接影响的是信号的信噪比。
核心参数:反射率、散射角分布、偏振保持度
我建议,在系统设计阶段,至少要考虑三种典型触摸物的反射模型:
- 手指(皮肤):朗伯散射为主,反射率约 30%-50%,散射角大
- 触控笔(塑料/橡胶):镜面反射+部分散射,反射率约 60%-80%,方向性强
- 手套(织物):强散射,反射率约 20%-40%,信号衰减明显
怎么处理?我个人习惯在接收端做动态增益调整。根据反射信号的强度,自动调节放大倍数。这样,不管是手指还是手套,都能拿到差不多的信号幅度。
小技巧:可以在系统初始化时做一次反射特性校准。让用户用手指在屏幕上画一圈,系统自动记录反射特征,后续就按这个特征做匹配。
3.2 光路折射补偿模型
光从空气进入导光板或者玻璃盖板时,会发生折射。这个折射会让触摸点的实际位置和光学传感器看到的位置产生偏差。偏差有多大?我算过,在 45 度入射角下,折射偏移量可以达到 2-3 毫米。对于触控精度要求 1 毫米以内的系统,这个偏差必须补偿。
折射补偿的核心,就是建立一个数学模型,把光路的弯曲算回来。公式其实不复杂,就是斯涅尔定律的工程化应用:
// 折射补偿计算
// n1: 空气折射率 (≈1.0)
// n2: 导光板折射率 (≈1.49 亚克力 / ≈1.52 玻璃)
// θ1: 入射角 (传感器测量值)
// θ2: 折射角 (实际光路方向)
float compensate_refraction(float measured_angle, float n1, float n2) {
float theta1 = measured_angle * PI / 180.0;
float sin_theta2 = (n1 / n2) * sin(theta1);
// 防止全反射
if (sin_theta2 > 1.0) {
return measured_angle; // 全反射,不补偿
}
float theta2 = asin(sin_theta2);
return theta2 * 180.0 / PI;
}
我曾经在一个项目里,因为没做折射补偿,触摸点总是往屏幕边缘偏。后来加上这个模型,偏差从 2.5 毫米降到了 0.3 毫米以内。效果立竿见影。
注意:不同材质的导光板,折射率不一样。亚克力(PMMA)约 1.49,玻璃约 1.52,聚碳酸酯(PC)约 1.58。换材料一定要重新标定折射参数。
3.3 多路径干扰抑制
多路径干扰,说白了就是光走了好几条路才到接收端。直接路径是我们要的,反射路径是干扰。这些干扰光会让接收端误判触摸位置,产生所谓的“鬼点”。
我记得有一次,客户反馈屏幕左上角总是莫名其妙地触发。排查了半天,发现是屏幕边框的金属反光条把光反射到了不该去的地方。这就是典型的多路径干扰。
抑制多路径干扰,我常用的方法有四种:
| 方法 | 原理 | 效果 | 代价 |
|---|---|---|---|
| 时间门控 | 只接收特定时间窗口内的信号 | 优秀 | 需要高速计时电路 |
| 偏振滤波 | 利用偏振片滤除反射光 | 良好 | 增加光学损耗 |
| 空间滤波 | 用光阑限制接收角度 | 中等 | 安装精度要求高 |
| 算法抑制 | 通过信号特征识别干扰 | 灵活 | 增加计算量 |
我建议优先采用时间门控+算法抑制的组合。时间门控能干掉大部分反射路径,算法抑制再处理剩下的顽固干扰。两者配合,效果最好。
实战经验:算法抑制里,我常用的是“信号峰值比”判断。直接路径的信号峰值通常比反射路径高 3-5 倍。设定一个阈值,低于阈值的信号直接丢弃,能有效减少鬼点。
3.4 知识体系总览
下面这张图,把反射、折射、多路径干扰的关系和应对策略串起来了。你可以把它当作本章的思维导图:
这张图把三个核心问题串在了一起。反射特性决定了你怎么设计接收端,折射补偿决定了你的坐标准不准,多路径抑制决定了你的系统稳不稳。三者缺一不可。
一句话总结:反射是信号源的问题,折射是光路的问题,多路径是干扰的问题。分别搞定,精准度自然就上去了。