Git Product home page Git Product logo

bundler_sfm's Introduction

Bundler User's Manual

written by Noah Snavely ([email protected])

based on the Photo Tourism work of Noah Snavely, Steven M. Seitz, (University of Washington) and Richard Szeliski (Microsoft Research)

For more information, see the Bundler homepage at http://www.cs.cornell.edu/~snavely/bundler/ or see the FAQ at http://www.cs.cornell.edu/~snavely/bundler/faq.html

What is Bundler?

Bundler is a structure-from-motion system for unordered image collections (for instance, images from the Internet). Bundler takes a set of images, image features, and image matches as input, and produces a 3D reconstruction of the camera and (sparse) scene geometry as output. The system, described in [1] and [2], reconstructs the scene incrementally, a few images at a time, using a modified version of the Sparse Bundle Adjustment package of Lourakis and Argyros [3] as the underlying optimization engine.

Currently, Bundler has been primarily compiled and tested under Linux (though it may also compile in Windows under Cygwin, and a Visual Studio solution file is also provided).

Conditions of use

Bundler is distributed under the GNU General Public License. For information on commercial licensing, please contact the authors at the contact address below. If you use Bundler for a publication, please cite the following paper:

Noah Snavely, Steven M. Seitz, and Richard Szeliski. Photo Tourism: Exploring Photo Collections in 3D. SIGGRAPH Conf. Proc., 2006.

What's included

Included with the binary distribution is the Bundler executable (bin/bundler), as well as a number of other utility scripts and executables (in the bin/ directory). In addition, there are a number of example image sets (and example results) under the examples/ directory. A version of the approximate nearest neighbors (ANN) library of David M. Mount and Sunil Arya, customized for searching verctors of unsigned bytes, is also included.

A utility program for converting bundle files (.out) to the input required by Dr. Yasutaka Furukawa's PMVS multi-view stereo system (http://www.di.ens.fr/pmvs/) called Bundle2PMVS is also included. Finally, this distribution includes a program called RadialUndistort for generating undistorted images (based on the undistortion parameters estimated by Bundler).

Before you begin

You'll first need to download the Bundler distribution from GitHub:

or visit the Bundler homepage at

http://phototour.cs.washington.edu/bundler

and extract it into a directory (to be referred to as BASE_PATH).

You'll also need a feature detector components to get the system working. Assuming you will be using SIFT features generated by David Lowe's SIFT binary, you'll need to download that binary from

http://www.cs.ubc.ca/~lowe/keypoints/

and copy it to BASE_PATH/bin (making sure it is called 'sift', or 'siftWin32.exe' under Windows).

You'll also need the 'jhead' program installed, for computing focal lengths from Exif metadata. This is available, for instance, as the jhead package on Ubuntu.

Finally, make sure you have the ImageMagick library installed.

The utils/bundler.py script requires that you have Python and the Python Image Library (PIL) installed on your computer.

To make bundler, just type 'make' in the main bundler directory. Note that if you plan to run Bundler on large problems, you may wish to enable the use of the Ceres solver for bundle adjustment, which can improve speed over the default SBA bundle adjuster. To do so, edit the file 'src/Makefile' and uncomment the line

USE_CERES=true

Note that this assumes you have Ceres and its dependencies installed on your system. See the Ceres solver page at

https://code.google.com/p/ceres-solver/

for more information.

Finally, once Bundler is compiled, copy the approximate nearest neighbors (ANN) shared library at BASE_PATH/bin/libANN_char.so (Linux/cygwin) or BASE_PATH/bin/ann_1.1_char.dll (Windows VS2005) to a location in your LD_LIBRARY_PATH, or add BASE_PATH/bin to LD_LIBRARY_PATH with a command like (in bash):

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/bundler/bin

Running bundler

The easiest way to start using Bundler is to either use the provided RunBundler.sh bash script, or the included Python script (by Isaac Lenton), utils/bundler.py. Just execute either script in a directory with a set of images in JPEG format, and it will automatically run all the steps needed to run structure from motion on the images (assuming everything goes well). For RunBundler.sh, you may optionally provide a configuration file as a command line argument---see RunBundler.sh for a description of the configuration options available. Notably, you can choose to use Ceres when running Bundler.

To get help on using the Python script bundler.py:

bundler.py -h

To run bundler.py with verbose output on a single thread (this acts similar to the older RunBundler.sh bash script):

bundler.py --verbose --no-parallel

bundler.py can also be imported into your own Python modules to enable easy access to the bundler system. Type 'help(bundler)' at the python command prompt after importing bundler.py for more information.

The Bundler exectutable is actually the last in a sequence of steps that need to be run to reconstruct a scene. bundler.py takes care of all these steps for you, but it's useful to know what's going on. The main initial steps are to generate features and pairwise feature matches for the image set. Any type of image features can be used, but Bundler assumes the features are in the SIFT format, and so David Lowe's SIFT detector, available at http://www.cs.ubc.ca/~lowe/keypoints/, is probably the easiest to get working with Bundler (bundler.py assumes that SIFT is used). A list of images containing estimating focal length information also must be created. The four steps to creating a reconstruction are therefore:

  1. Create a list of images using the function extract_focal_length. (this extracts focal length information, when available, from each image, and stores it in an image list).
  2. Generate (SIFT) features for each image.
  3. Match features between each pairs of images (this step can take a while). The computed feature matches are stored in a file called 'matches.init.txt'.
  4. Run 'bundler' with a suitable options file.

Again, running the RunBundler.sh or bundler.py script is the easiest way to perform these steps. Steps 1-3 can also be invoked individually from functions contained in the bundler.py script.

Bundler itself is typically invoked as follows:

bundler list.txt --options_file options.txt

The first argument is the list of images to be reconstructed. Next, an options file containing settings to be used for the current run is given. The RunBundler.sh and bundler.py scripts create an options file that will work in many situations (and some of these options can be controlled by the configuration file passed to RunBundler.sh). Common options are described later in this document. To generate only the list of images, run:

bundler.py --extract-focal

Output format

