• Stars
    star
    605
  • Rank 74,072 (Top 2 %)
  • Language
    C++
  • License
    Other
  • Created over 10 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

TeleSculptor: Aerial Photogrammetry Application powered by KWIVER

TeleSculptor

TeleSculptor Overview

TeleSculptor is a cross-platform desktop application for photogrammetry. It was designed with a focus on aerial video, such as video collected from UAVs, and handles geospatial coordinates and can make use of metadata, if available, from GPS and IMU sensors. However, the software can also work with non-geospatial data and with collections of images instead of metadata. TeleSculptor uses Structure-from-Motion techniques to estimate camera parameters as well as a sparse set of 3D landmarks. It uses Multiview Stereo techniques to estimate dense depth maps on key frame and then fuses those depth maps into a consistent surface mesh which can be colored from the source imagery.

TeleSculptor can be installed from precompiled binaries for Linux, MacOS, and Windows included at the bottom of the latest release page by following the instructions in the Installation section. Instructions on how to use the TeleSculptor GUI can be found in the User Guide. A computer with at least 16GB of RAM is recommended for processing most datasets.

More advanced users who wish to build the project from source should proceed to the Building TeleSculptor section.

Background

TeleSculptor provides a graphical user interface with Qt, 3D visualization with VTK, and photogrammetry algorithms with KWIVER. This project was previously called MAP-Tk (Motion-imagery Aerial Photogrammetry Toolkit). The MAP-Tk name is still scattered throughout the source code. MAP-Tk started as an open source C++ collection of libraries and tools for making measurements from aerial video. The TeleSculptor application was added to the project later. The original software framework and algorithm were then refactored into KWIVER and then expanded to address broader computer vision problems. While KWIVER is now a more broad set of tools, TeleSculptor remains an application focused on photogrammetry.

The advantage of the KWIVER software architecture (previously MAP-Tk) is that it is highly modular and provides an algorithm abstraction layer that allows seamless interchange and run-time selection of algorithms from various other open source projects like OpenCV, VXL, Ceres Solver, and PROJ4. The core KWIVER library (vital) and tools are light-weight with minimal dependencies (C++ standard library, and Eigen). TeleSculptor is written to depend only on the KWIVER "vital" library. Additional capabilities are provided by KWIVER arrows (plugin modules) that use third party libraries to implement various abstract algorithm interfaces defined in the KWIVER vital library. This means that new plugins can be dropped into TeleSculptor to enable alternative or new functionality by adjusting some settings in a configuration file. While TeleSculptor provides a default workflow that works out of the box, it is not just an end user tool. It is designed to be highly configurable to support research into to algorithms and new problem domains.

The screenshots below show TeleSculptor running on example videos from the VIRAT Video Dataset, CLIF 2007 Dataset, and other public data sets. More information about this example data can be found in the examples directory.

While the initial software implementation relies on batch post-processing of aerial video, our intent is to move to an online video stream processing framework and optimize the algorithm to run in real-time.

MacOS Screenshot

Windows Screenshot

Linux Screenshot

Installation

If you have downloaded an installer from the latest release you can simply install TeleSculptor according to the instructions for your operating system described below. If you are building TeleSculptor from source you should proceed to Building TeleSculptor to create the installer before completing the installation.

Windows: run the installer executable (exe) and follow the prompts in the installer dialog. Administrative permission is required.

Mac: open the disk image (dmg), accept the license terms, then drag the TeleSculptor application into the Applications folder.

Linux: open a bash/cmd shell and run the self extracting installer script (sh). You can view additional installation options using ./TeleSculptor-<version>-Linux-x86_64.sh --help

The remainder of this document is aimed at developers who wish to build the project from source. For end users looking for instruction on running the GUI application please read the User Guide.

Building TeleSculptor

TeleSculptor requires C++11 compliant compiler (e.g. GCC 4.8.1, Clang 3.3, Visual Studio 2015). TeleSculptor uses CMake (www.cmake.org) for easy cross-platform compilation. The minimum required version of CMake is 3.9.5, but newer versions are recommended.

Building

The build is directed by CMake to ensure it can be built on various platforms. The code is built by a CMake 'superbuild', meaning as part of the build, CMake will download and build any dependent libraries needed by TeleSculptor. The build is also out of source, meaning the code base is to be separate from the build files. This means you will need two folders, one for the source code and one for the build files. Here is the quickest way to build via a cmd/bash shell.

