
decided to interface a Logitech C920 1080p USB webcam. The USB webcam offers auto focus
and auto exposure which are important features when stitching images into panoramas. To
integrate the camera into the system, we had to compile the Petalinux OS with V4l2 drivers
which can instantiate a USB webcam as a video device in the ‘/dev/video0’ directory. We also
had to instantiate a USB PHY host controller in the linux device tree that allowed USB
peripherals to be controlled. When the user triggers an image capture, the stitching program
launches a python gstreamer application that captures an image from ‘/dev/video0’ and saves it
to the RAM.
To control the camera, we interfaced the Petalinux OS to talk to the onboard push buttons
and LEDs on the Zybo Z7020 development board. In our block diagram, we instantiated two
AXI-GPIO interfaces, with one linking the onboard LEDs to an AXI memory address, and the
other linking the pushbuttons to an AXI memory address. We then added these AXI-GPIO
interfaces to the linux device tree so the Petalinux OS knows what memory addresses the IO is
located at. The image stitching application uses the push buttons as inputs to trigger images to
be stitched, and uses the LEDs to show the status of the image capture and stitching process.
2.2.6 PCB Light Exposure Circuit
The light exposure subsystem is a simple LED and resistor 5V circuit connected to the
FPGA through the GPIO power pin. This way the FPGA can monitor the circuit and determine
when the LEDs should be turned on for better energy efficiency. The circuit is currently
configured to be turned on at start up.
2.3 Tolerance Analysis
Two algorithms are usually applied for key point matching, parallel and sequential image
stitching with their tradeoffs.
Key point matching utilizes the difference of gaussian approach in which we blur the
image and subtract the images to find the difference with different levels of gaussian blur. The
key points are the pixels that are locally distinct, and we utilize the gaussian pyramid to find
multiple key points with the approach. The next step is computing the descriptor in which we
compute the gradient of the area and collect the gradient for histogram and find similar local key
points.
Computing the gaussian pyramid is usually time consuming and different approaches can
be used in the steps. The process of parallelizing gaussian filtering benefits from the parallelism,
which reduces the process within seconds[3].
Another challenge of gaussian filtering is the memory constraint. We find out that
although the actual computation on a CUDA device is only 0.43s, transferring the images to a
CUDA device takes 0.73s, which is almost twice as much as the actual computation time.[4]
The sequential image stitching approach stitch images with optimal seam finding and
transition smoothing processes. The sequential panorama stitching procedure enables us to
process large source images and create high resolution panoramic images on limited-resource