Google Summer of Code

Skip to end of metadata
Go to start of metadata

Google Summer of Code 2011 and ESA Summer of Code In Space Ideas

Opticks Background


Opticks is relatively new open-source project (since December 2007). It 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.

OGR Vector Data Importer

Potential Mentor: Kip Streithorst or Trevor Clarke

Knowledge: C++, GDAL/OGR, Opticks API

Description: This project involves writing a new importer plug-in for Opticks to ingest vector data from a variety of formats utilizing the OGR library. Opticks currently has the capability to import raster data using the GDAL library but lacks similar import support for GDAL's sister library OGR. This would allow import or more vector formats than currently supported including GML and KML.

What you'll learn: You learn all about the Opticks importer and data access interfaces. You'll also learn about the OGR library and how to interface distinct and different programs. This is a great project for a computer scientist, software engineer, or other programmer.

Basic SAR processing tools

Potential Mentor: Trevor Clarke

Knowledge: C++, IDL, or Python, Simple API, SAR processing

Description: Synthetic aperture RADAR (SAR) is a technique for generating high resolution images from RADAR data. Opticks can load and interact with SAR imagery data including single-look complex data but lacks specialized processing algorithms. This project would add basic SAR processing tools such as despeckle filters, slant range to ground range transformations, edge detection, and texture processing. Basic knowledge of SAR processing is useful but not required.

What you'll learn: You'll learn about the Opticks data model and data processing framework. You'll learn about SAR imagery and non-literal exploitation of complex image data. This is a great project for remote sensing scientists, computer scientists, programmers with some physics background, or other physics students with some programming background.

Note that some functionality was implemented last year by a Summer of Code student. Information on existing functionality is here

Astronomical processing tools

Potential Mentor: Trevor Clarke

Knowledge: C++, IDL, or Python, Simple API, astronomical processing techniques

Description: Astronomical data processing is similar to remote sensing processing but has its own set of processing algorithms and tools. This project will implement a basic astronomical data processing extension for astonomical images and point source data. For example: image enhancement and noise filtering, image registration, brightness measurement, and distance measurement.

What you'll learn: You'll learn about the Opticks data model and data processing framework. You'll learn about astronomical data and exploitation of astonomical images and point source data. This is a great project for astonomy students, backyard astronomers, computer scientists, programmers with some astonomy background, or other physics students with some programming background.

Photography processing tools

Potential Mentor: Trevor Clarke

Knowledge: C++, IDL, or Python, Simple API, image processing and photo processing techniques

Description: Digital photography processing, especially RAW processing is a constantly evolving discipline. The expandability and flexibility of Opticks makes it ideal for processing this data interactively and in batch mode. Add digital photography processing capability. For example, RAW file importers, white balance, demosaicing, high dynamic range processing, sharpening, etc.

What you'll learn: You'll learn about the Opticks data model and data processing framework. You'll learn about digital photography data including RAW data formats. This is a great project for computer science and imaging science students especially those with an interest in digital photography.

Update Build System to CMake

Potential Mentor: Kip Streithorst

Knowledge: Build Systems, C++, Python

Description: Update the Opticks build system from using Visual Studio 2010 on Windows and SCons on Solaris/Linux to using CMake on all platforms. Opticks is very large (includes over 40 projects in Visual Studio), with static libraries, dynamic libraries and executables with multiple build configurations on each operating system. In your proposal, please provide details with your experience using CMake, Visual Studio and SCons.

What you'll learn: The details of updating the build system for a large, multi-platform C++ project.

OpenCL Algorithm Development

Potential Mentor: Kip Streithorst

Knowledge: C++, Opticks API

Description: In order to realize the power inherent in graphic cards, OpenCL was created to allow running a subset of C directly on available hardware at runtime (including both graphics cards and CPUs). This project will involve porting a number of existing Opticks algorithms to OpenCL.

What you'll learn: You'll learn about Opticks and the data processing framework. You'll learn about using OpenCL, an emerging standard. This is a great project for a computer science student with interest in getting the most out of your hardware. Please note you will require a Graphics Card capable of running OpenCL in order to work on this project.

Fix Existing Bugs, Work on Existing Enhancements

Potential Mentor: Kip Streithorst

Knowledge: C++, Opticks API

Description: This project will involve looking at the currently open bugs/enhancements and picking multiple to work on over the course of the summer. It is expected that your project proposal will include a list of bugs/enhancements you plan on working on and some explanation as to why those were chosen.

What you'll learn: You'll learn about Opticks and our development processes.

Other Project Ideas


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.

  • Add point cloud (LIDAR, etc.) processing and exploitation algorithms
  • Add video processing, object tracking, and other time series data processing algorithms
  • Write an MPEG or other video importer
  • Add new capability to perform multi-source data fusion, specifically algorithms for combing and visualizing the data.
  • Implement voxel-based 3-d world generation for change detection/object tracking. See http://www2.computer.org/portal/web/csdl/doi/10.1109/CVPR.2007.383073 for details on relevant paper detailing the technique.
  • Add new hyperspectral algorithms for the user to perform additional HSI/MSI analysis. For example, supervised and unsupervised classification.
  • Add the capability for the user to create new views and layers by drag and dropping data from the Session Explorer Window.
  • Add a "coverage viewer" which shows coverage of data sets in a certain directory on a map/globe.
  • Investigate/implement capability that better integrates Opticks with Google Earth.

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.
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.