1. 相机选型与视野计算
任务目标
已知某产线检测工位的视野范围(FOV)与最小检测精度要求,计算所需相机的最小分辨率,并据此从给定型号表中选出满足要求的工业相机。
输入条件
- 视野宽度 FOV_W = 50 mm,视野高度 FOV_H = 40 mm
- 最小检测特征尺寸 = 0.05 mm(即要求一个像素对应的物理尺寸 ≤ 0.05 mm)
- 候选相机型号表:
| 型号 | 传感器尺寸 | 分辨率 | 像素尺寸(μm) | 接口 |
|---|---|---|---|---|
| MV-CA050-10GM | 2/3" | 2448×2048 | 3.45 | GigE |
| MV-CA060-10GM | 1/1.8" | 3072×2048 | 2.40 | GigE |
| MV-CA120-10GM | 1/1.1" | 4024×3036 | 3.45 | GigE |
计算方法
- 单方向所需像素数 = 视野尺寸 ÷ 精度要求
- 所需分辨率 = 两个方向所需像素数的乘积
- 选型条件:相机分辨率 ≥ 所需分辨率,且像素尺寸满足光学放大倍率下的精度约束(此处按像素物理尺寸 ≤ 精度要求/放大倍率估算,本例直接以分辨率为主判据)
关键完整代码
# camera_selection.py
def calc_required_resolution(fov_w_mm, fov_h_mm, precision_mm):
"""根据视野和精度计算所需最小分辨率"""
pixels_w = fov_w_mm / precision_mm
pixels_h = fov_h_mm / precision_mm
return int(pixels_w), int(pixels_h), pixels_w * pixels_h
def select_camera(candidates, required_pixels_w, required_pixels_h):
"""从候选列表中选出满足分辨率要求的相机"""
qualified = []
for cam in candidates:
res_w, res_h = cam['resolution']
if res_w >= required_pixels_w and res_h >= required_pixels_h:
qualified.append(cam)
return qualified
if __name__ == "__main__":
# 输入条件
FOV_W, FOV_H = 50.0, 40.0
PRECISION = 0.05
# 候选相机
candidates = [
{'model': 'MV-CA050-10GM', 'resolution': (2448, 2048), 'pixel_size_um': 3.45},
{'model': 'MV-CA060-10GM', 'resolution': (3072, 2048), 'pixel_size_um': 2.40},
{'model': 'MV-CA120-10GM', 'resolution': (4024, 3036), 'pixel_size_um': 3.45},
]
# 计算所需分辨率
req_w, req_h, total_pixels = calc_required_resolution(FOV_W, FOV_H, PRECISION)
print(f"所需像素数: {req_w} × {req_h} = {total_pixels:.0f} 像素")
# 选型
qualified = select_camera(candidates, req_w, req_h)
if qualified:
print("满足要求的相机型号:")
for cam in qualified:
print(f" {cam['model']} 分辨率 {cam['resolution'][0]}×{cam['resolution'][1]}")
else:
print("无满足要求的相机,需提高精度或缩小视野")
运行方式
python camera_selection.py
预期输出
所需像素数: 1000 × 800 = 800000 像素
满足要求的相机型号:
MV-CA050-10GM 分辨率 2448×2048
MV-CA060-10GM 分辨率 3072×2048
MV-CA120-10GM 分辨率 4024×3036
验证方法
手动验算:50 mm ÷ 0.05 mm = 1000 像素,40 mm ÷ 0.05 mm = 800 像素,所需总像素 80 万。三款候选相机分辨率均大于 1000×800,因此全部满足分辨率条件。若需进一步筛选,可结合光学放大倍率计算像素物理尺寸是否满足精度要求,或根据成本、帧率等因素选择最适型号。
补充说明
实际选型中还需考虑镜头接口匹配、靶面尺寸与视野的对应关系(避免 vignette 现象)、工作距离与景深等因素。若精度要求提高至 0.02 mm,则所需像素为 2500×2000 = 500 万像素,此时 MV-CA050 将不满足要求,需选用更高分辨率型号。本案例代码可直接修改输入参数重新计算。