Difference between revisions of "SoC2007 projects"

From PanoTools.org Wiki
Jump to: navigation, search
(more details about the large image project. changed to full names)
(wrote a little about the development)
Line 2: Line 2:
  
 
This is the work in progress list of possible projects for the [[Google_SoC_2007]]
 
This is the work in progress list of possible projects for the [[Google_SoC_2007]]
 
TODO: improve general introduction + motivation
 
  
 
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.
 
Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming.
Line 12: Line 10:
 
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].
 
The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant [[Discussion_lists]], for example [https://lists.sourceforge.net/lists/listinfo/panotools-devel panotools-devel].
  
= Possible projects =
+
= Development style =
 +
 
 +
Most of the projects below are related to [[Hugin]], and some also relate to [[Panotools]] or [[tlalli]]. [[Hugin]] is mostly written in C++, and uses the [http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ VIGRA image processing library] to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([nona], [[fulla]]).
 +
 
 +
The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).
 +
 
 +
= Possible Projects =
  
 
== Intuitive yet powerful GUI for panorama creation ==
 
== Intuitive yet powerful GUI for panorama creation ==
  
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using wxWidgets, which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:
+
Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, [[Hugin]], to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using [http://www.wxwidgets.org wxWidgets], which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:
  
 
1. Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.
 
1. Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.

Revision as of 12:59, 9 March 2007

Introduction

This is the work in progress list of possible projects for the Google_SoC_2007

Panoramic imaging is a very broad field and touches many different areas of expertise, such as photography, computer vision, art and programming. There is a thriving community with experience from arts to science that provides many interesting ideas and explores new territory in panoramic imaging. In addition to the mentors, this open community will provide good support and innovative ideas.

Generally, all development should done with multiple platforms in mind (at least Windows, OSX and Linux/Unix). We have an open communication culture via mailing-lists and mostly develop using C and C++.

The project below are just suggestions. If you are an interested student and have questions or new ideas, please let us know on the relevant Discussion_lists, for example panotools-devel.

Development style

Most of the projects below are related to Hugin, and some also relate to Panotools or tlalli. Hugin is mostly written in C++, and uses the VIGRA image processing library to support different types of images (for example, 8bit, 16bit and float (HDR) images). The core functionality is implemented in a platform independent C++ library, which is used by the GUI based on wxWidgets toolkit, and the command line programs ([nona], fulla).

The development of the projects should take place in a separate branch of the projects CVS (or SVN) repository. Communication with the mentors should usually happen through the appropriate development mailing list. All code should work on the major platforms supported (Linux, OSX, Windows).

Possible Projects

Intuitive yet powerful GUI for panorama creation

Goal: Redesign/Reimplement the graphical user interface of the premiere open source panoramic imaging suite, Hugin, to increase ease of use, and provide better access to its unmatched capabilities. Currently the GUI is written using wxWidgets, which has proven to have slightly different behaviours on different platforms, especially with a complex GUI such as the one of Hugin. This is very annoying and a lot of time has been spent on minor issues such as making the GUI look good on all platforms with different font sizes etc. Therefore two steps are possible:

1. Rewrite the whole GUI using QT (which is very consistent even across platforms, and has (IMHO) a much nicer API). This is a lot more work, and not all functionality of the current GUI can be recreated during the Summer of Code, but it will provide a better platform to build onto in the future. It is also possible to implement the GUI logic in a scripting language such as Ruby or Python. This project should only be tackled by a student who has experience in developing non-trivial GUI applications with QT. The GUI and core panorama code are already separated into different libraries.

2. Extend the existing wxWidgets based GUI.

General goals for the improved GUI include:

  • Providing a simple, yet helpful user interface that suggests or highlights potentially useful next steps.
  • Enhancing and integrating manual and automated control point placement and management.
  • Improving lens parameter management.
  • Providing a batch processing interface.
  • Expert mode with access to all features and internals.

Recommended knowledge or interest in:

  • Workflow analysis and UI design skills
  • Experience with building cross platform GUI programs (Windows/Linux/OSX), either using wxWidgets or QT
  • Creative use of panoramic imaging

Mentor: Pablo d'Angelo, ?

License: GPL

Automatic feature matching for panoramic images

Goal: Robust matching of features between multiple images using a Hessian-based detector and a gradient-based descriptor. There are general feature detectors such as SIFT and SURF, which are tailored for automatic 3D reconstruction and large viewpoint changes. However, this generality is not needed for panoramic imaging, where the images usually have the same scale and viewpoint. A detector and descriptor that takes into account the approximately known distortions will have a much higher matching rate, especially when fisheye or wideangle images are used.

This project can be split into two sub-projects:

  • Implementation of the feature detector and descriptor, and a suitable test suite to verify the correctness of the implementation. For the first test, a simple Harris corner detector could be combined with an gradient-based descriptor. For this existing code can be reused. After that, the known lens distortion could be integrated into the descriptor.
  • Implementation of the matching step, including geometry based outlier pruning (for example using RANSAC) and fast nearest neighbour matching, possibly using a fast algorithm such as cover trees.

A desired result of the projects would be:

  • C or C++ library that implements the detection and description steps
  • C or C++ library for the matching step.
  • Integration of both libraries into hugin and a standalone executable similar to Autopano-sift or Autopano

Required knowledge or interest in:

  • signal or image processing background
  • C or C++ development skills.

Possibly useful resources and libraries:

Mentor: Pablo d'Angelo, Herbert Bay, ?

License: GPL

Interactive panoramic viewer

Goal: The Freepv panoramic viewer aims to provide a superior viewing experience for panoramas on all major platforms (Windows, Mac and Linux/Unix), based on exploiting powerful graphics hardware using OpenGL. Currently it provides basic but solid viewing capabilities for Quicktime VR, cylindrical, cubic and equi-rectangular panoramas. Plugins for Mozilla/Firefox and a standalone viewer are available. Several important features are still missing from the viewer include:

  • Support for hotspots
  • Optimisation for panoramas larger than the Video RAM
  • Display of high dynamic range panoramas with adaptive exposure
  • Support for reading a SPi-V compatible .xml file, for platforms where SPi-V is not available (Linux/Unix).
  • Fallback software renderer

Required knowledge or interest in:

  • OpenGL or other 3D programming experience.
  • Creating cool and nice looking interactive experiences.

Mentor: Pablo d'Angelo, ?

License: LGPL

Anti-ghosting HDR panorama blending and merging algorithm

Goal: Most HDR creation algorithms are designed to work only with very small variations in camera viewing direction. Assume that registration and response curve estimation has already happened. An improved blending method for HDR images together that have not been shot using the traditional exposure stack method. It should avoid ghosting and be insensitive to small misregistrations.

Interesting research papers:

Required knowledge or interest in:

  • Strong background signal/image processing
  • Creative mind with ideas beyond the state of the art in computer vision/graphics research.

Mentor: Pablo d'Angelo, ?

License: GPL

Processing of very large images

Goal: Allow the creation of arbitrary large panoramas. [1]

Currently panotools, as well as hugin/nona require memory to hold the complete input and the remapped output image in memory, which consumes a lot of RAM, especially for spherical panoramas. VIPS is a powerful and modular image processing library that supports very large images and multiple processors natively. By porting the core remapping routines of panotools/hugin to VIPS, panoramas of almost arbitrary size can be computed.

A desired result of the projects would be:

  • VIPS operations that support the geometric and photometric (vignetting correction) transformations.
  • Standalone command line program that remaps images using these routines.
  • Program/script to convert panotools scripts to nip2 projects.

Required knowledge or interest in:

  • C/C++ programming
  • image processing

Mentor: John Cupitt, Pablo d'Angelo

License: GPL