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 镜头畸变校正:别让图像骗了你

畸变,说白了就是镜头把直线拍成了弯的。桶形畸变(中间鼓起来)和枕形畸变(中间凹下去)是最常见的两种。你想想看,如果测量一个工件的直线度,结果镜头本身就有畸变,那测出来的数据能准吗?

校正方法分两步:

  1. 标定:用棋盘格标定板拍一组图片,计算畸变系数
  2. 校正:用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 知识体系总览

下面这张图,是我自己整理的知识框架。镜头选型不是孤立的事,它跟相机、光源、工作距离、精度要求全都绑在一起。你把这个逻辑理清了,选型就不会跑偏。

镜头选型核心 焦距与视场角 远心 vs 普通镜头 光圈与景深 畸变校正 实际应用场景 标定与维护 镜头选型不是孤立环节,需结合相机、光源、工作距离综合考量

好了,镜头这块的内容差不多就这些。记住一句话:选镜头不是选最贵的,也不是选最便宜的,而是选最合适的。你把这个逻辑吃透了,后面相机选型、光源设计都会顺很多。

专注资料整理