Student project: Parallel programming of the COSFIRE approach on a GPU

Description of COSFIRE

COSFIRE (Combination of Shifted Filter Responses) is a trainable filter approach that can be applied in several applications, including feature matching, object localization and recognition and complex scenes, contour detection, vessel segmentation, and image classification. A COSFIRE filter is automatically configured to be selective for a pattern that is presented by a user. The configuration process analyses the contour parts of the given prototype pattern and creates a model that describes the mutual geometrical arrangement and the properties of certain parts. Then, the resulting COSFIRE model, which is implemented as a filter, can be used to find similar patterns that are similar to the prototype pattern that was used for configuration. More information can be found here.

Main benefits of the COSFIRE approach:

  1. It is trainable: a filter can be configured to be selective for any given pattern
  2. A COSFIRE filter can be configured with only one prototype pattern
  3. It achieves rotation-, scale, and reflection-invariance
  4. It  relies on independent computations that can be programmed in parallel

There is already a Matlab implementation available online which is implemented in sequential programming.

Student Project

Implementation: The student will implement the COSFIRE approach using parallel programming in an open source programming language (e.g. Python, Java, C or C++) on a GPU .

Experiments:  The student will apply the implemented parallel solution to detect specific objects in a video stream. We can either use a benchmark data set or else the student may create his/her own video. In this experiment we will quantify both the effectiveness and the efficiency of the new implementation. It is expected that the parallel implementation works in real-time; i.e. ~30 frames per second.

Interest from the Python community: COSFIRE has attracted the interest of the Python community and request to have its Python implementation available in the scikit-image package. Follow this link for more details. The selected student will therefore have the opportunity to work on a module which will then be part of the scikit-image.

Journal/conference Paper: The student will also be supervised to write a paper about this work.

Please feel free to send me an email if you are interested in this project. Supervision may also be provided on Skype.

Johann Bernoulli Institute for Mathematics and Computer Science, University of Groningen, the Netherlands