All Projects → naver → Kapture

naver / Kapture

Licence: bsd-3-clause
kapture is a file format as well as a set of tools for manipulating datasets, and in particular Visual Localization and Structure from Motion data.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Kapture

kapture-localization
Provide mapping and localization pipelines based on kapture format
Stars: ✭ 111 (-13.28%)
Mutual labels:  localization, structure-from-motion, sfm, image-retrieval
simple-sfm
A readable implementation of structure-from-motion
Stars: ✭ 19 (-85.16%)
Mutual labels:  structure-from-motion, sfm
Dl Vision Papers
深度学习和三维视觉相关的论文
Stars: ✭ 123 (-3.91%)
Mutual labels:  sfm, localization
how-to-sfm
A self-reliant tutorial on Structure-from-Motion
Stars: ✭ 112 (-12.5%)
Mutual labels:  structure-from-motion, sfm
Openibl
[ECCV-2020 (spotlight)] Self-supervising Fine-grained Region Similarities for Large-scale Image Localization. 🌏 PyTorch open-source toolbox for image-based localization (place recognition).
Stars: ✭ 128 (+0%)
Mutual labels:  image-retrieval, localization
Mvstudio
An integrated SfM (Structure from Motion) and MVS (Multi-View Stereo) solution.
Stars: ✭ 154 (+20.31%)
Mutual labels:  sfm, structure-from-motion
cv-arxiv-daily
🎓Automatically Update CV Papers Daily using Github Actions (Update Every 12th hours)
Stars: ✭ 216 (+68.75%)
Mutual labels:  structure-from-motion, sfm
Monocularsfm
Monocular Structure from Motion
Stars: ✭ 128 (+0%)
Mutual labels:  sfm, structure-from-motion
Dagsfm
Distributed and Graph-based Structure from Motion
Stars: ✭ 269 (+110.16%)
Mutual labels:  sfm, structure-from-motion
Blender Addon Photogrammetry Importer
Addon to import different photogrammetry formats into Blender
Stars: ✭ 292 (+128.13%)
Mutual labels:  sfm, structure-from-motion
Openmvg
open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.
Stars: ✭ 3,902 (+2948.44%)
Mutual labels:  sfm, structure-from-motion
DenseDescriptorLearning-Pytorch
Official Repo for the paper "Extremely Dense Point Correspondences using a Learned Feature Descriptor" (CVPR 2020)
Stars: ✭ 66 (-48.44%)
Mutual labels:  structure-from-motion, sfm
Uav Mapper
UAV-Mapper is a lightweight UAV Image Processing System, Visual SFM reconstruction or Aerial Triangulation, Fast Ortho-Mosaic, Plannar Mosaic, Fast Digital Surface Map (DSM) and 3d reconstruction for UAVs.
Stars: ✭ 106 (-17.19%)
Mutual labels:  sfm, structure-from-motion
Awesome Learning Mvs
A list of awesome learning-based multi-view stereo papers
Stars: ✭ 27 (-78.91%)
Mutual labels:  sfm, structure-from-motion
Hierarchical Localization
Visual localization made easy with hloc
Stars: ✭ 997 (+678.91%)
Mutual labels:  image-retrieval, structure-from-motion
Rtabmap
RTAB-Map library and standalone application
Stars: ✭ 1,376 (+975%)
Mutual labels:  localization
Hypertag
Knowledge Management for Humans using Machine Learning & Tags
Stars: ✭ 116 (-9.37%)
Mutual labels:  image-retrieval
Dwm1001 Examples
Simple C examples for Decawave DWM1001 hardware
Stars: ✭ 101 (-21.09%)
Mutual labels:  localization
Localechanger
An Android library to programmatically set the Locale of an app and persist the configuration.
Stars: ✭ 100 (-21.87%)
Mutual labels:  localization
Phabricator zh hans
Phabricator zh-Hans Translation & Tools.
Stars: ✭ 113 (-11.72%)
Mutual labels:  localization

= kapture: data format :sectnums: :sectnumlevels: 1 :toc: macro :toclevels: 2

image::assets/kapture_logo.svg["KAPTURE", width=64px]

