视频相机标定(静态_MoGe)
更新时间:2026-07-29
简介
静态相机内参 / FOV 标定算子,基于 MoGe-2 对静态相机视频估计相机内参矩阵 K(3x3) 与水平 / 垂直 FOV(比 DeepCalib 更准)。
功能描述
• 从视频用 opencv 均匀抽取 frame_num 帧,逐帧用 MoGe-2 推理归一化内参并还原到像素单位。
• 对逐帧内参取中位数作为代表内参,并据此换算水平 / 垂直 FOV(弧度)。
• 输出包含中位数内参、逐帧内参、hfov/vfov、宽高的结构体。
• 支持 GPU/CPU 自动选择;推理异常时按 fail_on_error 决定抛异常或返回空内参结果。
算子参数
输入
| 输入 | 含义 |
|---|---|
| video | 视频(本地路径 / bos 路径 / http url,经 run_on_local_path 落地),单个输入列 |
输出
| 输出 | 含义 |
|---|---|
| result | struct{intrinsics: list<list<float64>>(3x3), hfov: float64, vfov: float64, width: int32, height: int32, per_frame_intrinsics: list<list<list<float64>>>};intrinsics 为逐帧内参中位数(像素单位),hfov/vfov 单位为弧度 |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| model_path | str | "/opt/aihc/models" | 模型所在目录 |
| model_name | str | "moge-2-vitl" | MoGe-2 所在路径 |
| frame_num | int | 3 | 均匀采样帧数,须 >= 1 |
| fail_on_error | bool | False | 推理异常时是否立即抛出;默认 False 返回空内参 |
调用示例
Python
1from __future__ import annotations
2
3import os
4
5import daft
6from daft import col
7
8from daft.aihc.common.udf import aihc_udf
9from daft.aihc.functions.video.video_camera_calibration_static_moge import (
10 VideoCameraCalibrationStaticMoge,
11)
12
13VIDEO = "bos://your-bucket/sample.mp4" # MOCK
14MODEL_PATH = "/opt/aihc/models" # MOCK
15
16os.environ.setdefault("BOS_ENDPOINT", "http://bj.bcebos.com")
17os.environ.setdefault("BOS_REGION", "bj")
18
19if __name__ == "__main__":
20 if os.getenv("DAFT_RUNNER", "native") == "ray":
21 import ray
22
23 ray.init(ignore_reinit_error=True)
24 daft.set_runner_ray()
25 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
26
27 samples = {"video": [VIDEO]}
28 ds = daft.from_pydict(samples)
29 ds = ds.with_column(
30 "result",
31 aihc_udf(
32 VideoCameraCalibrationStaticMoge,
33 construct_args={
34 "model_path": MODEL_PATH,
35 "model_name": "moge-2-vitl"
36 "frame_num": 3,
37 },
38 num_cpus=1,
39 num_gpus=1,
40 concurrency=1,
41 batch_size=1,
42 )(col("video")),
43 )
44 ds.show()
评价此篇文章
