Skip to content

Releases: Kitware/TeleSculptor

TeleSculptor v1.2.0

20 Sep 19:10
1fd36a9
Compare
Choose a tag to compare

TeleSculptor v1.2.0 Release Notes

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.

Updates since v1.1.2

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

  • Removed deprecated command line maptk tools. All the underlying kwiver
    algorithms can be accessed via the 'kwiver' command line tool.

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

  • Replaced the PDF user guide and the basic HTML help page with a better
    formatted and more maintainable manual using Sphinx. The same user manual
    is now available at https://telesculptor.readthedocs.io and offline in the
    TeleSculptor help menu.

Fixes since v1.1.2

TeleSculptor Application

  • Fixed a bug in which the "zoom to landmarks" option would make the World
    View projections permanently invalid if there were no landmarks to zoom to.

TeleSculptor v1.1.2

13 Mar 04:08
e72bb97
Compare
Choose a tag to compare

TeleSculptor v1.1.2 Release Notes

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

Fixes since v1.1.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

  • Fix bug in creating TeleSculptor package on Windows with vc16. The search
    path for OpenCV DLLs included only vc14 and vc15. It now will look for any
    vc version.

TeleSculptor v1.1.1

09 Jul 15:11
Compare
Choose a tag to compare

TeleSculptor v1.1.1 Release Notes

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.

Fixes since v1.1.0

Documentation

  • Removed the old, outdated examples for MAP-Tk command line tools and
    replaced them with link to videos that are good examples for processing
    with TeleSculptor.

Packaging

  • Fixed the Dockerfile used for building installer packages for Ubuntu.
    The Ubuntu build needs "patchelf" to properly package libraries. This
    is now added to the Dockerfile.

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

  • Updated Travis CI scripts to use the same KWIVER hash as specified in
    the TeleSculptor superbuild. Previously it was building the KWIVER master
    branch, which might not have been compatible with the TeleSculptor branch
    being tested.

TeleSculptor v1.1.0

17 Jun 15:12
4b6489c
Compare
Choose a tag to compare

TeleSculptor v1.1.0 Release Notes

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.

Updates since v1.0.0

Configuration

  • Default configuration files for algorithms have been moved into KWIVER.
    TeleSculptor GUI-specific configuration files remain here. TeleSculptor
    will now search for configuration files in both TeleSculptor and KWIVER
    configuration directories.

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.

Fixes since v1.0.0

Build System

  • Fixed broken PDAL support. PDAL was disabled regardless of the CMake
    setting due to a mis-named variable.

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

  • The packaging for Linux has been corrected so that setting LD_LIBRARY_PATH
    is no longer needed to run executables after unpacking. Libraries in the
    package now have RPATH set relative to $ORIGIN.

v1.0.0

14 Jun 14:01
db2506d
Compare
Choose a tag to compare

TeleSculptor v1.0.0 Release Notes

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.

Known Issues in this Release

  • 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.

Updates since MAP-Tk v0.10.0

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 i...

Read more

v0.10.0

19 Jul 16:02
Compare
Choose a tag to compare
v0.10.0 Pre-release
Pre-release

MAP-Tk v0.10.0 Release Notes

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.

Updates since v0.9.0

Core Plugin

  • Added an option to the PCA canonical transform estimator to shift the ground
    plane vertically to place a configurable percentile of the landmarks above
    the ground.

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.

Fixes since v0.9.0

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.

v0.9.0

02 Nov 20:33
Compare
Choose a tag to compare
v0.9.0 Pre-release
Pre-release

MAP-Tk v0.9.0 Release Notes

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.

Updates since v0.8.1

MAP-Tk Library

  • Removed the standalone canonical_transform() function in transform.h in
    favor of an abstract algorithm with implementation in the core plugin.
  • Added a function to match_matrix.h to use the match matrix to score each
    track on how important it is in covering the match matrix.
  • Moved a function to extract a camera from an essential matrix from the core
    initialize_cameras_landmarks algorithm into epipolar_geometry.h.

Core Plugin

  • Added a new algorithm for canonical transform with the implementation
    details moved from the function that was in transform.h.
  • Added a new loop closure algorithm implementation that searches for
    matches in a local neighborhood and then establishes keyframes for
    long term loop closure outside that neighborhood. This algorithm
    is generally slower than others, but can be configured to produce
    considerably more dense match matrices with longer tracks. It also handles
    long term loop closure without any assumption about planar scenes.
  • Added a new matcher that uses a fundamental matrix constraint to filter bad
    matches.
  • Added more config parameters to the initialize_cameras_landmarks algorithm
    to allow more control on how the algorithm is run and what thresholds are
    used.
  • Added a new loop closure algorithm that exhaustively matches all pairs of
    frames, or can be configured to match all frames within a moving temporal
    window.