Before building on Linux systems you must install the following packages:

sudo apt-get install build-essential libgl1-mesa-dev libxt-dev
sudo apt-get libx11-xcb-dev libxcb1-dev libxcb-glx0-dev libxkbcommon-x11-dev
sudo apt-get install libexpat1-dev libgtk2.0-dev liblapack-dev

On Linux, to optionally build with Python and to build the user documentation, you will also need to install the following:

sudo apt-get install python3-dev python3-sphinx python3-sphinx-rtd-theme

Set up the folder structure and obtain the source files. This can be done with git or by downloading the files and extracting them. Then setup the folder(s) to build the binary files.

mkdir telesculptor
cd telesculptor

## Place the code in a directory called src
# Using git, clone into a new directory called src
git clone https://github.com/Kitware/TeleSculptor.git src
# Or unzip into a new directory called src
unzip <file name>.zip src

## Create the folder where we will build the binaries
mkdir builds
cd builds
# Instead of just one builds folder you can to make subfolders here for
# different builds, for example: builds/debug and builds/release.
# Each folder would then be built following the steps below but with different
# configuration options

Generate the makefile/msvc solution to perform the superbuild using cmake. A description of the configuration options can be found in CMake Options.

# From the build directory provide cmake the path to the source directory,
# which can be relative or absolute.
# Specify configurable options by prefacing them with the -D flag
cmake -DCMAKE_BUILD_TYPE:STRING=Release ../src
# Alternatively, you can use the 'ccmake' command line tool allows for
# interactively selecting CMake options. This can be installed with
# 'sudo apt-get install cmake-curses-gui'
ccmake ../src
# As a final option, you can use the the CMake GUI you can set the source and
# build directories accordingly and then press the "Configure" and β€œGenerate”
# buttons

Build the installer target/project

# On Linux/OSX/MinGW
make
# Once the Superbuild is complete, the telesculptor makefile will be placed in
# the build/external/telesculptor-build directory

# For MSVC
# Open the TeleSculptor-Superbuild.sln, choose your build configuration,
# from the 'Build' menu choose 'Build Solution'
# When the build is complete you may close this solution.
# To edit TeleSculptor code, open the
# build/external/telesculptor-build/TeleSculptor.sln

You have now built a TeleSculptor installer similar to what is provided in the latest release section. To install TeleSculptor on you machine, follow the instructions above in Installation.

CMake Options

CMAKE_BUILD_TYPE The compiler mode, usually Debug or Release
TELESCULPTOR_ENABLE_CUDA Enable GPU acceleration with CUDA
TELESCULPTOR_ENABLE_PYTHON Enable Python bindings in KWIVER
TELESCULPTOR_ENABLE_MANUALS Turn on building the user documentation
TELESCULPTOR_ENABLE_TESTING Build the unit tests
TELESCULPTOR_SUPERBUILD Build as a superbuild (build Fletch and KWIVER)
Mulit-Configuration Build Tools

By default the CMAKE_BUILD_TYPE is set to Release.

Separate directories are required for Debug and Release builds, requiring CMake to be run for each.

Even if you are using a Multi-Configuration build tool (like MSVC) to build Debug you must select the Debug CMAKE_BUILD_TYPE. (On Windows in order to debug a project all dependent projects must be build with Debug information.)

For MSVC users wanting a RelWithDebInfo build we recommend you still choose Release for the superbuild. Release and RelWithDebInfo are compatible with each other, and Fletch will build its base libraries as Release. MSVC solutions will provide both Release and RelWithDebInfo configuration options. You will need to open the <build/directory>/external/kwiver-build/KWIVER.sln and build this solution with the RelWithDebInfo configuration.

TeleSculptor

The TeleSculptor GUI application is enabled by default, and all dependencies will be built by the Superbuild.

Documentation

If TELESCULPTOR_ENABLE_MANUALS is enabled, and CMake finds all dependencies, then the user manuals are built as part of the normal build process under the target "manuals". The GUI manual can be viewed from inside the GUI by choosing the "TeleSculptor User Manual" action from the "Help" menu.

To build the user manual(s), you need:

(At present, only the GUI has a user manual. Other manuals may be added in the future.)

Testing

Continuous integration testing is provided by CDash. Our MAP-Tk dashboard hosts nightly build and test results across multiple platforms including Windows, Mac, and Linux.

