Skip to content

Commit b18da34

Browse files
authored
more robust (#23)
* update * tiny-solver * drop py38 39
1 parent 37856c6 commit b18da34

File tree

6 files changed

+30
-29
lines changed

6 files changed

+30
-29
lines changed

Cargo.toml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "camera-intrinsic-calibration"
3-
version = "0.8.0"
3+
version = "0.9.0"
44
edition = "2024"
55
authors = ["Powei Lin <poweilin1994@gmail.com>"]
66
readme = "README.md"
@@ -22,26 +22,26 @@ exclude = [
2222

2323
[dependencies]
2424
aprilgrid = "0.6.1"
25-
camera-intrinsic-model = "0.5.0"
25+
camera-intrinsic-model = "0.6.0"
2626
clap = { version = "4.5", features = ["derive"] }
2727
colorous = "1.0.16"
2828
env_logger = "0.11.8"
29-
faer = "0.22.6"
30-
glam = "0.30.3"
31-
glob = "0.3.2"
32-
image = "0.25.6"
33-
indicatif = { version = "0.17.11", features = ["rayon"] }
29+
faer = "0.23.2"
30+
glam = "0.30"
31+
glob = "0.3.3"
32+
image = "0.25"
33+
indicatif = { version = "0.18", features = ["rayon"] }
3434
log = "0.4.27"
35-
nalgebra = "0.33.2"
36-
rand = "0.9.1"
35+
nalgebra = "0.34.1"
36+
rand = "0.9.2"
3737
rand_chacha = "0.9.0"
3838
rayon = "1.10.0"
39-
rerun = "0.23.2"
40-
serde = { version = "1.0.219", features = ["derive"] }
41-
serde_json = "1.0.140"
42-
sqpnp_simple = "0.1.6"
43-
time = { version = "0.3.41", features = ["local-offset"] }
44-
tiny-solver = "0.17.1"
39+
rerun = "0.27"
40+
serde = { version = "1.0", features = ["derive"] }
41+
serde_json = "1.0"
42+
sqpnp_simple = "0.2.0"
43+
time = { version = "0.3", features = ["local-offset"] }
44+
tiny-solver = "0.18.0"
4545

4646
[[bin]]
4747
name = "ccrs"

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ ccrs dataset-calib-cam1_1024_16 --model eucm
3333
### Visualize details after calibration
3434
```sh
3535
# use cargo to install rerun
36-
cargo install rerun-cli --version 0.23.2
36+
cargo install rerun-cli --version 0.27.2
3737
# or use pip to install rerun
38-
pip install rerun-sdk==0.23.2
38+
pip install rerun-sdk==0.27.2
3939
# visualize result
4040
rerun results/20YYMMDD_HH_MM_SS/logging.rrd
4141
```

pyproject.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@ build-backend = "maturin"
44

55
[project]
66
name = "camera-intrinsic-calibration"
7-
requires-python = ">=3.8"
7+
requires-python = ">=3.10"
88
classifiers = [
99
"Programming Language :: Rust",
1010
"Programming Language :: Python :: Implementation :: CPython",
1111
"Programming Language :: Python :: Implementation :: PyPy",
12-
"Programming Language :: Python :: 3.8",
13-
"Programming Language :: Python :: 3.9",
1412
"Programming Language :: Python :: 3.10",
1513
"Programming Language :: Python :: 3.11",
1614
"Programming Language :: Python :: 3.12",

src/board.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ impl Board {
4949
for r in 0..tag_rows {
5050
for c in 0..tag_cols {
5151
let start_x = (c as f32) * tag_size_meter * (1.0 + tag_spacing);
52-
let start_y = -1.0 * (r as f32) * tag_size_meter * (1.0 + tag_spacing);
52+
let start_y = -(r as f32) * tag_size_meter * (1.0 + tag_spacing);
5353
id_to_3d.insert(
5454
count_id,
5555
glam::Vec3 {

src/optimization/factors.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ impl<T: na::RealField> Factor<T> for ModelConvertFactor {
5555
.iter()
5656
.zip(p2ds1)
5757
.flat_map(|(p0, p1)| {
58-
if let Some(p0) = p0 {
59-
if let Some(p1) = p1 {
60-
let pp = p0 - p1;
61-
return vec![pp[0].clone(), pp[1].clone()];
62-
}
58+
if let Some(p0) = p0
59+
&& let Some(p1) = p1
60+
{
61+
let pp = p0 - p1;
62+
return vec![pp[0].clone(), pp[1].clone()];
6363
}
6464
vec![T::from_f64(10000.0).unwrap(), T::from_f64(10000.0).unwrap()]
6565
})

src/util.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,14 @@ fn set_problem_parameter_disabled(
7171

7272
fn features_avg_center(features: &HashMap<u32, FeaturePoint>) -> glam::Vec2 {
7373
features
74-
.iter()
75-
.map(|(_, p)| p.p2d)
74+
.values()
75+
.map(|p| p.p2d)
7676
.reduce(|acc, e| acc + e)
7777
.unwrap()
7878
/ features.len() as f32
7979
}
8080
fn features_covered_area(features: &HashMap<u32, FeaturePoint>) -> f32 {
81-
let (xmin, ymin, xmax, ymax) = features.iter().map(|(_, p)| p.p2d).fold(
81+
let (xmin, ymin, xmax, ymax) = features.values().map(|p| p.p2d).fold(
8282
(f32::MAX, f32::MAX, f32::MIN, f32::MIN),
8383
|acc, e| {
8484
let xmin = acc.0.min(e.x);
@@ -397,6 +397,9 @@ pub fn calib_camera(
397397
.map(|p2| (p3, glam::Vec2::new(p2.x as f32, p2.y as f32)))
398398
})
399399
.unzip();
400+
if p3ds.len() < 10 {
401+
continue;
402+
}
400403
valid_indexes.push(i);
401404
let (rvec, tvec) =
402405
rtvec_to_na_dvec(sqpnp_simple::sqpnp_solve_glam(&p3ds, &p2ds_z).unwrap());

0 commit comments

Comments
 (0)