RVS software
The code present in this repository is an extension of the Reference View Synthesis (RVS)[1-3] software (available as RVS) to plenoptic cameras, non-Lambertian objects and XSlit cameras. The inner working of RVS is described with more detail in inTechOpen open article [3].
Acknowledgments
Sarah Fachada is a Research Fellow of the Fonds de la Recherche Scientifique - FNRS, Belgium.

Description
This software computes novel views.
Usage
Commandline parameters
General parameters
| Cmd | Description |
|---|---|
| json file path | |
| --noopengl | using cpu |
| --analyzer | analyse |
Camera Json parameters
| Name | Value | Description |
|---|---|---|
| Name | string | camera name |
| Position | float 3 | position (front,left,up) |
| Rotation | float 3 | rotation (yaw,pitch,roll) |
| Depthmap | int | has a depth |
| Depth_range | float 2 | min and max depth |
| Multi_depth_range | float 2 | min and max value in multidepth (non-Lambertian) (optional, default: Depth_range) |
| DisplacementMethod | string | Depth or Polynomial (optional, default: depth) |
| Resolution | int 2 | resolution (pixel) |
| Projection | string | perspective or equirectangular or plenoptic or XSlit |
| Focal | float 2 | focal (pixel) |
| Principle_point | float 2 | principle point (pixel) |
| Hor_range | float 2 | horizontal range (degree) (equirectangular projection) |
| Ver_range | float 2 | vertical range (degree) (equirectangular projection) |
| plenopticDiameter | float | micro-image diameter (pixel) (plenoptic projection) |
| plenopticCenter | float 2 | center of the central micro-image (pixel) (plenoptic projection) |
| plenopticS | float | MLA to sensor distance (mm) (plenoptic projection) |
| plenopticD | float | main lens to MLA distance (mm) (plenoptic projection) |
| plenopticF | float | main lens focal length (mm) (plenoptic projection) |
| plenopticConfig | int | micro-image layout (horizontal 0, vertical 1) (plenoptic projection) |
| Slit1 | float 6 | Plucker line's coordinate of first slit (Xslit projection) |
| Slit2 | float 6 | Plucker line's coordinate of second slit (Xslit projection) |
| BitDepthColor | int | color bit depth |
| BitDepthDepth | int | depth map bit depth |
| ColorSpace | string | YUV420 or YUV400 |
| DepthColorSpace | string | YUV420 or YUV400 |
Example of camera json file:
json:table
{
"Version": "3.0",
"Content_name": "dataset_name",
"BoundingBox_center": [0, 0, 0],
"Fps": 30,
"Frames_number": number_of_frames_in_yuv_file,
"Informative": {[...]},
"lengthsInMeters": true,
"sourceCameraNames": [ "input_camera1_name", [...] ],
"cameras": [
{
"Name": "perspective_camera1_name",
"Position": [x, y, z],
"Rotation": [ yaw, pitch, roll ],
"Depthmap": 1,
"Background": 0,
"Depth_range": [near, far],
"Resolution": [w, h],
"Projection": "Perspective",
"Focal": [ (fx), (fy)],
"Principle_point": [ (ppx), (ppy)],
"BitDepthColor": 8,
"BitDepthDepth": 8,
"ColorSpace": "YUV420",
"DepthColorSpace": "YUV420"
},
{
"Name": "equirectangular_camera2_name",
[...],
"Projection": "Equirectangular",
"Hor_range": [ (theta_min), (theta_max)],
"Ver_range": [ (phi_min), (phi_max)],
[...]
},
{
"Name": "plenoptic_camera3_name",
[...],
"Projection": "Plenoptic",
"Focal": [fx, fy],
"Principle_point": [ppx, ppy],
"plenopticDiameter": microimage_diameter,
"plenopticCenter": [microimage_center_x,microimage_center_y],
"plenopticPixelSize": pixsize_in_mm,
"plenopticS": distance_MLA-sensor,
"plenopticD": distance_mainlens-MLA,
"plenopticF": mainlens_focal,
"plenopticConfig": 0-horizontal-layout_1-vertical-layout,
[...]
},
{
"Name": "xslit_camera4_name",
[...],
"Projection": "XSlit",
"Slit1": [l01, l02, l03, l12, l13, l23],
"Slit2": [m01, m02, m03, m12, m13, m23],
[...]
},
{
[...]
}
]
}
View Synthesis Json parameters
| Name | Value | Description |
|---|---|---|
| Version | string | version number |
| InputCameraParameterFile | string | filepath to input cameras json |
| VirtualCameraParameterFile | string | filepath to input cameras json |
| VirtualPoseTraceName | string | filepath to posetraces (optional) |
| InputCameraNames | string list | list of input cameras |
| VirtualCameraNames | string list | list of output cameras |
| ViewImageNames | string list | filepaths to input images |
| DepthMapNames | string list | filepaths to input depth |
| OutputFiles | string list | filepaths to output images |
| StartFrame | int | first frame (starts at 0) |
| NumberOfFrames | int | number of frames in the input |
| NumberOfOutputFrames | int | number of frame in the output (optional, default: NumberOfFrames) |
| Precision | float | precision level |
| ColorSpace | string | RGB or YUV working colorspace |
| ViewSynthesisMethod | string | Triangles |
| BlendingMethod | string | Simple or Multispectral |
| BlendingFactor | float | factor in the blending |
References
[1] Bonatto, D., Fachada, S., & Lafruit, G. (2020). RaViS: Real-time accelerated View Synthesizer for immersive video 6DoF VR. Electronic Imaging, 2020(13), 382-1. art00012
[2] Bonatto, D., Fachada, S., Rogge, S., Munteanu, A., & Lafruit, G. (2021). Real-Time Depth Video-Based Rendering for 6-DoF HMD Navigation and Light Field Displays. IEEE access, 9, 146868-146887. 10.1109/ACCESS.2021.3123529
[3] Fachada, S., Bonatto, D., Teratani, M., & Lafruit, G. (2022). View Synthesis Tool for VR Immersive Video. Intechopen