APD-MVS is an MVS method that adopts adaptive patch deformation and an NCC-based matching metric.
Our paper was accepted by CVPR 2023!
If you find this project useful for your research, please cite:
@InProceedings{Wang_2023_CVPR,
author = {Wang, Yuesong and Zeng, Zhaojie and Guan, Tao and Yang, Wei and Chen, Zhuo and Liu, Wenkai and Xu, Luoyuan and Luo, Yawei},
title = {Adaptive Patch Deformation for Textureless-Resilient Multi-View Stereo},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2023},
pages = {1621-1630}
}
The code has been tested on Ubuntu 18.04 with Nvidia Titan RTX, and you can modify the CMakeList.txt to compile on Windows.
Besides make sure that your GPU Compute Capability matches the CMakeList.txt!!! Otherwise you won't get the depth results! For example, according to GPU Compute Capability, RTX3080's Compute Capability is 8.6. So you should set the cuda compilation parameter 'arch=compute_86,code=sm_86' or add a '-gencode arch=compute_86,code=sm_86'.
git clone https://github.com/whoiszzj/APD-MVS.git
cd APD-MVS
mkdir build & cd build
cmake ..
make
You may download train and test dataset from ETH3D, and use the script colmap2mvsnet.py to convert the dataset format(you may refer to MVSNet). You can use the "scale" option in the script to generate any resolution you need.
python colmap2mvsnet.py --dense_folder <ETH3D data path, such as ./ETH3D/office> --save_folder <The path to save> --scale_factor 2 # half resolution
We use the version provided by MVSNet. The dataset can be downloaded from here, and the format is exactly what we need.
Such as DTU and BlenderMVS, you may explore them yourself. !!! But remember to modify the ReadCamera function when you test on DTU !!!
After you prepare the dataset, and you want to run the test for ETH3D/office, you can follow this command line.
./APD <ETH3D root path>/office
The result will be saved in the folder office/APD, and the point cloud is saved as "APD.ply"
It is very easy to use, and you can modify our code as you need.
This code largely benefits from the following repositories: ACMM, Colmap. Thanks to their authors for opening the source of their excellent works.
If you have any question or find some bugs, please leave it in Issues! Thank you!