Public Lab Wiki documentation



GSoC ideas

This is a revision from March 14, 2014 17:56. 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 have already been built! Please go ahead and edit these if you see things that need changing, as well as add your new ideas.

For a quick flashback, see our 2013 GSOC page and 2013 mentor & student proposals

Mirrors of all our main repositories can be found here:

https://github.com/publiclab

Who to contact with ideas/proposals

  • plots-dev - the Public Lab developers discussion list. This is the list for programming related topics.
  • plots-gsoc - the GSoC discussion list, more for GSOC logistics.

Either of these lists is fine; feel free to CC both.

How to post a proposal

Please first contact the above lists (even both!). Once your idea is more developed, please post a research note describing your proposal in detail. Tag it "gsoc".

High priorities

See more detail on these in the full ideas descriptions below; or add a more fleshed-out description if one is lacking.

Spectral Workbench

  • the macros system
  • the module which extracts the spectral data from an image
  • auto-calibration

MapKnitter

  • Re-implementation of image warping as a Leaflet plugin
  • reading of image GPS (and tilt) EXIF data (such as time) for initial image placement
  • Adding annotations layers to maps using a "text on image" style preferred by our users (and currently implemented in Powerpoint). Another contextual example.

Infragram

Spectrometry Projects

Related to the SpectralWorkbench.org open source spectral analysis platform

Links: https://spectralworkbench.org, http://github.com/jywarren/spectral-workbench

GPLv3

Project: automated spectrometer calibration

Description: Currently, in SpectralWorkbench.org, users manually click on known features in a fluorescent lightbulb spectrum to calibrate their spectrometer. Much better, easier, and more precise might be an automated way to pattern-match/recognize the mercury spectrum (such as this: ) and to auto-calibrate the spectrometer. The Capture interface could automatically recognize a mercury spectrum whenever you pointed the spectrometer at one, and prompt you to recalibrate. This could be developed in pure JavaScript using the Spectral Workbench API

Note: Much work has already been done on this, in two partially finished functions; $W.detect_peak(), found here, and $W.get_peak_pattern(), found here. Peak detection itself works all right, but the "peak pattern" method for matching it to a known reference needs a new approach.

List: plots-spectrometry

Links:

Prerequisites: JavaScript, optional Ruby on Rails

Difficulty level: medium

Mentor: Jeff Warren (jeff@publiclab.org)

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.

List: plots-spectrometry

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@publiclab.org)

Project: find closest matched spectra from database

Description: Given a spectrum from http://SpectralWorkbench.org, develop a search function for similar spectra. This project is largely technically complete, and needs mostly interface design and integration work.

List: plots-spectrometry

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

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

Difficulty level: easy

Mentor: Jeff Warren (jeff@publiclab.org)

Project: Baseline Macro to reset a baseline light source

Description: Use the JavaScript Spectral Workbench API and possibly some Ruby on Rails to develop a way to zero out baseline noise and input light source in the Spectral Workbench capture interface. This could simply involve storing the existing spectrum as an array and subtracting it from any new readings. It might involve a callback in the SpectralWorkbench API to filter incoming data from the device using a given function.

List: plots-spectrometry

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: JavaScript, Ruby on Rails

Difficulty level: Easy

Mentor: Jeff Warren (jeff@publiclab.org)

Project: Spectral Workbench Macros and API

Description: Expand and refine the API to a version 1.0, cleaning up existing functions and providing functions and good documentation for basic spectrometry analysis, data manipulation and visualization tools for the spectral data matching/search. Bonus: install an in-line JavaScript editor to make macro editing easier at https://spectralworkbench.org/macros

List: plots-spectrometry

Links:

Prerequisites:

Difficulty level: Easy

Mentor: Jeff Warren (jeff@publiclab.org)

Project: Revised Image to Spectrum converter

Description: Modularization and cleanup of the system for extracting quantitative spectral data from a line of pixels in an image from a spectrometer. Development of user interface for changing this extraction, using the format (x1,y1,x2,y2) to describe a cross section of the image to extract. Auto-detection of cleanest/best line to extract.

List: plots-spectrometry

Prerequisites:

Difficulty level: Medium

Mentor: Jeff Warren (jeff@publiclab.org)

Project: Expanded offline version of SpectralWorkbench

Description: The existing offline version of spectralworkbench.org, based on an HTML5 offline manifest, does not allow saving or calibrated data. This project would involve using HTML5 localStorage to store the image and metadata for offline-captured spectra for later upload.

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

List: plots-spectrometry

Prerequisites:

Difficulty level: Easy

Mentor: Jeff Warren (jeff@publiclab.org)

Project: iOS version of SpectralWorkbench

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. A great deal of work has been done by Diego Rojas: https://github.com/inductionStep/spectralWorkbench_IOS

Note: the relevant HTML code in Diego's project is here: https://github.com/inductionStep/spectralWorkbench_IOS/blob/master/spectralWorkbench/spectralWorkbench/video.html We can substitute the necessary files from https://github.com/jywarren/spectral-workbench/tree/master/webserver/app/views/capture/ which are also listed in the offline manifest: https://github.com/jywarren/spectral-workbench/tree/master/webserver/public/index.manifest Is there a way to have it use the most recent version directly from https://spectralworkbench.org/capture ? Perhaps simply display a webview of that address, which will offline-cache?

