Recently, 3D displays and videos have generated a lot of interest in the consumer electronics industry. To make
3D capture and playback popular and practical, a user friendly playback interface is desirable. Towards this end,
we built a real time software 3D video player. The 3D video player displays user captured 3D videos, provides
for various 3D specific image processing functions and ensures a pleasant viewing experience. Moreover, the
player enables user interactivity by providing digital zoom and pan functionalities. This real time 3D player was
implemented on the GPU using CUDA and OpenGL. The player provides user interactive 3D video playback.
Stereo images are first read by the player from a fast drive and rectified. Further processing of the images
determines the optimal convergence point in the 3D scene to reduce eye strain. The rationale for this convergence
point selection takes into account scene depth and display geometry. The first step in this processing chain is
identifying keypoints by detecting vertical edges within the left image. Regions surrounding reliable keypoints
are then located on the right image through the use of block matching. The difference in the positions between
the corresponding regions in the left and right images are then used to calculate disparity. The extrema of
the disparity histogram gives the scene disparity range. The left and right images are shifted based upon the
calculated range, in order to place the desired region of the 3D scene at convergence. All the above computations
are performed on one CPU thread which calls CUDA functions. Image upsampling and shifting is performed in
response to user zoom and pan. The player also consists of a CPU display thread, which uses OpenGL rendering
(quad buffers). This also gathers user input for digital zoom and pan and sends them to the processing thread.
|