OpenCV Plugin

  • Added support for OpenCV version >= 3.0 while maintaining support for
    OpenCV >= 2.4.6. We may drop support for OpenCV 2.X in a future release.
  • Overhauled OpenCV algorithm introspection structure. Versions 3.x took away
    the previous ability to introspect algorithm types and parameters,
    requiring, for at least versions 3.x, for there to be manual wrappings of
    each algorithm to be exposed. Removed introspection for any version and
    now have cross-version compatible manual wrappings of all algorithms at
    least present in 3.x that fill the feature detection, descriptor extraction
    and feature matching roles.
  • Added an OpenCV fundamental matrix estimation wrapper. OpenCV can estimate a
    fundamental matrix with the presence of outliers using RANSAC.

VXL Plugin

  • Added a new algorithm for canonical transform which uses robust estimation
    (e.g. RANSAC, LMS, IRLS) from the Rensselaer robust estimation library
    (rrel) in VXL to fit a ground plane to the data. The ground plane becomes
    the Z=0 plane. The rest of the free parameters are then fit by PCA as in
    the core plugin implementation.
  • Added a video_input algorithm implementation that uses the FFmpeg via the
    vidl_ffmpeg_istream class to read video frames and KLV metadata from encoded
    video files.

Visualization Application

  • Updated the "Align" tool to use the configurable abstract algorithm
    for canonical transform.
  • Added an option to display the world axes around the visible geometry.
    This option can be enabled and disabled in the "View" menu.
  • Added an option to export the current scene to webGL. This option is only
    available if VTK was built with the option Module_vtkWebGLExporter turned on.
    This option can then be found in the "File > Export" menu.
  • The absolute path to the current frame is now displayed at the bottom of the
    Camera view.
  • The GUI now accepts a list of files to be opened on the command line.
  • Added a depth map view and a depth map visualization in the world view. The
    depth maps can be thresholded directly in the world view, and the depth map
    view offers several visualization modes such as depths, uniqueness ratios or
    best cost values. Depth maps can be loaded by initializing the parameter
    "depthmaps_images_file" with the path to the depth maps (*.vti files) list in
    the configuration file.

Tools

  • Updated the bundle_adjust_tracks tool to use the configurable abstract
    algorithm for canonical transform.
  • Added an option to the bundle_adjust_tracks tool to remove all the KRTD
    files from the output directory before writing new ones. This is useful
    when only a subset of cameras are computed and we do not want a mix of
    old and new camera files.
  • Added -h option to C++ track features too. Equivalent to --help.

Scripts

  • Added a Python script which uses OpenCV to produce mosaicked images of
    video frames using the homographies produced by maptk_track_features.

Default Configuration

  • Switched default loop closure method to keyframe based instead of a mix
    of homography based and bad frame detection.
  • Switched default feature descriptors to use non-upright SURF.

Fixes since v0.8.1

Build System

  • When Fletch is found, or referenced by Vital, CMake will now search the
    Fletch install root when finding packages. This removes the need to
    manually point CMake at each dependent library provided by Fletch.
  • Removed CMake option to build shared vs static libraries. Due to the plugin
    infrastructure used in Vital, we can no longer build static MAP-Tk
    libraries.

Plugins

  • Corrected all plugins to use the Vital logging framework instead of
    cout and cerr for status, debug, and error messages.

Tools

  • Corrected the track_features and bundle_adjust_tracks tools to use the
    Vital logging framework instead of cout and cerr for status, debug,
    and error messages.
  • Added a new track filtering option to the bundle_adjust_tracks tool
    that filters tracks based on match matrix importance. The idea is that
    long tracks are usually most important, but some short tracks may be more
    important if they are the only tracks that tie together a pair of frames.
  • Removed call to landmark triangulation algorithm that was effectively doing
    nothing.

VXL

  • Fixed bug in bundle adjust implementation where input landmarks were being
    accidentally modified in-place.

v0.8.1

10 Aug 19:44
Compare
Choose a tag to compare
v0.8.1 Pre-release
Pre-release

MAP-Tk v0.8.1 Release Notes

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.

Fixes since v0.8.0