List: plots-spectrometry

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

Prerequisites: iOS

Difficulty level: Medium

Mentor: Jeff Warren (jeff@publiclab.org)


Mapmaking Projects

MapMill Offline: cross-platform aerial image sorting app

Description: a desktop app that helps you sort big batches of aerial images quickly, with built-in filters:

Upon getting images from a camera:

  • you'd plug the SD card in and drag the images into the app
  • it'd plot the images' filesizes to help you find those with the sharpest focus
  • it could do analysis to find if many images display the same region redundantly
  • it'd offer to upload the images to MapKnitter for you as a batch, or copy them to a folder to share with other folks by SD card

List: grassrootsmapping, publiclaboratory

Prerequisites: desktop app design, or offline manifests for webapps

Difficulty level: easy-medium

Project: Sky Camera enhancements

Description: Sky Camera is an Android app that does continuous image shooting, taking a photograph automatically every 5-10 seconds, for attaching to a kite or balloon to take aerial photos. We'd like to improve it with any of the following:

  • automatically rough-place images on a map in MapKnitter (see "georeferencing in Mapknitter" project below)
  • Display info that'd be useful just before you launch:
    • wind direction for your location (and/or a link to a website that shows it for any location)
    • a link to our website for getting the materials to do a balloon or kite flight: http://publiclab.org/wiki/balloon-mapping
  • And for after a flight (these are easy; just text and links):
    • a link to MapKnitter.org and basic outline of how to make your images into a map
  • tilt/compass data embedded as EXIF tags (this may already be working)
  • KML output for the image overlay locations.
  • Capture gps and other sensor data (yaw, pitch, roll, etc.) and simultaneously drive an interface to trigger a pair of Canon cameras in synch using CHDK.
  • Consider ways to accommodate and record additional sensor inputs such as temperature and barometric pressure sensor. See (http://publiclab.org/notes/cfastie/10-8-2012/flight-temperature#comment-1635)

List: grassrootsmapping

Prerequisites: Processing and/or Java, Android

Difficulty level: easy-medium

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

MapKnitter open source image rectification and GIS

Goal: spectrum pattern matching to identify oil contamination

List: publiclaboratory, grassrootsmapping

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

  • GPLv3

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.

List: publiclaboratory, grassrootsmapping

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@publiclab.org), Stewart Long (stewart@publiclab.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 for MapKnitter.org 2.0)

Description: A simpler version of MapKnitter.org which streamlines the process of turning an aerial image into a georectified map -- this could use all the existing backend systems of MapKnitter, but would dramatically simplify the process of making a map out of a single image. It could even be done from a mobile phone.

List: publiclaboratory, grassrootsmapping

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

Prerequisites: Ruby/Ruby on Rails, JavaScript

Difficulty level: Medium

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

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

Description: MapKnitter.org is built on lots of old, legacy code and uses OpenLayers for it's editing interface. We would like to port the editor (and the image-distortion interface) to Leaflet, and the first step would be to port the image distortion class (and matrix class) currently used in MapKnitter into a new Leaflet plugin.

List: publiclaboratory, grassrootsmapping

Links: https://github.com/jywarren/mapknitter/, https://github.com/jywarren/mapknitter/tree/master/public/cartagen/src/warper

Prerequisites: Javascript

Difficulty level: Medium

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

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

Description: MapMill uses vast amounts of storage and we can't support large #s of uploads currently; this is better security and archiving too. Probably use paperclip gem in Rails along with jQuery Multiple File Upload: http://blueimp.github.io/jQuery-File-Upload/ So, batch upload with progress bars for each image.

List: grassrootsmapping

Links: http://github.com/jywarren/mapmill, https://github.com/jywarren/mapmill/issues/6

Prerequisites: Ruby on Rails, jQuery, Amazon S3

Difficulty level: Easy

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

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

List: grassrootsmapping

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: JavaScript, Ruby on Rails

Difficulty level: Easy

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


Infrared Projects

Project: Image classification functions in Infragram.org

Goal: identify wetlands species and/or oil contamination with image classification methods

List: publiclaboratory, grassrootsmapping, plots-infrared

Links: http://github.com/Pioneer-Valley-Open-Science/infragram-js, http://github.com/jywarren/clashifier

  • GPLv3

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

Prerequisites: Node.js, some familiarity with classification algorithms like naive bayes or cartesian, or anything else

Difficulty level: medium

Mentor: Jeff Warren (jeff@publiclab.org)

Project: Commenting, tagging, and more social features for Infragram.org

Goal: Connecting Infragram.org via OpenID to PublicLab.org will allow for more peer support via image comments, annotations, and tags.

List: plots-infrared

Links: http://github.com/Pioneer-Valley-Open-Science/infragram-js,

  • GPLv3

Prerequisites: Node.js, JavaScript, maybe Bootstrap

Difficulty level: medium

Mentor: Jeff Warren (jeff@publiclab.org)