Skip to content

Add abstract interface for multiple extended-object trackers#1863

Merged
FlorianPfaff merged 8 commits intomainfrom
add-meot-abstract-interface
Apr 25, 2026
Merged

Add abstract interface for multiple extended-object trackers#1863
FlorianPfaff merged 8 commits intomainfrom
add-meot-abstract-interface

Conversation

@FlorianPfaff
Copy link
Copy Markdown
Owner

Summary

  • Adds AbstractMultipleExtendedObjectTracker, inheriting from AbstractMultitargetTracker.
  • Adds structured MEOT dataclasses: ExtendedObjectEstimate, ExtendedObjectAssociationResult, and MultipleExtendedObjectStepResult.
  • Supports vectorized point-estimate compatibility, structured object extraction, contour extraction, measurement-rate histories, cardinality histories, and extended-object association histories.
  • Exports the new interface from pyrecest.filters.

Rationale

Multiple extended-object tracking differs from point-target MTT because one object can generate multiple detections in one scan. The association interface therefore models object-to-measurement-cell assignments, clutter cells, birth cells, and optional global hypotheses rather than only one-to-one track/measurement pairs.

Tests

  • Adds focused unit tests for vectorized estimate output, structured object estimates, measurement-rate extraction, contour labels, step results, and history logging.

Notes

This PR adds the abstract interface only; concrete GGIW/PMBM/GLMB/track-manager implementations can build on it in follow-up changes.

@FlorianPfaff FlorianPfaff enabled auto-merge (squash) April 25, 2026 09:30
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 25, 2026

MegaLinter analysis: Success

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ COPYPASTE jscpd yes no no 19.11s
✅ JSON prettier 2 0 0 0 0.51s
✅ JSON v8r 2 0 0 2.69s
✅ MARKDOWN markdownlint 2 0 0 0 0.7s
✅ MARKDOWN markdown-table-formatter 2 0 0 0 0.25s
✅ PYTHON bandit 392 0 0 5.93s
✅ PYTHON black 392 7 0 0 9.45s
✅ PYTHON flake8 392 0 0 3.35s
✅ PYTHON isort 392 9 0 0 0.76s
✅ PYTHON mypy 392 0 0 5.26s
✅ PYTHON pylint 392 0 0 120.14s
✅ PYTHON ruff 392 9 0 0 0.07s
✅ REPOSITORY checkov yes no no 23.16s
✅ REPOSITORY gitleaks yes no no 10.57s
✅ REPOSITORY git_diff yes no no 0.03s
✅ REPOSITORY secretlint yes no no 7.52s
✅ REPOSITORY syft yes no no 3.08s
✅ REPOSITORY trivy-sbom yes no no 2.21s
✅ REPOSITORY trufflehog yes no no 20.7s
✅ YAML prettier 4 0 0 0 0.46s
✅ YAML v8r 4 0 0 5.71s
✅ YAML yamllint 4 0 0 0.47s

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.4.0 --custom-flavor-setup --custom-flavor-linters PYTHON_PYLINT,PYTHON_BLACK,PYTHON_FLAKE8,PYTHON_ISORT,PYTHON_BANDIT,PYTHON_MYPY,PYTHON_RUFF,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 345c004 into main Apr 25, 2026
17 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