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