Giter Site home page Giter Site logo

openmvg / openmvg Goto Github PK

View Code? Open in Web Editor NEW
5.5K 274.0 1.6K 30.46 MB

open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.

License: Mozilla Public License 2.0

Python 0.76% C++ 83.71% C 8.73% CMake 4.35% JavaScript 2.08% HTML 0.19% CSS 0.14% Dockerfile 0.03%
geometry computer-vision openmvg structure-from-motion sfm multiple-view-geometry drone photogrammetry 3d-reconstruction

openmvg's Introduction

OpenMVG (open Multiple View Geometry)

License Documentation Continuous Integration (Linux/MacOs/Windows) Build Code Quality Chat
GitHub license doc
Wiki
CI local/docker build tutorial CodeQL
CodeFactor
Join the chat

Our Mission

  • Extend awareness of the power of 3D reconstruction from images/photogrammetry by developing a C++ framework.

Our Vision

  • Simplify reproducible research with easy-to-read and accurate implementation of state of the art and "classic" algorithms.

Our Credo

  • "Keep it simple, keep it maintainable".
    • OpenMVG is designed to be easy to read, learn, modify and use.
    • Thanks to its strict test-driven development and samples, the library allows to build trusted larger systems.

Our codebase and pipeline

OpenMVG provides an end-to-end 3D reconstruction from images framework compounded of libraries, binaries, and pipelines.

  • The libraries provide easy access to features like: images manipulation, features description and matching, feature tracking, camera models, multiple-view-geometry, robust-estimation, structure-from-motion algorithms, ...
  • The binaries solve unit tasks that a pipeline could require: scene initialization, feature detection & matching and structure-from-motion reconstruction, export the reconstructed scene to others Multiple-View-Stereovision framework to compute dense point clouds or textured meshes.
  • The pipelines are created by chaining various binaries to compute image matching relation, solve the Structure from Motion problem (reconstruction, triangulation, localization) and ...

OpenMVG is developed in C++ and runs on Android, iOS, Linux, macOS, and Windows.

Tutorials

More information

Authors

See Authors text file

Contact

openmvg-team[AT]googlegroups.com

Citations

We are recommending citing OpenMVG if you are using the whole library or the adequate paper if you use only a submodule AContrario Ransac [3], AContrario SfM [1], GlobalSfM [4] or Tracks [2]:

@inproceedings{moulon2016openmvg,
  title={Open{MVG}: Open multiple view geometry},
  author={Moulon, Pierre and Monasse, Pascal and Perrot, Romuald and Marlet, Renaud},
  booktitle={International Workshop on Reproducible Research in Pattern Recognition},
  pages={60--74},
  year={2016},
  organization={Springer}
}

[1] Moulon Pierre, Monasse Pascal and Marlet Renaud. ACCV 2012. Adaptive Structure from Motion with a contrario model estimation.

@inproceedings{Moulon2012,
  doi = {10.1007/978-3-642-37447-0_20},
  year  = {2012},
  publisher = {Springer Berlin Heidelberg},
  pages = {257--270},
  author = {Pierre Moulon and Pascal Monasse and Renaud Marlet},
  title = {Adaptive Structure from Motion with a~Contrario Model Estimation},
  booktitle = {Proceedings of the Asian Computer Vision Conference (ACCV 2012)}
}

[2] Moulon Pierre and Monasse Pascal. CVMP 2012. Unordered feature tracking made fast and easy.

@inproceedings{moulon2012unordered,
  title={Unordered feature tracking made fast and easy},
  author={Moulon, Pierre and Monasse, Pascal},
  booktitle={CVMP 2012},
  pages={1},
  year={2012}
}

[3] Moisan Lionel, Moulon Pierre and Monasse Pascal. IPOL 2012. Automatic Homographic Registration of a Pair of Images, with A Contrario Elimination of Outliers.

@article{moisan2012automatic,
  title={Automatic homographic registration of a pair of images, with a contrario elimination of outliers},
  author={Moisan, Lionel and Moulon, Pierre and Monasse, Pascal},
  journal={Image Processing On Line},
  volume={2},
  pages={56--73},
  year={2012}
}

[4] Moulon Pierre, Monasse Pascal, and Marlet Renaud. ICCV 2013. Global Fusion of Relative Motions for Robust, Accurate and Scalable Structure from Motion.