Anyone can contribute a build to this dashboard using the dashboard script provided. Follow the instructions in the comments.

Travis CI is also used for continued integration testing. Travis CI is limited to a single platform (Ubuntu Linux), but provides automated testing of all topic branches and pull requests whenever they are created.

Travis CI master branch: CI:master
Travis CI release branch: CI:release

Advanced Build

TeleSculptor is built on top of the KWIVER toolkit, which is in turn built on the Fletch super build system. As mentioned above, to make it easier to build TeleSculptor, a "super-build" is provided to build both KWIVER and Fletch. But, if you wish, you may point the TeleSculptor build to use your own KWIVER builds.

If you would like TeleSculptor to use a prebuilt version of KWIVER, specify the kwiver_DIR flag to CMake. The kwiver_DIR is the KWIVER build directory root, which contains the kwiver-config.cmake file.

$ cmake ../../src -DCMAKE_BUILD_TYPE=Release -Dkwiver_DIR:PATH=<path/to/kwiver/build/dir>

You must ensure that the specified build of KWIVER was built with at least the following options set:

The required KWIVER flags can be found in this file : CMake/telesculptor-external-kwiver.cmake

The required Fletch flags can be found in this file : CMake/telesculptor-external-fletch.cmake

Overview of Directories

CMake contains CMake helper scripts
config contains reusable default algorithm configuration files
doc contains release notes, manuals, and other documentation
examples contains pointers to example public datasets to use
gui contains the visualization GUI source code and headers
gui/icons contains the visualization GUI icon resources
maptk contains the maptk library source and headers
packaging contains support files for CPack packaging
scripts contains Python helper scripts
plugins/blender contains Python plug-ins for Blender
plugins/sketchup contains Ruby plug-ins for SketchUp
tests contains testing framework and tests for each module

Getting Help

TeleSculptor is a component of Kitware's collection of open source computer vision tools and part of the KWIVER ecosystem. Please join the kwiver-users mailing list to discuss or to ask for help with using TeleSculptor. For less frequent announcements about TeleSculptor and other KWIVER components, please join the kwiver-announce mailing list.

Acknowledgements

The authors would like to thank AFRL/Sensors Directorate for their support of this work via SBIR Contract FA8650-14-C-1820. This document is approved for public release via 88ABW-2015-2555.

More Repositories

1

CMake

Mirror of CMake upstream repository
C
5,967
star
2

VTK

Mirror of Visualization Toolkit repository
C++
2,250
star
3

vtk-js

Visualization Toolkit for the Web
JavaScript
1,233
star
4

ParaView

VTK-based Data Analysis and Visualization Application
C++
1,051
star
5

trame

Trame lets you weave various components and technologies into a Web Application solely written in Python.
Python
419
star
6

pyLiDAR-SLAM

Python
306
star
7

VeloView

VeloView performs real-time visualization and easy processing of live captured 3D LiDAR data from Velodyne sensors (Alpha Primeβ„’, Puckβ„’, Ultra Puckβ„’, Puck Hi-Resβ„’, Alpha Puckβ„’, Puck LITEβ„’, HDL-32, HDL-64E). Runs on Windows, Linux and MacOS. This repository is a mirror of https://gitlab.kitware.com/LidarView/VeloView-Velodyne.
C++
304
star
8

LidarView

LidarView performs real-time reception, recording, visualization and processing of 3D LiDAR data. This repository is a mirror of https://gitlab.kitware.com/LidarView/lidarview.
C++
258
star
9

glance

Kitware Glance is an open-source web application developed at Kitware for visualizing volumetric images, molecular structures, geometric objects, and point clouds. It is part of the ParaView platform and can serve as a foundation for building custom web-based visualization applications involving ITK.js and VTK.js.
JavaScript
247
star
10

vtk-examples

This is the gh-pages branch of the VTK Examples Web Site and is set up to host web pages. ⚠️ DO NOT SUBMIT MERGE REQUESTS HERE. ⚠️ Merge requests must be submitted here: https://gitlab.kitware.com/vtk/vtk-examples
HTML
226
star
11

itk-vtk-viewer

2D / 3D web image, mesh, and point set viewer using itk-wasm and vtk.js
JavaScript
210
star
12

CDash

An open source, web-based software testing server
PHP
206
star
13

kwiver

