#计算机视觉 #视觉 #计算机 #摄影测量 #2D-3D

无 std dlt

DLT (直接线性变换) 相机标定算法

16 个版本 (破坏性)

0.13.0 2024 年 8 月 4 日
0.12.0 2023 年 8 月 28 日
0.11.0 2022 年 5 月 2 日
0.9.1 2021 年 9 月 27 日
0.2.2 2020 年 3 月 22 日

#505 in 算法

Download history 240/week @ 2024-04-16 81/week @ 2024-04-23 81/week @ 2024-04-30 56/week @ 2024-05-07 59/week @ 2024-05-14 50/week @ 2024-05-21 149/week @ 2024-05-28 45/week @ 2024-06-04 128/week @ 2024-06-11 58/week @ 2024-06-18 50/week @ 2024-06-25 60/week @ 2024-07-02 59/week @ 2024-07-09 130/week @ 2024-07-16 346/week @ 2024-07-23 242/week @ 2024-07-30

每月 810 次下载

MIT/Apache

23KB
293

Crate dlt 用于 Rust 语言

Crates.io Documentation Crate License Dependency status build

DLT (直接线性变换) 相机标定算法

通常用于校准相机,需要至少 6 对 2D 和 3D 位置对应点。

测试

单元测试

运行单元测试

cargo test

测试 no_std

由于 thumbv7em-none-eabihf 目标没有 std 可用,我们可以为它构建,以检查我们的 crate 是否意外地引入了 std。单元测试需要 std,因此不能在 no_std 平台上运行。以下示例将失败,如果存在 std 依赖项

# install target with: "rustup target add thumbv7em-none-eabihf"
cargo build --no-default-features --target thumbv7em-none-eabihf

示例

use dlt::{dlt_corresponding, CorrespondingPoint};

let points: Vec<CorrespondingPoint<f64>> = vec![
    CorrespondingPoint {
        object_point: [-1., -2., -3.],
        image_point: [219.700, 39.400],
    },
    CorrespondingPoint {
        object_point: [0., 0., 0.],
        image_point: [320.000, 240.000],
    },
    CorrespondingPoint {
        object_point: [1., 2., 3.],
        image_point: [420.300, 440.600],
    },
    CorrespondingPoint {
        object_point: [1.1, 2.2, 3.3],
        image_point: [430.330, 460.660],
    },
    CorrespondingPoint {
        object_point: [4., 5., 6.],
        image_point: [720.600, 741.200],
    },
    CorrespondingPoint {
        object_point: [4.4, 5.5, 6.6],
        image_point: [760.660, 791.320],
    },
    CorrespondingPoint {
        object_point: [7., 8., 9.],
        image_point: [1020.900, 1041.800],
    },
    CorrespondingPoint {
        object_point: [7.7, 8.8, 9.9],
        image_point: [1090.990, 1121.980],
    },
];

let pmat = dlt_corresponding(&points, 1e-10).unwrap();
// could now call `cam_geom::Camera::from_perspective_matrix(&pmat)`

另请参阅

您可能还对以下内容感兴趣

  • cam-geom - Rust crate,包含 3D 相机模型,可以使用 DLT 的校准数据。
  • dlt-examples
    • 位于 dlt 仓库中的未发布 crate,演示了与 cam-geom 库一起使用的方法。

重新生成 README.md

可以使用以下方法重新生成 README.md 文件

cargo readme > README.md

行为准则

任何与该软件互动的人,包括但不限于这个 GitHub 仓库,都必须遵循我们的 行为准则

许可证

根据以下任一项许可证授权

依赖项

~3.5MB
~74K SLoC