1. 相机选型与视野计算

任务目标

已知某产线检测工位的视野范围(FOV)与最小检测精度要求,计算所需相机的最小分辨率,并据此从给定型号表中选出满足要求的工业相机。

输入条件

  • 视野宽度 FOV_W = 50 mm,视野高度 FOV_H = 40 mm
  • 最小检测特征尺寸 = 0.05 mm(即要求一个像素对应的物理尺寸 ≤ 0.05 mm)
  • 候选相机型号表:
型号传感器尺寸分辨率像素尺寸(μm)接口
MV-CA050-10GM2/3"2448×20483.45GigE
MV-CA060-10GM1/1.8"3072×20482.40GigE
MV-CA120-10GM1/1.1"4024×30363.45GigE

计算方法

  1. 单方向所需像素数 = 视野尺寸 ÷ 精度要求
  2. 所需分辨率 = 两个方向所需像素数的乘积
  3. 选型条件:相机分辨率 ≥ 所需分辨率,且像素尺寸满足光学放大倍率下的精度约束(此处按像素物理尺寸 ≤ 精度要求/放大倍率估算,本例直接以分辨率为主判据)

关键完整代码

# 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,因此全部满足分辨率条件。若需进一步筛选,可结合光学放大倍率计算像素物理尺寸是否满足精度要求,或根据成本、帧率等因素选择最适型号。

视野 FOV 50 mm × 40 mm 0.05mm 分辨率计算 宽: 50 ÷ 0.05 = 1000 px 高: 40 ÷ 0.05 = 800 px 总像素: 1000 × 800 = 800,000 px (80万) 选型结果 MV-CA050-10GM ✓ MV-CA060-10GM ✓ MV-CA120-10GM ✓

补充说明

实际选型中还需考虑镜头接口匹配、靶面尺寸与视野的对应关系(避免 vignette 现象)、工作距离与景深等因素。若精度要求提高至 0.02 mm,则所需像素为 2500×2000 = 500 万像素,此时 MV-CA050 将不满足要求,需选用更高分辨率型号。本案例代码可直接修改输入参数重新计算。