Google Summer of Code

Google Summer of Code 2010 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.

Expectations for Students


Below you will find our list of project ideas for Google Summer of Code. Some have a fair amount of detail to get you started, some are just broad topics to help guide you to your own idea. It is fully expected that you will discuss your potential project on either our developers mailing list or IRC before you submit a student application.

Use the Student Application Template when submitting your project proposal.

After we have accepted your application, we expect to see the following:

  • Discussion about your project and your progress on our developer mailing list and IRC. This helps you learn to interact with a community, it also allows other members of the community to give you pointers and help. Mentor and student private discussion should be kept to a minimum. We should hear from you at least once a week, this is to help us ensure that everything stays on track. If you've been bogged down that week by exams or a summer vacation, just tell us that, preferably ahead of time.
  • Take advantage of the "warm up" period (e.g. Community Bonding Period) from April 26 to May 24. We want you to be successful so this is the time to really learn the parts of Opticks you're going to need to know to make your project successful. So, jump in and fix a couple of easy bugs, look through our bug tracker or just ask which ones are the easy ones. The Opticks project uses Subversion for version control, but we also have a Git mirror on Github. Students will be required to use Git during their project and create their own space on Github, so be proactive and learn about our Git mirrors.
  • Have some running code by mid-terms (July 12). We know this is hard, but it only gets harder after mid-terms. We aren't expecting final code by any stretch of the imagination, but having some code that works allows you to focus on finishing it after mid-terms instead of starting it after mid-terms.

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.

You can find the Opticks SDK and accompanying documentation here. The Opticks API is a C++ based API. 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.

Octave Algorithm Scripting

Potential Mentor: Kip Streithorst

Knowledge: C++, Opticks API, Simple API, Embedding Scripting Language in C app

Description: This project would involve interfacing a dynamic scripting language into Opticks. Octave is Matlab compatible, open source interpreter. This project would involve creating an Opticks scripting extension for Octave and interfacing Octave with the Simple API. The goal of this project is to allow scientists without C++ knowledge to quickly and easily build new algorithms while leveraging all of the other capability already built into Opticks.

Difficulty: Medium. The capability of Opticks that will be exposed to Octave is already defined by the Simple API of the Opticks SDK. The difficult part is determining which available methods to use to expose the raw image data to Octave. The other difficult part is deciding how much to wrap the functional C-based API into something more Octave like.

Where to learn required background:

What you'll learn: You'll learn all about the data processing side of Opticks as well as the rapid prototyping capabilities afforded by scripting language integration. This is a great topic for software engineers, computer scientists, and students intersted in how to interface distinct and different programs.

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.

Import Stacking Support

Potential Mentor: Kip Streithorst

Knowledge: C++, Opticks API

Description: A number of websites that provide remote sensing data will usually split each band of data into a separate file in order to better manage their bandwidth costs. Currently in Opticks, you have to load each file as its own separate image. This project will look into ways to solve that problem. One possible solution would be to update the data import mechanism to allow individual files to be stacked into a single image during import. Another possible solution would be to add a ability to combine images together after they have already been imported into Opticks. The end result would be creating a new RasterElement.

What you'll learn: You'll learn about different image file formats and distribution procedures. You'll also learn about the Opticks data model and how to efficiently combine and process large volumes of data. 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.

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.

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