jzhangbs / MVSDF

Learning Signed Distance Field for Multi-view Surface Reconstruction
MIT License
136 stars 9 forks source link

curious about camera parameters #8

Closed MaybeOjbk closed 2 years ago

MaybeOjbk commented 2 years ago

I find cameras_hd.npz in your data is different from MVSnet or VIs-Mvsnet, can you tell me how do you generate camera.npz ?

jzhangbs commented 2 years ago

Hi @MaybeOjbk, we follow the IDR convention: https://github.com/lioryariv/idr/blob/main/DATA_CONVENTION.md

The world_mat is just the composition of the intrinsic and extrinsic, and scale_mat controls the bounding box that you might need to determine for each scene

MaybeOjbk commented 2 years ago

OK,thanks a lot, but I have few questions about evaluation.

  1. when you run eval.py you can get mesh generated from network , and how to get chamfer distance ? Do I need to sample points from mesh and then run your scripts? and also we don't need to calculate points that far from gt points, (there may be threshold when calculate chamfer distance).
  2. Do you know how to use colmap to generate mesh? Is there any scripts we can use ?
  3. After using colmap to generate mesh, do I need some post-process such as alignment to align mesh from colmap and gt point cloud?
jzhangbs commented 2 years ago
  1. You can use DTU's official matlab code or my evaluation code (https://github.com/jzhangbs/DTUeval-python). Both support mesh inputs
  2. (and 3) You can use the given cameras to do sfm and mvs in colmap (https://colmap.github.io/faq.html#reconstruct-sparse-dense-model-from-known-camera-poses). The result should also be aligned with the ground truth
MaybeOjbk commented 2 years ago

thanks a lot,

MaybeOjbk commented 2 years ago

After using your code, I found the score is much more worse than your reported, after I use trimesh.sample.sample_surface, and I sample around 10 millions points in mesh, then I get close scores. But I have another question about NeuS(if you know) which trained without mask, how to evaluate the mesh without mask (have superfluous meshs such as the white plane )? And in your paper, I have noticed you use mesh cut to cut these unnecessary meshes

jzhangbs commented 2 years ago

The reported numbers are from the trimmed meshes, while the others (like NeuS) directly evaluate the untrimmed ones. Our follow up work RegSDF (https://arxiv.org/abs/2206.03087) also evaluate the untrimmed mesh. But all these experiments use mesh sampling from official evaluation script or my re-implementation, you do not need to manually do that.