Skip to content

v0.10.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@mleotta mleotta released this 19 Jul 16:02
· 1809 commits to release since this 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.