027、从imx298到imx989的镜头设计进化论——1英寸sensor对镜头的后焦距/主光线角/畸变要求到底变了什么——大靶面镜头的系统工程代价
去年秋天,我蹲在松山湖的实验室里,手里捏着一颗刚从产线退回来的镜头模组,FPC排线都还没撕干净,镜头上沾着指纹,像极了刚打完架的少年。客户反馈说,用imx989的模组在暗光下拍路灯,画面边缘出现了一圈诡异的紫色光晕,不是紫边,是那种从画面四角蔓延开来的、像墨水洇湿宣纸一样的色偏。我第一反应是IR滤光片镀膜出了问题,但换上同批次另一颗镜头,问题依旧。后来把sensor从imx766换回imx298,同样的镜头,紫晕消失了。那一刻我意识到,问题不在镜头本身,而在镜头与sensor的“婚姻关系”上——大靶面sensor对镜头的后焦距、主光线角、畸变的要求,根本不是小靶面时代的线性外推,而是整个光学系统的重构。
先说说后焦距这件事。imx298的靶面对角线大约6.4mm,imx989直接干到15.86mm,面积差了六倍多。很多人以为后焦距就是镜头最后一枚镜片到sensor表面的距离,只要机械结构能塞下就行。但真正的坑在于,后焦距决定了光线在到达sensor前的“汇聚锥角”。小靶面时代,后焦距可以做得比较短,因为sensor的像素尺寸大(imx298是1.12μm,imx989是1.6μm),对入射光的角度容忍度相对宽松。但imx989的像素虽然大了,可它用了四合一像素合并,实际等效像素尺寸是3.2μm,这反而让微透镜的聚光效率对入射角更敏感——因为微透镜的曲率半径和像素开口的匹配关系,在像素尺寸变大后,主光线角(CRA)的偏差会导致边缘像素的感光效率急剧下降,不是线性下降,是那种指数级的塌方。
我踩过一个坑。当时为了追求模组总高更薄,把后焦距从5.2mm压到4.8mm,结果imx989的边缘CRA从35度飙到38度,sensor端微透镜的CRA匹配曲线是35度封顶的,超了3度,边缘亮度直接掉了18%。你以为18%只是暗一点?不,边缘的暗角会触发ISP的局部增益补偿,增益一拉,噪点跟着放大,暗部彩噪像雪花一样飘。后来我把后焦距调回5.1mm,CRA回到34.5度,边缘亮度恢复了,但模组总高多了0.3mm,结构工程师当场脸就绿了。这就是大靶面的第一笔代价——你为了塞下更大的sensor,镜头后焦距必须拉长,否则CRA匹配就是死局,而拉长后焦距意味着镜筒变长、模组变厚、手机内部堆叠空间被挤压,整个结构设计都得推倒重来。
再说主光线角。小靶面时代,镜头设计可以容忍CRA在边缘达到40度甚至更高,因为sensor的微透镜阵列本身有偏移补偿(pixel shift),而且像素开口率大,光线斜着进来也能被吸收。但imx989这种1英寸级别的sensor,微透镜的偏移补偿是固定的,出厂就焊死在硅片上,你没法改。镜头端必须主动把CRA控制在sensor规格书要求的范围内,通常是33度到35度之间。这意味着什么?意味着镜头的光阑位置必须后移,让主光线在像面上的入射角更平缓。光阑后移的代价是前组镜片的有效口径变大,镜片厚度增加,重量上去了,对焦马达的驱动力矩要求也高了。我见过一个方案,为了把CRA从37度压到34度,设计团队把光阑后移了0.8mm,结果前组第一枚镜片的口径从8mm涨到11mm,镜片重量翻倍,VCM马达的推力不够,对焦速度从30ms掉到55ms,抓拍运动物体全是糊的。这就是系统工程——你调一个参数,后面跟着一串连锁反应,像多米诺骨牌。
畸变这块,imx298时代,镜头畸变控制在2%以内就算合格,因为sensor小,畸变在画面上的绝对像素偏移量小,后期算法校正一下就行。但imx989的靶面大了,同样的2%畸变,在画面边缘的绝对偏移量是imx298的两倍多,算法校正后虽然几何位置能拉回来,但校正过程中会引入分辨率损失和色彩插值误差,尤其是画面边缘的细纹理,校正后会出现“揉皱”的痕迹。我做过对比测试,同一颗镜头,装在imx298上畸变1.8%,边缘画质几乎无损;换到imx989上,同样的畸变,边缘的线条校正后出现明显的锯齿和伪色。所以大靶面镜头的畸变必须压到1%以内,甚至0.8%。但畸变压得越低,镜头的场曲和像散就越难平衡,因为畸变和场曲在光学设计里是互相牵制的——你压畸变,场曲就翘起来,边缘画质就崩。我见过一个团队,为了把畸变从1.5%压到0.9%,把最后一片镜片的非球面系数调了十几版,结果畸变是达标了,但边缘的MTF从0.6掉到0.4,画面边缘像蒙了一层雾。
这里有个更隐蔽的坑,是关于相对照度的。大靶面sensor的像素面积大,但边缘光线到达sensor的路径更长,cos⁴定律的衰减更明显。imx298时代,边缘照度做到50%就算及格,因为像素大,暗一点还能靠增益拉回来。但imx989的边缘照度如果只有50%,那边缘的SNR会差到没法看——因为大像素的满阱容量大,但暗电流也大,增益一拉,暗电流噪声跟着放大,边缘全是横纹。所以大靶面镜头的相对照度必须做到60%以上,这要求镜头的光阑位置和镜片曲率配合得极其精准,稍微偏一点,边缘照度就掉。我调过一颗镜头,相对照度从58%提到63%,只改了第二枚镜片的中心厚度0.02mm,但整个镜头的像面弯曲跟着变了,边缘的MTF又掉了一截,最后只能重新平衡。
再说一个很多人忽略的点——镜头的后焦距公差。小靶面时代,后焦距公差可以放到±0.05mm,因为sensor的焦深大。但imx989的像素虽然大了,可它的微透镜阵列对焦面位置极其敏感,后焦距偏0.03mm,边缘的CRA匹配就崩了,出现那种“边缘发紫”的现象——就是我在松山湖实验室里看到的那一幕。后来我查了sensor的datasheet,发现imx989的微透镜阵列设计是假设后焦距在5.0mm±0.02mm的范围内,超出这个范围,边缘像素的感光效率会急剧下降,而且这种下降是波长相关的——红光波长长,穿透深,受影响小;蓝光波长短,穿透浅,受影响大,所以边缘会偏紫。这就是为什么那颗镜头在imx298上没问题,换到imx989上就紫晕——因为imx298的微透镜对后焦距不敏感,而imx989敏感得像个处女座。
那怎么解决?我当时做了三件事。第一,把镜头模组的后焦距公差从±0.05mm收紧到±0.02mm,这要求镜筒的加工精度提升一个等级,成本涨了15%,但边缘紫晕消失了。第二,在镜头设计阶段,把CRA的余量从1度加到2度,也就是说,目标CRA是33度,但设计时按31度来优化,这样即使后焦距有偏差,CRA也不会超过35度的红线。第三,跟sensor厂商要了微透镜的CRA实测曲线,不是规格书上的标称值,而是他们产线上抽测的分布数据,用这个分布数据去优化镜头,而不是用理想曲线。这三件事做完,紫晕问题彻底解决,但模组成本涨了20%,良率掉了5个点。
最后说点个人经验。大靶面镜头的设计,本质上是一场“妥协的艺术”,你不可能同时拿到大光圈、低畸变、高相对照度、短后焦距、小体积——这五个参数是互相打架的。我的建议是,先定CRA和后焦距,这两个是硬约束,不满足就换方案;然后定畸变和相对照度,这两个是软约束,可以靠算法补偿一部分;最后才考虑光圈和体积,因为这两个是体验参数,可以在后期调优。另外,千万别迷信sensor厂商给的参考设计,那些参考设计是给“通用场景”用的,你的手机是超薄机还是厚机,散热条件不同,镜头的热膨胀系数不同,后焦距的漂移也不同。我见过一个项目,冬天在哈尔滨测试,后焦距漂了0.04mm,边缘紫晕又回来了,后来在镜筒材料里加了钛合金骨架,才压住热漂移。这就是大靶面的系统工程代价——你买的不是一个sensor,是一整套需要重新平衡的光学、结构、热学、算法系统。