@inproceedings{moulon2013global,
  title={Global fusion of relative motions for robust, accurate and scalable structure from motion},
  author={Moulon, Pierre and Monasse, Pascal and Marlet, Renaud},
  booktitle={Proceedings of the IEEE International Conference on Computer Vision},
  pages={3248--3255},
  year={2013}
}

Acknowledgements

openMVG authors would like to thanks libmv authors for providing an inspiring base to design openMVG. Authors also would like to thanks Mikros Image and LIGM-Imagine laboratory for support and authorization to make this library an opensource project.

openmvg's People

Contributors

bchretien avatar bjornpiltz avatar caymard avatar cbalint13 avatar cdcseacave avatar erikreed avatar fcastan avatar flosincapite avatar hcjghr avatar jkerfs avatar kant avatar kevincain avatar lcalvet avatar mirmix avatar mitjap avatar nikolausdemmel avatar orva avatar pmoulon avatar rfabbri avatar rhiestan avatar rjanvier avatar rperrot avatar seepa avatar simogasp avatar stefanbruens avatar tjdahlke avatar vins31 avatar whuaegeanse avatar yannnnnnnnnnnn avatar yanxke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openmvg's Issues

[BA, openMVG_Samples] robust_essential, robust_essential_ba

Refactor robust_essential in order to create later a new sample that show how to use Bundle Adjustment once camera positions and orientations and structure have been computed.

robust_essential_ba will show :

  • How compute a essential matrix from known calibration
  • How refine the camera motion, focal and structure with Bundle Adjustment
    • way 1: independent cameras [R|t|f] and structure
    • way 2: independent cameras motion [R|t], shared focal [f] and structure

[LInfinityCV] Global rotation computation

Add a dense implementation of the Daniel Martinec global rotations computation from relative rotations.

Implementation will follow subpart of the following papers:

  • Robust Rotation and Translation Estimation in Multiview Reconstruction.
    Daniel Martinec, Tomás Pajdla, CVPR 2007
  • Daniel Martinec PhD Thesis: "Robust Multiview Reconstruction.". 2008.

Add the associated unit test.

[SfM] Create a High level structure for Image matching on photo collection

Divide main_computeMatches into simple interface that can be customized.

ImageCollectionMatcher -> Generic interface for putative matches between image pairs
-> ImageCollectionMatcher_AllInMemory -> specialization

Geometric filtering of putatives matches is performed by ImageCollectionGeometricFilter -> Interface
-> Used robust geometric filter is customizable in order to use Fundamental, Homography filters...

Add K-VLD filter implementation

Add a derived implementation of K-VLD ( a photometric matches filtering step ):

  • "Virtual Line Descriptor and Semi-Local Graph Matching Method for Reliable Feature Correspondence", Z. LIU and R. MARLET, British Machine Vision Conference 2012: Guildford (September 2012)

Code is based on https://github.com/Zhe-LIU-Imagine/KVLD and adapted to openMVG image datastructures.

testing not working after make

i am so sad noting works
while testing i got this errors :
1 - openMVG_test_image (Not Run)
2 - openMVG_test_image_drawing (Not Run)
3 - openMVG_test_image_io (Not Run)
4 - openMVG_test_features (Not Run)
5 - openMVG_test_matching (Not Run)
6 - openMVG_test_matching_filters (Not Run)
7 - openMVG_test_indMatch (Not Run)
8 - openMVG_test_triangulation (Not Run)
9 - openMVG_test_triangulation_nview (Not Run)
10 - openMVG_test_solver_affine (Not Run)
11 - openMVG_test_solver_fundamental_kernel (Not Run)
12 - openMVG_test_solver_essential_kernel (Not Run)
13 - openMVG_test_solver_homography_kernel (Not Run)
14 - openMVG_test_solver_essential_five_point (Not Run)
15 - openMVG_test_solver_resection_kernel (Not Run)
16 - openMVG_test_numeric (Not Run)
17 - openMVG_test_poly (Not Run)
18 - openMVG_test_lm (Not Run)
19 - openMVG_test_tracks (Not Run)
20 - openMVG_test_rand_sampling (Not Run)
21 - openMVG_test_robust_estimator_lineKernel (Not Run)
22 - openMVG_test_robust_estimator_MaxConsensus (Not Run)
23 - openMVG_test_robust_estimator_Ransac (Not Run)
24 - openMVG_test_robust_estimator_LMeds (Not Run)
25 - openMVG_test_robust_estimator_ACRansac (Not Run)

     any help pls

