-
Notifications
You must be signed in to change notification settings - Fork 3
GSoC 2014
Scikit-image is a collection of algorithms for image processing written in Python. For more information, please visit the project website, especially the examples gallery.
PSF student guidelines: http://wiki.python.org/moin/SummerOfCode/Expectations
Advice on writing a proposal (written with the Mailman project in mind, but generally applicable)
An important part of the GSoC is to connect with the community, both so that we can get to know one another and so that we may gauge your programming skills before selection. Pull requests provide an excellent opportunity to learn how the library fits together, so tackle one of the issues or implement a suggested feature.
-
Interactive gallery
Currently, the examples gallery is a static collection of code snippets and output images. We'd like users to be able to modify the code there and see the result. The outcome of this project would be a web-app that launches a sandboxed, resource-controller Python environment (probably built on top of Docker) that executes code snippets and provides the resulting image as a response.
This technical project is best suited to a candidate with a strong Linux background and an interest in systems engineering.
-
Image registration
Image registration forms part applications such as panorama stitching and super-resolution. It is also an important pre-processing step in many types of medical imaging. Some work has been done on implementing image registration in Python, e.g. the
imreg
project (https://github.com/pyimreg/imreg). The outcome of this project would be aregistration
sub-module that implements, e.g., dense registration (mutual information), sparse registration (ransac + features).This moderately difficult project is best suited to a candidate with some experience in API design and refactoring, although guidance will be provided via pull request review.
-
Region adjacency graphs and graph-based segmentation algorithms
A region adjacency graph represents image regions as nodes, with an edge placed between two nodes when their corresponding regions are adjacent to each other. Weights then be assigned to the edges, and numerous algorithms can then be used to segment the image, including mean boundary agglomeration, normalized cuts, and graphical models.
-
In order to perform deconvolution, the blurring or Point Spread Function (PSF), needs to be known. Blind deconvolution is the process of estimating the PSF and reversing its effect. This project involves researching the latest state of the art methods and implementing one or more of them. A good start may be the following paper:
http://people.csail.mit.edu/sparis/publi/2011/cvpr_radon/Cho_11_Blur_Kernel_Estimation.pdfThis challenging project is best suited to a candidate with a signal processing background.
-
Non-patent-encumbered face detection
Face detection as proposed by Viola & Jones is patented. As such, most implementations available cannot be used in scikit-image. A patent-free implementation would require modification and re-training of the underlying cascade, as described in the following article:
http://rafaelmizrahi.blogspot.com/2007/02/intel-opencv-face-detection-license.html
This highly challenging project has a fairly large research component. It is best suited to a creative candidate who is able to work independently.
-
Text detection algorithms
Detecting the presence of text is an important pre-processing step in optical character recognition and translation. This project aims to implement one or more such algorithms like the following:
Neumann, L. and Matas, J. Real-time scene text localization and recognition. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pp.3538,3545, 16-21 June 2012. doi: 10.1109/CVPR.2012.6248097
Boris Epshtein, Yonathan Wexler, and Eyal Ofek. Detecting Text in Natural Scenes with Stroke Width Transform. IEEE International Conference on Computer Vision and Pattern Recognition (CVPR), 2010.
This moderately difficult project is aimed at a candidate who enjoys figuring out the finer details of algorithm descriptions.