VisualSFM : A Visual Structure from Motion System
|
|
Change List | |
V0.5.26 | |
Function |
A simple model merging function (which were previously dropped since
V0.5.12) Use "SfM->More Functions->Merge Sparse Models" Add "+merge" to run this in the command line mode. *This only works if two models have a significant overlap. *Make sure you backup the model before running the merge. A simple interface to run external tools You may specify 3 external tool commands using param_external_tool[1|2|3], where %s.nvm and %s.ply can be used to refer to the NVM and PLY file. For example, param_external_tool1 upload_ply_to_some_server %s.ply --token=mytoken param_external_tool2 PoissonRecon --in %s.ply --out %s.poisson.ply --depth 10 Use "SfM->Extra Functions->Run External Tool" and select the tool to run. Save Compact Model -> Save Current Cameras This saves an NVM file of the current model with just the camera part. |
Bugfix |
Fixed a gtk-related bug that affects Linux & OSX Symptom: crash with warning "losing the last reference to undestroyed window" |
V0.5.25 | |
UI Changes |
Improved multi-camera selection in sparse point mode F1 : select cameras inside a rectangle F2 : select cameras that sees 3D points inside a rectangle The multiple selected cameras are hilighted. For photo deletion, you may hold CTRL to delete them one by one. Minor logging and parameter tweaks. You may see the link to FAQ when there is an error. |
V0.5.24 | |
Function |
Added socket command interface for programmable interaction Run "VisualSFM help" from commandline to see details. The command list can be found as menu ids in ui.ini Added parameter to let reconstruction run deterministically. Set param_deterministic_behavior to 1 Automatic saving of NVM for GUI mode Set param_model_auto_saving to 1 auto_saved.nvm in the binary directory after sparse reconstruction. You can now set low priority for the process in all OS Tools -> Use Lower Priority Turn this on if VisualSFM makes your computer too slow. |
UI Changes |
"Task Viewer" renamed to "Log Window" Disable Ubuntu global menu for VisualSFM. |
V0.5.23 | |
Function |
Removed other research projects from the release. Send me emails for versions that include my research projects. Exposed preemptive feature matching parameters h and t_h in the 3DV paper are available as preemptive_min and preemptive_size. Exposed parameter for limiting cpu usage in various stages. Set param_maximum_cpu_usage to limit the number of threads. Save Meshlab align file (.aln) for geo-referencing Set param_write_transformation_to_aln to 1, NVM and PLY will not be transformed, and the transform is saved as ALN instead. |
UI Changes |
Mouse wheel zooming now centers at the cursor location. |
V0.5.22 | |
Function |
Added support for VLFeat SIFT
binary (Thanks to Ellis) Obtain VLFeat SIFT binary and place it where VisualSFM is. Set param_use_siftgpu to 0, and param_use_vlfeat_or_lowe to 1. Use param_vlfeat_options to change the detector setting. Added hybrid sequence match (Thanks to Ellis) The GUI mode now accepts two numbers "RANGE STEP" The commandline mode accepts "@RANGE,STEP" for +pairs. In addition to the range to match, this mode also does full pairwise matching to a sub-sampled image set (every STEP-th image). Added camera coordinates based GCP transform Make a .gcp file such that each line gives: filename X Y Z Note the previous accepted format is: filename image_x image_y X Y Z Added GCP-based transform to commandline Use VisualSFM sfm[..]+pmvs+gcp [input] output.nvm GCPs will be loaded from [input].gcp Added pure triangulation to commandline Use VisualSFM sfm+add input.nvm output.nvm Added constrained bundle adjustment Use "SfM->More Functions->Run Constrained BA" Default: variable-motion constant-structure BA +SHIFT : variable-structure constant-motion BA +CTRL : constant-intrinsic BA Added parameter to override EXIF focal length Set param_use_exif_focal_length to 0 |
UI Changes |
Added perspective rendering to 3D viewing Toggle by "View -> Perspective View" Set ui_perspective_view to 1 in ui.ini for permanent choice. Added alternative menu names for UI customization Modify the template ui.ini and place it where the binary is. Allows for translation to other languages Added option to hide the research menus Change ui_show_research to 0 in ui.ini |
Bugfix |
Fixed a bug in handling large focal lengths Fixed a bug in handling sift binary path that has spaces Fixed a bug in detecting remote desktop environment |
V0.5.21 | |
UI Changes |
Toolbar button for reloading and opening nv.ini Hold CTRL to open the file in editor Menu item for enabling/disabling memory cap for SiftGPU Toggle "Tools->Enable GPU->Cap Memory Usage" Reuse the thumbnail button for spanning trees/match matrix Hold CTRL to show spanning trees Hold SHIFT to show matching matrix Menu item for changing param_pmvs_level between 0 and 1 Use "SfM->More Functions->Use Level 0 for PMVS" Many changes to the menu names and toolbar icons. Reconstruct 3D -> Reconstruct Sparse Resume SFM -> Reconstruct Resume Run CMVS/PMVS -> Reconstruct Dense Updated tooltips for the toolbar |
Function |
Pure triangulation from known cameras Create an NVM file that contains valid cameras and 0 points Load the NVM file, and run feature matching as usual Use "SfM->More Functions->Find More Points" to generate the points Keep input frame order In the GUI mode, type command "sort" in the statusbar In the commandline mode, add +sort to the sfm_option Re-optimize 3D reconstruction for shared calibration In the GUI mode, use "SHIFT + Bundle Adjustment" In the commandline mode, add +shared to the sfm_option Support for using two GPUs for feature matching You have to use CUDA-enabled SiftGPU for this! Specify two devices for param_use_siftgpu, for example 1 2 The first one must be 1 or 2, and the second one can be 2 or 3. Here 1 is for GLSL, 2,3 are for the first/second CUDA device Support for bundler format (.out) Export to bundler file through "Save NView Match" Load bundler file through "Load NView Match" for viewing Note that radial distortion will be ignored! Drop-list for entering options and GCP coordinates. History coordinates are saved in the droplist. Load a 3D coordinate list to the drop-list (use .gcpx extension) Option for saving PLY in ASCII format Change param_write_ascii_ply to 1 Commandline option for exporting feature matches Use VisualSFM sfm[+exportp/exportf] input output.txt Export a list file for the images in visualize folder for Meshlab A list.txt file is generated for each PMVS folder Locate the current image in file browser using command "locate" Native resolution visualization for large images |
Bugfix
|
Minor bugfix for incorrect point count in bundle.rd.out and sparse PLY Minor bugfix for reconstruction of GPS-tagged photos within a small range Minor bugfix spanning tree visualization |
V0.5.20 Fixed a nasty bug that drags down the undistortion speed! The undistortion stage is now probably more than 10x faster on large datasets. The log Viewer also reports more timing on the undisortion now. Support for a soft shared calibration constraint among all images. Enable by "SfM -> More Functions -> Use Shared Calibration" Try this if all the images should have the same focal length PBA in this mode is slower, and you can enable it only in a final bundle adjustment Support for a UI setting file (ui.ini), you may add the following example lines in the file # Set the following to 1 to make the viewer using dark background ui_dark_background 1 # Set the following to 1 to make the log viewer detached in the beginning. ui_logviewer_detached 1 # Set the expected size of the drawing area. ui_view_dimension 800 600 Fixed a bug of failing to generate mvs.ini for CMP-MVS in Linux/OSX Fixed an issue that loading multiple images is very slow in Linux The internal GTK recent manager is now disabled when choosing multiple files. Fixed an issue that the GTK Log Viewer cannot be moved in Linux Fixed a bug of using poor floating point precision when writing PLY. Fixed a bug that the spanning tree function crashes in Linux V0.5.19 Included the Schematic Surface Reconstruction project(CVPR12) Remove the Viewpoint Invariant patch Project Improved the CPU feature matching speed More optimized binaries for Linux/OSX (may have significant speedup) Allows to show points seen by n+ cameras in N-View Point mode use "vmin n" command in statusbar Allows to quit the feature matching loop Allows to bypass the remote desktop check Change param_check_remote_desktop to 0 Select a prioritized subset of image pairs for matching instead of all Enable by SfM->Pairwise Matching->Use Prioritized Subset Use +subset under commandline This is only used when the # of images are larger than param_prioritized_subset_switch Fixed broken pointer to the Google group under Help V0.5.18 Point removal/cleanup in dense point mode Press F1, drag a rectangle to select points, Press DEL to remove points Supporting 2D ground control points (GCP) in GCP-based transform Enter the GCP selection mode by clicking "SfM->More Function->GCP-based Transform", You will see the associated controls in the task viewer. Save the GCPs to a text file by using "Save NV-Match" and specifying .gcp as extension. Load the GCPs by "Load/Add NV-Match", and select "Ground Control Point" from the drop list. The 3D "Manual Transform" function in old versions is merged to "GCP-based Transform" Export to the format used by CMP-MVS in addition to Furukawa's CMVS/PMVS Click "SfM->Run CMVS/PMVS", and select the second format option Data will be saved in output.nvm.cmp folder The corresponding command option is +cmp (e.g. VisualSFM sfm+cmp input output.nvm) Export to new cameras_v2.txt instead of cameras.txt Includes the original file names, and GPS in original EXIF Single reconstruction step Use Ctrl + "Resume 3D" to add a single image Command line resume change [VisuaSFM sfm+resume <input>.nvm output.nvm] Now searches for additional images in <input>.nvm.txt Undisortion thread parameter New parameter to control the number of threads: param_undistortion_thread_num Pointer to Google Group Click "Help->Online Discussions" to go to the Google Group Switch between Vision/OpenGL 3D coordinate Vision (Y downward, Z forward), OpenGL (Y upward, Z backward). Vision coordinate is the default. Switch by "View->Vision/OpenGL 3D" Rotate 3D scene around x axis by a specified angle through the statusbar command rotatex<n> For example, rotatex180, rotatex90, rotatex45, ... Some fix for the animation function Fixed a bug in command "am load" Quit animation on ESCAPE press Fixed a bug in estimating 3D Transformation with perfect planar points V0.5.17 Exposed a parameter for controlling the number of CPU threads for feature matching, param_cpu_siftmatch_num_thread: the number of CPU threads in addition to GPU matching Exposed two parameters for feature detection param_use_siftgpu: 0 for CPU, 1 for GLSL, 2 for CUDA, 3 for customized parameter param_use_siftgpu_customize: the customized parameter when param_use_siftgpu==3 Fixed a bug of not respecting device selection for feature matching param_use_siftmatchgpu: 0 for CPU, 1 for GLSL, 2+ for CUDA Fixed a bug of not selecting images with upper case .JPG file extensions in Linux, Fixed a bug of not reading EXIF GPS coordinates when there are multiple EXIF sections, Fixed a bug of not converting ASCII SIFT to binary format, Fixed a bug of not quitting loop when reconstructing multiple 3D models and searching for more, Updated the copyright dialog and copyright statement. V0.5.16 Added sequence mode for pair-wise image matching Instead of all the pairs, this mode matches only two frames within a specified range. Menu: "sfm->Pairwise matching->Compute Sequence Match" For command line: use "VisualSFM sfm+pairs input ouput @range", where range is a number Added GPS-based Geo-reference by using RANSAC, Menu: "sfm->More Functions->GPS-based Transform". Click the Menu item to see more instructions. Supports GPS in JPEG EXIF or a specified GPS file Use Ctrl + "GPS-based Transform" to select a GPS file input filename lat lng <optional alt> Parameter param_gps_variance & param_gps_ignore_exif_altitude Updated Manual Transformation interface It now picks one point at a time instead of two. With in this mode, the 3D point coordinates are shown in status bar Shows 3D point coordinate in statusbar when CTRL (changed to C in V0.5.17) is pressed Moved "Watch current Path" function to status bar commandline "watch" V0.5.15 Fixed a memory leak introduced in V0.5.13; V0.5.14 Added light-weight mutex for visualization stability; Added support of fixed calibration for command line mode; add [+k=fx,cx,fy,cy] to sfm_option Added point selection in dense point cloud mode; allows finer localization for 3D model transformation Fixed a bug on fixed calibration (introduced in V0.5.13); Fixed a bug in track generation; Improved algorithmic efficiency. SiftGPU update: SiftGPU issued a bugfix on CUDA-based matching; But no need to update if using GLSL-based SiftGPU. V0.5.13 Memory optimization for large datasets (e.g. 500 images or more) Bug fix in relative path handling when running PMVS from command line Bug fix for calling XInitThreads too late on Mac OSX Bug fix for incorrectly detecting VNC without connecting a physical monitor as remote desktop Now respecting the device selection parameter in nv.ini Modify param_use_siftmatchgpu and param_use_siftgpu This allows to select CPU when running from console. Minor window alignment change for running through Xming. V0.5.12, Partial calibration support, "SfM->More functions->Set Fixed Calibration" For now, a single calibration[fx, cx, fy, cy] is supported No radial distortion support, so you have to undistort the images Manual transformation of 3D Models, "Sfm->More Functions->GCP-based Transform" Allows you to manually transform the coordinate system Fixed a GTK-related dead-lock bug for Linux Removed the 3D model merging functions More code cleanup and function removal/replacement (P3P, 5point, ...) Small Linux UI improvements V0.5.11, Custom pair-list matching "SfM -> Pairwise Matching -> Compute Specified Match", allows you to specify a pair-list to compute matches In comparison, "Compute Missing Match" computes all image pairs This is useful for matching video sequences Custom features matches "SfM -> Pairwise Matching -> Import Feature Matches", you may compute the feature matches by using your own methods, and VisualSFM will finish the geometric verification for those pairs Exposed the customized matching to the command line interface(+pairs/+import) Fixed a Linux deadlock bug that happens when job size is too small V0.5.10, Fixed an initialization bug when all matches are too good. Change point display size by using "Alt + Mouse wheel" Show/hide cameras in Dense point cloud mode by pressing "F" Show/hide axis plane in Dense/Sparse point cloud mode by pressing "A" Automatic orientation adjustment after reconstruction. (use command "ao" to correct old results) Some other visualization improvements. V0.5.9, Exposes most of the CMVS/genOption/PMVS parameters (Modify param_pmvs_* nv.ini) Re-implemented the owner-draw win32 menu to remove some external code. More cleanup to remove code from some previous projects V0.5.8, Implemented high-resolution screen capture (Click SHIFT when using "Save Current View") * Imagine zooming current view, but still get all the details! * The zoom factor is 4x by default; Change through quick command "czoom factor" * The image dimension can be zoomed up to 25k * You may need to manually change point size with "psz size" when rendering sparse points Command line improvements. (use VisualSFM help to check more details) 3-mode visualization of sparse reconstruction: cameras+points/points/cameras. use 'T' to switch Modified the "export for PMVS/CMVS" function to still run CMVS/genOption but skip PMVS Added export of "cameras.txt" to contain all camera information when export data for PMVS/CMVS V0.5.7, Improved NFS writing by using reordered asynchronous writes. (set param_asynchrous_write = 1) Improved the 3D Model merging function (SfM->More Functions-> Interactive/Automatic Merge). Added option to choose between GLSL and CUDA for SIFT Matching. (Requires CUDA-enabled SiftGPU) Fixed a bug of not releasing pixel data after undisortion for PMVS (Thanks to Ferreira). Fixed a bug of segmentation fault when running under non-X Linux terminal. Fixed a bug of segmentation fault when restarting unfinished matching. Fixed a bug of "Run CMVS/PMVS" not working, which is probably just introduced. V0.5.6, Fixed a bug in GPU memory pre-allocation that may halt SiftGPU. (happens if GPU memory < 1GB) Added interface for CMVS export without running CMVS/PMVS. (Use by Ctrl + "Run CMVS/PMVS") Changed command line interface. ("sfm" does sparse reconstruction only, "sfm+pmvs" does both) Fixed a bug in relative path handling in command line interface. Added segmentation fault handler to flush the log file before exit Minor UI changes. V0.5.5, Modified NVM saving to keep all image file extensions (lower case ".jpg" was omitted previously). Added Toolbar tooltips for Linux UI Added Menu Item pointing to online documentation Fixed a rare Windows UI bug that may crash the program when clicking on Menubar Fixed a minor bug on not releasing pixel data after generating thumbnails. V0.5.4, Limit the number of thumbnail textures to save graphic memory for SiftGPU & PBA Fixed minor bug on limiting the reused images between multiple models. Added Menuitem for exporting pairwise image matches to a TXT file Update from SiftGPU, 9/03/11, Fixed a SiftGPU bug on dealing with Memory Cap(happens on High-res image, small GPU Memory) V0.5.3, Improved command line interface, and added Ctrl+C Handler. Removed unnecessary point filtering (slow down when a model gets too large). V0.5.2, Fixed Windows XP File Dialog issue. Added GPS handling. Run feature matching according to GPS in EXIF.(parameter in nv.ini) V0.5.1, Added interface for running CMVS/PMVS. Do it with a button click! (parameter in nv.ini) V0.5.0, Fixed Linux Multi-thread deadlock bug |
|