os :ubuntu

[LInfinityCV] Add a 7dof rigid registration between point clouds (sRT).

3D rigid transformation estimation (7 dof)

It computes a Scale Rotation and Translation rigid transformation.

  • This transformation provide a distortion-free transformation
  • Solved using the following formulation Xb = S * R * Xa + t.
  • Implementation follow: Haralick, Robert, Shapiro, Linda. Computer and Robot Vision book, 1992.
    • Linear and Least Square formulation and non linear refinement.

compilation error of 'openMVG_main_sfmViewer'

Hi,

I got this "error C3861: "getErrorString": identifier not found" in the function "glCheckError" of the main.cpp of openMVG_main_sfmViewer project. I found this "getErrorString" function is in the init.c of glfw project and not declared in any header file.

can anyone tell me how to fix it?

[LInfinityCV] Add documentation

  • linearProgrammingmodule
    • Linear programming program and solver interface
  • linearProgramming/lInfinityCVmodule
    • Linear programming used for Computer Vision problems
  • software/globalSfM
    • Direct used of the linearProgramming/lInfinityCVmodule to perform global Structure from Motion

[LInfinityCV] Global translations from triplets of relatives heading translations

Implementation of the LINEAR PROGRAM (9) of the following paper:

  • "Global Fusion of Relative Motions for Robust, Accurate and Scalable Structure from Motion."
    Authors: Pierre MOULON, Pascal MONASSE and Renaud MARLET. ICCV 2013.

It integrates the relative translation directions (of image triplets) and compute global translations using a l-∞ method.

Add the associated unit test.

iOS Build

Will it be possible to build openMVG for iOS?
Would be very good.

ACRANSAC

Hi Pierre,

I recently read you papers about a contratio RANSAC, and I was very enthusiastic about the parameter free estimator idea. Therefore, these days I have implemented it in my pipeline replacing the MSAC essential and resection estimators. However I am not happy with the results, and here are the issues I observed:

  • using no max threshold ACRANSAC returns all points as inliers for small sets (like around 100 corresponding points for E). Unfortunately this is a big problem as there lots of such estimations to be done even when the photos are well-connected cause there are many tests to be done for the far apart photos, exactly where the feature correspondences set is more contaminated by outliers than usual.
  • it is much slower than MSAC (around 30 times). That is because of the extra 10% compulsory iterations, unfortunately without which it does not estimate well the threshold.

I am writing you with the hope that you can share your experience with its implementation in openMVG. Did you notice also this issues or is there something wrong I am doing?

Thanks,
Dan

Segmentation Fault in SfMIncrementalEngine.cpp - [Win32]

Just pulled the latest code from the master branch, compiled it, and ran the following executables for the provided SceauxCastle imageset and its camera matrix:

openMVG_main_computeMatches
openMVG_main_IncrementalSfM
(repectively)

The first executable runs just fine, but the second one exits with a Segmentation fault.
Tracked down the error, and the problematic line:

SfMIncrementalEngine.cpp, line 448: _reconstructorData.map_Camera.insert(std::make_pair(J, SimpleCamera(_K, R2, t2)));

Tried the same procedure with the latest develper branch, and the problem persists, though it fails already when inserting the first index/camera pair to the map_Camera collection:

SfMIncrementalEngine.cpp, line 455: _reconstructorData.map_ACThreshold.insert(std::make_pair(I, errorMax));

Environment:
Ubuntu 13.04 x86
GNU GCC 4.7.3

[LInfinityCV] Add l_infinity computer vision solvers

Add solver for computer vision problem that minimize the l_infinity residual image errors of the observations.

  • Resection/Pose estimation,
  • Triangulation (from 2 to n views),
  • Translation and structure computation from known rotations
    • noiseless formulation
    • robust formulation by using slack variables.

