Real Time Acquisition of Perspectively Correct Images
The goal of the developed component was to emulate, in real-time, multiple virtual perspective cameras using the video input from a 360-degree panoramic camera and provide the necessary perspective manipulation interface. This was achieved using the input from a 360-degree panoramic camera, defining segments and manipulating them through the highly configurable user interface.
Implementation Choices
The application was developed using Borland's C++ Builder (version 5) compiler. Borland's VCL (Visual Component Library) library was used to create the user interface. Development was done in Microsoft's Windows 2000 operating system. The application was also tested under Microsoft's Windows 98 and Windows NT operating systems.
Software Modules
- Panoramic image reprojection module
- Third party software used includes Microsoft's DirectX 8 SDK (for fullscreen display support) and VFW SDK (for capturing live video from the panoramic camera). The Reproject application was tested for live capture with the ATI Rage Fury Pro VIVO and the Hauppage WinTV PCI video cards. Any video capture card with VFW drivers (or DirectShow drivers through the VFW wrapper installed by Windows 98/2000) is supported as long as the video input's color format is UYUV (packed 4:2:2 YUV) or I422 (planar 4:1:1 YUV).
Implemented Functionality
- Data input (image files / live video input): The input to the application can be either a sequence of images (saved on the disk in bitmap or windows metafile format), or live input from an actual panoramic camera.
- Definition of virtual perspective camera: The virtual perspective camera can be at any position and look in any direction within the visual field of the panoramic camera. Multiple views can be opened simultaneously and the number of views is constrained only by the host machine's speed.
- Selection of a predefined view: There are five predefined views (front view, back view, right view, left view and bird's-eye view) and two special operations (half and double size) to enable quick resizing of an already defined view.
- View customization: In addition to the predefined views, the user is also able to define custom views by defining a number of parameters related to the position, direction, resolution, field of view of the virtual perspective camera as well as the parameters of the panoramic camera (CCD, lens and parameters of the mirror). In that sense, the system is able to deliver any possible perspective view and take input from any panoramic camera. The parameters of any user-defined view can be saved to disk for later retrieval and use.
- View manipulation: A view can be paused at any moment. Moreover, a view can be displayed in full-screen mode at any time.
- Data output (image files): The resulting image sequences can be saved to disk as bitmap files.
User Interface
The main application window with multiple defined camera views:
The file dialog for source images:
The file open menu:
The crop dialog for images larger than the actual panoramic image:
The user defined view parameters dialog:
Future Improvements
- Added support for reading and writing AVI files.
- Improved performance by using assembly optimized routines.
- Dialog based video source input for more than one capturing device.
|