Pulls Together Computer Vision Algorithms into Highly-Modular Run-Time Configurable Systems
C++
189
star
14

tangelo

A simple, quick, powerful web framework
JavaScript
185
star
15

VolView

Kitware VolView: an all-in-one radiological viewer!
TypeScript
184
star
16

paraviewweb

Web framework for building interactive visualization relying on VTK or ParaView to produce visualization data
JavaScript
160
star
17

Danesfield

Kitware's system for 3D building reconstruction for the IARPA CORE3D program
Python
157
star
18

candela

Visualization components for the web
JavaScript
116
star
19

visualizer

The ParaViewWeb Visualizer application which can be used standalone or as a component within another web context.
JavaScript
106
star
20

ipyvtklink

πŸ”— minimalist ipywidget to interface with any Python vtkRenderWindow
Python
93
star
21

wslink

Python/JavaScript library for communicating over WebSocket
Python
83
star
22

dive

Media annotation and analysis tools for web and desktop. Get started at https://viame.kitware.com
Vue
81
star
23

SMQTK

Python toolkit for pluggable algorithms and data structures for multimedia-based machine learning.
Terra
75
star
24

react-vtk-js

Declarative library exposing vtk.js visualization pipeline as React components
TypeScript
73
star
25

fletch

Computer Vision Software Development Environment
C++
62
star
26

SlicerSALT

An open-source, free comprehensive software that will allow biomedical scientists to precisely locate shape changes in their imaging studies. This software called Slicer Shape AnaLysis Toolbox (SlicerSALT), will enhance the intuitiveness and ease of use for such studies, as well as allow researchers to find shape changes with higher statistical power. Altogether this constitutes a crucial resource for the imaging field that will enable many and important new findings in biomedical imaging studies.
Python
54
star
27

KWStyle

Kitware Style Checker
C++
52
star
28

COAT

Official Code for CVPR 2022 paper Cascade Transformers for End-to-End Person Search
Python
49
star
29

HPCCloud

A Cloud/Web-Based Simulation Environment
JavaScript
49
star
30

SMTK

Simulation Modeling Tool Kit
C++
44
star
31

vue-vtk-js

Vue.js based components for vtk.js
JavaScript
36
star
32

minerva

Minerva: client/server/services for analysis and visualization
Python
36
star
33

MEVID

Official Code for WACV 2023 paper MEVID: Multi-view Extended Videos with Identities for Video Person Re-Identification
Python
34
star
34

Danesfield-App

Web application for the Danesfield System
Python
32
star
35

paraview-visualizer

Web frontend to ParaView based on trame
Python
31
star
36

arctic-viewer

Standalone application useful to load and explore cool data products.
JavaScript
31
star
37

MetaIO

MetaImage is the text-based tagged file format for medical images that resulted. We have now extended that file format to support a variety of objects that occur in medicine such a tubes (for vessels, needles, etc.), blobs (for arbitrary shaped objects), cubes, spheres, etc. The complete library is known at MetaIO.
C
31
star
38

VTK-m

Mirror of https://gitlab.kitware.com/vtk/vtk-m
C++
29
star
39

paraview-lite

Lite Client to a ParaView server which rely on Web technologies
JavaScript
29
star
40

ParaViewTangoRecorder

An app for the Project Tango development kit to enable recording data for ParaView
Java
28
star
41

cumulus

A REST API for creating and using cloud clusters
Python
27
star
42

web-project-templates

This repository try to gather various web project templates based on vue, vtk.js, paraviewweb...
JavaScript
26
star
43

DaxToolkit

Data Analysis at Extreme
C++
24
star
44

qtextensions

An open source collection of utility classes and tools for Qt.
C++
24
star
45

iMSTK

Mirror of https://gitlab.kitware.com/iMSTK/iMSTK
C++
24
star
46

py-web-vue

Build a 3D Web application using VTK or ParaView while only writing a Python script. This project aims to streamline the existing ParaViewWeb infrastructure into something that is simpler to use by lowering the entry point complexity.
JavaScript
24
star
47

kwcoco

Python
21
star
48

ParaViewCatalystExampleCode-MOVED-

Example problems and snippets of code to demonstrate ParaView's Catalyst.
C++
20
star
49

flow

Full data science workflows on the web
Python
20
star
50

seaborn_altair