Implementation will be inspired from:

  • "Multiple-View Geometry under the L_\infty Norm."
    Authors: Fredrik Kahl, Richard Hartley. PAMI Pattern Analysis and Machine Intelligence, IEEE Transactions on (Volume:30 , Issue: 9 ) 2008.
  • "Multiple View Geometry and the L_\infty -norm"
    Author: Fredrik Kahl. ICCV 2005.
  • Robust estimation for an inverse problem arising in multiview geometry.
    Authors: Arnak S. Dalalyan, Renaud Keriven (2012). J. Math. Imaging Vision, 43(1), pp. 10–23

Online documentation

I just created a project on readthedocs to get an up-to-date online documentation.
http://openmvg.readthedocs.org/en/latest

It's currently based on the "develop" branch, because the master branch doesn't have all requested files for sphinx.

Maybe we could add a link on the "Readme.md".

openMVG to Meshlab raster scene

Each camera of a SfM_Output reconstruction will be displayed as a raster layer in meshlab.

It will be useful to add texture to a mesh build from the found calibration.

[Calib] Update the SfM chain to use intrinsic group.

The Structure from Motion chain update:
An intrinsic group is composed from 1 to n camera.
It allow to refine per group of cameras:

  • only the focal,
  • the focal, the principal point and the radial distortion.
    Grouping intrinsic parameter between many camera allow estimation being more stable.

Initial intrinsic can be provided by:

  • the user
  • the Exif Jpeg data:
    • focal length is estimated from Jpeg Exif data and corresponding camera model sensor size.
    • a collection of camera sensor size is released.
  • SfM_Ouput is updated
    • A visibility file is exported. For each 3D point image visibility and feature id is printed.

[bundle_adjustment] Code factorization

Make the code of openMVG bundle_adjustment module more clean:

  • change some naming convention
  • add doxygen comment
  • Update the pinhole camera minimization:
    • use a common function to compute 2D reprojection error.
    • add a new functor to refine only the camera pose.
  • Update pinhole_brown_Rt_ceres_functor.

Based on suggestions from @fcastan

Full object reconstruction issue

Hi there!

It seems that this library cant reconstruct the scene with images provided around the object in 360 degrees. Based on my experiences with other SFM libs, i would assume the same problem is present here as with lots of others:
The bundle adjuster only adds new points which are seen by all cameras, meaning i'm only able to do a 180 degree reconstruction of my object.

To prove my point, here are the sample images:
https://docs.google.com/file/d/0B963YD5ngbzScTlyT3p6NHkzdVE/edit?usp=sharing

And the ply output:
https://docs.google.com/file/d/0B963YD5ngbzScGQwdTR4N3FSNUE/edit?usp=sharing

Do you have any suggestion how to modify the code to achieve the desired output? What needs to be modified, and how?
Thanks for your time, and keep up the amazing work,
Andrew

Update ceres-solver to version 1.7.0

https://ceres-solver.googlecode.com/files/ceres-solver-1.7.0.tar.gz

Major changes include

Covariance estimation.
Wolfe line search.
A C API.
Significant performance improvements to loss function and dense linear solvers and automatic differentiation.
Switchable dense linear algebra backends.
Better inner iteration step acceptance and stopping.
No more dependence on Protocol Buffers.
Ability to use miniglog on non-android platforms.
A simplified more robust build system.

Autocalibration

Hello Pierre,

first, thanks for your work on openMVG (and also for Open sourced it !). I have a very simple question regarding the evolution of openMVG: Do you have some plans to implement a kind of autocalibration (like in Apero or in Bundler) in OpenMVG ?

Regards,
Romain

Segmentation Fault while "make test"

I met problems while compile and make test, which is similar to this link. I add

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -ffast-math -msse -msse2 -msse3")

in ./src/CMakeLists.txt , and make. Then I got the following errors:

