Bug fix visual sort voting logic #123
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes in Visual Voting Logic
This PR addresses two critical issues in the visual association logic that caused suboptimal assignment of observations to tracks:
1. Fallback Matching for Non-Best Matches
Problem:
In the previous implementation of BestFitVoting, if multiple observations preferred the same track, only the highest-scoring one would be matched. All others were immediately assigned to themselves (fallback), even if they had other suitable — but slightly less optimal — track options.
Fix:
Introduced BestFitVotingWithFallback, which iterates through each observation’s ranked candidates and assigns it to the best available track. Only if none are available, it falls back to self-assignment.
2. Self-Assigned Observations Blocked Positional Voting
Problem:
Observations that failed to match any track via feature distance were assigned to themselves (to fulfill API expectations). These were mistakenly treated as “matched” and were excluded from the positional (geometry-based) assignment phase.
Fix:
Self-assigned observations are now filtered out from feature_winners, allowing them to continue into the positional voting stage. This enables geometry-based matching as a true fallback path.
Combined Result: