Skip to content

GSOC2013

Antonin Descampe edited this page Apr 28, 2015 · 1 revision

Introduction

Google Summer of Code 2013 has been announced and mentoring organizations are able to apply until March 29th.

This year, OpenJPEG will apply as organization.

Quick overview of OpenJPEG is here.

If you have any questions, feel free to contact the OpenJPEG mentoring administrator, Antonin Descampe, at (antonin -at- gmail com).

If you are volunteering to become a mentor, please read the topics below and contact the administrator.

If you are a student interested in any of the following projects, please go to GSOC 2013 Student Application page to apply.

This page contains a few project ideas (which, by no means, limits any prospective proposals).


Timeline

March 29, 2013 - Deadline to apply as organization

April 22, 2013 - Applications open for students

May 3, 2013 - Deadline for students to apply

full timeline


OpenJPEG GSOC 2013 projects

Improve the OpenJPEG API

Proposed by: Mickaël Savinaud

There is a need for a OpenJPEG API reworking after the 2.0 release. Indeed the API is too complicated and it is not adapted to communication with other softwares. For example it could be nice to provide a a modern C API based on opaque pointer to facilitate the future evolution. A good example could be find into the C GDAL API. The use of opaque pointer for image properties, metadata (color, additional information) will need to provide several accessors (get/set) or to use a key-value system. Another evolution is to avoid the allocation of (encoding or decoding) data by OpenJPEG. With this API evolution, user will pass through the API a char buffer previously allocated with the correct size. It will simplify the management of data and improve the performance (in the encoding part some data copy are done but can be avoid with this new framework).

The project would consist of four parts:

  • evaluate and study some API based on opaque pointer (GDAL is a good project)
  • implement the opaque pointer for the image structure
  • implement the system and functions to access to this sructure
  • implement the new data management into this new OpenJPEG API

Continue GSOC2012 project : GPU implementation

Proposed by: Nicolas Bertrand

Last year in GSOC (2012) we started an implementation of JPEG2000 decoding in GPU. JPEG2000 is a very efficient algorithm, but it's very time consuming. The project will consist in continuing the port of encoding and decoding functions to GPU.

Nowadays a lot of research is done to implement JPEG2000 encoding/decoding in GPU. We will test some algorithms proposed in the literature.

When a image is decoded on GPU we will need also to directly render the image in the GPU graphic card (via OpenGL) or send it back to CPU. When JPEG2000 is used for digital cinema the color-space is the CIE XYZ.

The project would consist of several parts:

  • Implement a video filter XYZ to RGB, and display it on the graphic card
  • Parallelize the decompression at code-block level (i.e intra codeblock)
  • Implement inter codeblock algorithm explained by Jiri Matela (2010) and papers :
    • Efficient JPEG2000 EBCOT Context Modeling for Massively Parallel Architectures.
    • Low GPU Occupancy Approach to Fast Arithmetic Coding in JPEG2000

Enable multithread encoding and decoding

Proposed by: Nicolas Bertrand

CPUs are now currently embedded with lot of core/threads. JPEG2000 is a very efficient algorithm, but it's very time consuming. Multithread would be useful to speed up openjpeg performances. Some benchmarking and test will be needeed. Try multi-threading:

  • at tile level
  • at component level
  • resolution level
  • layer level
  • precinct/codeblock level
  • codeblock level

The project would consist :

  • on implementing those threading levels and benchmark them
  • Try a slightly different approach ( ie pull/push architecture) inspired from research paper Multithreaded processing paradigms for JPEG2000

Improve speed performance of entropy coding part

Proposed by: Nicolas Bertrand

In JPEG2000, the entropy/arithmetic coding is done with the EBCOT algoorithm. Clever, efficient, but time consuming.

The project would consist :

  • Find in code possible optimizations( algorithmic, data propagation compilation)
  • Introduce SSE instruction set to increase the (de)coding time performance
  • Benchmark the optimization

Possible ideas

  • Firefox plugin implementation
  • A cross-platform JPEG 2000 viewer, as an alternative to kdu_show

Mentors list

If you are considering becoming a mentor, please send the admin a mail.

You should read the advice for mentors before.

Mickaël Savinaud

Mickaël has a PhD in Applied Mathematics from Ecole Centrale Paris, and is currently working as a Research Engineer at C-S (www.c-s.fr). He is in charge of the OrfeoToolbox project

google account : savmickael

LinkedIn profile

Nicolas Bertrand

Nicolas is a PhD student working on Digital Cinema, with Utopia ( a French network of indie cinema theaters). The goal is to provide a full open-source solution for creation, projection and distribution of digital copies in theaters. As Digital Cinema uses JPEG2000 for compression, OpenJPEG was chosen for encoding and decoding Images. More precisely, Nicolas work on OpenJPEG decoding optimization, to speed-up the decompression time to reach a decoding frame rate from 1/24 to 1/30 s on a "standard" machine ( no dedicated hardware used).

google account: nicoinattendu (gmail)

Charles Buysschaert

Charles is a senior software engineer working at intoPIX (www.intopix.com), a company whose core business is the development of JPEG 2000 efficient hardware implementations.

LinkedIn profile


Links

GSoC Knowledge Base Wiki

GSoC 2013 FAQs

GSoC 2013 Timeline