TeleSculptor: Aerial Photogrammetry Application powered by KWIVER
This is a minor release of TeleSculptor that provides both new functionality and fixes over the previous v1.1.0 release.
The biggest changes in this release are the transition to a new Sphinx-based user manual at https://telesculptor.readthedocs.io, the removal of deprecated MAP-Tk command line tools, improved handling of mesh coloring from the video, and an interface for manual camera calibration by manually placing camera registration points on frames.
TeleSculptor v1.2.0 also builds on updated KWIVER v1.6.0 and Fletch v1.5.0, which provide upgraded third-party packages and improvements to algorithms. For example, TeleSculptor now uses VTK 9.0, OpenCV 4.5, and Qt 5.12. KWIVER now supports both CPU and GPU (CUDA) implementations for depth map fusion, and an option has been added to TeleSculptor to enable GPU use. While command line tools have been removed from TeleSculptor, it is now possible to reproduce the entire TeleSculptor processing chain from the command line using the kwiver command. The command line workflow uses KWIVER v1.6 directly and does not require the TeleSculptor GUI.
Additional details about TeleSculptor changes in this release are provided in the detailed release notes below.
TeleSculptor Application
Move computation of mesh coloring to a separate thread to prevent it from blocking GUI interaction while running.
Display a progress bar when coloring the mesh using more than just the current frame.
Added an option to mesh coloring that excludes coloring surfaces that are occluded from the camera's viewpoint. This prevent colors on closer surfaces from also spilling onto the hidden surfaces behind them.
Added an option to mesh coloring that excludes coloring surfaces using pixels masked out by the loaded mask image sequence.
Added an option to export the fused mesh as a VTP file including the colors projected from all frames instead of only the mean or median color.
Updated depth computation tools to return uncertainty images to be displayed and saved.
Update Depth Map and Batch Depth Map estimation tools to select the support frames based on a new angle_span parameter rather than sequential frames. This allows more consistent angular sampling of frames.
Added support for building against VTK 9.0.
Added an option to import PLY mesh files like those exported from TeleSculptor
Added support for opening .ts (MPEG transport stream) video files.
Added interfaces to the GCP and Camera View panels to allow the placement of Camera Registration Points (CRPs). These are manual feature tracks placed on multiple images and associated to a GCP.
Added an interface to estimate a camera from manually placed CRPs.
Added keyboard shortcuts to change frames and to change the selected ground control point.
Added an option to enable use of the GPU. This specifically supports depth map fusion for which both GPU and CPU implementations exist. For the first time, it is now possible to run TeleSculptor end-to-end without a CUDA-enabled GPU.
Tools
Build System
The superbuild now allows using system packages for many dependencies.
Updated OpenCV version to 4.5.1
Updated Qt version to 5.12.8
Updated VTK Version to 9.0
Documentation
TeleSculptor Application
This release provides patches to the TeleSculptor v1.1.1 release to address issues. TeleSculptor v1.1.2 is a bug fix release with no new functionality.
TeleSculptor v1.1.2 also updates from KWIVER v1.5.0 to v1.5.1. Many of these KWIVER bug fixes also resolve TeleSculptor issues. Please also refer to the release notes for KWIVER v1.5.1. https://github.com/Kitware/kwiver/releases/tag/v1.5.1
TeleSculptor Application
Coloring landmarks by height previously set the automatic range for the colormap to the entire height range, which is not very useful since most data sets have outliers. This has been corrected such that the auto range of the colormap spans the middle 90% of the height values.
Fixed an issue with not saving project state after loading a video. If TeleSculptor was closed after loading a video but before other processing, the project would not remember which video was loaded.
Fixed Batch Compute Depth Maps tool to only save final depth maps and not intermediate results. This prevents intermediate results from accidentally overwriting final results.
Fixed Run End-to-End tool to properly save depth maps after disabling the writing of intermediate results.
Fixed the display of color mapped data when non-finite values are present in the data. The data range is now set using only the finite values.
Fixed warning in new versions of CMake about conversion of TYPE to STRING.
Fixed an issue with the Camera View not properly updating the visualization of landmarks when landmarks change during tool updates.
Fixed an issue in which std::isfinite is not resolved with some compilers due to the missing cmath header.
Packaging
This release provides patches to the TeleSculptor v1.1.0 release to address issues. TeleSculptor v1.1.1 is a bug fix release with no new functionality.
Documentation
Packaging
TeleSculptor Application
Fixed a crash that occured when opening a bad video file. TeleSculptor now handles the failure to load without crashing.
Fixed a crash that happens when running end-to-end immediately after feature tracking completes.
Fixed an issue where cameras and depth maps in a project file were not loaded when opening a project that uses an image list instead of a video file. This was because the metadata scan needs to complete first to index the image file names for each frame. Cameras and depth maps are now loaded after the metadata scan is complete if not already loaded earlier.
Testing
This is a minor release of TeleSculptor that provides both new functionality and fixes over the previous v1.0.0 release. The most prominant features of this new release are improved robustness in struture from motion, an option to use ground control points to georegister a solution, a logger panel to show log messages from the algorithms, improved spatial distribution of tracked features, improved video loading, and a "Run End-to-End" compute option. Many more improvements have also been made, and these are documented in detail below.
TeleSculptor v1.1.0 builds against KWIVER v1.5.0 and Fletch v1.4.0.
Configuration
TeleSculptor Application
Updated the code to work with API changes to kwiver::vital::geo_point.
Added a logger panel to show log messages.
Added logging to a text file in the project folder.
Added an option to the Ground Control Points panel to apply the GCP constraints to correct for georegistration. The apply button estimates a 3D similarity transform that best aligns the GCPs with their specified geodetic locations (latitude, longitude, elevation). The estimated transform is then applied to all the data to georegister.
When selecting a subset of video frames in the track features tool the algorithm now considers modifying each selection slightly to give priority to picking nearby frames which have camera metadata.
Changed feature tracking configuration to use non-maximum suppression to achieve a better spatial distribution of features when contrast is unevenly distributed across the image.
Switched from homography to fundamental matrix as the default geometric filter in feature matching. The fundamental matrix supports more general scenes and does not require a planar scene or small motion assumption.
Improved speed of metadata access and loading.
Estimate focal length during structure from motion. This option was previously disabled by default.
TeleSculptor now loads all video frames and metadata by default instead of sampling every 10th frame as in the past. This is feasible because the feature tracking now down samples frames to a reasonable amount instead.
Added support for bundle adjustment callbacks that do not update the GUI state. This allows the initializer tool to support early termination without making it run slower.
Added new option "ignore_metadata" to force the camera estimation algorithms to ignore the KLV metadata. This is useful if the metadata is known to be incorrect.
Added a new option to keep the origin of the geospatial coordinate system fixed, rather than re-estimate it when the data changes.
Added an option to write out the fused mesh as OBJ. Currently this option supports only the mesh and does not write color per vertex.
The ruler tool now supports constrained measurements on the vertical (Z) axis by holding the "z" key or in the horizontal (X-Y) plane by holding either the "x" or "y" keys.
The ruler tool now behaves like a ruler with a fixed tick unit distance. Dragging the ruler progressively increases the number of ruler ticks.
The user can set the ruler tick distance and color via a popup menu next to the ruler measurement button.
Improve responsiveness and information in progress bar for Compute Depth tool.
Improved the information in the progress bar for Initialize Cameras and Landmarks tool.
TeleSculptor now uses image masks in the depth estimation tools if image masks have been loaded. Masks indicate which pixels to ignore in depth estimation.
TeleSculptor now uses image masks in the depth fusion tool if image masks have been loaded.
The tool to batch compute depth maps now provides more frequent status updates and intermediate results. The cancel option is also more responsive.
The auxiliary data fields provided along with depth maps and shown in the depth map viewer have been renamed. "Best Cost" and "UniquenessRatio" have been replaced with "Weight" and "Uncertainty". The previous names were specific to an older algorithm that is no longer used. Weight is an image of zero to one values indicating how much each pixel contributes to the final fused model. One use case for weight is the use of masks to disable contribution for some pixels. Uncertainty is not used yet but is a place holder for measurements of how uncertain the depth estimate is each pixel.
Added a menu for compute options including the option to specify whether or not to use metadata as constraints in computations and an option to specify whether or not to allow variable (e.g. zooming, swapping) lens.
Added a special "Run End-to-End" tool to the compute menu that runs a pipeline of all main tools in order to start from a video and end with a fused 3D surface mesh without any user interaction.
Improved video loading to not require an entire scan of the video upon each open. The scan is still needed to collect metadata, but this can now be canceled if metadata is not required.
Build System
TeleSculptor Application
Fixed a divide-by-zero bug caused by computing the mean landmark location when there are zero landmarks. This happened when recomputing the local coordinate system without landmarks.
Improved placement of ground control points and ruler tool based on picking the closest cell or point in the scene along the camera direction.
Fixed a crash that occurred when applying a color gradient to data with all the same value. This occurred when selecting to visualize Uncertainty of depth maps which is currently unused and all zeros. Likewise with Weights of depth maps when no mask is used.
Fixed a rendering issue in which cameras were invisible on some platforms. This bug was caused by setting the line width to 2. Reverting this change fixed the issue.
Improved video playback speed by avoiding excessive seeking.
Updated "About" dialog github URL from maptk to TeleSculptor.
Fixed a bug in translating the ROI when shifting the geo-origin point. Previously the ROI was collapsing because both the min and max point were set to the translated min point.
Fixed a bug in which GCPs or ruler end points would render in random locations in the camera view if the world location was behind the camera. The GCPs or ruler for invalid projections are no longer drawn.
Fixed a bug in which GCPs imported from a file after a camera was loaded were imported twice.
Fixed an issue with location precision of landmarks in the Camera View that occurred when some points project very far from the image. These points are now filtered out.
Packaging
This is the first major release of TeleSculptor. TeleSculptor was previously developed as beta software under the name MAP-Tk. TeleSculptor is a graphical application for aerial photogrammetry that builds on KWIVER. All algorithms have been moved into KWIVER and this project now focuses on the user interface. Some command line utilities remain in this release, but these will move into KWIVER in the future as well.
This is the first release in which TeleSculptor provides an end-to-end pipeline for building a dense 3D model from a video in the graphical application without the need for any command line tools. This release has been well tested on a particular type of aerial video that uses an orbital flight pattern and encodes metadata in a KLV stream. In future releases we will generalize the algorithms to work more reliably on a wider range of aerial video, both with and without metadata.
There is a very large set of changes since the last beta release. These changes are documented below in detail. At a high level, these changes are all focused around transforming MAP-Tk, a developer focused toolkit, into TeleSculptor, an end-user focused application. In support of this transition, TeleSculptor can now configure and build itself with a CMake superbuild. That is, building TeleSculptor can now automatically download and build Fletch and KWIVER before building itself to provide all dependencies in a single build. The superbuild will also package up the binaries into an installer.
On MacOS, the color selection buttons function correctly but always show the color as white in the button.
Default colors used during the first run of the application are incorrectly set to white or black. However, once the colors are changed these settings are cached and reloaded correctly.
The libraries in the Linux installer package do not properly set the runpath so it is required to set LD_LIBRARY_PATH to point to the "lib" directory of the package before running the executables.
A user interface is provided for setting ground control points to constrain georegistration of the 3D model, but this release is missing the function to apply these constraints to improve the georegistration.
Overall
TeleSculptor now enforces the use of Python 3 when Python is enabled.
Added a Dockerfile to aid with generating Linux packages in a clean environment.
Removed all uses of VITAL_FOREACH, which has been removed from KWIVER, and replace with standard C++11 range-based for loops.
Updated everything to use the new feature_track_set class and feature_track_state class from KWIVER. The previous data structure, track_set is now a base class and is generalized to support other types of tracks, like moving object tracks.
Replaced use of the geo_map vital algorithm with the new geodetic conversion functions and data structures provided in KWIVER. The new approach still uses plugins (e.g. PROJ4) but only supports one backend at a time that is globally accessible throughout KWIVER. There is no more need to explicitly pass a geo_map object around. New data structures, like geo_point, know how to convert themselves into different coordinate systems.
MAP-Tk Library
modified extract_feature_colors API to accept a feature_track_set by shared_ptr, modify to tracks in-place, and return the same modified feature_track_set. It also uses the new track_set API to more quickly find track state on a frame and avoids destroying the frame index if one is used in the track_set.
Moved local_geo_cs class into KWIVER and updated TeleSculptor to used the KWIVER version.
Plugins
Moved the Blender and SketchUp plugins out of the scripts directory and into a top-level plugins directory, added a README, and configured these files to be installed.
The SketchUp plugin now supports older version of SketchUp (back to version 8) and only attempts to load frames which have both an image file and camera file available in the project.
TeleSculptor
Updated the TeleSculptor application to build against VTK 8.0 instead of VTK 6.2. This upgrade provides substantial improvements to rendering speed of large data sets.
Changed frame indexing to be one-based rather than zero-based. This change was needed since the new streaming video API used in the tracking tools now produces frames with one-based indexing. Track files produced with older versions that had zero-based indexing are detected and frame numbers are shifted by one.
Video files can now be open directly or via a config file into TeleSculptor for viewing and processing.
Added the concept of a "Project", which is essentially a configuration file in a working directory in which algorithms can write results. The user must now create or open a project before running an algorithms.
TeleSculptor now depends on Sprokit from KWIVER and adds a new Sprokit powered compute tool to compute feature tracks using the new KLT feature tracker in KWIVER. The tool also detects key frames in video and uses ORB feature detection and matching on the keyframes with bag of words frame matching for loop closure.
A new tool is available in the compute menu to compute a dense depth map on the current frame. This uses the new Super3D algorithms in KWIVER.
TeleSculptor now supports logging with log4cplus.
If an input video has KLV metadata (0601 or 0104) TeleSculptor will now parse that metadata and use it to construct initial camera models. It will also use the metadata to set a geographic origin for the project, which is written to the project directory.
TeleSculptor now has a pair of new tools in the Compute menu to save out either keyframes or all frames of video to image files.
TeleSculptor now uses a common convention for naming all output files supporting a frame of video. If the input is an image list it uses the source image names, if a video it uses video name plus frame number.
TeleSculptor now has a new tool for triangulating landmarks. This is useful when cameras are provided (e.g. from metadata), but landmarks are not.
TeleSculptor now supports loading and processing videos with increasing but non contiguous frame numbers. This may occur when loading a video at a reduced frame rate.
TeleSculptor now has an option to display only keyframes when playing back a video.
The compute menu has been rearranged and now has an "Advanced" submenu containing tool that are less stable or less commonly used.
The loop over video frames to extract metadata for camera initialization now occurs in a separate thread. This allows the user to interact with the GUI and view the video while the camera initialization occurs.
The slideshow delay slider has been replaced by a speed slider that controls the slideshow playback speed. When the slider is to the far left, slideshow speed is 0.25Hz and when to the far right, the slideshow plays without any delay between frames.
Added separate visibility and color options for display of feature tracks that have descriptors and those that do not have descriptors. This allows for visual distinction between KLT tracks (without descriptors) on each frame of video and ORB, or similar, tracks (with descriptors) on keyframes.
Added a progress bar that appears below the World View to show progress when tools are running. It can also display a status message.
Added CMake superbuild to automatically pull and build a specified version of all the necessary libraries from Fletch and KWIVER. This allows TeleSculptor to be fully built from a single build, rather than having to manually build and connect multiple builds. The superbuild does still allow using a manually built KWIVER/Fletch if so desired.
Updated TeleSculptor to use Qt version 5.11 instead of 4.8. This also enables the OpenGL2 backend in VTK 8.0 which provides faster rendering. Qt5 now requires Python to build, so we are also requiring Python for the superbuild, which enables Python in KWIVER. We are not yet taking advantage of KWIVER Python bindings in TeleSculptor, but may in the future.
Added ability to interactively add and edit a region of interest in the world view.
Added ability to specify image masks. Currently these are supported by dense feature tracking.
Added ability to place and edit ground control points that are synchronized across the world and camera views. The points can be exported to a geojson file and get imported using the standard import project infrastructure.
Double-clicking the mouse pointer in the WorldView allows to set the center of rotation of the view camera about the nearest picked point in the view.
Refactored the code to remove the ReconstructionData class that was left over from when surface extraction was part of a separate repository.
Added metrics for RMS error by camera and a check that the rays meeting at a point have some minimum angle.
Switched the iso-surfacing algorithm to flying edges.
Rebranded "MAP-Tk TeleSculptor" to simply "TeleSculptor". The name "maptk" is still used in parts of the source code.
Combined the "Mesh" and "Colored Mesh" export options into a single option named "Fused Mesh". This will save the mesh with or without color depending on whether color is enabled when saving.
Added High-DPI icons for display on higher resolution displays.
Placing ground control points in the view uses a smart guess initial position method. When placing points in the world view, a point placer is used which snaps the point to a nearby landmark or the ground plane. When placing points in the camera view, the depth of the 3D point in the world view is determined by picking along the active camera direction vector for landmarks or the ground plane.
We now recompute the geographic origin whenever the landmarks are updated. This keeps the ground plane aligned with the data.
Use robust bounds fit to the landmarks when setting or resetting the ROI.
Added a new ruler measurement for measuring the distance between two points in the view. The ruler measurement displays two synchronized rulers between the world and camera view. Placing the end-points of the ruler also uses the smart guess initial position approach employed by ground control points.
The default state of the depth map and volume visibility in the World View is now "visible". So you no longer need to turn them on manually to see these results.
Set the default surface threshold to 0.0 (instead of 0.5) as it should be and set the spin box increments to 0.1.
Added an option to the feature tracking tool to provide a maximum number of frames to track on. These frames are selected uniformly from the video.
Added an option to the display to only show frames that have feature tracking data.
Set default filenames in save dialog boxes.
Added a check box to show only inlier residuals. Previously this was the default behavior. Now unchecking the box shows outliers too. Also added an option to color outlier residuals in a different color.
Build System
Installer
TeleSculptor
Removed an unused signal/slot connection that was generating warnings on the command line. Neither the signal nor the slot existed.
Fixed a visualization bug in which a frame with an invalid camera was still rendered in the world view by borrowing the camera from the most recently displayed valid frame.
Fixed a visualization bug in which camera frustums were not rendered when built with GCC with compiler optimizations turned on.
TeleSculptor now catches more algorithm exceptions and turns them into warning messages rather than letting the application crash.
The functionality to color mesh surfaces was broken when TeleSculptor switched to using the video_input API to load all imagery. This code has now been fixed to work with video_input. It now works as it did before. It also no longer requires camera files to loaded again from KRTD files and instead uses the in memory cameras.
Increased the number of significant digits used to 12 when writing the camera parameters to a krtd file with the Blender plugin.
The camera path was not showing since the upgrade to VTK 8, now it is.
Camera scaling had been broken since it relied on camera path, which was broken. Fixing the camera path rendering also fixed this. Also adjusted the camera scaling range to make it more reasonable.
Fixed a crash in the GUI that occurred when the video reader plugin returned a nullptr instead of a valid frame.
Fixed issues with ROI initialization and the use of the ROI in determining display scale. If not manually set, the ROI is automatically initialized before running tools. When set, the ROI (not landmarks) is used to set the scene scale for drawing cameras.
Switched from calling get_image() in a loop during the depth_to_vtk function to outside the loop. This improves processing speed by eliminating unnecessary image allocations for certain underlying image classes.
Fixed the volume surface mesh to use a solid color when not in colorize mode previously the color would change with the surface threshold.
Fixed the colorize checkbox for the volume to return the model to solid color when unchecked.
Fixed a bug in which the active camera would sometimes flicker or disappear when updating information without changing the active frame.
Fixed a bug in which a progress bar would sometimes not go away after a job was completed.
Fixed an issue in which the depth map computation was only using support frame coming after the reference frame. The algorithm now uses equal frames both before and after the reference frame.
Tests
This is a minor release of MAP-Tk that provides both new functionality and fixes over the previous v0.9.0 release. This release introduces another big refactoring of the MAP-Tk code base. MAP-Tk now builds against KWIVER instead of the stand-alone Vital repository. Vital has moved into KWIVER and the stand alone Vital repository is discontinued. All of the plugins previously located in MAP-Tk have also moved into KWIVER. The plugins are now called "arrows". That leaves this project, MAP-Tk, with a collection of tools and scripts for photogrammetry. MAP-Tk is no longer a software development kit. The SDK has become KWIVER. MAP-Tk is now the collection of end user photogrammetry tools built on top of KWIVER.
The GUI application is now the central part of the MAP-Tk project, and this release of MAP-Tk gives the MAP-Tk GUI a new name. It was previously just called MAP-Tk GUI or MapGUI. We are now calling it "TeleSculptor". TeleSculptor has become more than just a tool for visualization of results. Starting in this release you can now run all the steps of an end-to-end structure-from-motion pipeline directly in the GUI and get live visualization of the results as they are computed. This release also has experimental support for extracting, coloring, and rendering iso-surfaces from volumetric data. The use case is depth map fusion using a trucated signed distance function. This currently requires external tools (CudaDepthMapIntegration) but we will integrate those algorithm into the GUI in a future release.
The command line tools in MAP-Tk now use a video_input API from KWIVER to allow direct processing of video files without needing to first decode the video into a list of images. This feature has not yet come to TeleSculptor, but will in a future release. Image lists are still handled by the video_input API through an image list reader backend.
There are two new command line tools in this release of MAP-Tk: maptk_detect_and_describe and maptk_apply_gcp. The first tool allows you to pre-compute feature detections and descriptors for each frame of video and cache them on disk. The same algorithms are already run in maptk_track_features but the detect_and_describe tool runs them faster by processing each frame in parallel using a thread pool. The second tool allows you to post process a bundle adjustment solution to apply or re-apply ground control points (GCPs) for geo-registration. The same algorithms are already run at the end of maptk_bundle_adjust_tracks, but maptk_apply_gcp allows you to easily reapply GCPs without re-running bundle adjustment.
For additional details about the changes in this release, see the detailed notes below as well as the release notes of the corresponding KWIVER v1.1.0 release.
Core Plugin
Examples/Configs
Updated the example tool configuration files to account for tool changes to use the video_input API.
Added default config files for video_input algorithms that load from image lists, with and without POS files.
Refactored core_track_features.conf to make the feature detector, descriptor, and matcher reusable across other configs. Also refactored the loop closure configs to reuse a common feature matcher config.
Update core_track_features.conf to include configuration for writing features and descriptors to disk with the core feature_descriptor_io algorithm.
Main Library
Removed the ins_data structure for holding POS file data as well as all functions for reading and writing POS files. This is now covered by the more general video_metadata structure in KWIVER.
Updated all the local_geo_cs functions that used ins_data to use video_metadata instead.
Scripts
In the SketchUp import plugin allow the user to select how many frames to use if there are more than 10 available.
Added options in the krtd_and_ply_to_homogs.py script to estimate a ground plane from the PLY data or use the Z=0 plane when computing homographies.
Added an option in the mosaic_images.py script to scale the output image and another option to estimate the scale of the output to match the scale of the input images on average.
Improved memory efficiency of mosaic_images.py by avoiding preloading of all images.
Added a script to convert Novatel IMU data from the SUSSEX datasets to the POS file format used by MAP-Tk.
Tools
Updated all tools to use the new plugin loading framework from KWIVER.
Added python version of track features tool.
The maptk_bundle_adjust_tracks tool now has a configuration option to write out the geographic coordinates of the local coordinate system origin. Also this same option can be used to read an origin location in to specify the origin point manually.
Added a tool to apply ground control points to transform the coordinate system without running bundle adjustment.
Updated the maptk_bundle_adjust tool to use the filter_tracks algorithm from KWIVER instead of directly applying filters.
Added a new detect_and_describe tool that runs feature detection and descriptor extraction on each frame and writes the outputs to files using the feature_descriptor_io algorithm. This tool uses the thread pool to process frames in parallel.
Updated all tools to use the video_input API from KWIVER to read both images and metadata. This replaces the custom loops over files in an image list. This change allows tools to run directly on video files (e.g. AVI, MPEG) with optional KLV metadata as well as lists of images with optional lists of POS metadata files.
TeleSculptor Application
Updated the GUI to use the new plugin loading framework from KWIVER.
Extended the tool framework in the GUI to handle callbacks from the tools to allow some tools to provide updated visualization of intermediate results while they are still running. Also extended the tool framework to allow creation of new cameras and landmarks, not just update existing ones.
Added a cancel option for GUI computation tools which run for a long time and use callbacks to provide updates. The cancel button allows for early termination of those tools.
Add visualization of intermediate results of the bundle adjustment tool using a callback.
Added a camera and landmark initialization tool that creates cameras and landmarks starting with just tracks. It uses callbacks to show intermediate results.
Added an icon in the GUI for the depth map.
Added specialized vtk filters for efficiently processing the depth map for display in both the WorldView and DepthMapView.
Switched DepthMapView display representation to points instead of polygons; it renders much faster and is indistinguishable for sufficiently large point size. The '+' and '-' keys can be used to increase and decrease, respectively, the point size of the depth map in both the WorldView and DepthMapView; the point size of each display is controlled independently based on focus.
Added a "Filter Tracks" tool to the GUI that runs the filter_tracks algorithm in KWIVER. Updated the GUI to properly clear existing tracks before adding tracks returned from a tool.
Updated the GUI to allow "video_source" as an alternative to "image_file_list" when looking for a list of images to load in a project config file. This currently only handles the case where the video source is a list of images, but is compatible with the new variable naming in tool configuration files.
Added a "Track Features" tool to the GUI that runs a track_features algorithm much like the maptk_track_features command line tool. This tool processes images loaded into the GUI and does not yet support video files.
Added an option to export tracks from the GUI to an ASCII text file.
Added an option to load a volumetric array and extract an iso-surface at a provided threshold and show that surface in the World View. Currently the volume data must be loaded by setting a variable in a configuration file opened when starting the application from the command line. This feature is for visualizing the results of fusing multiple depthmaps using CudaDepthMapIntegration.
Added options to color the surface surface extracted from a 3D volume by back projecting one or more images onto the surface.
Added options to export the extracted surface mesh to PLY or VTK formats.
TeleSculptor Application
Removed duplicate loading and filtering of depth maps between the World view and Depth Map view. This makes it twice as fast.
Fixed a bug where depth map loading was printing an error message about not being able to load "" when there is no depth map on the first frame.
Fixed a bug where the depth map view bounds were not properly set when loading the first depth map after the first frame.
This is a minor release of MAP-Tk that provides both new functionality and fixes over the previous v0.8.1 release. However, MAP-Tk is still considered pre-release software and subject to significant API changes.
MAP-Tk Library
Core Plugin
OpenCV Plugin
VXL Plugin
Visualization Application
Tools
-h
option to C++ track features too. Equivalent to --help
.Scripts
Default Configuration
Build System
Plugins
Tools
VXL
This release provides patches to the MAP-Tk v0.8.0 release to address issues. MAP-Tk v0.8.1 is a bug fix release with no new functionality.
Core Plugin
VXL Plugin
MAP-Tk GUI
Tools
Scripts
This is a major release of MAP-Tk that provides both new functionality and fixes over the previous v0.7.2 release. However, MAP-Tk is still considered pre-release software and subject to significant API changes.
The primary change in this release is a major refactoring of MAP-Tk into two repositories. There is a new repository called Vital on which MAP-Tk now depends. Vital now contains core framework constructs from MAP-Tk while the MAP-Tk repository contains plugins, tools, the GUI application, and some SfM specific helper functions. This split will allow easier sharing of the core framework across KWIVER projects. Some core features from the Vibrant repository (better logging and config parsing) were also integrated into Vital, and MAP-Tk benefits from those.
As part of the refactoring MAP-Tk also moved to C++11. C++11 provides most of what MAP-TK relied on Boost for. Thus, the Boost dependency has been removed and replaced by standard library calls where available. For other uses of Boost (e.g. filesystem, program options) we now rely on KWIVERSYS. KWIVERSYS is code provided by Vital and original developed to support CMake.
The move to C++11 means dropping support for some older compilers. Visual Studio 2013 and above is now required on Windows. Some versions of GCC with only partial C++11 support are still supported. In particular, GCC 4.4.7 is supported to allow builds on CentOS 5/6; however, GCC 4.4.7 still requires Boost in some areas to address standard library deficiencies.
Using the new, more powerful config file parsing in Vital the default MAP-Tk configuration files have been broken up into smaller files which reference each other and use namespaces for readability and reuse. The default config files are now installed and shared by the GUI and CLI tools.
There are numerous additional changes, especially in the GUI visualization application. These changes are described below.
MAP-Tk Library
Configuration
Core Plugin
Ceres Plugin
VXL Plugin
Visualization Application
OCV Plugin
SketchUp Plugin
Tools
OpenCV Plugin
Visualization Application
This release provides patches to the MAPTK v0.7.1 release to address packaging issues. MAPTK v0.7.2 is a bug fix release with no new functionality beyond packaging support.
The binaries provided with this release should address three issues with the last release. First, the sample config files have been updated to match the current code. Second, the plugin's dependent libraries that were missing are now included. Third, the default install directory has been added to the plugin search path so plugins can be found.
This binaries for this release are limited in that they must be installed in the default install location to properly find the plugins. This issue will be addressed in v0.8.0 with an environment variable. For now you must install to:
Windows: C:\Program Files\MAP-Tk 0.7.2 Mac OS X: /Applications/MAP-Tk.app Linux: /usr/local/
The issue with plugin search path only affects the command line tools. The GUI does not use the plugins in this release.
Build System
Tools