Skip to end of metadata
Go to start of metadata

Google Summer of Code 2015 Ideas

Opticks Background


Opticks is an extensible remote sensing and imagery analysis desktop application. It provides a framework to process remote sensing data such as Hyperspectral (HSI), Multispectral (MSI), and Synthetic aperture radar (SAR) imagery and video. The application is written in C++ and licensed under LGPL v2.1. Extensions are written using C++ as well. You can review the available extensions and feature tour to get a better idea of what Opticks can do.

Ok, so why do you care? We think it's a pretty cool application. If you are interested in physics, this remote sensing stuff is pretty darn cool. And if you are a programmer, making all of this work on a desktop while processing large imagery (> 4GB) exposes you to some pretty cool stuff as well.

For more background, see the history of Opticks.

Expectations for Students


Refer to the osgeo summer of code page for information on expectations and application.

Mentored Projects


Many projects indicate knowledge of the Opticks API is suggested. If you are not already familiar with the API, your mentor can help you re-assess the scope of the project to allow time to learn the API. Some projects indicate knowledge of the Simple API is suggested. This is a much smaller, data-centric API used mostly by the Opticks scripting languages. It is much easier to learn than the full Opticks API but does not allow for all the advanced visualization and integration capabilities. It is quite sufficient for data processing algorithms.

Need to learn more about Opticks and extension development? Check out learning resources.

We're always open to your ideas. If you have a project you would like to work on which isn't on this page, just ask us! Our mentors have many interests and they may align with yours. The suggestions on this page represent the current direction that Opticks is pointing and are a great place to start. We've already done some of the background work as well, so you've got a ready-to-go project. You can also look at the modification history for this page to see what suggestions we've made in prior years.

Our focus in 2015 is expanding the algorithmic and batch processing capabilities of Opticks as opposed to the GUI and interface components.

PDAL Point Cloud Data Importer

Potential Mentor: Trevor Clarke, Michael Considine

Knowledge: C++

Description: Build an importer using the PDAL library. PDAL is meant to be a generic point cloud access library with some basic filtering and processing. This would allow Opticks to load many more point cloud data sources and provide some additional processing. Be aware that PDAL has not yet reached version 1.0 and is not a mature project. The importer should work on Windows 32-bit, Windows 64-bit, and Linux 64-bit (preferably RedHat or Centos  but Ubuntu works too).

What you'll learn: You'll learn about the Opticks data model and importer framework. You'll learn about PDAL and point clouds. This is a great project for programmers without a remote sensing background since you won't need any knowledge about how to process point clouds.

Video Importer

Potential Mentor: Trevor Clarke, Michael Considine, Robert Goffena

Knowledge: C++

Description: Build a video importer using an appropriate open source video library.  Ideally support MPEG-2 with KLV, though KLV is likely a stretch goal.  Research available open source video decoding libraries (ie: gstreamer, FFmpeg, Libav), select library to use, implement video import capability in Opticks, and integrate imported video data into existing Opticks playback capabilities.  Video playback does not need to be synchronized to playback at same speed video was recorded at.  Emphasis will instead be placed on performant random access of video frames (quick seek times). If time provides and selected video library supports KLV, import KLV data.  Video import capability will provide a user friendly ability to use Opticks to closely analyze video from quadcopters, from home video cameras, from videos downloaded from youtube, etc.

What you'll learn: You'll learn about the Opticks data model and importer framework. You'll learn about video formats and open source video decoding libraries.  You'll learn about software constructs used for buffering data to support quick playback, random access of frames. This is a great project for programmers without a remote sensing background since you won't need any knowledge about how to process the video for remote sensing purposes.

Point Cloud Histogram Support

Potential Mentor: Trevor Clarke, Michael Considine

Knowledge: C++

Description: We've recently added point cloud support to Opticks and we've got a whole list of features we'd still like to implement including histogram and stretch support. Opticks has an advanced histogram view for use with raster data and we'd like something similar for point clouds. The histogram should display the same statistics as raster elements for the active display component (height, classification, intensity, etc.) and should allow the user to adjust stretch settings just like with raster data.

What you'll learn: You'll learn about the Opticks data model and display framework. This is a great project for programmers who enjoy working with GUIs and would like to learn more about the internals of Opticks.

Video Tracking

Potential Mentor: Trevor Clarke, Michael Considine, Robert Goffena

Knowledge: C++, Python, IDL, or Matlab

Description: Video tracking is becoming a much more interesting topic with the availability of inexpensive video drones. This project would create a basic tracking capability for overhead airborne video from small quadcopters, etc. This code could be written in C++ or any of the available scripting languages. The student would need to design a basic tracking algorithm or implement a simple published algorithm. OpenCV is a good library to use for these purposes. Students and provide their own data or use data from any publicly available source. Mentors can assist with locating data if necessary.

What you'll learn: You'll learn about the Opticks data model and animation framework. Learn about tracking algorithms and algorithm integration into opticks.

Image Enhancement/Background Suppression

Potential Mentor: Trevor Clarke, Michael Considine, Robert Goffena

Knowledge: C++, Python, IDL, or Matlab

Description: Students would create an algorithm for enhancing the resolution of data or suppressing the background of data. Data sources might include video, single MSI data where the bands are collected at slightly different times, or coregistered images of the same area from different times. There are a number of published algorithms for these tasks including Hubble Drizzle. The student would work with mentors to identify an algorithm which could be implemented in the allotted time.

What you'll learn: You'll learn about the Opticks data model and image enhancement/background suppression algorithms.

Pick Your Own Project

Description: If the previous ideas don't interest you, here are some topics to help you choose your own idea. If you decide to do something different than the ideas mentioned in the previous section, we suggest you speak with some of the Opticks developers to help you find a mentor who can help with your project.

Learning Opticks


Learning the application

Learning about extension development

Learn about the SimpleAPI

  • The Simple API is a bundled with the Opticks SDK, it is a C only API and is located in "Application\SimpleApiLib" once you extract the SDK download.
Labels
  • None
  1. Feb 18, 2015

    Streaming Video Exporter

    Potential Mentor: Trevor Clarke, Michael Considine, Robert Goffena

    Knowledge: C++

    Description: Build a video exporter using an appropriate open source video library.  Ideally support MPEG-2 with KLV, though KLV is likely a stretch goal.  Research available open source video encoding libraries (ie: gstreamer, FFmpeg, Libav), select library to use, implement streaming video export capability in Opticks.  Video playback does not need to be synchronized to playback at same speed data was collected at.  If time provides and selected video library supports KLV, export KLV data.  Video export capability will provide a user friendly ability to deliver streaming processed video from Opticks to standard video formats and to streaming video technologies.

    What you'll learn: You'll learn about the Opticks data model and exporter framework. You'll learn about video formats and open source video encoding libraries.  You'll learn about software constructs used for buffering data to support quick playback, random access of frames. This is a great project for programmers without a remote sensing background since you won't need any knowledge about how to process the video for remote sensing purposes.

    CZML Importer and Exporter

    Potential Mentor: Stephen Hartzell, Trevor Clarke, Michael Considine, Robert Goffena

    Knowledge: C++

    Description: Build import and export modules to import CesiumJS CZML formatted data into opticks in formats like points, tracks, images, and 3D primitives.  Build an exporter to generate CesiumJS compatible CZML output from existing points, tracks, and images within Opticks. If time permits, consider posting compliant CZML code to a web service as it changes. This capability would allow real-time dissemination of Opticks analysis of geospatial information.

    What you'll learn: You'll learn about the Opticks data model and importer and exporter frameworks. You'll learn about the Cesium Javascript library for WebGL based geospatial visualization.