Public Lab Wiki documentation



GSoC ideas

This is a revision from April 20, 2013 05:09. View all revisions
31 | 221 | | #868

This is the ideas page for Public Lab's Google Summer of Code program. Many are slightly out of date or need updating; please go ahead and edit these if you see things that need changing.

See our 2013 GSOC page for more details.

Start Project ideas and discussions in the Public Lab Main lists:

People registering on PublicLaboratory.org are auto-subscribed to these lists (you can uncheck if you want).

publiclaboratory - the main PLOTS list; if in doubt, post here! (1052 members as of 2/21) grassrootsmapping - balloon and kite-mapping specific list. Lots of healthy overlap with publiclaboratory (784 members as of 2/21) plots-spectrometry - spectrometry and spectral analysis discussion list. Lots of healthy overlap with publiclaboratory (439 members as of 2/21) plots-infrared - near-infrared and vegetation monitoring discussion list. Lots of healthy overlap with publiclaboratory (353 members as of 1/13) laboratoriopublico - la lista de correo en castellano -- inactivo por ahora

Spectrometry Projects

Spectral Workbench open source spectral analysis

Goal: spectrum pattern matching to identify oil contamination

Links: http://github.com/jywarren/spectral-workbench

GPLv3

Project: import open spectral databases

Description: Determine which spectral databases can be used in an open source manner (such as perhaps the HITRAN and ASTER datasets) and import them, tagging them with their source and relevant metadata. Focus on near-infrared, visible, and ultraviolet ranges.

Links: https://github.com/jywarren/spectral-workbench/issues/54

Prerequisites: Ruby/Rails, familiarity with open data licensing and database parsing/scripting

Difficulty level: easy

Mentor: Jeff Warren (jeff@publiclaboratory.org)

Project: find closest matched spectra from database

Description: Given a spectrum from http://SpectralWorkbench.org, develop a search function for similar spectra.

Links: https://github.com/jywarren/spectral-workbench/issues/53

Prerequisites: Ruby/Rails, some familiarity with (spectral) pattern matching

Difficulty level: hard

Mentor: Jeff Warren (jeff@publiclaboratory.org)

Project: Baseline Macro to reset a baseline light source

Description:

Links: https://github.com/jywarren/spectral-workbench/issues/119 https://github.com/jywarren/spectral-workbench/issues/61 https://github.com/jywarren/spectral-workbench/issues/44

Prerequisites:

Difficulty level: Easy

Mentor: Jeff Warren (jeff@publiclaboratory.org)

Project: API v1.0 - basic spectrometry analysis, data manipulation and visualization tools for the spectral data matching/search

Description:

Links: https://github.com/jywarren/spectral-workbench/issues?labels=matching&page=1&state=open

Prerequisites:

Difficulty level: Medium

Mentor: Jeff Warren (jeff@publiclaboratory.org)

Project: offline version of SpectralWorkbench

Description: We need an offline version of spectralworkbench.org, , hopefully based on our HTML/JavaScript code. Links: https://github.com/jywarren/spectral-workbench/issues/74 https://github.com/jywarren/spectral-workbench/issues/73

Prerequisites:

Difficulty level: Medium

Mentor: Jeff Warren (jeff@publiclaboratory.org)

Project: iOS version of SpectralWorkbench in PhoneGap

Description: The current mobile version is web-based, and only runs on Opera for Android right now. But it is pretty nice: https://spectralworkbench.org/capture. The ideal is to wrap this already-working system in a native app so that any future interface changes can simply be pushed out on all platforms at once.

Links: https://github.com/jywarren/spectral-workbench/issues/116

Prerequisites: PhoneGap, Cordova

Difficulty level: Medium

Mentor: Jeff Warren (jeff@publiclaboratory.org)

Project: Mobile interface and cross-mobile-browser compatibility for SpectralWorkbench.org