Seaborn-compatible API for interactive Vega-Lite plots via Altair
Jupyter Notebook
20
star
51

vtk-book

Markdown version of the Visualization Toolkit Book - An object Oriented Approach to 3D Graphics
Python
20
star
52

light-viz

Scientific Visualization application for tailored post-processing relying on a ParaViewWeb backend.
JavaScript
20
star
53

vtk-js-datasets

Sample dataset for vtk.js examples
HTML
19
star
54

DIVA

DIVA project repository
C++
18
star
55

sprokit

Stream Processing ToolKit
C++
18
star
56

HPCCloud-deploy

VM Deploy for HPC-Cloud
Python
17
star
57

trame-vtk

VTK/ParaView widgets for trame
Python
17
star
58

simput

Input generator for simulation which can be used as a standalone application or as a component within another web context.
JavaScript
17
star
59

VisCL

Computer Vision GPU acceleration with OpenCL
C++
16
star
60

trame-vtklocal

VTK Local Rendering using VTK/WASM to match server side rendering pipeline on the client side.
JavaScript
16
star
61

vtk-wasm-demos

A collection of VTK.wasm demo applications
C++
16
star
62

IGSTK

Image Guided Surgery Software Toolkit
C++
15
star
63

cdash-docker

Shell
15
star
64

LookingGlassVTKModule

C++
15
star
65

trame-cookiecutter

Cookie Cutter template for creating trame application/module
Python
14
star
66

PCLPlugin

A plugin to enable PCL functionality in ParaView
C++
14
star
67

vivia

C++
14
star
68

generated-image-detection

Python
13
star
69

trame-tutorial

Tutorial material for trame.
Python
13
star
70

VERACore

Python
12
star
71

Visomics

Visomics is an open-source tool for the exploration of biological omics data with a focus on genomics, proteomics, transcriptomics, and metabolomics.
C++
12
star
72

keypointgui

Provides a wxPython GUI to select image-point correspondences between images and fits a homography.
Python
12
star
73

paraviewweb-demo

Website and launcher for ParaViewWeb container demo
HTML
11
star
74

kwant

KWANT is an open source C++ toolkit for computing scores and other metrics for object tracking systems.
C++
11
star
75

pan3d

Python
11
star
76

cinema

ParaView Cinema
JavaScript
11
star
77

peacock

Trame based UI for INL peacock project.
Python
11
star
78

openview

C++
10
star
79

clique

Graph editor library/application
JavaScript
10
star
80

romanesco

Romanesco is now named Girder Worker
10
star
81

trame-jupyter-extension

Jupyter extension for trame client/server communication
TypeScript
10
star
82

Remus

Remus is a remote mesh/model service framework.
C++
9
star
83

resonantgeo

Geospatial Vue components for Resonant
JavaScript
9
star
84

nrtk

The Natural Robustness Toolkit (NRTK) is an open source toolkit for generating operationally-realistic perturbations to evaluate the natural robustness of computer vision algorithms.
Python
9
star
85

conceptual-modeler

Conceptual Modeler based on GemPy and trame
Python
9
star
86

trame-server

Internal server side implementation of trame
Python
9
star
87

covid-19-vis

A visualization of some COVID-19 data
JavaScript
9
star
88

trame-vuetify

trame-vuetify brings Vuetify UI Material Components into trame
Python
9
star
89

QtTesting

This is a mirror of the Gitlab repository. Please use Gitlab for PRs and Issues.
C++
9
star
90

divvy

Divide your data analysis across tools and visualization for a better data insight
Python
9
star
91

trame-vtk3d

Wrapper to the WASM bundle of VTK from dicehub
JavaScript
9
star
92

BoneTextureExtension

Slicer extensions for computing feature maps of N-Dimensional images using well-known texture analysis methods.
Python
9
star
93

torch_liberator

Python
8
star
94

vaui

Python
8
star
95

trame-app-cone

Single file trame app show casing how to deploy to CapRover.
Python
8
star
96

super3d

C++
8
star
97

burn-out

A computer vision toolkit designed to generate pixel-level object classifications, and additionally perform other types of video filtering. Originally created to remove on-screen displays from video.
C++
8
star
98

UPennContrast

UPenn ?
Vue
8
star
99

vtk-web-solutions

Sample code showcasing VTK usage with Web
JavaScript
8
star
100

trame-simput

Simput implementation for trame
JavaScript
8
star