Skip to content

Validate camera projection matrix shapes#3227

Merged
FlorianPfaff merged 2 commits into
mainfrom
fix-camera-projection-shape-validation
Jun 27, 2026
Merged

Validate camera projection matrix shapes#3227
FlorianPfaff merged 2 commits into
mainfrom
fix-camera-projection-shape-validation

Conversation

@FlorianPfaff

Copy link
Copy Markdown
Owner

Summary

  • validate camera_projection_measurement(..., rotation=...) as a 3x3 matrix before applying it
  • validate camera_projection_measurement(..., camera_matrix=...) as a 3x3 projective camera matrix before homogeneous projection
  • add regression coverage for malformed camera geometry shapes while preserving a valid projection case

Bug fixed

Malformed camera geometry inputs were not validated deterministically. A length-3 rotation vector could be treated as a vector dot product and then broadcast with translation, producing silently wrong camera coordinates. Malformed camera matrices could also surface as low-level matmul or index errors. The helper now rejects these cases with explicit ValueErrors naming rotation or camera_matrix.

Testing

  • GitHub compare verified only src/pyrecest/models/sensor_models.py and tests/test_camera_projection_validation.py changed.
  • Full local pytest was not run because the execution sandbox cannot resolve github.com to clone/install the repository.

@github-actions

Copy link
Copy Markdown
Contributor

MegaLinter analysis: Success

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ COPYPASTE jscpd yes no no 74.58s
✅ JSON prettier 7 0 0 0 1.28s
✅ JSON v8r 7 0 0 4.99s
✅ MARKDOWN markdownlint 68 0 0 0 1.83s
✅ MARKDOWN markdown-table-formatter 68 0 0 0 0.84s
✅ PYTHON black 1047 49 0 0 69.76s
✅ PYTHON isort 1047 70 0 0 4.38s
✅ REPOSITORY checkov yes no no 52.44s
✅ REPOSITORY gitleaks yes no no 7.49s
✅ REPOSITORY git_diff yes no no 0.13s
✅ REPOSITORY secretlint yes no no 33.04s
✅ REPOSITORY syft yes no no 4.04s
✅ REPOSITORY trivy-sbom yes no no 11.97s
✅ REPOSITORY trufflehog yes no no 22.8s
✅ YAML prettier 11 0 0 0 0.85s
✅ YAML v8r 11 0 0 12.66s
✅ YAML yamllint 11 0 0 0.58s

Notices

📣 MegaLinter 9.5.0 is out! Discover the new features and security recommendations in the release announcement. (Skip this info by defining SECURITY_SUGGESTIONS: false)

See detailed reports in MegaLinter artifacts

Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)

  • Documentation: Custom Flavors
  • Command: npx mega-linter-runner@9.5.0 --custom-flavor-setup --custom-flavor-linters PYTHON_BLACK,PYTHON_ISORT,COPYPASTE_JSCPD,JSON_V8R,JSON_PRETTIER,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_GITLEAKS,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

MegaLinter is graciously provided by OX Security
Show us your support by starring ⭐ the repository

@FlorianPfaff FlorianPfaff merged commit 8e25b7b into main Jun 27, 2026
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant