Prism: a set of tools to generate and simulate raw images from (multifocus) plenoptic cameras

3 minute read

Published:

Along with the libpleno, we developed a set of tools to generate and simulate raw images from (multi-focus) plenoptic cameras, named PRISM (standing for Plenoptic Raw Image Simulator) which is available at https://github.com/comsee-research/prism!

Quick Start

Pre-requisites

The PRISM applications have a light dependency list:

  • boost version 1.54 and up, portable C++ source libraries,
  • libpleno, an open-souce C++ library for plenoptic camera,

and was compiled on:

  • Ubuntu 18.04.4 LTS with GCC 7.5.0.

Compilation & Test

If you are comfortable with Linux and CMake and have already installed the prerequisites above, the following commands should compile the applications on your system.

mkdir build && cd build
cmake ..
make -j6

To test the prism application you can use the example script from the build directory:

./../examples/run_prism.sh

Applications

Configuration

All applications use .js (json) configuration file. The path to this configuration files are given in the command line using boost program options interface.

Options:

shortlongdefaultdescription
-h--help Print help messages
-g--guitrueEnable GUI (image viewers, etc.)
-v--verbosetrueEnable output with extra information
-l--levelALL (15)Select level of output to print (can be combined): NONE=0, ERR=1, WARN=2, INFO=4, DEBUG=8, ALL=15
-s--pscene Path to scene configuration file
-c--pcamera Path to camera configuration file
-n--nrays30Number of rays per pixel
 --vignettingtrueEnable vignetting effect in modelization
 --run_allfalseRun automaticaly all image generation
 --save_allfalseSave automaticaly all image
-n--nposes10Number of poses to generate
 --min450Distance min for pose generation
 --max1900Distance max for pose generation

For instance to images generation:

./src/prism/prism -s scene.js -c camera.js --nrays 30 --vignetting false --run_all true --save_all true -v true -g true -l 7

Some examples of configuration files are included in the repository. Two applications are included in PRISM.

1. Images generation

prism generates images based on raytracing according to the scene configuration.

Requirements: camera parameters, scene configuration and number of rays per pixel.

Output: images.

2. Scenes generation

scene generates randomly valid poses and the scene configuration.

Requirements: min/max depths, number of poses, camera parameters, scene configuration and texture.

Output: poses and scene configuration.

Datasets

  • Datasets R12-A, R12-B and R12-C can be downloaded from here.
  • The dataset R12-D, and the simulated unfocused plenoptic camera dataset UPC-S are also available from here.
  • Datasets R12-E, ES and ELP20 are available here.

Citing

If you use PRISM or libpleno in an academic context, please cite the following publication:

@inproceedings{labussiere2020blur,
  title 	=	{Blur Aware Calibration of Multi-Focus Plenoptic Camera},
  author	=	{Labussi{\`e}re, Mathieu and Teuli{\`e}re, C{\'e}line and Bernardin, Fr{\'e}d{\'e}ric and Ait-Aider, Omar},
  booktitle	=	{Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  pages		=	{2545--2554},
  year		=	{2020}
}

or

@article{labussiere2022calibration
  title		=	{Leveraging blur information for plenoptic camera calibration},
  author	=	{Labussi{\`{e}}re, Mathieu and Teuli{\`{e}}re, C{\'{e}}line and Bernardin, Fr{\'{e}}d{\'{e}}ric and Ait-Aider, Omar},
  doi		=	{10.1007/s11263-022-01582-z},
  journal	=	{International Journal of Computer Vision},
  year		=	{2022},
  month		=	{may},
  number	=	{2012},
  pages		=	{1--23}
}

License

PRISM is licensed under the GNU General Public License v3.0. Enjoy!