toc::[]

image::https://github.com/naver/kapture/workflows/kapture-main/badge.svg[Continuous Integration Status]

== Overview

Kapture is a pivot file format, based on text and binary files, used to describe SfM (Structure From Motion) and more generally sensor-acquired data.

It can be used to store sensor parameters and raw sensor data:

  • cameras
  • images
  • lidar and other sensor data

As well as computed data:

  • 2d features
  • 3d reconstruction

Finally, many popular datasets can directly be downloaded using the convenient https://github.com/naver/kapture/blob/main/doc/tutorial.adoc#download-a-dataset[downloader]!

== Specifications The format specification is detailed in the link:kapture_format.adoc[kapture format specifications document].

== Example File Structure

This is an example file structure of a dataset in the kapture format.

[source,txt]

my_dataset # Dataset root path ├─ sensors/ # Sensor data root path │ ├─ sensors.txt # list of all sensors with their specifications (e.g. camera intrinsics) │ ├─ rigs.txt # geometric relationship between sensors (optional) │ ├─ trajectories.txt # extrinsics (timestamp, sensor, pose) │ ├─ records_camera.txt # all records of type 'camera' (timestamp, sensor and path to image) │ ├─ records_SENSOR_TYPE.txt # all records of type SENSOR_TYPE (other sensors, eg: 'magnetic', 'pressure'...) │ └─ records_data/ # image and lidar data path │ ├─ map/cam_01/00001.jpg # image path used in records_camera.txt (example) │ ├─ map/cam_01/00002.jpg │ ├─ map/lidar_01/0001.pcd # lidar data path used in records_lidar.txt │ ├─ query/query001.jpg # image path used in records_camera.txt │ ├─ ... ├─ reconstruction/ │ ├─ keypoints/ # 2D keypoints files │ │ ├─ keypoints.txt # type of keypoint │ │ ├─ map/cam_01/00001.jpg.kpt # keypoints for corresponding image (example) │ │ ├─ query/query001.jpg.kpt # keypoints for corresponding image (example) │ │ ├─ ... │ ├─ descriptors/ # keypoint descriptors files │ │ ├─ descriptors.txt # type of descriptor │ │ ├─ map/cam_01/00001.jpg.desc # descriptors for corresponding image (example) │ │ ├─ query/query001.jpg.desc # descriptors for corresponding image (example) │ │ ├─ ... │ ├─ ... │ ├─ points3d.txt # 3D points of the reconstruction │ ├─ observations.txt # 2D/3D points corespondences │ ├─ matches/ # matches files. │ │ ├─ map/cam_01/00001.jpg.overlapping/cam_01/00002.jpg.matches # example │ │ ├─ ...

== Software

The kapture format is provided with a Python library, as well as several conversion tools.

=== Install

[source,bash] pip install kapture

or see link:doc/installation.adoc[installation] for more detailed instructions.

=== Using docker

Build the docker image:

[source,bash]

build the docker image : if you have already cloned the repository

docker build . -t kapture/kapture

OR build the docker image directly from github

docker build git://github.com/naver/kapture -t kapture/kapture

run unit tests

docker run -it --rm kapture/kapture python3 -m unittest discover -s /opt/src/kapture/tests

