Un recorrido por el pipeline completo: captura plenóptica con Lytro de primera generación, calibración, decodificación, corrección de color, rectificación, extracción de vistas de sub-apertura y generación de datasets HDF5 para super-resolución angular. A walkthrough of the full pipeline: first-generation Lytro plenoptic capture, calibration, decoding, color correction, rectification, sub-aperture view extraction, and HDF5 dataset generation for angular super-resolution.
Una cámara plenóptica captura no solo intensidad sino también la dirección de cada rayo de luz. Esto permite sintetizar vistas desde ángulos distintos a partir de una sola captura, algo imposible con cámaras convencionales.
A plenoptic camera captures not only intensity but also the direction of each light ray. This enables synthesizing views from different angles from a single capture — impossible with a conventional camera.
100 vistas de sub-apertura (10×10) por campo de luz capturado, recortadas a 256×256 px y organizadas en datasets HDF5 listos para entrenar modelos de super-resolución angular.
100 sub-aperture views (10×10) per captured light field, cropped to 256×256 px and packaged into HDF5 datasets ready to train angular super-resolution models.
Repositorio y datos bajo licencia CC-BY 4.0. Autoría: Juan Felipe Jaramillo H. y Juan Camilo Gómez A.
Repository and data under CC-BY 4.0. Authors: Juan Felipe Jaramillo H. and Juan Camilo Gómez A.
Cada campo de luz pasa por seis etapas secuenciales desde la cámara hasta el dataset de entrenamiento.
Each light field passes through six sequential stages from camera to training dataset.
| 01 | Captura plenóptica Plenoptic capture | Lytro 1.ª gen + array de microlentes Lytro 1st-gen + microlens array |
| 02 | Calibración Calibration | Tablero de ajedrez 19×22, 9 capturas Checkerboard 19×22, 9 captures |
| 03 | Decodificación y corrección Decoding & correction | Light Field Toolbox v0.5 |
| 04 | Rectificación Rectification | LFCalRectifyLF |
| 05 | Extracción de sub-apertura Sub-aperture extraction | 10×10 = 100 vistas / views |
| 06 | Downsampling angular y dataset Angular downsampling & dataset | HR 10×10 → LR 5×5 · HDF5 |
La cámara Lytro de primera generación es una cámara plenóptica de tipo 1.0: incluye un array de microlentes ubicado justo delante del sensor CMOS. Cada microlente actúa como una pequeña cámara que captura la escena desde un ángulo ligeramente distinto, codificando la información angular junto con la espacial en un único archivo .lfp.
The first-generation Lytro camera is a type-1.0 plenoptic camera: it places a microlens array directly in front of the CMOS sensor. Each microlens acts as a tiny camera capturing the scene from a slightly different angle, encoding angular and spatial information together in a single .lfp file.
Fig. 1 — Cada microlente proyecta una sub-imagen angular sobre el sensor CMOS. Fig. 1 — Each microlens projects one angular sub-image onto the CMOS sensor.
El archivo .lfp resultante contiene la imagen raw completa del sensor, que debe decodificarse para separar las muestras angulares y espaciales.
The resulting .lfp file contains the full raw sensor image, which must be decoded to separate angular and spatial samples.
Antes de decodificar los campos de luz se necesita un modelo geométrico del array de microlentes. La calibración utiliza un tablero de ajedrez con 19×22 esquinas internas, cuadrados de 4 mm, capturado en 9 posiciones distintas.
Before decoding light fields you need a geometric model of the microlens array. Calibration uses a checkerboard with 19×22 internal corners, 4 mm squares, captured at 9 different positions.
| Parámetro Parameter | Valor Value |
|---|---|
| Esquinas internas Internal corners | 19 × 22 |
| Tamaño de cuadrado Square size | 4 mm |
| Capturas de calibración Calibration captures | 9 |
| Herramienta Tool | LFUtilProcessCalibrations |
| Base de datos de calibración Calibration database | CalibrationDatabase.mat |
| Base de datos de imagen blanca White image database | WhiteImageDatabase.mat |
| Información de calibración Calibration info | CalInfo.json |
Outputs: CalibrationDatabase.mat, WhiteImageDatabase.mat y CalInfo.json deben generarse antes de procesar cualquier campo de luz de escena.
Outputs: CalibrationDatabase.mat, WhiteImageDatabase.mat, and CalInfo.json must be generated before processing any scene light field.
El procesamiento de los archivos .lfp se realiza con el Light Field Toolbox v0.5 para MATLAB. El pipeline pasa por tres pasos principales.
Processing of .lfp files is done with Light Field Toolbox v0.5 for MATLAB. The pipeline goes through three main steps.
LFUtilDecodeLytroFolder lee cada .lfp y lo convierte en un tensor de campo de luz 4D. El parámetro ColourCompatibility controla la corrección de color inicial.
LFUtilDecodeLytroFolder reads each .lfp and converts it to a 4-D light-field tensor. The ColourCompatibility parameter controls the initial colour correction.
Se aplica corrección de color basada en imagen blanca usando WhiteImageDatabase.mat. Posteriormente se mejora la ecualización de histograma con LFHistEqualize y suavizado bilateral con imbilatfilt.
White-image-based colour correction is applied using WhiteImageDatabase.mat. Histogram equalisation is then enhanced with LFHistEqualize and bilateral smoothing with imbilatfilt.
LFCalRectifyLF aplica los parámetros intrínsecos del array de microlentes (escalados a ×0.25 para reducir resolución), recentra y corrige la distorsión geométrica para que cada sub-imagen angular quede alineada.
LFCalRectifyLF applies the microlens array intrinsic parameters (scaled to ×0.25 to reduce resolution), recentres and corrects geometric distortion so each angular sub-image is aligned.
| Función Function | Propósito Purpose |
|---|---|
LFUtilDecodeLytroFolder | Decodifica archivos .lfp a tensores 4D Decodes .lfp files to 4-D tensors |
LFHistEqualize | Ecualización de histograma de campo de luz Light-field histogram equalisation |
LFCalRectifyLF | Rectificación geométrica con intrínsecos Geometric rectification with intrinsics |
imbilatfilt | Filtrado bilateral para suavizar ruido Bilateral filter for noise smoothing |
Una vez rectificado el campo de luz, se extraen las vistas de sub-apertura iterando sobre los índices angulares s y t de 1 a 10, generando exactamente 100 imágenes de 256×256 px por campo de luz.
Once the light field is rectified, sub-aperture views are extracted by iterating over angular indices s and t from 1 to 10, producing exactly 100 images of 256×256 px per light field.
Importante: la grilla angular es 10×10 = 100 vistas. No 9×9. El recorte final es 256×256 px por vista.
Important: the angular grid is 10×10 = 100 views. Not 9×9. The final crop is 256×256 px per view.
Fig. 2 — Grilla angular 10×10. Cada celda es una vista de 256×256 px con índices (s,t). Fig. 2 — 10×10 angular grid. Each cell is a 256×256 px view with indices (s,t).
Cada imagen se guarda con el esquema de nombres [archivo]_[secuencia]_[s]_[t].png. El recorte centrado de 256×256 px asegura uniformidad entre todas las vistas y campos de luz.
Each image is saved with the naming scheme [file]_[seq]_[s]_[t].png. The centred 256×256 px crop ensures uniformity across all views and light fields.
Las 100 vistas HR (10×10) se submuestrean angularmente para generar sus contrapartes LR (5×5). Este par HR/LR es la base del entrenamiento de super-resolución angular.
The 100 HR views (10×10) are angularly downsampled to generate their LR counterparts (5×5). This HR/LR pair is the foundation for angular super-resolution training.
Fig. 3 — Downsampling angular HR 10×10 → LR 5×5 con cv2.INTER_AREA y los dos layouts de almacenamiento uvst / stuv.
Fig. 3 — Angular downsampling HR 10×10 → LR 5×5 with cv2.INTER_AREA and the two storage layouts uvst / stuv.
Los datos se almacenan en dos organizaciones de tensor distintas según el uso previsto:
Data is stored in two distinct tensor organisations depending on intended use:
| Layout | Organización Organisation | Uso típico Typical use |
|---|---|---|
uvst |
Angular externo (u,v), espacial interno (s,t) Angular outer (u,v), spatial inner (s,t) | Acceso por vista angular Per-angular-view access |
stuv |
Espacial externo (s,t), angular interno (u,v) Spatial outer (s,t), angular inner (u,v) | Acceso por píxel espacial Per-spatial-pixel access |
Los tensores HR y LR se almacenan en archivos HDF5 con las claves X_ang_train / Y_ang_train y X_ang_test / Y_ang_test. La división usa una semilla fija seed=118 y un split 80/20 entre train y test. Cada campo de luz contribuye con ~700 muestras de entrenamiento.
The HR and LR tensors are stored in HDF5 files with keys X_ang_train / Y_ang_train and X_ang_test / Y_ang_test. The split uses a fixed seed seed=118 and an 80/20 train/test ratio. Each light field contributes ~700 training samples.
Para comparación se incluyen tres baselines clásicos de interpolación sobre las vistas LR: nearest, bicubic y Lanczos4.
For comparison, three classical interpolation baselines are included on the LR views: nearest, bicubic, and Lanczos4.
El dataset HR/LR generado está diseñado para entrenar redes de super-resolución angular: dado un campo de luz LR (5×5 vistas) sintetizar la versión HR (10×10 vistas). Los baselines nearest/bicubic/Lanczos4 sirven como punto de referencia para medir la ganancia real de los modelos de deep learning.
The generated HR/LR dataset is designed to train angular super-resolution networks: given an LR light field (5×5 views) synthesise the HR version (10×10 views). The nearest/bicubic/Lanczos4 baselines serve as benchmarks to measure the actual gain of deep learning models.
El pipeline completo está disponible en GitHub bajo licencia CC-BY 4.0.
The full pipeline is available on GitHub under the CC-BY 4.0 license.
Jaramilloh/Process-Light-Fields-Captured-With-Lytro-Camera ↗