Core Plugin

  • In the core triangulation algorithm, landmarks that were not observed by
    enough cameras or had no corresponding tracks were not counted towards the
    number of failed triangulations. Now they are.

VXL Plugin

  • Updated the CMake code for using VXL to handle changes in VXL master so that
    MAP-Tk can build against the latest VXL. The latest VXL master uses
    VXL_CORE_INCLUDE_DIRS instead of VXL_CORE_INCLUDE_DIR to specify multiple
    include directories (e.g. in source and build trees). This is needed to
    find configured headers that are in the build tree. The same is true for
    VXL_VCL_INCLUDE_DIRS. MAP-Tk has been fixed to use *_INCLUDE_DIRS when
    available.

MAP-Tk GUI

  • Failing to parse a config block in the GUI was not reporting any message.
    The GUI now catches config exception and prints a warning message. This
    is a temporary solution until a proper error dialog is implemented.
  • Fixed an issue with the ground plane disappearing after loading data that
    did not include landmarks. The ground plane now uses the cameras for scale
    when only cameras are in the world view and no longer disappears when the
    only data loaded is in the image view.

Tools

  • Fixed an issue with converting POS filenames to KRTD in the pos2krtd tool.
    When producing the KRTD filenames from the POS file names, the pos2krtd
    tool was being too aggressive about striping file extensions when more
    than one '.' was in the file name. In this release the tool strips the
    extension at the last '.' instead of the first.

Scripts

  • Fixed a bug in the SketchUp import script was loading MAP-Tk data assuming
    units of inches instead of meters.
  • Worked around an issue in the SketchUp import script in which SketchUp was
    limiting the FOV of cameras to greater than 1 degree. The loading script
    now adjusts the image width and focal length parameter to force FOV less
    than 1 degree when needed.
  • The SketchUp import script now loads MAP-Tk landmarks into a new layer.

v0.8.0

11 Apr 20:19
Compare
Choose a tag to compare
v0.8.0 Pre-release
Pre-release

MAP-Tk v0.8.0 Release Notes

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.

Updates since v0.7.2

MAP-Tk Library

  • Moved a large number of core data types and abstract algorithms to a
    new dependent project name Vital. Vital will provide a common framework
    for logging, configuration, and core data types to be shared across
    KWIVER projects.
  • Changed the camera and camera_intrinsic classes to act as higher level
    containers. Each now has an abstract base class and a "simple" concrete
    class. The templated derived classes (e.g. camera_) have been removed.
    The simple classes use the double type internally.
  • Changed the camera to contain a shared pointer to a camera_intrinsics
    object rather than an instance. This allows cameras to share common
    intrinsics.
  • Moved some common functions like project() and depth() into the camera
    base class to allow usage without down-casting.
  • Changed the canonical transform function to set the orientation
    based on the eigenvector of the landmark point cloud. The cameras are
    now only used to set the sign of the up vector (Z-axis).
  • Improved the Necker reversal transform so that the residual error
    is now kept low after the transform and the transform is now involutory.
    That is, applying the reversal a second time will return to the previous
    state.
  • Removed required dependency on Boost. Replaced Boost with equivalent
    functions in the C++11 standard library when available. When not available
    kwiversys (found in Vital) provides equivalent constructs. The exception
    is that the unit tests will require boost::random for some older C++0x
    compilers without std::random.
  • Applying transformations now better preserve additional data associated with
    landmarks (e.g. color, number of observations).
  • Added a new utility module with functions to extract feature colors from
    an input image (and apply to relevant features in a feature track set), and
    to compute landmark colors from a feature track set with color information.
  • Refactored some helper functions into epipolar_geometry.h for converting
    between fundamental matrices, essential matrices, and cameras, and for
    computing inliers to a fundamental matrix within feature matches.

Configuration

  • The sample config files for the tools have now been refactored. Reusable
    default config files for each algorithm are now provided in the "config"
    directory and example top-level config files are provided in the "examples"
    directory, organized by data set. The example config files include the
    algorithm config files using the new "include" directive. Algorithm config
    files may include other algorithm include files.
  • Config files are now installed with the application and can be found at
    runtime anywhere on the configuration search path. The configuration
    search path can be extended with the KWIVER_CONFIG_PATH environment
    variable.

Core Plugin

  • Updated triangulate_landmarks to set the number of observations on each
    computed landmark.
  • Improved initialize_cameras_landmarks to allow for incremental
    initialization that optionally runs an occasional bundle adjustment
    and can remove landmarks/tracks that still have larger error after
    bundle adjustment. It also applies Necker reversal and runs another
    bundle adjustment to test if the reversed solution has lower error.

