| Literature DB >> 22163404 |
Eduardo Magdaleno1, Jonás Philipp Lüke, Manuel Rodríguez, José Manuel Rodríguez-Ramos.
Abstract
In this paper we describe a fast, specialized hardware implementation of the belief propagation algorithm for the CAFADIS camera, a new plenoptic sensor patented by the University of La Laguna. This camera captures the lightfield of the scene and can be used to find out at which depth each pixel is in focus. The algorithm has been designed for FPGA devices using VHDL. We propose a parallel and pipeline architecture to implement the algorithm without external memory. Although the BRAM resources of the device increase considerably, we can maintain real-time restrictions by using extremely high-performance signal processing capability through parallelism and by accessing several memories simultaneously. The quantifying results with 16 bit precision have shown that performances are really close to the original Matlab programmed algorithm.Entities:
Keywords: FPGA; depth estimation; multistereo; plenoptic sensors; real-time processing
Mesh:
Year: 2010 PMID: 22163404 PMCID: PMC3230971 DOI: 10.3390/s101009194
Source DB: PubMed Journal: Sensors (Basel) ISSN: 1424-8220 Impact factor: 3.576
Figure 1.Overall system to be integrated in a portable video camera.
Figure 2.Architecture of the designed belief propagation system.
Pseudo-code for the algorithm.
Nx and Ny determine the size of the image, and Nz is the number of planes.
Figure 3.Memory addressing for even iterations.
Figure 4.Memory addressing for odd iterations.
Address generation for the example.
| odd | 0 | 3 | out | 1 | out |
| even | 1 | 4 | out | 2 | 0 |
| odd | 2 | 5 | out | out | 1 |
| even | 3 | 6 | 0 | 4 | out |
| odd | 4 | 7 | 1 | 5 | 3 |
| even | 5 | 8 | 2 | out | 4 |
| odd | 6 | 9 | 3 | 7 | out |
| even | 7 | 10 | 4 | 8 | 6 |
| odd | 8 | 11 | 5 | out | 7 |
| even | 9 | out | 6 | 10 | out |
| odd | 10 | out | 7 | 11 | 9 |
| even | 11 | out | 8 | out | 10 |
Figure 5.Architectural block diagram of the address generator.
Figure 6.Architectural block diagram of the arithmetic core.
Figure 7.Diagram of the smoothing operation.
Figure 8.Functional simulation of belief propagation for a 64 × 64 frame and 10.
Figure 9.Lightfield captured with a plenoptic camera. Image taken from [5].
Figure 10.(a) Single image. (b) Depth map.
Execution time for the belief algorithm in FPGA.
| 64 | 64 | 10 | 22,539 | 0.11 |
| 64 | 64 | 25 | 53,259 | 0.27 |
| 120 | 160 | 10 | 105,611 | 0.53 |
| 120 | 160 | 25 | 249,611 | 1.25 |
| 128 | 128 | 10 | 90,123 | 0.45 |
| 128 | 128 | 25 | 213,003 | 1.07 |
| 256 | 256 | 10 | 360,459 | 1.80 |
| 256 | 256 | 25 | 851,979 | 4.26 |
| 512 | 512 | 10 | 1,441,803 | 7.21 |
| 512 | 512 | 25 | 3,407,883 | 17.04 |
| 1,024 | 1,024 | 10 | 5,767,179 | 28.84 |
| 1,024 | 1,024 | 25 | 13,631,499 | 68.16 |
FPGA internal memory resources.
| XC4SX35 Virtex-4 | 64 × 64 × 4 | RAMB16 1K × 16 | 80/192 (41%) |
| XC5SX50 Virtex-5 | 64 × 64 × 4 | BRAM 2K × 16 | 40/132 (30%) |
| XC5SX50 Virtex-5 | 64 × 64 × 8 | BRAM 2K × 16 | 80/132 (60%) |
| XC6VLX240 Virtex-6 | 64 × 64 × 8 | BRAM 2K × 16 | 40/416 (9%) |
| XC6VLX240 Virtex-6 | 64 × 64 × 8 | BRAM 2K × 16 | 80/416 (19%) |
| XC6VLX240 Virtex-6 | 128 × 128 × 4 | BRAM 2K × 16 | 160/416 (38%) |
| XC6VLX240 Virtex-6 | 128 × 128 × 8 | BRAM 2K × 16 | 320/416 (77%) |
| XC6VLX240 Virtex-6 | 256 × 128 × 4 | BRAM 2K × 16 | 320/416 (77%) |