borglab / borglab/gtsfm

SceneOptimizer cannot handle dropped cameras before rotation averaging

Open
#164 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Jupyter Notebook
Stars
524
Forks
64
Avg merge
4h 1m
Merged PRs (30d)
3

Description

Although we can handle dropped cameras after DA, we can't before rot averaging:

- Shonan expects a rotation for every single camera frame (which may not exist if we have a subgraph from connected component)
- Alignment cannot handle `None` elements

Maybe to the rotation averaging wrapper we want to add
```python
+ # indices of cameras found inside connected subgraph
+ connected_idxs = set()

for (i1, i2), i2Ri1 in i2Ri1_dict.items():
if i2Ri1 is not None:
+ connected_idxs = connected_idxs.union(set([i1,i2]))

- return [result_values.atRot3(i) for i in range(num_images)]
+ # some camera indices may not have been present in connected component subgraph that is passed in
+ return [result_values.atRot3(i) if i in connected_idxs else None for i in range(num_images)]
```

Contributor guide

Open the contributing guide

Research direction

Start with the rotation averaging wrapper described in the issue, then trace how SceneOptimizer passes its results into Shonan and Alignment. Verify how missing camera indices from a connected-component subgraph are represented, and confirm that disconnected cameras remain None without causing Alignment to fail.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
computer-vision
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.