RoCoSDF: Row-Column Scanned Neural Signed Distance Fields for Freehand 3D ultrasound Imaging Shape Reconstruction
The official implementation code for MICCAI 2024 paper: RoCoSDF: Row-Column Scanned Neural Signed Distance Fields for Freehand 3D Ultrasound Imaging Shape Reconstruction by Hongbo Chen, Yuchong Gao, Shuhang Zhang, Jiangjie Wu, Yuexin Ma and Rui Zheng.
RoCoSDF is a framework built on neural implicit signed distance functions for shape reconstruction of multi-view freehand 3D ultrasound imaging.
- Thoracic Vertebra T4 from ultrasound transducer 1 (UT1)
- The example mesh results of RoCoSDF are in
outs/T4_RoCo/outputs/*.ply
.
Our code is implemented in NVIDIA 3090, Ubuntu 18/20, Python 3.8, PyTorch 1.12.1 and CUDA 11.6.
For 20/30x GPU:
conda create -n rocosdf python=3.8
conda activate rocosdf
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.6 -c pytorch -c conda-forge
pip install tqdm pyhocon==0.3.57 trimesh PyMCubes scipy matplotlib
pip install visdom open3d scikit-image plyfile
For 40x GPU, cuda 11.8:
conda create -n rocosdf python=3.10
conda activate rocosdf
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install tqdm pyhocon==0.3.57 trimesh PyMCubes scipy matplotlib
pip install visdom open3d scikit-image plyfile
-
Convert the row-scan and column-scan segmented volumetric mask to point clouds file *.ply.
-
Both the row-scan and column-scan point clouds should be in a same tracking space or manually aligned in a unified space.
-
Put the row-scan and column-scan point clouds data in ./data.
RoCoSDF/
│
├── data/
│ ├── T4_Co.ply % your own data
| ├── T4_Ro.ply % your own data
│ ├── T4_Co_ds.pt % generated during data preprocessing, downsampled point clouds for training
| ├── T4_Ro_ds.pt % generated during data preprocessing, downsampled point clouds for training
│ ├── T4_Co_sampler.pt % generated during training
| ├── T4_Ro_sampler.pt % generated during training
|
|
├── outs/
│ ├── T4_Co/
│ └── outputs/
| └── *.ply
│ ├── T4_Ro/
│ └── outputs/
| └── *.ply
│ ├── T4_RoCo/
│ └── outputs/
| └── *.ply
|
In Linux, directly train the model through sh train.sh
OR using command as below.
python runRoCoSDF.py --gpu 0 --conf confs/conf.conf --dataname T4_Co --dataname2 T4_Ro --dir T4_Co --dir2 T4_Ro --dir3 T4_RoCo --mode train
In Linux, directly train the model through sh train_refine_only.sh
OR using command as below.
python runRoCoSDF.py --gpu 0 --conf confs/conf.conf --dataname T4_Co --dataname2 T4_Ro --dir T4_Co --dir2 T4_Ro --dir3 T4_RoCo --mode train_refine
For any queries, please contact chenhb[at]shanghaitech.edu.cn.
If you use RoCoSDF in your research, please cite the paper:
@InProceedings{chenRoCoSDF,
author="Chen, Hongbo
and Gao, Yuchong
and Zhang, Shuhang
and Wu, Jiangjie
and Ma, Yuexin
and Zheng, Rui",
title="RoCoSDF: Row-Column Scanned Neural Signed Distance Fields for Freehand 3D Ultrasound Imaging Shape Reconstruction",
booktitle="Medical Image Computing and Computer Assisted Intervention -- MICCAI 2024",
year="2024",
publisher="Springer Nature Switzerland",
address="Cham",
pages="721--731",
isbn="978-3-031-72083-3"
}
The reference codes are from the following links. We appreciate all the contributors.
-
FUNSR(UNSR in the proceeding): https://github.com/chenhbo/FUNSR
-
NeuralPull: https://github.com/mabaorui/NeuralPull-Pytorch
-
GenSDF: https://github.com/princeton-computational-imaging/gensdf