3. 光学子系统测试:镜头参数测试、光圈与景深验证、畸变与像差测量

光学子系统,说白了就是仿生眼的「角膜」和「晶状体」。它要是出了问题,后面的图像传感器再牛也白搭。我这些年经手过不少仿生眼项目,光学部分往往是整个系统里最容易被低估、也最容易翻车的环节。今天咱们就把它掰开揉碎了聊清楚。

3.1 镜头参数测试:别被标称值骗了

拿到一颗镜头,第一件事不是装上去就跑,而是测它的基本参数。我习惯先过一遍这几个硬指标:

  • 焦距:用平行光管配合分辨率板来测。把镜头对准无限远目标,调整像距直到成像最清晰,这时候的像距就是实际焦距。标称8mm的镜头,我测出来7.85mm到8.15mm都算正常。超出这个范围?嗯,直接退货。
  • 视场角(FOV):用测角仪或者直接拍一张已知尺寸的标定板,根据像高和焦距反算。公式很简单:FOV = 2 × arctan(像高 / (2 × 焦距))。注意,仿生眼通常需要大视场,我见过有人用120°的镜头,结果边缘画质惨不忍睹。
  • 相对照度:这个很多人忽略。把镜头对准均匀光源,拍一张白场图,看中心到边缘的亮度衰减。衰减超过30%就要小心了——仿生眼在低光照环境下会非常吃力。
我的习惯:每次测焦距之前,先把镜头在恒温箱里放半小时。温度变化会导致镜筒热胀冷缩,焦距漂移个0.1mm都是常事。尤其是塑料镜筒的镜头,更敏感。

3.2 光圈与景深验证:别让仿生眼「近视」

光圈控制进光量,也控制景深。仿生眼的应用场景千差万别——有的需要大景深(比如导航避障),有的需要浅景深(比如目标识别聚焦)。所以这一步必须验证到位。

我通常的做法是:

  1. 把镜头固定好,对准一个带有前后距离标记的测试靶(比如一排LED灯珠,从0.5米排到5米)。
  2. 从最大光圈开始,逐级缩小光圈(F/1.4 → F/2.0 → F/2.8 → F/4.0 → F/5.6 → F/8.0)。
  3. 每一级拍一张照片,记录清晰成像的前后距离范围。

举个例子,我曾经测过一颗F/1.4的镜头:

光圈值 最近清晰距离 最远清晰距离 景深范围
F/1.4 1.2 m 2.8 m 1.6 m
F/2.8 0.8 m 4.5 m 3.7 m
F/5.6 0.5 m 超焦距
F/8.0 0.4 m 超焦距
注意:光圈收得太小(比如F/11以上)反而会因为衍射效应导致画质下降。仿生眼如果工作在暗光环境,千万别为了景深牺牲太多进光量——我曾经吃过这个亏,后来老老实实加了主动补光。

3.3 畸变与像差测量:仿生眼不能「看歪」

畸变和像差是光学系统的「原罪」。没有完美的镜头,只有能不能接受的误差。仿生眼对畸变尤其敏感——你想,如果机器人看到的世界是扭曲的,它怎么准确抓取物体?

3.3.1 畸变测量

我常用的方法是拍一张棋盘格标定板,然后用OpenCV或者Halcon提取角点,计算实际坐标和理想坐标的偏差。畸变分为两种:

  • 桶形畸变:画面向外膨胀,常见于广角镜头。仿生眼如果用大视场镜头,这个几乎跑不掉。
  • 枕形畸变:画面向内收缩,常见于长焦镜头。

测量结果通常用畸变率表示:

畸变率 = (实际像高 - 理想像高) / 理想像高 × 100%

我个人习惯把畸变率控制在±2%以内。超过这个范围,后续的图像校正算法会吃掉不少有效像素,而且边缘分辨率会下降得很厉害。

3.3.2 像差测量

像差种类很多,但仿生眼最需要关注的是这几种:

  • 球差:边缘光线和中心光线聚焦不到同一个点。表现为画面整体发「雾」。
  • 色差:不同颜色的光聚焦位置不同。拍一张黑白条纹图,边缘出现红蓝紫边,那就是色差。
  • 彗差:点光源成像变成彗星状拖尾。这个在仿生眼快速转动时特别明显。

测量像差需要用到干涉仪或者专用的像差测试仪。但如果你手头没有这些设备,有个土办法:拍一张星点图(或者用针孔光源),然后放大看光斑的形状。圆形光斑说明像差小,不对称或者有拖尾就说明有问题。

避坑指南:我曾经遇到过一个项目,仿生眼在实验室里测出来各项指标都合格,结果一到户外阳光下就「瞎」了。后来排查发现是色差在强光下被放大了,导致边缘分辨率崩溃。从那以后,我坚持在两种光照条件下测像差——暗室和强光。

3.4 知识体系总览

下面这张图是我自己整理的光学子系统测试逻辑,你可以把它当作一个检查清单:

光学子系统测试知识体系 镜头参数测试 光圈与景深验证 畸变与像差测量 焦距 / 视场角 / 相对照度 光圈逐级测试 / 景深范围记录 桶形畸变 / 枕形畸变 / 像差 平行光管 / 测角仪 / 白场图 测试靶 / LED灯珠 / 逐级光圈 棋盘格标定板 / 干涉仪 / 星点图 输出:合格/不合格 + 校正参数 每个模块独立测试,最终汇总到光学子系统评估报告 测试环境要求:暗室 + 标准光源 + 恒温条件

你看,整个光学子系统测试其实就围绕这三个核心展开。每个环节都有对应的工具和判定标准。我个人建议,在项目初期就把这些测试流程固化下来,做成标准作业程序(SOP)。这样不管是新人接手还是批量生产,都能保证一致性。

一个小技巧:测试畸变的时候,别忘了把镜头装在仿生眼的实际结构件上再测。我曾经遇到过镜头单独测没问题,装进外壳后因为应力导致镜片轻微变形,畸变率直接翻倍。所以,尽量在「最终装配状态」下做验证。

好了,光学子系统测试就聊到这儿。记住一句话:仿生眼的「眼睛」好不好使,全看光学测试做得到不到位。别偷懒,每一项都老老实实测过去,后面你会感谢自己的。


专注资料整理