SceneOptimizer cannot handle dropped cameras before rotation averaging
- 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
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