Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Igal Alkon
    @alkavan

    what file format the -d option? the camera database? I've added something like:

    GoPro;HERO5 Black;"1/2.3"" (~ 7.00 x 5.25 mm)";7.00;5.25;4000;3007

    to the csv file but that don't work I still get: G0580964" model "HERO5 Black" doesn't exist in the database

    Igal Alkon
    @alkavan

    Morning! I have another question related to the openMVG_main_IncrementalSfM pipeline, now I did manage to run openMVG_main_GlobalSfM on some 990~ image set I have of same place, same camera. that's great, it found 1.5bn tripletes however the processing time to build the whole SfM takes over 24h for that set (NORMAL feature preset), it's 4000x3000 images.

    So... I wish to build such openMVG_main_IncrementalSfM pipeline so I can always improve the matching and SfM models eahc time I have new data... but I struggle to realize how exactly I should do it? so I run few commands like that:

    mkdir $SFM_OUT_DIR/{chunk1,chunk2, ...}
    openMVG_main_SfMInit_ImageListing --imageDirectory=$SFM_PROJECT_DIR/107GOPRO.1/ -o $SFM_OUT_DIR/chunk1 -d ../sensor_width_camera_database.txt
    openMVG_main_SfMInit_ImageListing --imageDirectory=$SFM_PROJECT_DIR/107GOPRO.2/ -o $SFM_OUT_DIR/chunk2 -d ../sensor_width_camera_database.txt
    ...
    mkdir $SFM_OUT_DIR/matches
    openMVG_main_ComputeFeatures -i $SFM_OUT_DIR/chunk1/sfm_data.json -o $SFM_OUT_DIR/matches -p HIGH -n 2 -u 1
    openMVG_main_ComputeFeatures -i $SFM_OUT_DIR/chunk2/sfm_data.json -o $SFM_OUT_DIR/matches -p HIGH -n 2 -u 1

    So yeah, now I have all my matches in the same directory... however I still have several sfm_data.json file
    It means to compute matches.putative.bin I will have to run several times:

    openMVG_main_ComputeMatches -i $SFM_OUT_DIR/chunk1/sfm_data.json -o $SFM_OUT_DIR/matches -n ANNL2 -g e -v 2
    openMVG_main_ComputeMatches -i $SFM_OUT_DIR/chunk2/sfm_data.json -o $SFM_OUT_DIR/matches -n ANNL2 -g e -v 2

    And that each time would overwrite the matches.putative.bin file... so there's any way to combine all of this later in the pipeline? Or should I use different approch?

    Igal Alkon
    @alkavan
    I suspect the idea is the start with a largeww as possible match databse, and chunk it later.. so there's only one sfm_data file... ?
    I get not too bad results with openMVG_main_ComputeFeatures -i $SFM_OUT_DIR/combined/sfm_data.json -o $SFM_OUT_DIR/matches_all/ -p HIGH -n 8 -u 1 on 2000~ files set.
    Igal Alkon
    @alkavan
    yeah I now get it, "Incremental" not in the same manner I assumed.
    I would like to also have an Incremental ANN... is that somehow possible? something like openMVG_main_ComputeMatchesIncremental parhaps.
    Igal Alkon
    @alkavan
    Well here's an insight, as good and full features 3DF Zephyr Pro is ... after 12h og 1800 image set reconstruction... the whole process just got stuck without any way to recover, I had to foce close the program... What a shame :/
    Pierre Moulon
    @pmoulon
    1. If your image have some GPS data you can reduce the image list to match. (see -G in https://github.com/openMVG/openMVG/blob/master/src/software/SfM/main_ListMatchingPairs.cpp#L104)
    1. There is no incremental stop and continue for ComputeMatches yet. But there is a tentative PR there openMVG/openMVG#1091
    Pierre Moulon
    @pmoulon
    As I said often. Perhaps OpenMVG is not as fast as some commercial product but it is far more flexible that a lot of Commercial Software.
    Igal Alkon
    @alkavan
    @pmoulon By now I get pretty good results wiht OpenMVG, unfortunatly, OpenMVS is crashing with core dump on the MeshCreation stage, but it does the densifying of incremental, and the results as I can see can bee as good as commercial software, and more important, faster, I'm not even on ULTRA preset, that takes hell lot of memory that get my 16GB machine to stuck.
    The golobal SfM stil ldoes not work for me, it does it all, it takes quite some time, however on final stage it coredump, in archlinux btw.
    it probably does work fine iwth -n1 however.. I wonder if there's an theoretical way to "thruttle" the real mem consumetion on the -n4setting for example in my use case.
    Pierre Moulon
    @pmoulon
    Depending of the number image you have it is good to use the -nX parameter and then refine the model. So you compute the point cloud at a coarse resolution and then refine it using image of larger resolution.
    If you want to process large dataset you can use clusters and compute the dense 3D on subpart of the scene. See https://github.com/openMVG/openMVG/issues/857#issuecomment-292707035
    Igal Alkon
    @alkavan
    @pmoulon I can use -n1 with ULTRA, ~-n6 HIGH
    So best for my machine, is run always on HIGH, and then refine with ULTRA? is this what you mean? how can I refine the match result actually?
    I'm also testing the Regard3D software that uses both OpenMVG and OpenMVS it seems... its works quite nice.
    (on windows)
    Pierre Moulon
    @pmoulon
    Using HIGH should be ok for most of the dataset.
    Igal Alkon
    @alkavan
    I saw new build or package was released on Arch, anything new there? or it's just some build fix?
    Igal Alkon
    @alkavan
    Hey... I have a qustion regarding the Sparse solving stage. I've been reading this: https://software.intel.com/en-us/mkl-developer-reference-c-intel-mkl-pardiso-parallel-direct-sparse-solver-interface
    Intel MKL (Math Kernel Library), as since, it's sparse slover can actually solve using multi-threading, something Eigen3 is not currnetly doing, can I be used to improve the matching or SfM process? I assume yes?
    Igal Alkon
    @alkavan

    I finally manage to run global SfM with the last update, now running OpenMVS on that:

    12:51:38 [App     ] Scene loaded from interface format (1s163ms):
        645 images (60 calibrated) with a total of 686.65 MPixels (11.44 MPixels/image)
        37239 points, 0 vertices, 0 faces

    It didn't owrk before...

    Pierre Moulon
    @pmoulon
    Sorry for the late answer. Using MKL will not help to make the matching faster, the method that used is already fast. For the SfM process perhaps, but you should speak to ceres and not OpenMVG for integration of MKL.
    Nomit Rawat
    @NomitRwt
    Apologies in advance for the intrusion. I am new to this environment. While using the cmake, i am facing a lot of issues and many of them have the label --NOT FOUND. I cloned the repository via github desktop and I am following the documentation (https://github.com/openMVG/openMVG/blob/develop/BUILD.md#checkout) from the subheading Compiling for windows. Any help would be appreciated.
    Pierre Moulon
    @pmoulon
    This is ok, CMAKE is listing all the work he is doing, so some of them will be set as FOUND and some other as not FOUND. You can see a windows VS compilation log here https://ci.appveyor.com/project/pmoulon/openmvg/builds/33716698/job/gsj8vq2a4ip3d7n8
    Nomit Rawat
    @NomitRwt
    I went ahead and used configure, generate tabs and can see .sln file in the required directory. @pmoulon thanks for prompt reply.
    srinivas varavooru
    @vssrini_twitter
    hello @pmoulon . I am new to openmvg. Would like to know if openmvg library uses GPUs if available on the machine.
    Pierre Moulon
    @pmoulon
    @vssrini_twitter OpenMVG does not use GPU, but you can plug GPU feature detector and GPU feature matching easily using OpenCV, FAISS or Python.
    Andrew Hilton
    @Hiltona99
    Hi @pmoulon . I would like to know when openmvg decides the global coordinate system and where I can find this in the code. Any help is greatly appreciated.
    Pierre Moulon
    @pmoulon
    OpenMVG set one camera as identity and then let BA (Bundle Adjustment) adjust the scene.
    Andrew Hilton
    @Hiltona99
    @pmoulon Thank you for the response. Is the camera picked as the identity decided randomly or is there a criteria for picking it?
    Pierre Moulon
    @pmoulon
    Camera set as identity is the first one that starts the SfM process (so one of the two starting image - the initial pair). It would be easy to add a function that would transform the scene to make the camera of your choice as identity as a post process.
    Andrew Hilton
    @Hiltona99
    @pmoulon Excuse my ignorance on parts of this topic but could you give me an idea of how to implement this scene transformation to the camera of my choice or point me to some readings that could give me some knowledge on how to do this? I appreciate the knowledge you have given me so far, it has been very helpful.
    rennu
    @rennu
    Hi everyone!
    Pierre Moulon
    @pmoulon
    @rennu Feel free to use Github discussion or Issue if you need any help -> https://github.com/openMVG/openMVG/discussions
    rennu
    @rennu
    @pmoulon Yeah, I know. I just wanted to see if this place is alive at all :D
    Dimitri Vasilkov
    @d-v

    Hello, I am trying to build openMVG under msys2 but am running into the following

    $ make [ 16%] Built target lib_CoinUtils [ 19%] Built target lib_Osi [ 33%] Built target lib_clp [ 34%] Built target lib_OsiClpSolver [ 36%] Built target openMVG_stlplus [ 37%] Building CXX object third_party/lemon/lemon/CMakeFiles/openMVG_lemon.dir/base.cc.obj In file included from C:/msys64/home/Dims/upstreamist/openmvg/real_upstream/src/third_party/lemon/lemon/base.cc:24: C:/msys64/home/Dims/upstreamist/openmvg/real_upstream/src/third_party/lemon/lemon/time_measure.h:30:10: fatal error: sys/times.h: No such file or directory 30 | #include <sys/times.h> | ^~~~~~~~~~~~~ compilation terminated. make[2]: *** [third_party/lemon/lemon/CMakeFiles/openMVG_lemon.dir/build.make:95: third_party/lemon/lemon/CMakeFiles/openMVG_lemon.dir/base.cc.obj] Error 1 make[1]: *** [CMakeFiles/Makefile2:2117: third_party/lemon/lemon/CMakeFiles/openMVG_lemon.dir/all] Error 2 make: *** [Makefile:149: all] Error 2

    any chance I could get some advice on building?

    image.png
    I noticed that sys/times.h isn't available on windows so I have been trying to include this workaround
    Igal Alkon
    @alkavan
    I have RPM spec file for Fedora (33) of openmvg develop_2.0 , would this be useful for the project?
    and how close 2.0 is to beta release? it can be nice to have something like2.0-rc0 or 2.0-beta1 tag available on github.
    Pierre Moulon
    @pmoulon
    @rennu We should be able to find a workaround and configure just the right config depending of your compiler.
    @rennu Feel free to open an issue so we can debug and leverage help from the community
    Pierre Moulon
    @pmoulon
    @alkavan The 2.0 is closed to be ready for first beta release. There is still some feature that we are polishing. We would be happy to have your help for the RPM spec file. Feel free to discuss with us early to prep the rpm. You can see here the remaining list of work https://github.com/openMVG/openMVG/issues?q=is%3Aopen+is%3Aissue+milestone%3A2.0
    Igal Alkon
    @alkavan

    When building on Debian (10), clean VM, following instructions, develop_2.0 branch I get following error:

    [ 87%] Building CXX object software/SfM/CMakeFiles/openMVG_main_GeometricFilter.dir/main_GeometricFilter.cpp.o
    In file included from /home/wdna/openMVG/src/software/SfM/main_ComputeVLAD.cpp:15:
    /home/wdna/openMVG/src/openMVG/matching_image_collection/Vlad.hpp:20:33: error: ‘AKAZE_Float_Regions’ does not name a type
     template<typename RegionTypeT = AKAZE_Float_Regions>
                                     ^~~~~~~~~~~~~~~~~~~
    /home/wdna/openMVG/src/openMVG/matching_image_collection/Vlad.hpp: In member function ‘openMVG::VLADBase::DescriptorVector openMVG::VLAD<RegionTypeT>::RegionsToCodebook(const std::vector<unsigned int, std::allocator<unsigned int> >&, std::shared_ptr<openMVG::sfm::Regions_Provider>)’:
    /home/wdna/openMVG/src/openMVG/matching_image_collection/Vlad.hpp:51:67: error: expected primary-expression before ‘>’ token
                 descriptors.row(region_id).cast<DescriptorType::Scalar>());
                                                                       ^
    /home/wdna/openMVG/src/openMVG/matching_image_collection/Vlad.hpp:51:69: error: expected primary-expression before ‘)’ token
                 descriptors.row(region_id).cast<DescriptorType::Scalar>());
                                                                         ^
    /home/wdna/openMVG/src/openMVG/matching_image_collection/Vlad.hpp: In member function ‘openMVG::VLADBase::VladMatrixType openMVG::VLAD<RegionTypeT>::ComputeVLADEmbedding(const std::vector<unsigned int, std::allocator<unsigned int> >&, std::unique_ptr<openMVG::features::Regions>&, std::shared_ptr<openMVG::sfm::Regions_Provider>, openMVG::VLAD_NORMALIZATION)’:
    /home/wdna/openMVG/src/openMVG/matching_image_collection/Vlad.hpp:142:67: error: expected primary-expression before ‘double’
                 cast_query_regions->Descriptors()[descriptor_id].cast<double>() -
                                                                       ^~~~~~
    /home/wdna/openMVG/src/openMVG/matching_image_collection/Vlad.hpp:142:67: error: expected ‘,’ or ‘;’ before ‘double

    I suspect this can be related to most recent commit.

    Pierre Moulon
    @pmoulon
    minbreee
    @minbreee
    Hi, I'm using OPENMVG to do sfm, OPENMVG works very well and i thank and respect everyone who has made it. The result of the SFM is very satisfactory, but i have one question. Among the sfm pipelines, the result of the feature matching of openMVG_main_ComputeMatches is provided only in the form of a .svg file format, is it possible to get the result of the match feature in the form of a .csv or .json etc... file???
    Pierre Moulon
    @pmoulon

    Hi @minbreee, thank you for your kind words about the projects.

    Default export is in the form of a .bin match file, but the API also can export a txt file. As you can see here if you specify a match file ending up in 'txt' it will export a txt file https://github.com/openMVG/openMVG/blob/develop/src/openMVG/matching/indMatch_utils.cpp#L93

    So you can either, specify to ComputeMatches and GeomFilter a txt file instead of a bin files -> and you will have raw ascii data to use...
    Or you can use the binary call main_ConvertMatches that will do the work for you https://github.com/openMVG/openMVG/blob/develop/src/software/SfM/main_ConvertMatches.cpp