Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat_annotating_videos #711

Open
wants to merge 74 commits into
base: feat_annotation_ui
Choose a base branch
from

Conversation

YonatanSimson
Copy link

Made changes to enable working on MacOS
Support intake of of images with no GPS

Manuel Lopez Antequera and others added 30 commits September 16, 2020 09:48
Press the 'Auto GCP' button in any of the views to visualize tracks.
The tracks are color-coded, brighter tracks are longer.
Now click on any track to automatically create a GCP from it.
Now you only have to annotate the GCP on the images that didn't get reconstructed.

Press the 'Analyze' button to get some metrics about the positional accuracy of each frame and the reprojection error of each GCP.
This information will show up in the GCP list and frame lists of each view.
It also enables the 'jump to worst GCP' function (press Q)

Press Q (after having analyzed the annotations) to jump to the GCP that has the largest average reprojection error.
Every view that has at least one annotation for this GCP will jump to the frame within the sequence that has the worst reprojection error.
Use this to find wrongly annotated points.

Smart zoom behaviour upon displaying a new frame (From scrolling or clicking on a frame list):

- If sticky zoom is set and a GCP is selected:
  + If the GCP is visible, zoom to the GCP
  + otherwise, zoom to the last clicked x, y
- If sticky zoom is not set or there is no selected GCP, the view will show all the image.

Regardless of the 'sticky zoom' mode, the view will instantly zoom in after clicking to add a GCP.

- w/s to move forwards/backwards on all sequences (linked or not)
- x as a hotkey to enable / disable sticky zoom.

A list next to each view displays a list of all the frames in the sequence.
Clicking on a row in this list immediately jumps to that frame. Each row contains:

- Frame index.
- Count of annotated points.
- Positional uncertainty of each frame. Only available if the annotations were analyzed (click 'Analyze')

So there is no wasted time arranging windows before starting the annotation.
- 'Jump to GCP' (press a to jump to the current GCP in all views)
- New crosshairs for the annotations: small dot for the center and a circle of radius 5px.
- Friendly names for GCPs instead of random characters
- Currently selected frame is highlighted in each view
added buttons for both types of analysis.
- don't duplicate the resected shots
- use the gcps also in the initial BA
- ignore the GPS of the resected shots during BA
* master:
  fix: do not init glog (mapillary#653)
  chore: remove Python 2/3 doc
  chore: remove six
  chore: remove future imports
  feat: prepare for overload GCP loading
  feat: add manifold IO
  fix: fix division by zero bug
  feat: fix command line
  chore: fix typo in TopoCentriConverter
  Re-sync with internal repository
  Small fixes with big impact
  Fixed pickle error, deprecation warning (mapillary#645)
  Regression fix: allow build without tests (mapillary#640)
  refactor: seperate action from commands
  refactor: unify OpenSfM and mapillary_sfm commands under a common umbrella
  Feat: bundle and bundle_local in C++ (mapillary#628)
  fix: make test green !
  fix camera test
* master:
  Rename opensfm main module
Before, it only worked on the largest one.
* master:
  Add stub files for opensfm c++ extensions
  Run OpenSfM with spaces in filenames
  Added python topocentric converter to reconstruction
  Fix --binary argument in export_colmap
  Fix correspondence setup in bundle command
  Fix colmap import/export with new data structures
- faster draw times
- better contrast
- optionally disabled
The selection on the frame list always follows the currently selected frame
* origin/master:
  fix: import_colmap reprojection step works (mapillary#656)
  chore: add terms of service to README.md (mapillary#655)
This refactor is to accommodate other types of views (aerial, orthophotos). The gcp database, image loading logic and view ui logic have been disentangled into different classes.

The old view is now an ImageSequenceView subclassing from a more general View class.

Auto linting and formatting applied to all involved files as well.
- We can now load/save latitude and longitude from GCPs
- The GCP annotations in each orthophoto are saved as normalized pixels like all images.
- Additionally, a view can be tagged as a 'geo reference'. In that case, the gcp annotations will also include the lat/lon
* master:
  fix: support fisheye cameras with FOV > 180
Manuel Lopez Antequera and others added 22 commits January 12, 2021 18:54
* origin/master: (29 commits)
  build: use C++14 (mapillary#697)
  Fix parameter names
  vlfeat: avoid build warnings
  fix: GPS Altitude extraction (mapillary#648)
  Add new cameras to exif
  Add radial and simple_radial model to io
  Camera tests clean-up (4/n)
  Add SimpleRadial as Radial unit test (3/n)
  Add projection functions for radial/simple_radial (2/n)
  Add Radial/Simple_Radial types and create methods (1/n)
  Clean-up remaining Eigen::XX types
  Add unit tests for fisheye/fisheye62
  Fix: Return all distortion parameters from Python
  Add static method to get projection string
  fix: relax camera focal to prevent holes
  feat: statistics and report (mapillary#672)
  fix: no make_unique pre-C++14 (mapillary#688)
  feat: download merge rounds
  feat: add tracks merging
  Add option to use different cameras for images with unknown camera models
  ...
The results from run_ba.py are saved separately for each reconstruction pair, and the UI expects them to be named in that way.

GCP ids are now simple incremental integers.
* origin/master:
  build: add docker build with Ceres 2 (mapillary#702)
  Remove more SLAM stuff
  Fix build (mapillary#703)
  Upgrades to annotation UI (mapillary#699)
  Return (const) reference instead of pointers
  Forgot some SLAM code
  fix: update OpenSfM documentation
  fix: fix build
  feat: add semantic to the features and tracks
  Remove left-over SLAM stuff
  Add Topocentric converter convenience function
@mlopezantequera mlopezantequera self-assigned this Feb 25, 2021
@facebook-github-bot
Copy link
Contributor

Hi @YonatanSimson!

Thank you for your pull request.

We require contributors to sign our Contributor License Agreement, and yours needs attention.

You currently have a record in our system, but the CLA is no longer valid, and will need to be resubmitted.

Process

In order for us to review and merge your suggested changes, please sign at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need to sign the corporate CLA.

Once the CLA is signed, our tooling will perform checks and validations. Afterwards, the pull request will be tagged with CLA signed. The tagging process may take up to 1 hour after signing. Please give it that time before contacting us about it.

If you have received this in error or have any questions, please contact us at [email protected]. Thanks!

@mlopezantequera mlopezantequera force-pushed the feat_annotation_ui branch 3 times, most recently from f03c2e9 to 4a1a28a Compare May 4, 2021 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants