From Wiki
Jump to: navigation, search


Hi, I'm Mohammad Shahiduzzaman (Zaman) from Bangladesh [1]. Now I'm doing Masters in Computer Science and Engineering (CSE) at Dept. of CSE, University of Dhaka. I got bachelor degree from the same dept. C/C++ is my favorite language, so I did most of academic projects in those except some DBMS project PHP. In professional life I worked with J2EE, so have a handy skill with that. I love solving participating and solving (though retired now) programming contest problems. My resume and some of my past works can be found at [2].

Google Summer of Code 2007

I'm applying for:

  1. SoC2007_projects#Processing_of_very_large_images

Project Description

Goal: Allow the creation of arbitrary large panoramas by porting the core remapping routines of panotools/hugin to VIPS, so that panoramas of almost arbitrary size can be computed. Desired results of the project

  • 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.


  • Write and add adequate VIPS operations to use for panotools. (for example for resampling).
    • comment: I skim though the code of VIPS and panotools core library. Understanding panotools code is bit hard and lacks programming documentation as compared to VIPS. So the details of this will be filled in the future.
    • With the help of the mentors and other advisers some more concrete deliverables are listed below -
      • Plug the coordinate transformations of panotools into the affine transformation of vips, im_affine. (The tricky parts being setting up the transform, and the calculation of the boundaries).
      • Also the vips affine transformation operation currently only supports bilinear interpolation, this should be changed to include at least bicubic and the sinc interpolators. (Antialiasing filters would also help tremendously, especially for spherical panoramas, which are very distorted at the poles, but that will be a hard problem, and might not be easy to implement.)
      • Another VIPS operation that would be supported is the photometric "remapping", more on [3]. Compared to the resample operation, this is a simple operation, since it can process every pixel by itself, actually is a combination of LUT and a multiplication with a spatially factor (radial polynomial).
  • Build an application preferably in C++ which implements some useful part of panotools based on VIPS.
    • Implementation of remapping of the input images based on VIPS, ie. similar to the multiple tiff output mode of hugin and panotools.
    • comment: A custom separator can be written to get a bit more speed, but It needs profiling to confirm that this is a significant part of overall runtime.
  • write a conversion script (panotools script -> nip2 script/workspace).
    • Comment: I still have to gain complete familiarity of panotools and nip2 scripting. So more details will be added in future.

If time permits then -

  • Compare performance and memory use with comparison to existing panotools code. (If this can be done then it will prove figuratively that the project worth being done.)
  • Benchmarking for the developed multi threaded application. (may sound ambitious, but no doubt quite interesting, I'll love to get this done).

Tentative Project Schedule

  • April 9 - Application selection
  • Interim Period: Refresh the required terminologies and formulas and play hard with panotools core library and VIPS I/O system. Getting the know how of panotools and nip2 scripting as well as internals. Fixed the detalied deliverables.
  • May 28 - Begin coding, develop the required functions in VIPS.
  • June 15 - 1 week for proper testing and fixes as per feedback.
  • June 22 - Develop the C++ application for some part of panotools based on VIPS.
  • June 29 - 1 week for proper testing and fixes as per feedback.
  • July 6 - Mid term evaluation period + possible rephrase of second phase deliverables.
  • July 13 - Started working on the script converter. (Allocated more time in this phase, because I

may have an academic exam in that time).

  • August 1 - 1 week for testing.
  • August 7 to 19 - Finishing touch and documentation.


  • E-mail: shahid21st AT gmail DOT com
    • I'm on the "panotools-devel" mailing list
  • IM
    • yahoo, Gtalk ID: shahid21st
    • MSN: reporter7th AT hotmail DOT com

--Zaman 16:30, 25 March 2007 (CEST)