[ 85%] Built target openMVG_test_triangulation_nview
[ 85%] Built target openMVG_test_lm
[ 86%] Built target openMVG_test_numeric
[ 86%] Built target openMVG_test_poly
[ 86%] Built target openMVG_test_tracks
[ 86%] Built target openMVG_test_rand_sampling
[ 87%] Built target openMVG_test_robust_estimator_ACRansac
[ 87%] Built target openMVG_test_robust_estimator_LMeds
[ 88%] Built target openMVG_test_robust_estimator_MaxConsensus
[ 88%] Built target openMVG_test_robust_estimator_Ransac
[ 88%] Built target openMVG_test_robust_estimator_lineKernel
[ 89%] Building C object patented/sift/CMakeFiles/vlsift.dir/vl/generic.c.o
[ 89%] Building C object patented/sift/CMakeFiles/vlsift.dir/vl/imopv_sse2.c.o
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:21:2: error: #error "Compiling with SSE2 enabled, but no SSE2 defined"
In file included from /home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:28:0:
/usr/lib/gcc/i686-linux-gnu/4.6.1/include/emmintrin.h:32:3: error: #error "SSE2 instruction set not enabled"
In file included from /home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:34:0:
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:21:2: error: #error "Compiling with SSE2 enabled, but no SSE2 defined"
In file included from /home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:34:0:
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c: In function ‘_vl_imconvcol_vf_sse2’:
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:81:14: error: ‘VSIZE’ undeclared (first use in this function)
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:81:14: note: each undeclared identifier is reported only once for each function it appears in
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:86:15: error: unknown type name ‘VTYPE’
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:87:9: error: unknown type name ‘VTYPE’
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:100:20: error: ‘VTYPE’ undeclared (first use in this function)
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:100:26: error: expected expression before ‘)’ token
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:111:24: error: expected expression before ‘)’ token
In file included from /home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:38:0:
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c: At top level:
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:21:2: error: #error "Compiling with SSE2 enabled, but no SSE2 defined"
In file included from /home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:38:0:
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c: In function ‘_vl_imconvcol_vd_sse2’:
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:81:14: error: ‘VSIZE’ undeclared (first use in this function)
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:86:15: error: unknown type name ‘VTYPE’
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:87:9: error: unknown type name ‘VTYPE’
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:100:20: error: ‘VTYPE’ undeclared (first use in this function)
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:100:26: error: expected expression before ‘)’ token
/home/fd/softwares/SuiteSparse/openMVG/src/patented/sift/vl/imopv_sse2.c:111:24: error: expected expression before ‘)’ token
make[2]: *** [patented/sift/CMakeFiles/vlsift.dir/vl/imopv_sse2.c.o] Error 1
make[1]: *** [patented/sift/CMakeFiles/vlsift.dir/all] Error 2
make: *** [all] Error 2

Then, I type make test and get these errors:

Running tests...
Test project /home/fd/softwares/SuiteSparse/openMVG_Build
Start 1: openMVG_test_image
1/25 Test #1: openMVG_test_image ........................... Passed 0.00 sec
Start 2: openMVG_test_image_drawing
2/25 Test #2: openMVG_test_image_drawing ................... Passed 0.00 sec
Start 3: openMVG_test_image_io
3/25 Test #3: openMVG_test_image_io ........................ Passed 0.00 sec
Start 4: openMVG_test_features
4/25 Test #4: openMVG_test_features ........................ Passed 0.00 sec
Start 5: openMVG_test_matching
5/25 Test #5: openMVG_test_matching ........................ Passed 0.00 sec
Start 6: openMVG_test_matching_filters
6/25 Test #6: openMVG_test_matching_filters ................ Passed 0.00 sec
Start 7: openMVG_test_indMatch
7/25 Test #7: openMVG_test_indMatch ........................ Passed 0.00 sec
Start 8: openMVG_test_triangulation
8/25 Test #8: openMVG_test_triangulation ................... Passed 0.00 sec
Start 9: openMVG_test_triangulation_nview
9/25 Test #9: openMVG_test_triangulation_nview ............._Exception: Other 0.00 sec
Start 10: openMVG_test_solver_affine
10/25 Test #10: openMVG_test_solver_affine ................... Passed 0.00 sec
Start 11: openMVG_test_solver_fundamental_kernel
11/25 Test #11: openMVG_test_solver_fundamental_kernel ....... Passed 0.00 sec
Start 12: openMVG_test_solver_essential_kernel
12/25 Test #12: openMVG_test_solver_essential_kernel ......... Passed 0.01 sec
Start 13: openMVG_test_solver_homography_kernel
13/25 Test #13: openMVG_test_solver_homography_kernel ........ Passed 0.00 sec
Start 14: openMVG_test_solver_essential_five_point
14/25 Test #14: openMVG_test_solver_essential_five_point ..... Passed 0.01 sec
Start 15: openMVG_test_solver_resection_kernel
15/25 Test #15: openMVG_test_solver_resection_kernel ......... Passed 0.00 sec
Start 16: openMVG_test_numeric
16/25 Test #16: openMVG_test_numeric ......................... Passed 0.00 sec
Start 17: openMVG_test_poly
17/25 Test #17: openMVG_test_poly ............................ Passed 0.00 sec
Start 18: openMVG_test_lm
18/25 Test #18: openMVG_test_lm .............................. Passed 0.00 sec
Start 19: openMVG_test_tracks
19/25 Test #19: openMVG_test_tracks .......................... Passed 0.00 sec
Start 20: openMVG_test_rand_sampling
20/25 Test #20: openMVG_test_rand_sampling ................... Passed 0.00 sec
Start 21: openMVG_test_robust_estimator_lineKernel
21/25 Test #21: openMVG_test_robust_estimator_lineKernel ..... Passed 0.00 sec
Start 22: openMVG_test_robust_estimator_MaxConsensus
22/25 Test #22: openMVG_test_robust_estimator_MaxConsensus ...
_Exception: Other 0.00 sec
Start 23: openMVG_test_robust_estimator_Ransac
23/25 Test #23: openMVG_test_robust_estimator_Ransac ........._Exception: Other 0.00 sec
Start 24: openMVG_test_robust_estimator_LMeds
24/25 Test #24: openMVG_test_robust_estimator_LMeds ..........
_Exception: Other 0.00 sec
Start 25: openMVG_test_robust_estimator_ACRansac
25/25 Test #25: openMVG_test_robust_estimator_ACRansac .......***Exception: Other 0.00 sec

