3、镜头选型与对焦:镜头焦距与视场角计算、远心镜头与普通镜头的应用场景、光圈与景深的关系、镜头畸变校正方法
镜头这东西,说简单也简单,说复杂真能把你绕晕。我刚开始做视觉的时候,觉得随便找个镜头怼上去就行,结果吃了不少亏。后来才明白,镜头选型直接决定了整个视觉工位的成败。今天咱们就把这块掰开揉碎了聊。
3.1 焦距与视场角:先算清楚再动手
焦距和视场角,说白了就是一对「兄弟」。焦距短,视场角就大,看得宽但细节少;焦距长,视场角就小,看得窄但细节多。这个关系,你想想看,跟人眼差不多——你盯着远处一个东西看,视野就窄了,对吧?
计算公式其实不复杂:
视场角(水平) = 2 × arctan( sensor宽度 / (2 × 焦距) )
举个例子,我有个项目要检测一个200mm宽的工件,相机靶面是1/1.8英寸(约7.2mm宽),工作距离定在300mm。那焦距怎么算?
焦距 = 工作距离 × sensor宽度 / (视场宽度 + sensor宽度)
= 300 × 7.2 / (200 + 7.2)
≈ 10.4mm
嗯,这里要注意,实际选型时一般取整,选12mm或8mm的镜头,然后微调工作距离。我个人习惯是留10%的余量,别卡得太死。
核心要点:焦距越短,景深越大,但畸变也越明显。这是个取舍问题。
3.2 远心镜头 vs 普通镜头:别用错了地方
普通镜头,也就是我们常用的定焦或变焦镜头,适合大多数场景。但有一种情况,普通镜头搞不定——就是被测物体有高度差,或者位置有轻微偏移时,成像大小会变。这时候,远心镜头就派上用场了。
远心镜头的特点是什么?说白了,它只接收平行于光轴的光线。所以不管物体离镜头近一点还是远一点,成像大小几乎不变。我在一个3C电子元件的检测项目中遇到过,元件高度差有5mm,用普通镜头拍出来,边缘的尺寸误差直接超了0.1mm,换成远心镜头后,误差降到0.01mm以内。
| 对比项 | 普通镜头 | 远心镜头 |
|---|---|---|
| 成像大小随物距变化 | 明显变化 | 几乎不变 |
| 畸变 | 边缘畸变较大 | 畸变极小 |
| 成本 | 低 | 高(3-10倍) |
| 适用场景 | 平面检测、通用视觉 | 高精度测量、立体工件 |
我的建议:如果被测物体厚度超过视场宽度的1/10,或者测量精度要求高于0.05mm,直接上远心镜头。别犹豫,省那点钱后面调试会哭的。
3.3 光圈与景深:别只顾着亮度
光圈,就是镜头里那个可以开合的「瞳孔」。光圈越大(F值越小),进光量越多,但景深越浅。景深是什么?就是物体前后清晰的范围。
我曾经犯过一个错误:为了追求亮度,把光圈开到最大(F1.4),结果工件边缘清晰了,但中间有个凸起的地方全糊了。后来才明白,工业视觉不是摄影,不需要虚化背景,反而需要尽可能大的景深。
一般建议:
- 高精度测量:光圈收小到F8-F11,景深最大
- 高速检测:光圈开到F4-F5.6,保证足够亮度
- 低光照环境:光圈开到F2.8,但要做好景深不足的准备
避坑指南:我曾经在一条产线上,为了省成本用了可变光圈镜头,结果操作工不小心碰了一下光圈环,整批产品误判率飙升到30%。从那以后,我所有项目都指定用固定光圈镜头,或者用螺丝胶把光圈环锁死。
3.4 镜头畸变校正:别让图像骗了你
畸变,说白了就是镜头把直线拍成了弯的。桶形畸变(中间鼓起来)和枕形畸变(中间凹下去)是最常见的两种。你想想看,如果测量一个工件的直线度,结果镜头本身就有畸变,那测出来的数据能准吗?
校正方法分两步:
- 标定:用棋盘格标定板拍一组图片,计算畸变系数
- 校正:用OpenCV等工具对每帧图像做重映射
代码示例(OpenCV Python):
import cv2
import numpy as np
# 读取标定板图片
img = cv2.imread('calibration.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 找棋盘格角点
ret, corners = cv2.findChessboardCorners(gray, (9, 6), None)
# 标定相机
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(
objpoints, imgpoints, gray.shape[::-1], None, None)
# 校正图像
undistorted = cv2.undistort(img, mtx, dist, None, mtx)
嗯,这里要注意,标定板一定要平整,我见过有人用打印纸贴在墙上,结果纸本身就有褶皱,标定出来的参数全是错的。建议用陶瓷或玻璃材质的标定板,精度高很多。
经验之谈:畸变校正不是一劳永逸的。镜头如果受过撞击、温度变化大、或者调过光圈,畸变参数可能会变。我一般每三个月重新标定一次,或者每次产线维护后都跑一遍标定流程。
3.5 知识体系总览
下面这张图,是我自己整理的知识框架。镜头选型不是孤立的事,它跟相机、光源、工作距离、精度要求全都绑在一起。你把这个逻辑理清了,选型就不会跑偏。
好了,镜头这块的内容差不多就这些。记住一句话:选镜头不是选最贵的,也不是选最便宜的,而是选最合适的。你把这个逻辑吃透了,后面相机选型、光源设计都会顺很多。