SoC2007 project Batch Processing

From PanoTools.org Wiki
Revision as of 11:08, 2 April 2007 by Erik Krause (Talk | contribs)

Jump to: navigation, search

Contents

Foreword

Virtual reality together with panoramic images has gained popularity over the recent years with the development of supporting technologies. This novelty has rapidly grown and today it deeply affects our lives. Specially the World Wide Web is becoming increasingly interactive with the use of interactive panoramic images, interaction with mobile phones, flash movies,... On the other hand, the use of panoramic image in journalism, adveritising and marketing is gaining popularity.

Software industry has, in order to fulfill interactivity demands, responded with a number of open-source and commercial applications. One of them is also hugin, an open-source front end for panorama tools, and an application used for creating, stitching, and processing panoramic images.

Summary

In the past and present time, batch processing has been one of many ways to increase the speed of processing. Its common feature is grouping similar tasks together and then executing them. The main advantage of batch processing is the reduction of time needed to execute and organize a large amount of similar tasks.

In terms of panoramic images, batch processing can be applied to a common process of stitching together input images to an output panoramic image. This process can be repeated as long as there are input images and project files in the preselected directory.

Photographers like to take panoramas in series and the result would be a large set of images, that need to be grouped together. Firstly, the batch processor needs to determine heuristically which ones belong to the same panorama, then create the project file, apply the right template(according to exif information), optimize and output images in the selected format. What is more, the batch processor also needs to check whether existing projects are also located in that folder and also process them.

PTButcher is project that carries out this idea. It implements features for batch project building, batch stitching and overall project management of hugin projects(or any other related project files). It is a part of hugin, and also a standalone script that can be invoked from the command line.

PTButcher's aim is to provide a solid framework for professional photographers and advanced users of hugin that produce panoramas almost every day. They urge to have a fast and effective workflow and also something less time consuming than the existing hugin GUI that does not offer any batch processing.

I am proposing this project in order that Google funds its development through the Summer of Code 2007.

Description and features

Here is a brief description of all features and possible ways of implementation.

hugin project manager

In order to make hugin 'de facto' application for panoramic images, hugin needs a good project organization and management. This includes: a list of all available projects, the ability to open, close and delete projects, in addition to that, users can copy or move the projects into another location. Users can optimize or stitch all the selected projects with a simple click. When this features will be implemented hugin will become an IDE for panoramic images.

Batch processing

Here is a timeline of PTButcher's batch processing execution:

  • read the files in a directory
  • determine heuristically which ones belong to the same project
  • set up a project file
  • run CP generator
  • determine based on the CP's if the files really belong together
  • apply template
  • optimize
  • output in different formats (layerd equirect photoshop; layered rectilieaar of the zenith, for example)

The batch process is fully customizable with the use of script parameters and templates(see #Command line interface and parameters).

Ability to stitch panovideos: Given a template with the (n) of images involved and (n) folders, containing (m) png images extracted from the (n) streams to stitch together. Invoke itself the softwares, and cycles the batch to build (m) images in a new folder.

Implementation

PTButcher will be implemented in c++ and python. The scripting language is intended to be the core part, which will then invoke the proper panorama tools. The c++(with Qt library) is intended to integrate PTButcher into hugin and provide a user friendly interface to access the scripting-language library.

More features

Code of PTButcher is divided into two parts:

  • project manager in hugin(c++ and Qt)
  • scripting library (perl or python)

Project manager:

  • ability to translate projects between the various gui.
  • to search projects in subfolders
  • to keep history of all operations, with undos ability.

Scripting library:

  • creates projects based on the subfolder of a main folders, creates CPs and optimizes.
  • Default name schemes customizable for result images and projects. As well as project folder-locations
  • Template application (selection in base of image number, or exif)
  • Customizable CP finder and refinery
  • Customizable optimizer
  • report with result and-or creation of a little test image
  • capable of hugin-ptgui-whatever panorama project format.

Support for HDR or ADR workflows: always template based. i.e. Given 3 set of 4 fisheye images and the corresponding template, it generates the main project, optimizes images together, and THEN, render 3images (a,b,c) involving images 0,3,6,9 (a) 1,4,7,10) (b) (2,5,8,11) (c)

Templates

One of many features PTButcher offers are also templates. Templates provide a common way of choosing the right settings(lens system, number of images, panorama type, output format) to a group of images or projects. Next to pre-defined templates, users can also create and save custom templates, based on the settings they applied to the project, The implementation plan of templates is to provide a xml file for each template.

Example of a template:

  • spherical panorama
  • 8 input pictures
  • Canon 5D and 15mm Fisheye Lens
  • output image format(jpeg)

Discussion

Graphical user interface

All PTButcher's features will be available in graphical user interface written using Qt library. The visual layout of the interface has not been designed.

Command line interface and parameters

./ptbutcher [-d path/to/direcory] [-pf] [-t /path/to/template]

-d path to the root directory. By default current directory is used

-p this tells PTButcher to only process project files(.pto). If this is not present, PTButcher tries to create project files for all images

-f output format(defult is jpeg)

-t template to be used for stitching. If this is not present, PTButcher tries to match the images with the predefined templates, according to exif information

Additional notes

Project idea

Luca Vascon

Mentor

Yuval Levy

Students

Zoran Mesec

Development process:

PTButcher will be hosted in a public CVS repository at [1]. Development progress and notes will be kept on the public wiki of panotools[2], where users can also post comments and suggestions. Development will take place fully in the open. Discussion about this project has already been set up on the panotools-devel mailing list. See the messages in the list archives [3].

Deliverables

The final package delivered at the end of the summer will include:

  • PTButcher implementation in python, with all features described below
  • PTButcher GUI implementation as part of hugin
  • users manual
  • documentation

About the author of this proposal

My programming skills and experience in open source community makes me a suitable candidate to carry out this project. I am an undergraduate student of Computer and Information science and also a photographer. I have also worked and co-managed an open-source application for instant messaging. Additional information can be provided upon request. I have announced my draft on the panotools-devel mailing lists and received a positive feedback. Yuval Levy, a panoramic photographer and project coordinator, has agreed to mentor me on this project.

--Zoran Mesec 02:36, 31 March 2007 (CEST)

Personal tools
Namespaces

Variants
Actions
Navigation
tools
Tools