80% tests passed, 5 tests failed out of 25

Total Test time (real) = 0.10 sec

The following tests FAILED:
9 - openMVG_test_triangulation_nview (OTHER_FAULT)
22 - openMVG_test_robust_estimator_MaxConsensus (OTHER_FAULT)
23 - openMVG_test_robust_estimator_Ransac (OTHER_FAULT)
24 - openMVG_test_robust_estimator_LMeds (OTHER_FAULT)
25 - openMVG_test_robust_estimator_ACRansac (OTHER_FAULT)
Errors while running CTest
make: *** [test] Error 8

Actually, I find a way to make my compile pass. I add:

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -msse -msse2 -msse3")

in ./src/CMakeLists.txt. Then the compile can pass. However, make test have the same problem.

Environment:

Ubuntu 11.10 x86
GNU GCC
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)

[MemoryCopy] Make Descriptor class usage easier

Descriptor is not usable directly in a vector due to the inheritance of virtual functions.

Modify
class Descriptor : public DescriptorBase

to
class Descriptor

We will loose some genericity but with tricky casting we could avoid memory copy to ensure alignment of collection of Sifts.

using OpenCV binary based feature detectors

Hi Pierre!
I'd like to try the OpenCV's implementation of binary feature detectors, especially FAST in the OpenMVG's SFM pipeline. Now after detection if i use OpenCV's own binary descriptors, BRIEF for example, how do i specifiy it to the matcher in openMVG? Obviously its not a floating point descriptor which you use. Is this possible without comprehensive modification to the Image matcher module?

thanks,
Andrew

Data serialization - Data format {feature-request}

Recent commits add some additional data formats. At the time being there are multiple formats in openMVG

  • Camera files (one for simple pinhole camera model, another brown camera model)
  • Image list files
  • Camera database files

My suggestions to improve the situation goes in two directions

  • Factorize all existing "formats". For example coupling the list of image files camera parameters files in a kind of global openMVG format
  • Adopt a "standard" serialization format (JSON, XML...)

My preference goes to JSON because it's lightweight and flexible and in that sense it meets the requirements of openMVG. Moreover it offer a very good interoperability with other languages and potential services built on top of openMVG.

The major drawback of inclusion of a standard serialization format is that it could add another dependency to a third party library. In that sense it will lead to a less maintainable codebase. Another possibility should be to only adopt the JSON as a structure (instead of comma separated text) and perform I/O without an additional library.

Some light and modern JSON libraries
https://github.com/hjiang/jsonxx
https://github.com/sirikata/json-spirit (but depends on boost spirit...)
https://github.com/anhero/JsonBox
the three seem to be under MIT License.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.