If you want to process your own data, you can bind directories between the host and the container using --volume or --mount option (See the https://docs.docker.com/storage/bind-mounts/[docker documentation]). The following example mounts /path/to/dataset/ from the host to /dataset inside the docker.

[source,bash]

docker run -it
--rm \ # Automatically remove the container when it exits
--volume /path/to/dataset/:/dataset:ro \ #read only kapture/kapture

=== kapture Python library

See the https://github.com/naver/kapture/blob/main/doc/tutorial.adoc#using-kapture-in-your-code[tutorial] for some examples using the kapture Python library.

=== kapture tools

In this repository, you will find a set of conversion tools to or from kapture format. Import results to kapture format, and conversely, export converts kapture data to other formats. Depending of the format, some data might not be converted, either because the other format does not support it () or because its was not implemented (). Here is a table summarizing the conversion capabilities:

.conversion capabilities |=== | Format | <- -> | cam | rig | img | trj | gps | kpt | dsc | gft | p3D | obs | mch

.2+| colmap | import | ✓ | ✓ | ✓ | ✓ | ⨉ | ✓ | ✓ | — | ✓ | ✓ | (✓) | export | ✓ | ✓ | ✓ | ✓ | ⨉ | ✓ | ✓ | — | ✓ | ✓ | (✓) .2+| openmvg | import | ✓ | — | ✓ | ✓ | ⨉ | — | — | — | — | — | — | export | ✓ | — | ✓ | ✓ | ⨉ | — | — | — | — | — | — .2+| OpenSfM | import | ✓ | ⨉ | ✓ | ✓ | ✓ | ✓ | ✓ | — | ✓ | ⨉ | ✓ | export | ✓ | ⨉ | ✓ | ✓ | ⨉ | ✓ | — | ✓ | — | ⨉ | ✓ | bundler | import | ✓ | — | ✓ | ✓ | — | ✓ | — | — | ✓ | ✓ | — | image_folder | import | — | — | ✓ | — | — | — | — | — | — | — | — | image_list | import | ✓ | — | ✓ | — | — | — | — | — | — | — | — | nvm | import | ✓ | — | ✓ | ✓ | — | ✓ | — | — | ✓ | ✓ | — | IDL_dataset_cvpr17 | import | ✓ | — | ✓ | ✓ | — | — | — | — | — | — | — | RobotCar_Seasons | import | ✓ | ✓ | ✓ | ✓ | — | ✓ | ? | — | ✓ | ✓ | ? | ROSbag cameras+trajectory | import | (✓) | (✓) | ✓ | ✓ | ⨉ | — | — | — | — | — | — | SILDa | import | ✓ | ✓ | ✓ | ✓ | — | — | — | — | — | — | — | virtual_gallery | import | ✓ | ✓ | ✓ | ✓ | — | — | — | — | — | — | — |===

:Notes:

  • : supported, (✓) partially supported, : not implemented, : not supported by format.
  • cam: handle camera parameters, eg. intrisics
  • rig: handle rig structure.
  • img: handle the path to images.
  • trj: handle trajectories, eg. poses.
  • kpt: handle image keypoints locations.
  • dsc: handle image keypoints descriptors.
  • gft: handle global image feature descriptors.
  • p3D: handle 3D point clouds.
  • obs: handle observations, ie. 3D-points / 2D keypoints correspondences.
  • mch: handle keypoints matches.

== kapture support in other packages

=== Local Features

=== Global Features

== Datasets

The kapture package provides conversion tools for several data formats and datasets used in the domain. But it also provides a tool to download datasets already converted to kapture. See the link:doc/tutorial.adoc[kapture tutorial] for instructions to use the dataset downloader.

Here is a list of datasets you can directly download in kapture format with the downloader tool:

== kapture-localization

Checkout https://github.com/naver/kapture-localization[kapture-localization], our toolbox which contains implementations for various localization related algorithms.

  • mapping and localization pipelines with custom features
  • mapping and localization pipelines with SIFT and vocabulary tree matching (default colmap pipeline)
  • image retrieval benchmark (global sfm, local sfm, pose approximation)

== Tutorial

See the link:doc/tutorial.adoc[kapture tutorial] for a short introduction to:

  • conversion tools
  • using kapture in your code
  • dataset download

== Contributing

There are many ways to contribute to the kapture project:

  • provide feedback and suggestions of improvements
  • submit bug reports in the project bug tracker
  • provide a dataset in kapture format that we can add to the downloader tool
  • implement a feature or bug-fix for an outstanding issue
  • add support of kapture format in other software packages (e.g. SfM pipelines...), thus adding support for more datasets
  • provide scripts to create data in kapture format (e.g. local/global feature extraction)
  • propose a new feature and implement it

If you wish to contribute, please refer to the link:CONTRIBUTING.adoc[CONTRIBUTING] page.

== License Software license is detailed in the link:LICENSE[LICENSE] file.

== Contact Us You can contact us through https://github.com/naver/kapture[GitHub], or at kapture at naverlabs + com

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].