Description: A fuller mobile implementation of SpectralWorkbench would be a great, and might share a lot with the iOS project above or simply be a complete refit of the web-based version (https://spectralworkbench.org/capture, visit on Android device), since webcam APIs are now supported on versions of Chrome, Opera, and Firefox on Android.

Links: https://github.com/jywarren/spectral-workbench/issues/205

Prerequisites: JavaScript, Bootstrap, HTML/CSS, some Ruby on Rails, familiarity with getUserMedia() webcam API

Difficulty level: Medium

Mentor: Jeff Warren (jeff@publiclab.org)

Map Projects

MapKnitter open source image rectification and GIS

Goal: spectrum pattern matching to identify oil contamination

Links: http://github.com/jywarren/mapknitter

  • GPLv3

Project: optimize and improve high-resolution stitching interface

Description: This could take the form of several ideas/approaches -- from caching the warped images as dataURLs in the canvas element to speed up interactivity, to implementing the Client Zoom feature in the most recent OpenLayers.

Prerequisites: JavaScript/Prototype/Canvas element, Ruby/Rails

Difficulty level: medium

Mentor: Jeff Warren (jeff@publiclaboratory.org), Stewart Long (stewart@publiclaboratory.org)

Project: Clashifier open source image classification. abstract Classifiers class to make different classifiers more pluggable

Goal: identify wetlands species and/or oil contamination

Links: http://github.com/jywarren/clashifier

  • GPLv3

Description: Some structural changes are necessary to allow people to develop and add new classifiers to the system. It should be as easy as having a "classifier.classify()" function which accepts an RGB (or more colors) pixel value, or perhaps an image and x,y coordinates. Some of this work has been started in the /lib/ directory, but it will require some architectural changes.

Links: https://github.com/jywarren/clashifier/issues/4 https://github.com/jywarren/clashifier/issues/3

Prerequisites: Ruby/Rails, some familiarity with classification algorithms like naive bayes or cartesian, or anything else

Difficulty level: medium

Mentor: Jeff Warren (jeff@publiclaboratory.org)

Project: add annotations layer to Mapknitter

Description: This could include adding polygonal overlays to highlight regions, adding notes, and linking discussions/data directly into maps.

Links: https://github.com/jywarren/spectral-workbench/issues/89

Prerequisites: JavaScript/Prototype/Canvas element, Ruby/Rails

Difficulty level: medium

Mentor: Jeff Warren (jeff@publiclaboratory.org), Stewart Long (stewart@publiclaboratory.org)

Project: georeferencing in Mapknitter without base image data

Description: investigate and implement different methods of georeferencing images besides overlaying on existing aerial data. GPS, ground-target, or EXIF-embedded data could all be used.

Links: https://github.com/jywarren/mapknitter/issues/64 https://github.com/jywarren/mapknitter/issues/10 https://github.com/jywarren/mapknitter/issues/65 https://github.com/jywarren/mapknitter/issues/73

Prerequisites: JavaScript/Prototype/Canvas element, Ruby/Rails

Difficulty level: medium

Mentor: Jeff Warren (jeff@publiclaboratory.org), Stewart Long (stewart@publiclaboratory.org), Ned Horning (horning@amnh.org)

Project: Align and analyze overlapping visible and near infra-red images

Description: A utility to process large numbers (dozens or hundreds) of pairs of visible and infra-red images, including those taken by users with matched visible and IR cameras. The utility could automate a subset of the processes below. It could be based on the experimental multispectral features of MapKnitter, with a focus on analysis and NDVI. Such a utility could greatly improve the quality, consistency, and usefulness of the NDVI maps made by Grassroots Mappers.

  • Align pairs of overlapping visible and near IR photographs
  • Crop the result to the area of overlap
  • Compute NDVI for each pixel of the layered image and produce a third layer of the NDVI values.
  • Modify the assignment of colors to the NDVI values
  • Downsample the NDVI layer by averaging (e.g., blocks of 4 to 256 pixels) to account for alignment error
  • Interactively display the NDVI value for mouse-selected pixels or polygons
  • Output the NDVI layer (e.g., as jpeg) for aligning with adjacent overlapping images (e.g., MapKnitter) or stitching into a seamless aerial image (e.g., MS ICE, Gigapan Stitch)

Prerequisites: JavaScript/Prototype/Canvas element, Ruby/Rails, GDAL and/or ImageMagick/RMagick, familiarity with remote sensing would be nice

Difficulty level: hard

Mentor: Arlene Ducao (arlduc@mit.edu), Jeff Warren (jeff@publiclaboratory.org), Ned Horning (horning@amnh.org)

Project: ability to upload just an image without making a map (drag-drop or from a phone), and it auto-geocodes and starts a map for you (prototype MapKnitter 2.0)

Description:

Links: https://github.com/jywarren/mapknitter/issues/73

Prerequisites:

Difficulty level: Medium

Mentor: Jeff Warren (jeff@publiclaboratory.org), Stewart Long (stewart@publiclaboratory.org)

Project: implementing rubbersheeting in Leaflet, as a first step to porting the whole interface to Leaflet

Description:

Links:

Prerequisites: Javascript

Difficulty level:

Mentor: Jeff Warren (jeff@publiclaboratory.org), Stewart Long (stewart@publiclaboratory.org)

Project: MapMill.org crowdsourced image sorting. Shift image storage to Amazon S3

Description: We can't support large #s of uploads otherwise, and this is better security and archiving too. Probably use paperclip gem in Rails.

Links: http://github.com/jywarren/mapmill

Prerequisites: Ruby on Rails, Ruby, ImageMagick/RMagick

Difficulty level: medium

Mentor: Jeff Warren (jeff@publiclaboratory.org)

Project: MapMill.org crowdsourced image sorting. Bulk multifile upload, like Hyper3d.com

Description: Batch upload (may require above s3 project) with progress bars for each image. See https://github.com/jywarren/mapmill/issues/6

Links: http://github.com/jywarren/mapmill

Prerequisites: Ruby on Rails, Ruby, Javascript/jQuery or Prototype

Difficulty level: easy

Mentor: Stewart Long (stewart@publiclaboratory.org), Jeff Warren (jeff@publiclaboratory.org)

Improve warnings and provide alternatives when too many images to export a map with MapKnitter

Description: One approach could be to warn user the number of images is more than can be exported and offer capability to clone map so user can delete images reduce the number to an exportable number. Another could warn user maximum number of images has been reached and not allow additional ones to be uploaded. Links: TBD

Prerequisites: TBD

Difficulty level: TBD

Mentor: Stewart Long (stewart@publiclaboratory.org), Jeff Warren (jeff@publiclaboratory.org), Pat Coyle (pat@coyles.com)

Infrared Projects

Android phone-based NDVI/NRG infrared vegetation analysis

Project: Web service to composite infrared and visible images

Revised from "Update code to composite side-by-side video from a webcam"

Description: Create a simple web service for people to upload 2 images -- one near-infrared and one visible -- which auto-aligns them and provides a composite image such as described on the Near-infrared Camera page

Prerequisites: web programming -- HTML/CSS and some server side system (Python, Ruby, PHP, etc), ImageMagick or another image handling library

Difficulty level: easy

Mentor: Jeff Warren (jeff@publiclaboratory.org)

Project: Interface design and NDVI readout, image storage

Description: A numerical NDVI readout averaging NDVI values for the whole video frame, plus buttons to switch between NDVI and NRG mode. A way to save/share images taken with the software.

Prerequisites: Processing and/or Java (very easy)

Difficulty level: easy

Mentor: Arlene Ducao (arlduc@mit.edu), Jeff Warren (jeff@publiclaboratory.org)

Project: adapt Android video interface

Description: Get the app running in Android to connect to the Android video class, abstracting so that it works on desktop and mobile devices.

Prerequisites: Processing and/or Java, Android

Difficulty level: medium

Mentor: Arlene Ducao (arlduc@mit.edu), Jeff Warren (jeff@publiclaboratory.org)

Project: Android Aerial Acquisition App

Description: Android app that does continuous image shooting, assingning geodata to each image exif. Bonus feature; KML output for the image overlay locations.

Prerequisites: Processing and/or Java, Android

Difficulty level: easy-medium

Mentor: Stewart Long (stewart@publiclaboratory.org), Jeff Warren (jeff@publiclaboratory.org)