SpectacularAI / 3dgs-deblur

Gaussian Splatting on the Move: Blur and Rolling Shutter Compensation for Natural Camera Motion
https://spectacularai.github.io/3dgs-deblur/
Apache License 2.0
116 stars 6 forks source link

question on synthetic dataset #10

Open zeshunzong opened 6 days ago

zeshunzong commented 6 days ago

Hi,

Nice work!

For the synthetic data in blender, I was wondering how do you get the readout time? Do you use Camera -> Motion Blur -> Rolling shutter to get the effect? Is your readout time obtained from the shutter input? That is, when shutter = 1.0, readout time = 1/FPS?

Bercon commented 4 days ago

Yes, we used the Cycles rolling shutter feature to get the effect. You can find the blend files here: https://zenodo.org/records/10847884, check out the Python scripts within the blend files that are used to render the data in desired format.

The important bits are below. Define how much exposure and rolling shutter effect you want:

EXPOSURE_TIME = 1.0
ROLLING_SHUTTER_TIME = 3.0

Compute the ratio for Cycles:

MOTION_BLUR_ROLLING_SHUTTER_RATIO = EXPOSURE_TIME / (EXPOSURE_TIME + ROLLING_SHUTTER_TIME)

Apply setting to Cycles:

scene.cycles.rolling_shutter_duration = MOTION_BLUR_ROLLING_SHUTTER_RATIO

Save json with the values (in addition to start & end pose of each frame):

...    
    'exposure_time': EXPOSURE_TIME,
    'rolling_shutter_time': ROLLING_SHUTTER_TIME,
... 
zeshunzong commented 1 day ago

Thank you very much for you response!

I guess my main confusion is what is the unit for EXPOSURE_TIME and ROLLING_SHUTTER_TIME.

From the script related to rendering

scene.render.use_motion_blur = True
scene.cycles.motion_blur_position = 'START'
scene.render.motion_blur_shutter = 1.0
scene.cycles.rolling_shutter_type = 'TOP'
scene.cycles.rolling_shutter_duration = MOTION_BLUR_ROLLING_SHUTTER_RATIO

It seems that the total time of camera considered for rendering this image is fixed for 1 frame (i.e. 1/FPS second), and the only thing that changes when you set different EXPOSURE_TIME and ROLLING_SHUTTER_TIME is the ratio, i.e. scene.cycles.rolling_shutter_duration.

Then when you set, for instance

EXPOSURE_TIME = 1.0
ROLLING_SHUTTER_TIME = 3.0

what are the corresponding values (and units) for $Te$ and $T{ro}$ as in Eq (3) in the paper?