-
Notifications
You must be signed in to change notification settings - Fork 32
Description
Hello,
I was testing the NVISII with DOPE. I have set the z depth limit to around 2 m. When the object is close to camera, the rendering looks good and the image sample also looks good but as soon as the object goes far away (roughly more than 1m) from the camera, then the rendered pixels start to add noise inside the rendered scenes (on top of the model) as well as the image samples.
N.B: I am using Nvidia RTX 3070 Ti with 535 driver.
Bad sample
Z = 1.74 m
Width x Height = 1280 x 720
number of sample per pixel = 100
Z = 1.50 m
Width x Height = 1280 x 720
number of sample per pixel = 100
Z = 1.75 m
Width x Height = 1280 x 720
number of sample per pixel = 100
Z = 1.12 m
Width x Height = 1280 x 720
number of sample per pixel = 100
Good sample
Z = 0.37 m
Width x Height = 1280 x 720
number of sample per pixel = 100
Z = 0.98 m
Width x Height = 1280 x 720
number of sample per pixel = 100
Z = 0.85 m
Width x Height = 1280 x 720
number of sample per pixel = 100
Z = 0.43 m
Width x Height = 1280 x 720
number of sample per pixel = 100
For all samples (Good and Bad), here are the configurations that I used during dataset generation:
parser = argparse.ArgumentParser()
parser.add_argument(
'--spp',
default=100,
type=int,
help = "number of sample per pixel, higher the more costly"
)
parser.add_argument(
'--width',
default=1280,
type=int,
help = 'image output width'
)
parser.add_argument(
'--height',
default=720,
type=int,
help = 'image output height'
)
# TODO: change for an array
parser.add_argument(
'--objs_folder_distractors',
default='distractor_models/',
help = "object to load folder"
)
parser.add_argument(
'--objs_folder',
default='base_mug_model/',
help = "object to load folder"
)
parser.add_argument(
'--path_single_obj',
default=None,
help='If you have a single obj file, path to the obj directly.'
)
parser.add_argument(
'--scale',
default=1,
type=float,
help='Specify the scale of the target object(s). If the obj mesh is in '
'meters -> scale=1; if it is in cm -> scale=0.01.'
)
# for zed image testing
# parser.add_argument(
# '--skyboxes_folder',
# default='background_hdr_images_zed/',
# help = "dome light hdr"
# )
# for external image testing
parser.add_argument(
'--skyboxes_folder',
default='background_hdr_images_dome/',
help = "dome light hdr"
)
# for single image testing
# parser.add_argument(
# '--skyboxes_folder',
# default='background_hdr_images_single/',
# help = "dome light hdr"
# )
parser.add_argument(
'--nb_objects',
default=1,
type = int,
help = "how many objects"
)
parser.add_argument(
'--nb_distractors',
default=3,
help = "how many objects"
)
parser.add_argument(
'--nb_frames',
default=1,
help = "how many frames to save"
)
parser.add_argument(
'--skip_frame',
default=200,
type=int,
help = "how many frames to skip"
)
parser.add_argument(
'--noise',
action='store_true',
default=False,
help = "if added the output of the ray tracing is not sent to optix's denoiser"
)
parser.add_argument(
'--outf',
default='mug_dataset/',
help = "output filename inside output/"
)
parser.add_argument('--seed',
default = None,
help = 'seed for random selection'
)
parser.add_argument(
'--interactive',
action='store_true',
default=False,
help = "make the renderer in its window"
)
parser.add_argument(
'--motionblur',
action='store_true',
default=False,
help = "use motion blur to generate images"
)
parser.add_argument(
'--box_size',
default=0.5,
type=float,
help = "make the object movement easier"
)
parser.add_argument(
'--focal-length',
default=521.6779174804688,
type=float,
help = "focal length of the camera"
)
# parser.add_argument(
# '--optical_center_x',
# default=630.867431640625,
# type=float,
# help = "focal length of the camera"
# )
# parser.add_argument(
# '--optical_center_y',
# default=364.546142578125,
# type=float,
# help = "focal length of the camera"
# )
parser.add_argument(
'--visibility-fraction',
action='store_true',
default=False,
help = "Compute the fraction of visible pixels and store it in the "
"`visibility` field of the json output. Without this argument, "
"`visibility` is always set to 1. Slows down rendering by about "
"50 %%, depending on the number of visible objects."
)
parser.add_argument(
'--debug',
action='store_true',
default=False,
help="Render the cuboid corners as small spheres. Only for debugging purposes, do not use for training!"
)
opt = parser.parse_args()
if os.path.isdir(f'output/{opt.outf}'):
print(f'folder output/{opt.outf}/ exists')
else:
os.makedirs(f'output/{opt.outf}')
print(f'created folder output/{opt.outf}/')
opt.outf = f'output/{opt.outf}'
if not opt.seed is None:
random.seed(int(opt.seed))
# visii.initialize(headless = not opt.interactive)
visii.initialize(headless = opt.interactive)
if not opt.motionblur:
visii.sample_time_interval((1,1))
visii.sample_pixel_area(
x_sample_interval = (.5,.5),
y_sample_interval = (.5, .5))
# visii.set_max_bounce_depth(1)
if not opt.noise:
visii.enable_denoiser()
Is there any particular way that I can improve the data quality for samples greater than 1m distance from the camera ?? Thanks in advance.