Ceres Plugin

  • Added an option to the bundle adjust algorithm to control how camera
    intrinsics are shared across cameras. The default auto sharing mode
    optimizes a separate set of intrinsics for each camera_intrinsics object
    shared amongst the cameras. Additional options allow forcing each camera
    to have its own independent intrinsics and forcing all cameras share
    one common set of intrinsics.
  • Modified bundle_adjust to preserve additional data associated with landmarks
    (e.g. color, number of observations) during optimization.

VXL Plugin

  • Updated triangulate_landmarks to set the number of observations on each
    computed landmark.
  • Added an initial implementation of fundamental matrix estimation using VXL.

Visualization Application

  • Added ability to execute some computations (for now, computing and applying
    basic transformations, applying bundle adjustment to refine the solution)
    from within the GUI.
  • Added ability to export cameras and landmarks to (respectively) KRTD and PLY
    files.
  • Added ability to visualize locations of corresponding feature points on
    adjacent frames to the camera view. This may be helpful as an additional
    means of visualizing camera motion when there exists a spatial correlation
    between adjacent cameras (e.g. frames extracted from continuous-shot video).
  • Added "match matrix" view, allowing the number of corresponding feature
    points for arbitrary frame pairs to be visualized as a "heat map" with
    various Visualization options.
  • Added ability to load imagery directly, and without requiring that cameras
    are loaded.
  • Added ability to visualize landmarks by "true color", elevation, or number
    of observations, when relevant data is available.
  • Added ability to selectively display ("filter") landmarks based on values of
    available data (e.g. elevation, number of observations).
  • Added ground plane display to world view.
  • Added ability to view camera frame image, projected to the ground plane, in
    the world view.
  • Added ability to toggle world view between parallel and perspective
    projections, and to reset the rotation of the same to one of several basic
    presets (top, left, etc.).
  • Added ability to change the background color of the views.
  • The GUI user manual can now be accessed from within the GUI.
  • Added an "About" dialog including information about the version number,
    acknowledgements, license, and build information.

OCV Plugin

  • Images are now mapped so that the first channel of the vital::image view is
    red (RGB) rather than blue (BGR).

SketchUp Plugin

  • Added a new plugin (Ruby scripts) for the SketchUp 3D Modeling software
    (http://www.sketchup.com/) that allow direct import of MAP-Tk outputs by
    loading the MAP-Tk config files or individually loading KRTD or PLY files.
    Once loaded, the cameras are presented as "Photo Match" pages which allows
    the user to build models aligned to images.

Tools

  • The track features tool now extracts feature colors and writes them to the
    track file.
  • The bundle adjust tool now computes landmark colors from feature colors and
    writes them to the landmark PLY.

Fixes since v0.7.2

OpenCV Plugin

  • Fixed an issue with some parameters to draw_tracks and analyze_tracks
    in which the get_configuration function was always returning the default
    parameters, even after other values were set.

Visualization Application

  • Several performance bottlenecks that limited the rate at which "slideshow"
    mode could switch frames have been identified and mitigated.
  • Fixed bug where newly loaded landmarks would be visible in the world view
    even if landmarks were disabled.
  • Fixed bug that caused feature tracks to be "misaligned" if a camera could
    not be loaded.

v0.7.2

02 Feb 17:30
Compare
Choose a tag to compare
v0.7.2 Pre-release
Pre-release

MAPTK v0.7.2 Release Notes

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.

Fixes since v0.7.1

Build System

  • Updated CMake code to create packaging bundle that contains all
    plugins and dependent libraries. The resulting package will contain
    all necessary libraries other than system libraries. The previous
    release was missing dependent libraries for the plugins.
  • Added a MAPTK_FIXUP_BUNDLE_ON_PACKAGE option that allows the user to
    enable or disable the bundle creation that should only be done during
    packaging. In the last release a standard install on Linux was impossible
    because fixup_bundle copied all the dependent libraries into the install
    bin directory.
  • Added the EXTRA_MODULE_PATH CMake variable to specify an optional single
    additional directory for the algorithm plugin manager to search for plugins.
    This allows packages to be built that have a search path established relative
    to the final install location. The previous release did not contain a valid
    search path and plugins were not found.

Tools

  • Updated the sample config files so that they are compatible with the current
    version of the code.