Bundler produces files typically called 'bundle_*.out' (we'll call these "bundle files"). With the default commands, Bundler outputs a bundle file called 'bundle_.out' containing the current state of the scene after each set of images has been registered (n = the number of currently registered cameras). After all possible images have been registered, Bundler outputs a final file named 'bundle.out'. In addition, a "ply" file containing the reconstructed cameras and points is written after each round. These ply files can be viewed with the "scanalyze" mesh viewer, available at http://graphics.stanford.edu/software/scanalyze/.

The bundle files contain the estimated scene and camera geometry have the following format:

# Bundle file v0.3
<num_cameras> <num_points>   [two integers]
<camera1>
<camera2>
 ...
<cameraN>
<point1>
<point2>
 ...
<pointM>

Each camera entry contains the estimated camera intrinsics and extrinsics, and has the form:

<f> <k1> <k2>   [the focal length, followed by two radial distortion coeffs]
<R>             [a 3x3 matrix representing the camera rotation]
<t>             [a 3-vector describing the camera translation]

The cameras are specified in the order they appear in the list of images.

Each point entry has the form:

<position>      [a 3-vector describing the 3D position of the point]
<color>         [a 3-vector describing the RGB color of the point]
<view list>     [a list of views the point is visible in]

The view list begins with the length of the list (i.e., the number of cameras the point is visible in). The list is then given as a list of quadruplets , where is a camera index, the index of the SIFT keypoint where the point was detected in that camera, and and are the detected positions of that keypoint. Both indices are 0-based (e.g., if camera 0 appears in the list, this corresponds to the first camera in the scene file and the first image in "list.txt").

We use a pinhole camera model; the parameters we estimate for each camera are a focal length (f), two radial distortion parameters (k1 and k2), a rotation (R), and translation (t), as described in the file specification above. The formula for projecting a 3D point X into a camera (R, t, f) is:

P = R * X + t       (conversion from world to camera coordinates)
p = -P / P.z        (perspective division)
p' = f * r(p) * p   (conversion to pixel coordinates)

where P.z is the third coordinate of P. In the last equation, r(p) is a function that computes a scaling factor to undo the radial distortion:

r(p) = 1.0 + k1 * ||p||^2 + k2 * ||p||^4.

This gives a projection in pixels, where the origin of the image is the center of the image, the positive x-axis points right, and the positive y-axis points up (in addition, in the camera coordinate system, the positive z-axis points backwards, so the camera is looking down the negative z-axis, as in OpenGL).

Finally, the equations above imply that the camera viewing direction is:

R' * [0 0 -1]'  (i.e., the third row of R or third column of R')

(where ' indicates the transpose of a matrix or vector).

and the 3D position of a camera is

-R' * t .

Command-line options

Bundler has a number of internal parameters, so there are a large number of command-line options. That said, we've found that a common set of parameters works well for most image collections we've tried, so it is probably safe to start with the recommended options (used by the RunBundler.sh and bundler.py scripts). One very useful option is "--options_file ", which tells Bundler to read a list of options from a file. The default options file created by RunBundler.sh or bundler.py includes the following options:

--match_table matches.init.txt [specifies the file where the match files are stored]

--output bundle.out [specifies the name of the final output reconstruction]

--output_all bundle_ [specifies that all intermediate reconstructions should be output to files with prefix "bundle_"]

--output_dir bundle [the directory all output files should be written to, typically called "bundle"]

--variable_focal_length [directs bundler to optimize for an independent focal length for each image]

--use_focal_estimate [directs bundler to use the estimated focal lengths obtained from the Exif tags for each image]

--constrain_focal [constrain the focal length of each camera to be close to the initial focal length estimate (from Exif tags). This option adds penalty terms to the bundle adjustment objective function]

--constrain_focal_weight 0.0001 [weight on the penalty terms for the focal length constraints (a small weight is typically sufficient)]

--estimate_distortion [directs bundler to estimate radial distortion parameters for each image]

--run_bundle [run structure from motion (as opposed to other operations on existing reconstructions)]

There are a number of other useful options in addition to the default ones listed above, including:

--init_pair1 <image_idx1> --init_pair2 <image_idx2> [Specifies which images to use as the initial pair. Very useful when the automatically chosen pair results in a bad reconstruction.]

--options_file <options_file> [Read in a list of options from the specified file.]

--sift_binary [The location of the SIFT binary on your installation, e.g., '/usr/bin/sift' or '/cygdrive/c/usr/bin/siftWin32.exe'.]

--add_images <add_list> [Given an existing reconstruction specified with the --bundle option, attempts to add the images listed in the file <add_list> to the reconstruction, writing the results to the file 'bundle.added.out'. The new list of images is written to 'list.added.txt'. Use the 'extract_focal.pl' script to generate the file <add_list> from a directory of JPEGs, but note that the correct path to these images must be included -- which may require editing the add list file. Do not include the '--run_bundle' option when adding new images. If the SIFT key files have not yet been generated for the new images, bundler will try to extract features, but this requires that the --sift_binary option be set.]

--help [Print out the complete list of command-line options.]

Links

Pierre Moulon has a cmake version of Bundler available here: https://github.com/TheFrenchLeaf/Bundler.

Acknowledgements

This work was supported by Microsoft Research, the University of Washington Animation Research Labs, an Achievement Rewards for College Scientists (ARCS) fellowship, National Science Foundation grants IIS-0413198 and DGE-0203031, and an endowment by Emer Dooley and Rob Short.

Thanks to Manolis Lourakis and Antonis Argyros for their sparse bundle adjustment package (http://www.ics.forth.gr/~lourakis/sba/), to David Lowe for SIFT (http://www.cs.ubc.ca/~lowe/keypoints/), to David M. Mount and Sunil Arya for their approximate nearest neighbors library (http://www.cs.umd.edu/~mount/ANN/), and to Matthias Wandel for his 'jhead' program.

Thanks as well to Kathleen Tuite and Sebastian Koch for testing this distribution.

Contact information

Questions? Comments? Bug reports? Please see the FAQ at http://www.cs.cornell.edu/~snavely/bundler/faq.html, or send email to Noah Snavely at [email protected].

[1] Noah Snavely, Steven M. Seitz, and Richard Szeliski. Photo Tourism: Exploring Photo Collections in 3D. SIGGRAPH Conf. Proc., 2006.

[2] Noah Snavely, Steven M. Seitz, Richard Szeliski. Modeling the World from Internet Photo Collections. International Journal of Computer Vision, 2007.

[3] M.I.A. Lourakis and A.A. Argyros. The Design and Implementation of a Generic Sparse Bundle Adjustment Software Package Based on the Levenberg-Marquardt Algorithm. Tech. Rep. 340, Inst. of Computer Science-FORTH, Heraklion, Crete, Greece. Available from http://www.ics.forth.gr/~lourakis/sba.

bundler_sfm's People

Contributors

haiyangxu avatar henrique avatar hustcalm avatar ilent2 avatar mardy avatar orva avatar sergarrido avatar snavely avatar zhenalexfan 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

bundler_sfm's Issues

How to install build in Mac

I have tried to install bundler_sfm on my Mac but failed to insatll the build.
i am getting this error :( how to get rid of this error?

/Applications/Xcode.app/Contents/Developer/usr/bin/make
uname: illegal option -- o
usage: uname [-amnprsv]
cd lib/5point; /Applications/Xcode.app/Contents/Developer/usr/bin/make
make[1]: Nothing to be done for all'. cd lib/ann_1.1_char; /Applications/Xcode.app/Contents/Developer/usr/bin/make linux-g++-shared cd src ; /Applications/Xcode.app/Contents/Developer/usr/bin/make linux-g++-shared /Applications/Xcode.app/Contents/Developer/usr/bin/make targets \ "ANNLIB = libANN_char.so" \ "C++ = g++" \ "CFLAGS = -g2 -fPIC" \ "MAKELIB = g++ -shared -o " \ "RANLIB = true" g++ -shared -o libANN_char.so ANN.o brute.o kd_tree.o kd_util.o kd_split.o kd_dump.o kd_search.o kd_pr_search.o kd_fix_rad_search.o bd_tree.o bd_search.o bd_pr_search.o bd_fix_rad_search.o perf.o true libANN_char.so cp libANN_char.so ../.. cp libANN_char.so ../../../bin mv libANN_char.so ../lib cd lib/imagelib; /Applications/Xcode.app/Contents/Developer/usr/bin/make make[1]: Nothing to be done forall'.
cd lib/matrix; /Applications/Xcode.app/Contents/Developer/usr/bin/make
make[1]: Nothing to be done for all'. cd lib/sba-1.5; /Applications/Xcode.app/Contents/Developer/usr/bin/make make[1]: Nothing to be done forall'.
cd lib/sfm-driver; /Applications/Xcode.app/Contents/Developer/usr/bin/make
make[1]: Nothing to be done for `all'.
cd lib/minpack; /Applications/Xcode.app/Contents/Developer/usr/bin/make
gcc -O2 -ffast-math -c -o dpmpar.o dpmpar.f
error: invalid value 'f95' in '-x f95'
make[1]: *** [dpmpar.o] Error 1
make: *** [default] Error 2

request: include screenshot of what examples should look like

I just tried opening /bundler_sfm/examples/kermit/results.example/bundle.out in MeshLab 1.3.3 (since scanalyze is quite old and difficult to compile) with matches.init.txt as the image list file. The result looks like this, and I can't tell if this is what it should look like:

meshlab

Furthermore, I tried running bundler in the kermit example folder via ../../RunBundler.sh and opening the resulting .ply file(s), and those are similarly sparse:

ply

An example image of the output we should be seeing would be very helpful, as these results I am seeing don't seem right.

Building ODM with Docker: Bundler issue

I'm on Ubuntu 14.04 LTS, and have an issue with Bundler.

The Docker build gets just past configuring and building Ceres, and then:

...

ceres
- configuring ceres
- building ceres
< done - Sun Mar 20 21:44:16 UTC 2016

bundler
./install.sh: line 407: cd: /code/src/bundler: No such file or directory
The command '/bin/sh -c ./install.sh && chown -R odm:odm /code' returned a non-zero code: 1

What I had to do to make it work was add the following to line 193 of install.sh:

git clone https://github.com/snavely/bundler_sfm.git $BUNDLER_PATH

The script defines $BUNDLER_PATH and related variables, but never fetches the archive, which starts at line 167.

The script finished, and it is behaving thus far on some sample datasets.

Why there're just 2 images left when pmvs?

Hi!
Recently I try to use Bundler to build point cloud, but after enter the command 'sh.pmvs/prep_pmvs.sh',it only writes 2 imgaes, and failed to build point cloud. I thought there might be not enough overlap between the images, but it still happened after I try other several datasets. I hope that you can help me with this ?Thanks!

[ReadBundleFile] Bundle version: 0.300
[ReadBundleFile] Reading 102 images and 3752 points...
Undistorting image ./IMG_5882.jpg
Undistorting image ./IMG_5890.jpg
[WriteBundleFile] Writing 2 images and 3752 points...
Running Bundle2Vis to generate vis.dat

[ReadBundleFile] Bundle version: 0.300
[ReadBundleFile] Reading 2 images and 3752 points...
Num visible: 7504
Num cameras: 2

Reading bundle...2 cameras -- 3752 points in bundle file
***********
2 cameras -- 3752 points
Reading images: **
Set widths/heights...done	0 secs
done	0 secs
slimNeighborsSetLinks...done	0 secs
mergeSFM...***********resetPoints...done
Rep counts: 3752 -> 147  	0 secs
setScoreThresholds...done	0 secs
sRemoveImages... **
Kept: 0 1 

Removed: 
sRemoveImages: 2 -> 2	0 secs
slimNeighborsSetLinks...done	0 secs

Cluster sizes: 
2 
Adding images: 
0 
Image nums: 2 -> 2 -> 2
Divide: 
done	0 secs
1 images in vis on the average

Assert in MatchTracks.cpp

I fall in the following assert:
assert(key < (int) img_data.m_keys.size());
at line 135

when running on /examples/kermit like so:

cd examples/kermit
../../utils/bundler.py --verbose --no-parallel

The compilation went smooth and I added bin to the LD_LIBRARY_PATH
Did I miss something?

Thanks

Make error

Hello i currently try to set up myself a SFM Pipeline with the Bundler included.
I installed all Dependencys but got a error i could not solve when i went to "make" the Bundler.
Im Using Ubuntu 13.04 LTS.
This is what i get from the Terminal:

vkannen1@vismaggie:~/Desktop/BundlerSFM/bundler-v0.4-source$ make
cd lib/5point; make
make[1]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/5point'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/5point'
cd lib/ann_1.1_char; make linux-g++-shared
make[1]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/ann_1.1_char'
cd src ; make linux-g++-shared
make[2]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/ann_1.1_char/src'
make targets
"ANNLIB = libANN_char.so"
"C++ = g++"
"CFLAGS = -g2 -fPIC"
"MAKELIB = g++ -shared -o "
"RANLIB = true"
make[3]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/ann_1.1_char/src'
make[3]: Nothing to be done for 'targets'.
make[3]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/ann_1.1_char/src'
make[2]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/ann_1.1_char/src'
make[1]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/ann_1.1_char'
cd lib/imagelib; make
make[1]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/imagelib'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/imagelib'
cd lib/matrix; make
make[1]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/matrix'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/matrix'
cd lib/sba-1.5; make
make[1]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/sba-1.5'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/sba-1.5'
cd lib/sfm-driver; make
make[1]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/sfm-driver'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/sfm-driver'
cd lib/minpack; make
make[1]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/minpack'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/minpack'
cd lib/cblas; make
make[1]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/cblas'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/cblas'
cd lib/f2c; make
make[1]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/f2c'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/lib/f2c'
cd src; make
make[1]: Entering directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/src'
g++ -c -o BundlerApp.o -O3 -Wall -I../lib/imagelib -I../lib/sfm-driver -I../lib/matrix -I../lib/5point -I../lib/sba-1.5 -I../lib/ann_1.1_char/include -D__NO_UI__ -D__BUNDLER__ -D__BUNDLER_DISTR__ BundlerApp.cpp
In file included from /usr/include/c++/5/ext/hash_map:60:0,
from BaseApp.h:45,
from BundlerApp.h:23,
from BundlerApp.cpp:35:
/usr/include/c++/5/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. [-Wcpp]
#warning
^
In file included from BundlerApp.cpp:35:0:
BundlerApp.h: In constructor ‘BundlerApp::BundlerApp()’:
BundlerApp.h:91:27: warning: deprecated conversion from string constant to ‘char_’ [-Wwrite-strings]
m_match_directory = ".";
^
BundlerApp.h:94:25: warning: deprecated conversion from string constant to ‘char_’ [-Wwrite-strings]
m_key_directory = ".";
^
BundlerApp.h:95:27: warning: deprecated conversion from string constant to ‘char_’ [-Wwrite-strings]
m_image_directory = ".";
^
BundlerApp.h:96:28: warning: deprecated conversion from string constant to ‘char_’ [-Wwrite-strings]
m_output_directory = ".";
^
BundlerApp.h: In constructor ‘SkeletalApp::SkeletalApp()’:
BundlerApp.h:620:32: error: cannot call constructor ‘SkeletalApp::BundlerApp’ directly [-fpermissive]
BundlerApp::BundlerApp();
^
BundlerApp.h:620:32: note: for a function-style cast, remove the redundant ‘::BundlerApp’
BundlerApp.cpp: In member function ‘virtual void BundlerApp::ProcessOptions(int, char*)’:
BundlerApp.cpp:739:29: warning: ignoring return value of ‘size_t fread(void
, size_t, size_t, FILE_)’, declared with attribute warn_unused_result [-Wunused-result]
fread(opt_str, 1, 4096, f);
^
Makefile:45: recipe for target 'BundlerApp.o' failed
make[1]: *_* [BundlerApp.o] Error 1
make[1]: Leaving directory '/home/vkannen1/Desktop/BundlerSFM/bundler-v0.4-source/src'
Makefile:21: recipe for target 'default' failed
make: *** [default] Error 2

Could you maybe give me a hand and tell me what i did wrong?
Thank you in advance for any help.

Where is RunSFM_Ceres?

Hi
I wonder where RunSFM_Ceres is implemented.
According to header file(BundleApp.h), the function is not defined.
If I want to use Ceres solver, do I have to implement it?

libjpeg dependency error

Whenever I compile, I get an error with the libjpeg dependency. My system has libjpeg 9 installed by default, so when I try to compile I get lots of errors like this:

In file included from /usr/local/include/jpeglib.h:27:0,
                 from LoadJPEG.cpp:23:
/usr/local/include/jpeglib.h:704:3: error: expected identifier before ‘*’ token
   JMETHOD(noreturn_t, error_exit, (j_common_ptr cinfo));
   ^
/usr/local/include/jpeglib.h:704:3: error: ‘noreturn_t’ declared as function returning a function
   JMETHOD(noreturn_t, error_exit, (j_common_ptr cinfo));
   ^
LoadJPEG.cpp: In function ‘void GetJPEGDimensions(const char*, int&, int&)’:
LoadJPEG.cpp:32:37: error: too many arguments to function ‘jpeg_error_mgr* jpeg_std_error()’
     cinfo.err = jpeg_std_error(&jerr);
                                     ^
In file included from LoadJPEG.cpp:23:0:
/usr/local/include/jpeglib.h:948:33: note: declared here
 EXTERN(struct jpeg_error_mgr *) jpeg_std_error
                                 ^~~~~~~~~~~~~~
LoadJPEG.cpp:33:5: error: too many arguments to function ‘void jpeg_CreateDecompress()’
     jpeg_create_decompress(&cinfo);
     ^
/usr/local/include/jpeglib.h:966:14: note: declared here
 EXTERN(void) jpeg_CreateDecompress JPP((j_decompress_ptr cinfo,

...

Next I commented out the libjpeg.h dependency in LoadJPEG.cpp and replaced it with the libjpeg.h included in bundler_sfm:

// #include <jpeglib.h>
#include "../lib/jpeg/src/jpeglib.h"

Then this gives me this error:

Wrong JPEG library version: library is 90, caller expects 62

Finally, I tried replacing all of the -ljpegs in the makefile with a direct path to /usr/lib64/libjpeg.so.62.2.0, and I get this error:

JPEG parameter struct mismatch: library thinks size is 632, caller expects 600

I'm totally at a loss here. Any help would be really appreciated.

Problem in the function BundlerApp::BundleInitializeImageFullBundle

Hi
I found out a crash happens at this function, when the Matchindex idx does not exist in the m_matches. I added just one line as shown to fix this issue.

int first = MIN(image_idx, other);
int second = MAX(image_idx, other);
MatchIndex idx = GetMatchIndex(first, second);
if(!m_matches.Contains(idx)) continue; //My line... if it doesn't contain,just continue
std::vector &list = m_matches.GetMatchList(idx);//assert happens here

Mehdi

Can't compile without Ceres

Hi. I am trying to compile bundler from the current project master, but compilation seems to be failing because it's trying to use Ceres, even though I commented "USE_CERES-true" line in src/Makefile... Should I be doing anything else?

Core dump: Assertion `p.first != p.second' failed.

I'm running bundler on a set of photos with no focal length information. I first ran into a problem because the image resolution was too high (5312x3984 pixels) for sift to handle, so I downscaled them all to half their size. Incidentally, if someone has a link to the sift source code, please share it: I want to rebuild it with this limitation lifted, and also make a 64bit version of it.

Anyway, according to FAQ item 1, I first ran the bundler.py script with the --extract-focal parameter to obtain the list.txt file, and there I extended each line with " 0 3187". This is probably not the real focal length, just a quick estimate (I've read that a reasonable estimation for the focal length is max(width, height) * 1.2). Then I ran the bundler.py script again (with no options), so that it could compute the matches, and then I ran bundler list.txt --options_file options.txt and got this:

[OnInit] Running program bundler
Loading images from file 'list.txt'
[BundlerApp::OnInit] Processing options...
[BundlerApp::OnInit] Loading frame...
[BundlerApp::OnInit] Loading images...
[ReadGeometricConstraints] Reading 0 tracks
[ReadGeometricConstraints] Reading tracks took 0.000s
[ReadTrackPairs] Read 0 track pairs
  Avg. proj error [0 projections] = -nan
[BundleAdjust] Error: no good camera pairs found!
[BundleAdjust] Trying a backup approach...
[BundleAdjust] Error: no good camera pairs found!
[BundleAdjust] Picking first two cameras...
[BundleAdjust] Adjusting cameras 0 and 1 (score = 0.000)
[GetJPEGDimensions] File ./image20170205_134820745.jpg: ( 2656 , 1992 )
[GetJPEGDimensions] File ./image20170205_134551277.jpg: ( 2656 , 1992 )
[BaseApp::SetTracks] Setting tracks for image 0...
[BaseApp::SetTracks] Finished in 0.000s
[BaseApp::SetTracks] Setting tracks for image 1...
[BaseApp::SetTracks] Finished in 0.000s
bundler: BaseApp.h:271: std::vector<KeypointMatch>& MatchTable::GetMatchList(MatchIndex): Assertion `p.first != p.second' failed.
Aborted (core dumped)

Could it be because my focal length estimation was way off, or is there some other problem here?
Also, when downscaling the photos, should the focal length be downscaled proportionally, or should itbe left untouched?

SIFT alternative

SIFT is patented and makes using Bundler difficult for real world purposes. Would it be straightforward to replace SIFT with, for example, AKAZE from OpenCV?

Core Dump of Bundler

I successfully compiled bundler(master branch) on Ubuntu12.04. I disabled ceres.

However, when I run the script I got the following error:

./RunBundler.sh: line 145: 4600 Segmentation fault (core dumped) $BUNDLER $IMAGE_LIST --options_file options.txt > bundle/bundle.log

The last few lines of the log is:

tri.error[755] = 0.134
Adding match 21965 ==> 16102 [756]
tri.error[756] = 0.065
Adding match 21977 ==> 16109 [7

OSError: [Errno 8] Exec format error on Mac OSX

I get this error when running bundler.py on Mac OSX:

Isaacs-MacBook-Pro:mvsjpeg iytian$ python ~/bundler_sfm-master/utils/bundler.py --no-parallel
Traceback (most recent call last):
File "/Users/iytian/bundler_sfm-master/utils/bundler.py", line 646, in
run_bundler(verbose=args.verbose, parallel=not args.no_parallel)
File "/Users/iytian/bundler_sfm-master/utils/bundler.py", line 603, in run_bundler
key_files = sift_images(images, parallel=parallel, verbose=verbose)
File "/Users/iytian/bundler_sfm-master/utils/bundler.py", line 475, in sift_images
key_filenames.append(sift_image(image, verbose=verbose))
File "/Users/iytian/bundler_sfm-master/utils/bundler.py", line 438, in sift_image
stderr=fp_err)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in init
errread, errwrite)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 8] Exec format error

Is the SIFT binary incompatible on Mac OSX?

No such file or directory: 'list.rd.txt'

Hi ,

i encounter another error as below

Performing Bundler2PMVS conversion...
Error opening file list.txt for reading
Error opening file pmvs/bundle.rd.out for reading
Num cameras: 0
Running Bundle2PMVS to generate geometry and converted camera file
Running RadialUndistort to undistort input images
Running Bundle2Vis to generate vis.dat
Traceback (most recent call last):
File "RunPMVS.py", line 10, in
manager.doBundle2PMVS()
File "c:\Users\villa\Desktop\osm-bundler\osm-bundlerWin64\osmpmvs_init_.py", line 86, in doBundle2PMVS
undistortTextFile = open("list.rd.txt", "r")
IOError: [Errno 2] No such file or directory: 'list.rd.txt'

Any idea how to solve it?

Many thanks in advance

Can't call bundler.py from command line

I followed the instructions and try to call 'bundler.py --extract-focal' from the command line on ubuntu 14.04, but get a 'bundler.py command not found'. Do I need to fix a path or something?

Normal to have unused images in Bundler2PMVS conversion step?

Hi,

I'm currently working on a project which uses Bundler, and I noticed that during the Bundler2PMVS conversion step and thereafter not every image gets converted and used. Is this behaviour normal? The resulting model is also heavily skewed to one side, i.e. all the points in the point cloud are from images taken from one direction. I've listed the relevant lines below, where it reads 31 images but only writes 11. Hope you can help with this, thanks!

Performing Bundler2PMVS conversion...
[ReadBundleFile] Bundle version: 0.300
[ReadBundleFile] Reading 31 images and 1534 points...
[GetJPEGDimensions] File 1468938040522.jpg: ( 1200 , 900 )
[GetJPEGDimensions] File 1468938039313.jpg: ( 1200 , 900 )
[GetJPEGDimensions] File 1468938038490.jpg: ( 1200 , 900 )
[GetJPEGDimensions] File 1468938044102.jpg: ( 1200 , 900 )
[GetJPEGDimensions] File 1468938042958.jpg: ( 1200 , 900 )
[GetJPEGDimensions] File 1468938045515.jpg: ( 1200 , 900 )
[GetJPEGDimensions] File 1468938048919.jpg: ( 1200 , 900 )
[GetJPEGDimensions] File 1468938041837.jpg: ( 1200 , 900 )
[GetJPEGDimensions] File 1468938047940.jpg: ( 1200 , 900 )
[GetJPEGDimensions] File 1468938046721.jpg: ( 1200 , 900 )
[GetJPEGDimensions] File 1468938050178.jpg: ( 1200 , 900 )

@@ Conversion complete, execute "sh pmvs/prep_pmvs.sh" to finalize
@@ (you will first need to edit prep_pmvs.sh to specify your bundler path,
@@ so that the script knows where to find your
@@ RadialUndistort and Bundle2Vis binaries)
[ReadBundleFile] Bundle version: 0.300
[ReadBundleFile] Reading 31 images and 1534 points...
Undistorting image 1468938040522.jpg
Undistorting image 1468938039313.jpg
Undistorting image 1468938038490.jpg
Undistorting image 1468938044102.jpg
Undistorting image 1468938042958.jpg
Undistorting image 1468938045515.jpg
Undistorting image 1468938048919.jpg
Undistorting image 1468938041837.jpg
Undistorting image 1468938047940.jpg
Undistorting image 1468938046721.jpg
Undistorting image 1468938050178.jpg
[WriteBundleFile] Writing 11 images and 1534 points...
[ReadBundleFile] Bundle version: 0.300
[ReadBundleFile] Reading 11 images and 1534 points...
Num visible: 3824
Num cameras: 11
Finished!

gfortran

I also needed the package gfortran (ubuntu 12.04) to make these files, which is not mentioned in the install file and required a little googling for me.

Sorry, this is really nit picky

Any suggestions on reading the source code?

Hi Noah,

I'm a college student who's new to 3D-reconstruction. I ran your bundler and it works nicely.

Now I'm trying to read the source code but it seems difficult for me. I have learned a few of the basic about the main process of bundler, matrix E, F, K, some formulas and so on. But I get overwhelmed by such a big project. I'm wondering if you have any suggestions? Thanks.

Alex

Bundle2pmvs Segmentation Fault

Hi Noah,

The installation and compilation seems to be working fine, I successfully got the bundler output (bundle files), I have tested by importing and viewing the .ply file in Blender and see a sparse point cloud .

In the next step bundle2pmvs I get a segmentation fault (core dumped)

./bin/Bundle2PMVS /home/irtza/sfm_home/bundler_sfm /home/irtza/sfm_home/bundler_sfm/bundle/bundle.out
[ReadBundleFile] Bundle version: 0.300
[ReadBundleFile] Reading 6 images and 20 points...
Segmentation fault (core dumped)

Can you please direct me to solution?

How to save the descriptors of the points which are in the 3D point clouds?

Hi, friends.
I want to save the descriptors of the points which are in the 3D point clouds to a TXT file. I find that the process of saving the coordinates of the 3D points is written in the "BASE PATH/src/BundleIO.cpp" from line 822(yours may be diffirent). So the process of saving the SIFT feature descriptors can also be written in this cpp file, I think. However, I can't find which parameters I should use to do this. Is there anyone who has done the same job or has any idea? Please give me some advice. Thanks.

it is hurry,thanks

when i run bundler on other downloaded public pictures.there comes the questions you tell in Frequently asked Questions (FAQ) about Bundler .
then i followed the steps you told. before the last step: Then rerun bundler (just bundler, and not the matching or other steps) ---my matches.init.txt file is empty.is it all right?? and when i copyed the code:bundler list.txt --options_file options.txt .it does not run . what should i write?
can you help me ??

image processing error

Hi,Noah,
I met a problem when processing images:
[- Extracting keypoints -]
sift.txt: 行 1: 6760 Segmentation fault D:/bundler/bin/siftWin32.exe < ../ examples/dixing/IMG_0025.pgm > ../examples/dixing/IMG_0025.key
...
[- Matching keypoints (this can take a while) -]
D:/bundler/bin/KeyMatchFull.exe list_keys.txt matches.init.txt -1
Invalid keypoint file.
...
assertion "p.first != p.second" failed: file "BaseApp.h", line 271,
function: std::vector& MatchTable::GetMatchList(MatchIndex)

There is no error occur when I run the examples like kermit or ET,so I use my own picture set:
37 pictures, 5616x3744 (10MB each )
Then the error occurs, are the pictures too large? Is the limit of sift is 4000x4000?
It looks like that the sift didn't found any keypoints, and the key file is 1K. The output contains
Bundler.exe.stackdump:
Stack trace:
Frame Function Args
0000023AF00 0018007256A (0000023E3F4, 00000000007, 00100000104, 0000023DE50)
0000023AFA0 00180073D33 (00000000064, 00000000000, 000000000E4, 00000000000)
0000023B1F0 0018012DFEF (00000000002, 00000000000, 00000000002, 00000000001)
0000023B4E0 0018012AD90 (00300000000, 00000000000, 00000000000, 00000000002)
0000023B650 0018012B259 (7FF9A43106D0, 0000023C058, 001004C5314, 00000000006)
0000023B650 0018012B42C (7FF9A16714FB, 00000004048, 001802100D8, 0018012FE9C)
0000023B650 0018012B6EF (001004C5300, 001004C5314, 0000000010F, 0018021002F)
0000023B650 00180041B65 (0060005F200, 00000000608, 0060003B7E0, 00600052590)
0060003B7E0 00100456C19 (00180103FD0, 00000000000, 001004B0000, 0060004DEA8)
00000000000 00100419137 (00000000000, 00000000001, 00000000000, 0000023C060)
0000023CB50 0010041F4C9 (0018032B388, 0000023C59C, 0018014CD20, 00000000000)
0000023CB50 00100403692 (0060003BD10, 00180211196, 0000023CB50, 00180328FD0)
0000023CB50 001004BA609 (00000000000, 00000000000, 00000000030, 30001010000FF00)
0000023CBC0 00180048410 (00000000000, 00000000000, 00000000000, 00000000000)
00000000000 001800460DC (00000000000, 00000000000, 00000000000, 00000000000)
00000000000 00180046174 (00000000000, 00000000000, 00000000000, 00000000000)
End of stack trace (more stack frames may be present)

But in visualSFM (within bundler) everything looks good.Can you help me?
Thx

Hi snavely. recently i add new datasets to test,and it has Focal length,but it does not Extracting keypoints .why?

I am a new bird,please help me. Thanks a lot.
I used other datesets to run,there has Focal length,before running <bundler list.txt --options_file options.txt> it shows the errors like thoes below.

[Extracting exif tags from image ../examples/qinghuashengkelou/IMG_5974.jpg]
[Focal length = 28.000mm]
[CCD width = 35.800mm]
[Resolution = 4368 x 2912]
[Focal length (pixels) = 3416.313
[Found 102 good images]
[- Extracting keypoints -]
sift.txt: 行 1: 23392 Segmentation fault /cygdrive/d/bundler/bin/siftWin32.exe < ../examples/qinghuashengkelou/IMG_5871.pgm > ../examples/qinghuashengkelou/IMG_5871.key
sift.txt: 行 2: 23524 Segmentation fault /cygdrive/d/bundler/bin/siftWin32.exe < ../examples/qinghuashengkelou/IMG_5872.pgm > ../examples/qinghuashengkelou/IMG_5872.key
sift.txt: 行 3: 22696 Segmentation fault /cygdrive/d/bundler/bin/siftWin32.exe < ../examples/qinghuashengkelou/IMG_5873.pgm > ../examples/qinghuashengkelou/IMG_5873.key

[- Matching keypoints (this can take a while) -]
/cygdrive/d/bundler/bin/KeyMatchFull.exe list_keys.txt matches.init.txt
Invalid keypoint file.
Invalid keypoint file.
Invalid keypoint file.

Invalid keypoint file.
Invalid keypoint file.
[KeyMatchFull] Reading keys took 0.061s
[- Running Bundler -]
assertion "p.first != p.second" failed: file "BaseApp.h", line 273, function: std::vector& MatchTable::GetMatchList(MatchIndex)
../RunBundler.sh: 行 93: 27316 Aborted (核心已转储)$BUNDLER list.txt --options_file options.txt > bundle/out
[- Done -]

I use the cygwin run it .After I edit the list.txt(there have two list.txt(one is in result file,the other is in prepare file) and I edit both of them).
How does this code (bundler list.txt --options_file options.txt) run???-- --

New to bundler

Hi,

I am new to bundler.
I have downloaded the zip code.
May I know isit possible and how is it for me to install the bundler_sfm using cygwin in windows?
Many thanks

JayH

EstimateFMatrix failure

Hi, there. I am trying to run bundler in a set of 171 images, and I am getting this error:

bundler: Epipolar.cpp:142: std::vector<int> EstimateFMatrix(const std::vector<Keypoint>&, const std::vector<Keypoint>&, std::vector<KeypointMatch>, int, double, double*, bool): Assertion `idx1 < (int) k1.size()' failed.

Any ideas?... Should I try a smaller set with more similar images first, maybe? What could cause this kind of error?

BIN_PATH for sift and KeyMatchFull

bundler.py is looking for sift and KeyMatchFull under bundler_sfm/utils/bin, and not bundler_sfm/bin as it probably should...

BTW, if KeyMatchFull is part of bundler, is there an interest in turning it into a python C extension?...

Compilation fails due to undefined reference

Working from the latest commit c34aaa0, I'm able to compile. While running make, compilation works fine until compiling the source. Here's the truncated output containing the error:

g++ -o bundler -O3 -Wall -Wno-unused-result -std=gnu++0x -I../lib/imagelib -I../lib/sfm-driver -I../lib/matrix -I../lib/5point -I../lib/sba-1.5 -I../lib/ann_1.1_char/include -I../include -I/usr/include/eigen3 -L../lib -L../lib/ann_1.1_char/lib \
        -D__NO_UI__ -D__BUNDLER__ -D__BUNDLER_DISTR__ -D__USE_CERES__ BaseApp.o BundlerApp.o keys.o Register.o Epipolar.o Bundle.o BundleFast.o MatchTracks.o Camera.o Geometry.o ImageData.o SifterUtil.o BaseGeometry.o BundlerGeometry.o BoundingBox.o BundleAdd.o ComputeTracks.o BruteForceSearch.o BundleIO.o ProcessBundle.o BundleTwo.o Decompose.o RelativePose.o Distortion.o TwoFrameModel.o LoadJPEG.o BundleCeres.o -limage -lsfmdrv -lsba.v1.5 -lmatrix -lz -lblas -llapack -lcblas -lminpack -lm -l5point -ljpeg -lANN_char -lgfortran -lceres -lcholmod -lcolamd -lamd -lcamd -lcxsparse -lsuitesparseconfig -lgomp -lglog -lpthread
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libcholmod.so: undefined reference to `ccolamd_l_recommended'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libcholmod.so: undefined reference to `ccolamd_set_defaults'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libcholmod.so: undefined reference to `ccolamd_recommended'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libcholmod.so: undefined reference to `ccolamd'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libcholmod.so: undefined reference to `csymamd_l'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libcholmod.so: undefined reference to `csymamd'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libcholmod.so: undefined reference to `ccolamd_l'
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/libcholmod.so: undefined reference to `ccolamd_l_set_defaults'
collect2: error: ld returned 1 exit status
make[1]: *** [bundler] Error 1
make[1]: Leaving directory `/home/me/bundler_sfm/src'
make: *** [default] Error 2

I have libcholmod 2.1.2-39.1 installed. Is this perhaps a SuiteSparse issue? I was able to compile and install SuiteSparse just fine, but it looks like that's where the problem is coming up.

Provide Example of matches.init.txt

It would be great if the documentation included an example of, and format, for the matches.init.txt. I am interested in providing matches through other means, but its not clear in what format they should be provided.

Bundler on Ubuntu 14.04 LTS (core dumped)

Hi, when I try to run bundler, it gets right to [- Matching keypoints (this can take a while)-] and then it crashes with the following error message.

[- Running Bundler -]
bundler: BaseApp.h:271: std::vector& MatchTable::GetMatchList(MatchIndex): Assertion `p.first != p.second' failed.
/home/richard/github/bundler_sfm/RunBundler.sh: line 148: 7552 Aborted (core dumped) $BUNDLER $IMAGE_LIST --options_file options.txt > bundle/bundle.log
[- Done -]

Any idea what might cause this error?

Exif data + Sparse reconstruction

Hi,
I'm trying to use Bundler to create a sparse map of the following structure:

dji_0104

I have about 40 images (resized to 3600 x 2400) representing different views of the structure.
The exif data for the image does not contain the pitch, roll and yaw (RPY) by default. I was curious to see how Bundler handled it- here's the output:

full_images

Next, I ran Bundler on images with RPY as part of the exif data and here's the output:

rpy_images

I'd appreciate any insight to help me understand the following:

  • I'm unsure if this is a correct sparse point cloud.
  • How critical is it for Bundler to be provided with the RPY data.
  • Are the camera poses in the bundler.out file represented in the world coordinate frame?

Thanks!

Error when running bundler.py

I get the following error when running bundler.py within 'examples/kermit', it looks like a permission error with SIFT, has anyone seen this before?

Traceback (most recent call last):
File "/home/mike/bundler_sfm/utils/bundler.py", line 646, in
run_bundler(verbose=args.verbose, parallel=not args.no_parallel)
File "/home/mike/bundler_sfm/utils/bundler.py", line 603, in run_bundler
key_files = sift_images(images, parallel=parallel, verbose=verbose)
File "/home/mike/bundler_sfm/utils/bundler.py", line 475, in sift_images
key_filenames.append(sift_image(image, verbose=verbose))
File "/home/mike/bundler_sfm/utils/bundler.py", line 438, in sift_image
stderr=fp_err)
File "/usr/lib/python2.7/subprocess.py", line 522, in call
return Popen(_popenargs, *_kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 710, in init
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied

How to get the saved feature point

Hi,
I try to get the feature point with the cv::keypoint format:
_pt x & y coordinates of the keypoint
_size keypoint diameter
_angle keypoint orientation
_response keypoint detector response on the keypoint (that is, strength of the keypoint)
_octave pyramid octave in which the keypoint has been detected
_class_id object id

I'm not clear with the bundler_sfm output file.
How should I get them?

Focal length specified using --init_focal_length does not change during bundle adjustment

For images without exif data, I've given the focal length estimate using the --init_focal_length option. But it remains constant throughout the bundle adjustment process.

Contents of options.txt:
--match_table matches.init.txt
--output bundle.out
--output_dir bundle
--init_focal_length 1078.836
--constrain_focal
--constrain_focal_weight 0.0001
--run_bundle

Add typical workflow to readme

Hello,
can you please add command list for typical JPG -> bundler -> PMVS2 -> meshlab workflow to README.md?

For example MVE package has this simple HOWTO:

#Put JPG images into ./img directory
makescene -i ./img ./scn
sfmrecon ./scn
dmrecon -s2 ./scn
scene2pset -F2 ./scn ./scn/pset-L2.ply
meshlab ./scn/pset-L2.ply
#fssrecon ./scn/pset-L2.ply ./scn/surface-L2.ply
#meshclean -t10 ./scn/surface-L2.ply ./scn/surface-L2-clean.ply

I would like to see similar HOWTO for bundler+pmvs2 workflow.

Thank you.

Build issues on Mac

While building on Mac, I faced following issues:

  • Unable to find "malloc.h". This gets resolved by including "stdlib.h" instead of "malloc.h" in troubling files
  • Linking Issue. My Output of make below

I have used ceres by setting USE_CERES=true

$ make
uname: illegal option -- o
usage: uname [-amnprsv]
cd lib/5point; /Applications/Xcode.app/Contents/Developer/usr/bin/make
make[1]: Nothing to be done for `all'.
cd lib/ann_1.1_char; /Applications/Xcode.app/Contents/Developer/usr/bin/make linux-g++-shared
cd src ; /Applications/Xcode.app/Contents/Developer/usr/bin/make linux-g++-shared
/Applications/Xcode.app/Contents/Developer/usr/bin/make targets \
    "ANNLIB = libANN_char.so" \
    "C++ = g++" \
    "CFLAGS = -g2 -fPIC" \
    "MAKELIB = g++ -shared -o " \
    "RANLIB = true"
make[3]: Nothing to be done for `targets'.
cd lib/imagelib; /Applications/Xcode.app/Contents/Developer/usr/bin/make
make[1]: Nothing to be done for `all'.
cd lib/matrix; /Applications/Xcode.app/Contents/Developer/usr/bin/make
make[1]: Nothing to be done for `all'.
cd lib/sba-1.5; /Applications/Xcode.app/Contents/Developer/usr/bin/make
make[1]: Nothing to be done for `all'.
cd lib/sfm-driver; /Applications/Xcode.app/Contents/Developer/usr/bin/make
make[1]: Nothing to be done for `all'.
cd lib/minpack; /Applications/Xcode.app/Contents/Developer/usr/bin/make
gcc -O2 -ffast-math  -c -o dpmpar.o dpmpar.f
error: invalid value 'f95' in '-x f95'
make[1]: *** [dpmpar.o] Error 1
make: *** [default] Error 2

How do I resolve this issue?

How to solve "error trying to exec 'f951': execvp: No such file or directory"

Hello, thanks for bundler, just trying it out.

Just a little note for anyone who might run into this. I'm compiling on

$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux buster/sid"
NAME="Debian GNU/Linux"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

When running make according to your instructions, I ran into error trying to exec 'f951': execvp: No such file or directory. To overcome this, I had to sudo apt install gfortran. Afterwards, make would execute without errors.

Bundler2PMVS error

Hello Noah,

I'm testing Bundler with the kermit sample images. Here's what I have after running RunBundler on the examples/kermit directory (I am unsure if this what I'm supposed to be seeing):

selection_004

Next, I ran the Bundler2PMVS utility using:

list.txt in examples/kermit : list.txt
bundle.out in examples/kermit/bundle.out : bundle.out.txt

Here's the terminal output:

selection_003

Am I missing something? I'd appreciate any assistance in resolving this issue.. thanks!

no output files

bundler_sfm built successfully on Linux Mint 15.

When I run bundler.py on examples/kermit everything looks good and it ends with:

[- Running Bundler -]
[- Done -]

However, the bundle dir does not contain the expected output. Based on available info I expect .out and .ply files in this location.

Here's my full output, including source and log files: https://www.dropbox.com/s/f8znbru0c88ps1e/kermit.zip

Do you see anything in these files that indicates the build went wrong or a processing step fails?

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.