Curve-Aware Gaussian Splatting for 3D Parametric Curve Reconstruction
Zhirui Gao, Renjiao Yi, Yaqiao Dai, Xuening Zhu, Wei Chen, Chenyang Zhu, Kai Xu
CurveGaussian enables compact 3D parametric curve reconstruction from multi-view 2D edge maps.
This repository contains the official implementation of the paper: Curve-Aware Gaussian Splatting for 3D Parametric Curve Reconstruction, which is accepted to ICCV 2025. CurveGaussian is a novel bi-directional coupling framework between parametric curves and edge-oriented Gaussian components, enabling direct optimization of parametric curves through differentiable Gaussian splatting.
If you find this repository useful to your research or work, it is really appreciated to star this repository✨ and cite our paper 📚.
Feel free to contact me ([email protected]) or open an issue if you have any questions or suggestions.
You may also be interested in our other works:
-
[ICCV 2025] PartGS: A self-supervised part-aware reconstruction framework that integrates 2D Gaussians and superquadrics to parse objects and scenes into an interpretable decomposition.
-
[TCSVT 2025] PoseProbe: A novel approach of utilizing everyday objects commonly found in both images and real life, as pose probes, to tackle few-view NeRF reconstruction using only 3 to 6 unposed scene images.
-
[CVMJ 2024] DeepTm: An accurate template matching method based on differentiable coarse-to-fine correspondence refinement, especially designed for planar industrial parts.
- 2025-06-27: The paper is available on arXiv.
- 2025-06-26: CurveGaussian is accepted to ICCV 2025. 🎉
- Release the training and evaluation code.
- Evaluation and visualization code.
- Custom dataset support.
git clone --recurse-submodules https://github.com/zhirui-gao/Curve-Gaussian.git
Our code environment is similar to 3DGS
We make a custom rasterization library (diff-cur-rasterization) based on original diff-gaussian-rasterization.
If you have an environment for 3DGS, you just run
pip install submodules/diff-cur-rasterization
Otherwise, you sholud creat a new conda environment:
conda env create --file environment.yml
conda activate gaussian_splatting
For ABC_dataset, we use the dataset provided by EMAP.
For Replica dataset, download from link
Download datasets:
python scripts/download_data.py
The data is organized as follows:
<scan_id>
|-- meta_data.json # camera parameters
|-- color # images for each view
|-- 0_colors.png
|-- 1_colors.png
...
|-- edge_DexiNed # edge maps extracted from DexiNed
|-- 0_colors.png
|-- 1_colors.png
...
|-- edge_PidiNet # edge maps extracted from PidiNet
|-- 0_colors.png
|-- 1_colors.png
...
Run a single dataset
python train.py -s /media/gzr/ABC-NEF_Edge/data/00000168 -m output/00000168 -r 2 --eval --quiet
Run the whole dataset
python scripts/run_batch_ABC.py
set arguments/init.py
self.detector = 'PidiNet'
bash scripts/run_replica.sh
python edge_extraction/eval_ABC.py
If you want to render a continuous video of parametric curves:
First download camera poses files for projection, and organize the dataset as follows
<scan_id>
|-- meta_data.json # camera parameters
|-- transforms_video.json # continuous camera parameters
|-- video # gt images under continuous camera parameters
Then just run the command:
python edge_extraction/eval_ABC.py --render_mv True
python edge_extraction/eval_replica.py
This is only for calculating the number of curves and visualization since GT curves are not available.
If you find our work helpful, please consider citing:
@misc{gao2025curveawaregaussiansplatting3d,
title={Curve-Aware Gaussian Splatting for 3D Parametric Curve Reconstruction},
author={Zhirui Gao and Renjiao Yi and Yaqiao Dai and Xuening Zhu and Wei Chen and Chenyang Zhu and Kai Xu},
year={2025},
eprint={2506.21401},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2506.21401},
}This project is built upon 3DGS, EMAP and NEF. We use pretrained DexiNed and PidiNet for edge map extraction. We thank all the authors for their great work and repos.






