11affiliationtext: Tsinghua Berkeley Shenzhen Institute (TBSI) , Tsinghua University22affiliationtext: Peng Cheng Laboratory

A Geometric Algorithm for Tubular Shape Reconstruction from Skeletal Representation

Guoqing Zhang [email protected] Yang Li
Abstract

We introduce a novel approach for the reconstruction of tubular shapes from skeletal representations. Our method processes all skeletal points as a whole, eliminating the need for splitting input structure into multiple segments. We represent the tubular shape as a truncated signed distance function (TSDF) in a voxel hashing manner, in which the signed distance between a voxel center and the object is computed through a simple geometric algorithm. Our method does not involve any surface sampling scheme or solving large matrix equations, and therefore is a faster and more elegant solution for tubular shape reconstruction compared to other approaches. Extensive experiments demonstrate the efficiency and effectiveness of the proposed method. Code is avaliable at https://github.com/wlsdzyzl/Dragon.

Keywords Tubular structure  \cdot Shape reconstruction  \cdot TSDF  \cdot Skeleton

1 Introduction

Shape reconstruction is a popular topic and has garnered significant attention from researchers due to its wide range of applications in computer graphics and computer vision. Existing methods focus on reconstructing object or scene from a point cloud or a sequence of image. Point cloud-based methods utilize a continuous high-dimensional function to fit the surface Carr et al. (2003); Kazhdan et al. (2006); Hou et al. (2022). These methods usually involve solving large linear equations and heavily rely on the quality of the point cloud and accurate estimation of surface normals. Image-based approaches iteratively fuse input frames into a distance or radiance field Nießner et al. (2013); Han and Fang (2018); Mildenhall et al. (2021); Dong et al. (2018). Accurate camera pose estimation is necessary to generate a consistent radiance field. The above methods usually require the use of cameras or radars to capture the surface of the object, and have the ability to perform high-quality reconstruction of the geometry and texture details. However, they struggle to generate complete and topologically correct models due to scan occlusion. Post-processing algorithms such as point cloud completion Huang et al. (2020); Wen et al. (2020); Kraevoy and Sheffer (2005); Dai et al. (2017) also have difficulty dealing with complex topological structures. As a consequence, these methods are not suitable for accurate shape reconstruction of tubular structures, particularly complex vascular trees, which are characterized by their intricate topology.

Skeletons serve as compact representations of primitive structures with identical topology Choi et al. (1997), and are inherently well-suited for effectively representing tubular structures. Skeletonization of tubular structures has undergone extensive research and demonstrated its utility across various applications Zwettler et al. (2008); Wang et al. (2020); Shit et al. (2021). However, recovering original shape from skeletal representation has been less studied. In practice, obtaining the skeleton or centerline of an object is much easier compared to acquiring the complete shape of the object. For example, annotating the centerline of coronary artery in CCTA requires much less labor compared to annotating the entire vessel Metz et al. (2008); Schaap et al. (2009). Shape reconstruction of centerlines can help generate binary mask volume and further improve the performance of segmentation model.

This study presents a novel approach for reconstructing tubular shapes from skeletal representations. In particular, each skeletal point is considered as a slice and the recovered shape is considered as a linear interpolation of these slices. Based on this simple assumption, we propose a pure geometric algorithm to compute the signed distance between any given location and the object. The space is represented as sparse voxels whose TSDF values are efficiently computed in parallel and stored in a spatial hashing table. Finally, we use a multi-threaded marching cubes algorithm to extract the isosurface as triangle meshes. In our approach, all skeletal points are processed simultaneously, thereby obviating the requirement for splitting the object into multiple segments. In addition, the proposed method does not involve any surface sampling scheme or solving large matrix equations, resulting in a faster and more elegant solution of tubular shape reconstruction.

2 Related Works

Tubular structure and skeleton representation: Analysis of tubular structure plays an important role in many fields of research ranging from civil engineering to medical imaging. Various works Xing and Makinouchi (2001); Hu et al. (2019); Luo et al. (2021); Gharleghi et al. (2022) are proposed for designing and segmenting tubular structures, for which the topology is their most important characteristic. Skeletons are concise representations of original structures with identical topology Choi et al. (1997) and are inherently well-adapted for efficiently depicting tubular structures. Sufficient research focus has been directed towards the skeleton extraction and application. Huang et al. (2013); Qin et al. (2019) extract curve skeleton from point clouds through medial axis transforms and mass-driven optimal transports. Lin et al. (2021) represents skeleton points as weighted summations of surface points and use a deep network to estimate the weights. Shit et al. (2021); Zhang et al. (2023a) introduce skeletonization in tubular structure segmentation and demonstrate its topology-preserving capability.

Implicit Representation for 3D Scene: Implicit scene representations, notably through Signed Distance Function (SDF), have become prominent in computer graphics and vision for efficiently capturing complex geometry. Lorensen and Cline (1987) firstly proposed a shape reconstruction algorithm from SDF by constructing triangles among 8 voxels. Kazhdan et al. (2006) utilizes Octree for accelerated solving of the Poisson equations to compute the indicator function. Recent studies have explored the implicit representation of continuous 3D shapes as level sets through deep networks. Park et al. (2019); Jiang et al. (2020) learns continuous SDF from point clouds. Mescheder et al. (2019); Genova et al. (2020) maps xyz coordinates to occupancy fields, which describes whether a point in 3D space is occupied by a surface or object. Mildenhall et al. (2021) represents scenes as neural radiance fields, which are widely used for novel view synthesis Barron et al. (2021); Pumarola et al. (2021), shape reconstruction Oechsle et al. (2021); Wang et al. (2021) and localization Rosinol et al. (2022); Deng et al. (2023).

Shape Reconstruction: Shape reconstruction tasks typically unfold in two distinct scenarios: reconstructing shapes from point clouds or reconstructing shapes from image sequences. For point cloud-based shape reconstruction, Bernardini et al. (1999) directly connects points to form triangles following a simple ball pivoting rule, without an continuous implicit representation. Carr et al. (2003) fits a radial basis function to represent the surface. Kazhdan et al. (2006); Hou et al. (2022) compute the indicator function by iteratively solving the Poisson equations. These methods try to compute an implicit representation, so that the surface can be further extracted through March Cube algorithms Lorensen and Cline (1987). A fine surface normal estimation is necessary for high reconstruction quality. Lin et al. (2022) views surface normals as unknown parameters in the Gauss formula to reconstruction shape without normals. Xu et al. (2023) propose a novel method for globally consistent normal estimation by regularizing the Winding-Number field. Image sequence-based approaches recover 3D shapes from 2D/3D frames instead of a whole point cloud, therefore accurate camera pose estimation is usually important. Nießner et al. (2013); Han and Fang (2018); Dong et al. (2018) perform camera pose estimation and incrementally fuse input frames into distance fields. Ji et al. (2017); Mildenhall et al. (2021) take camera parameters and images as input and generate a consistent implicit representation for scene rendering and reconstruction.

3 Method

Refer to caption
Figure 1: Overview of our shape reconstruction algorithm. Left: original shape and sampled skeletal points. Middle: Constructed graph. Right: recovered shape from slices.

Our method tries to recover tubular shape from its skeletal representation that consists of a skeletal point set 𝒞={𝐜1,𝐜2,,𝐜m}𝒞subscript𝐜1subscript𝐜2subscript𝐜𝑚\mathcal{C}=\{\mathbf{c}_{1},\mathbf{c}_{2},...,\mathbf{c}_{m}\}caligraphic_C = { bold_c start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , bold_c start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , … , bold_c start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT } and the corresponding radius 𝐫m𝐫superscript𝑚\mathbf{r}\in\mathbb{R}^{m}bold_r ∈ blackboard_R start_POSTSUPERSCRIPT italic_m end_POSTSUPERSCRIPT. Fig. 1 gives an overview of the reconstruction processing. Firstly, we need to know the connections among the input skeletal points, which is achieved through an adaptive graph construction algorithm as discussed in Sec. 3.1. Sec. 3.2 elaborates our geometric algorithm that enables fast computation of signed distance function (SDF). Finally, we introduce how to efficiently represent the shape through voxel hashing strategy and extract the dense model using march cubes algorithm in Sec. 3.3.

3.1 Graph Construction

Algorithm 1 Adaptive Graph Construction
skeletal points 𝒞𝒞\mathcal{C}caligraphic_C, number of KNN searched neighbors k𝑘kitalic_k
distance multiplier m𝑚mitalic_m and angle threshold atsubscript𝑎𝑡a_{t}italic_a start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT
constructed graph 𝒢𝒢\mathcal{G}caligraphic_G
𝒢𝒢absent\mathcal{G}\leftarrowcaligraphic_G ← new Graph \triangleright Graph initialization
𝒢.𝒱𝒞formulae-sequence𝒢𝒱𝒞\mathcal{G}.\mathcal{V}\leftarrow\mathcal{C}caligraphic_G . caligraphic_V ← caligraphic_C
T𝑇absentT\leftarrowitalic_T ← new KDTree(𝒢.𝒱formulae-sequence𝒢𝒱\mathcal{G}.\mathcal{V}caligraphic_G . caligraphic_V)
for 𝐯𝐯\mathbf{v}bold_v in 𝒢.𝒱formulae-sequence𝒢𝒱\mathcal{G}.\mathcal{V}caligraphic_G . caligraphic_V  do
     T𝑇\mathcal{I}\leftarrow Tcaligraphic_I ← italic_T.knn_search(𝐯𝐯\mathbf{v}bold_v, k𝑘kitalic_k)
     dminsubscript𝑑minabsentd_{\text{min}}\leftarrowitalic_d start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ← dist(𝐯,𝒢.𝒱[[1]])formulae-sequence𝐯𝒢𝒱delimited-[]delimited-[]1(\mathbf{v},\mathcal{G}.\mathcal{V}[\mathcal{I}[1]])( bold_v , caligraphic_G . caligraphic_V [ caligraphic_I [ 1 ] ] ) \triangleright Calculate distance minimum, note that [0]delimited-[]0\mathcal{I}[0]caligraphic_I [ 0 ] is the index of 𝐯𝐯\mathbf{v}bold_v.
     𝒟edgesubscript𝒟edge\mathcal{D}_{\text{edge}}\leftarrow\emptysetcaligraphic_D start_POSTSUBSCRIPT edge end_POSTSUBSCRIPT ← ∅ \triangleright Direction set of edges.
     for i𝑖iitalic_i in \mathcal{I}caligraphic_I do
         vi𝒢.𝒱[i]formulae-sequencesubscript𝑣𝑖𝒢𝒱delimited-[]𝑖v_{i}\leftarrow\mathcal{G}.\mathcal{V}[i]italic_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ← caligraphic_G . caligraphic_V [ italic_i ]
         if dist(𝐯,𝐯i)>m×dmin𝐯subscript𝐯𝑖𝑚subscript𝑑min(\mathbf{v},\mathbf{v}_{i})>m\times d_{\text{min}}( bold_v , bold_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) > italic_m × italic_d start_POSTSUBSCRIPT min end_POSTSUBSCRIPT then
              break
         end if
         f𝑓absentf\leftarrowitalic_f ← true \triangleright Flag of new direction
         for 𝐝𝐝\mathbf{d}bold_d in 𝒟edgesubscript𝒟edge\mathcal{D}_{\text{edge}}caligraphic_D start_POSTSUBSCRIPT edge end_POSTSUBSCRIPT do
              if angle(𝐯i𝐯,𝐝)<=atanglesubscript𝐯𝑖𝐯𝐝subscript𝑎𝑡\text{angle}(\mathbf{v}_{i}-\mathbf{v},\mathbf{d})<=a_{t}angle ( bold_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT - bold_v , bold_d ) < = italic_a start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT then
                  f𝑓absentf\leftarrowitalic_f ← false
                  break
              end if
         end for\triangleright If <𝐯,𝐯i𝐯subscript𝐯𝑖\mathbf{v},\mathbf{v}_{i}bold_v , bold_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT> a new direction, add it into the edge set
         if f𝑓fitalic_f is true then
              𝒢..add(<𝐯,𝐯i>)\mathcal{G}.\mathcal{E}.\text{add}(<\mathbf{v},\mathbf{v}_{i}>)caligraphic_G . caligraphic_E . add ( < bold_v , bold_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT > )
              𝒟edge.add(𝐯i𝐯)formulae-sequencesubscript𝒟edgeaddsubscript𝐯𝑖𝐯\mathcal{D}_{\text{edge}}.\text{add}(\mathbf{v}_{i}-\mathbf{v})caligraphic_D start_POSTSUBSCRIPT edge end_POSTSUBSCRIPT . add ( bold_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT - bold_v )
         end if
     end for
end for
return 𝒢𝒢\mathcal{G}caligraphic_G

To reconstruct the shape, we need to obtain the connections among these skeletal points, which are inherently implied for the ordered skeletal points. However, ordered points are only suitable to represent a single curve without any loop or bifurcation. To recover the shape of a complex structure, we need to split the whole structure into multiple segments without loops or bifurcations and reconstruct all the segments separately, which is a tedious work. In this section, we propose an adaptive graph construction algorithm to find connections among unordered skeletal points based on their distance.

We construct an undirected graph 𝒢=<𝒱,>\mathcal{G}=<\mathcal{V},\mathcal{E}>caligraphic_G = < caligraphic_V , caligraphic_E > whose vertices are the input skeletal points: 𝒱=𝒞𝒱𝒞\mathcal{V}=\mathcal{C}caligraphic_V = caligraphic_C. Specifically, for each skeletal point 𝐜𝒞𝐜𝒞\mathbf{c}\in\mathcal{C}bold_c ∈ caligraphic_C we find its k𝑘kitalic_k nearest neighbors 𝐜1,𝐜2,,𝐜ksubscript𝐜1subscript𝐜2subscript𝐜𝑘\mathbf{c}_{1},\mathbf{c}_{2},...,\mathbf{c}_{k}bold_c start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , bold_c start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , … , bold_c start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT that are sorted in ascending order based on their distances to point 𝐜𝐜\mathbf{c}bold_c. We use m𝑚mitalic_m and atsubscript𝑎𝑡a_{t}italic_a start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT to denote the distance multiplier and angle threshold, respectively. The distance between 𝐜𝐜\mathbf{c}bold_c and 𝐜isubscript𝐜𝑖\mathbf{c}_{i}bold_c start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT is denoted as d𝐜,𝐜isubscript𝑑𝐜subscript𝐜𝑖d_{\mathbf{c},\mathbf{c}_{i}}italic_d start_POSTSUBSCRIPT bold_c , bold_c start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT. We establish an edge <𝐜,𝐜i><\mathbf{c},\mathbf{c}_{i}>< bold_c , bold_c start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT >, under the condition that d𝐜,𝐜isubscript𝑑𝐜subscript𝐜𝑖d_{\mathbf{c},\mathbf{c}_{i}}italic_d start_POSTSUBSCRIPT bold_c , bold_c start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT does not exceed m𝑚mitalic_m times the distance between 𝐜𝐜\mathbf{c}bold_c and it’s nearest neighbor d𝐜,𝐜1subscript𝑑𝐜subscript𝐜1d_{\mathbf{c},\mathbf{c}_{1}}italic_d start_POSTSUBSCRIPT bold_c , bold_c start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUBSCRIPT, and the angles between <𝐜,𝐜i><\mathbf{c},\mathbf{c}_{i}>< bold_c , bold_c start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT > and the established edges are greater than atsubscript𝑎𝑡a_{t}italic_a start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT. This simple strategy obviates the necessity of selecting a suitable distance threshold for each input point cloud. It also avoids the constraint of k-nearest neighbors algorithm-based graph construction that each point need to be connected with a fixed number of points. Alg. 1 gives a detailed explanation of the proposed method.

Refer to caption
Figure 2: Illustration of different skeletal representations. Left: original shape. Middle: the input skeletal points are a thinner representation of the original shape, but not a string-like structure. Right: the ideal skeletal points forms a string-like structure.

Radius-based clustering: In practice, the skeletal points we acquired may just exhibit a thinned representation of the original shape, and not necessarily be a string-like structure as shown in Fig. 2. This may lead to the construction of an extremely complex graph with a large number of redundant edges. To tackle this concern, we employ a pre-processing step that applies a radius-based clustering for the input skeletal points as summarized in Alg. 2. In specific, we randomly select a skeletal point 𝐜𝒞𝐜𝒞\mathbf{c}\in\mathcal{C}bold_c ∈ caligraphic_C as a cluster center with corresponding radius r𝑟ritalic_r. The skeletal points that fall into the ball with center 𝐜𝐜\mathbf{c}bold_c and radius sr𝑠𝑟s\cdot ritalic_s ⋅ italic_r are considered to come from the same cluster, which is implemented through radius searching based on KDTree Friedman et al. (1977) and s𝑠sitalic_s is the searching strength. We continuously select cluster centers from the un-clustered points and repeat the process until all the skeletal points are successfully clustered. For each cluster, we compute the mean position and radius as a new skeletal point. Through these steps, we successfully reduce the time complexity without a significant decline in reconstruction quality.

Algorithm 2 Radius-based Clustering
skeletal points 𝒞𝒞\mathcal{C}caligraphic_C, radius 𝐫𝐫\mathbf{r}bold_r and strength s𝑠sitalic_s
clustered skeletal points 𝒞superscript𝒞\mathcal{C}^{\prime}caligraphic_C start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT and radius 𝐫superscript𝐫\mathbf{r}^{\prime}bold_r start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT
𝒞,𝐫shuffle(𝒞,𝐫)𝒞𝐫shuffle𝒞𝐫\mathcal{C},\mathbf{r}\leftarrow\text{shuffle}(\mathcal{C},\mathbf{r})caligraphic_C , bold_r ← shuffle ( caligraphic_C , bold_r ).
flist(|𝒞|,false)𝑓list𝒞falsef\leftarrow\text{list}(|\mathcal{C}|,\textbf{false})italic_f ← list ( | caligraphic_C | , false ) \triangleright List of flags indicating whether elements are clustered
T𝑇absentT\leftarrowitalic_T ← new KDTree(𝒞𝒞\mathcal{C}caligraphic_C)
C,rsuperscript𝐶superscript𝑟C^{\prime},r^{\prime}\leftarrow\emptysetitalic_C start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , italic_r start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ← ∅
for i𝑖iitalic_i in range(0,|𝒞|(0,|\mathcal{C}|( 0 , | caligraphic_C |do
     if f[i]𝑓delimited-[]𝑖f[i]italic_f [ italic_i ] is true then
         continue
     end if
     T𝑇\mathcal{I}\leftarrow Tcaligraphic_I ← italic_T.radius_search(𝒞[i]𝒞delimited-[]𝑖\mathcal{C}[i]caligraphic_C [ italic_i ], s𝐫[i]𝑠𝐫delimited-[]𝑖s\cdot\mathbf{r}[i]italic_s ⋅ bold_r [ italic_i ]) \triangleright Indices of searched neighbors
     𝐜𝟎,r0,n0formulae-sequence𝐜0formulae-sequence𝑟0𝑛0\mathbf{c}\leftarrow\mathbf{0},r\leftarrow 0,n\leftarrow 0bold_c ← bold_0 , italic_r ← 0 , italic_n ← 0
     for j𝑗jitalic_j in \mathcal{I}caligraphic_I do
         if f[j]𝑓delimited-[]𝑗f[j]italic_f [ italic_j ] is true then
              continue
         end if
         f[j]𝑓delimited-[]𝑗absentf[j]\leftarrowitalic_f [ italic_j ] ← true
         𝐜𝐜+𝒞[j]𝐜𝐜𝒞delimited-[]𝑗\mathbf{c}\leftarrow\mathbf{c}+\mathcal{C}[j]bold_c ← bold_c + caligraphic_C [ italic_j ]
         rr+𝐫[j]𝑟𝑟𝐫delimited-[]𝑗r\leftarrow r+\mathbf{r}[j]italic_r ← italic_r + bold_r [ italic_j ]
         nn+1𝑛𝑛1n\leftarrow n+1italic_n ← italic_n + 1
     end for
     𝒞superscript𝒞\mathcal{C}^{\prime}caligraphic_C start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT.add(𝐜/n𝐜𝑛\mathbf{c}/nbold_c / italic_n)
     𝐫superscript𝐫\mathbf{r}^{\prime}bold_r start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT.add(r/n𝑟𝑛r/nitalic_r / italic_n) \triangleright New skeletal point is the center of a cluster
end for
return 𝒞,𝐫superscript𝒞superscript𝐫\mathcal{C}^{\prime},\mathbf{r}^{\prime}caligraphic_C start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , bold_r start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT

3.2 SDF Computation

TSDF represents the geometry of a scene or object in a implicit way. For any point in the space, which is usually the center of a voxel, its signed distance function (SDF) value is defined as the signed distances to the nearest surface. If the point is located inside the object, the sign of distance is negative. TSDF is the SDF truncated by a distance threshold, so that we can only focus on voxels that are near to the surface. Because we use linear interpolation of slices to approximate the original shape, the SDF can be computed through a pure geometric way. Fig. 3 gives an illustration of SDF computation for a shape between two slices.

Refer to caption
Figure 3: The geometric view of SDF computing.

Given two adjacent slices Sa=(𝐜a,𝐧a,ra)subscript𝑆𝑎subscript𝐜𝑎subscript𝐧𝑎subscript𝑟𝑎S_{a}=(\mathbf{c}_{a},\mathbf{n}_{a},r_{a})italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT = ( bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , bold_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , italic_r start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ), Sb=(𝐜b,𝐧b,rb)subscript𝑆𝑏subscript𝐜𝑏subscript𝐧𝑏subscript𝑟𝑏S_{b}=(\mathbf{c}_{b},\mathbf{n}_{b},r_{b})italic_S start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT = ( bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT , bold_n start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT , italic_r start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT ) and a voxel center point 𝐯𝐯\mathbf{v}bold_v, we use fSDF(Sa,Sb,𝐯)subscript𝑓SDFsubscript𝑆𝑎subscript𝑆𝑏𝐯f_{\text{SDF}}(S_{a},S_{b},\mathbf{v})italic_f start_POSTSUBSCRIPT SDF end_POSTSUBSCRIPT ( italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , italic_S start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT , bold_v ) to denote the SDF value of voxel 𝐯𝐯\mathbf{v}bold_v for the shape between slices Sasubscript𝑆𝑎S_{a}italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT and Sbsubscript𝑆𝑏S_{b}italic_S start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT, where |ab|=1𝑎𝑏1|a-b|=1| italic_a - italic_b | = 1. The plane P𝑃Pitalic_P that is uniquely determined by 𝐜asubscript𝐜𝑎\mathbf{c}_{a}bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT, 𝐜bsubscript𝐜𝑏\mathbf{c}_{b}bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT and 𝐯𝐯\mathbf{v}bold_v intersects with Sasubscript𝑆𝑎S_{a}italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT and Sbsubscript𝑆𝑏S_{b}italic_S start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT at four points, denoted as 𝐢1subscript𝐢1\mathbf{i}_{1}bold_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT, 𝐢2subscript𝐢2\mathbf{i}_{2}bold_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT, 𝐢3subscript𝐢3\mathbf{i}_{3}bold_i start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT and 𝐢4subscript𝐢4\mathbf{i}_{4}bold_i start_POSTSUBSCRIPT 4 end_POSTSUBSCRIPT, respectively. The absolute value of fSDF(Sa,Sb,𝐯)subscript𝑓SDFsubscript𝑆𝑎subscript𝑆𝑏𝐯f_{\text{SDF}}(S_{a},S_{b},\mathbf{v})italic_f start_POSTSUBSCRIPT SDF end_POSTSUBSCRIPT ( italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , italic_S start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT , bold_v ) is the distance between 𝐯𝐯\mathbf{v}bold_v and the nearest surface, which is also the minimum distance between 𝐯𝐯\mathbf{v}bold_v and both line segments 𝐢1𝐢4subscript𝐢1subscript𝐢4\mathbf{i}_{1}\mathbf{i}_{4}bold_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT bold_i start_POSTSUBSCRIPT 4 end_POSTSUBSCRIPT and 𝐢2𝐢3subscript𝐢2subscript𝐢3\mathbf{i}_{2}\mathbf{i}_{3}bold_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT bold_i start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT. The sign of fSDF(Sa,Sb,𝐯)subscript𝑓SDFsubscript𝑆𝑎subscript𝑆𝑏𝐯f_{\text{SDF}}(S_{a},S_{b},\mathbf{v})italic_f start_POSTSUBSCRIPT SDF end_POSTSUBSCRIPT ( italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , italic_S start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT , bold_v ) depends on whether the point 𝐯𝐯\mathbf{v}bold_v falls into the quadrilateral 𝐢1𝐢2𝐢3𝐢4subscript𝐢1subscript𝐢2subscript𝐢3subscript𝐢4\mathbf{i}_{1}\mathbf{i}_{2}\mathbf{i}_{3}\mathbf{i}_{4}bold_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT bold_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT bold_i start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT bold_i start_POSTSUBSCRIPT 4 end_POSTSUBSCRIPT.

First, we compute the intersection points of slice Sasubscript𝑆𝑎S_{a}italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT and plane P𝑃Pitalic_P. To simplify the computation, we transform the global to local coordinates where the origin is 𝐜1subscript𝐜1\mathbf{c}_{1}bold_c start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and the direction vector describing z-axis is 𝐧asubscript𝐧𝑎\mathbf{n}_{a}bold_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT. We use 𝐳=(0,0,1)𝐳001\mathbf{z}=(0,0,1)bold_z = ( 0 , 0 , 1 ) to denote the local coordinate of z-direction. The rotation matrix 𝐑𝐑\mathbf{R}bold_R from 𝐳𝐳\mathbf{z}bold_z to 𝐧asubscript𝐧𝑎\mathbf{n}_{a}bold_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT can be computed by solving a linear equation:

𝐑𝐳=𝐧a, subject to 𝐑𝐑=𝐈,formulae-sequence𝐑𝐳subscript𝐧𝑎 subject to 𝐑superscript𝐑top𝐈\mathbf{R}\cdot\mathbf{z}=\mathbf{n}_{a},\text{ subject to }\mathbf{R}\cdot% \mathbf{R}^{\top}=\mathbf{I},bold_R ⋅ bold_z = bold_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , subject to bold_R ⋅ bold_R start_POSTSUPERSCRIPT ⊤ end_POSTSUPERSCRIPT = bold_I , (1)

where 𝐈𝐈\mathbf{I}bold_I is the identity matrix. Here we use a more efficient solution provided by Rodrigues (1840); Rasala (1981):

𝐑=𝐈+sinθ𝐊+(1cosθ)𝐊2.𝐑𝐈𝜃𝐊1𝜃superscript𝐊2\mathbf{R}=\mathbf{I}+\sin{\theta}\mathbf{K}+(1-\cos\theta)\mathbf{K}^{2}.bold_R = bold_I + roman_sin italic_θ bold_K + ( 1 - roman_cos italic_θ ) bold_K start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT . (2)

In the above, 𝐊=[𝐳×𝐧a]×𝐊subscriptdelimited-[]𝐳subscript𝐧𝑎\mathbf{K}=[\mathbf{z}\times\mathbf{n}_{a}]_{\times}bold_K = [ bold_z × bold_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ] start_POSTSUBSCRIPT × end_POSTSUBSCRIPT is a skew-symmetric matrix, θ𝜃\thetaitalic_θ is the rotation angle, while sinθ=𝐳×𝐧a𝜃norm𝐳subscript𝐧𝑎\sin\theta=\|\mathbf{z}\times\mathbf{n}_{a}\|roman_sin italic_θ = ∥ bold_z × bold_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ∥ and cosθ=𝐳𝐧a𝜃𝐳subscript𝐧𝑎\cos\theta=\mathbf{z}\cdot\mathbf{n}_{a}roman_cos italic_θ = bold_z ⋅ bold_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT. The translation from origin (0,0,0)000(0,0,0)( 0 , 0 , 0 ) to 𝐜asubscript𝐜𝑎\mathbf{c}_{a}bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT is 𝐜asubscript𝐜𝑎\mathbf{c}_{a}bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT, therefore we can easily get the transformation matrix from local to global coordinates 𝐓=[𝐑|𝐜a]𝐓delimited-[]conditional𝐑subscript𝐜𝑎\mathbf{T}=\left[\mathbf{R}|\mathbf{c}_{a}\right]bold_T = [ bold_R | bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ] whose inverse is the transformation matrix from global to local coordinates.

The normal vector 𝐧Psubscript𝐧𝑃\mathbf{n}_{P}bold_n start_POSTSUBSCRIPT italic_P end_POSTSUBSCRIPT of plane P𝑃Pitalic_P can be computed through following equation:

𝐧P=(𝐜a𝐯)×(𝐜b𝐯)(𝐜a𝐯)×(𝐜b𝐯).subscript𝐧𝑃subscript𝐜𝑎𝐯subscript𝐜𝑏𝐯normsubscript𝐜𝑎𝐯subscript𝐜𝑏𝐯\mathbf{n}_{P}=\frac{(\mathbf{c}_{a}-\mathbf{v})\times(\mathbf{c}_{b}-\mathbf{% v})}{\|(\mathbf{c}_{a}-\mathbf{v})\times(\mathbf{c}_{b}-\mathbf{v})\|}.bold_n start_POSTSUBSCRIPT italic_P end_POSTSUBSCRIPT = divide start_ARG ( bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT - bold_v ) × ( bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT - bold_v ) end_ARG start_ARG ∥ ( bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT - bold_v ) × ( bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT - bold_v ) ∥ end_ARG . (3)

The intersections 𝐢1subscript𝐢1\mathbf{i}_{1}bold_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and 𝐢2subscript𝐢2\mathbf{i}_{2}bold_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT of plane P𝑃Pitalic_P and slice Sasubscript𝑆𝑎S_{a}italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT can be calculated by solving following system of equations:

𝐧Pl𝐩=0superscriptsubscript𝐧𝑃𝑙𝐩0\displaystyle\mathbf{n}_{P}^{l}\cdot\mathbf{p}=0bold_n start_POSTSUBSCRIPT italic_P end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l end_POSTSUPERSCRIPT ⋅ bold_p = 0 (4)
𝐩=ranorm𝐩subscript𝑟𝑎\displaystyle\|\mathbf{p}\|=r_{a}∥ bold_p ∥ = italic_r start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT (5)
𝐩z=0.subscript𝐩𝑧0\displaystyle\mathbf{p}_{z}=0.bold_p start_POSTSUBSCRIPT italic_z end_POSTSUBSCRIPT = 0 . (6)

Equ. 4 represents the plane P𝑃Pitalic_P, where 𝐧Pl=𝐑1𝐧Psuperscriptsubscript𝐧𝑃𝑙superscript𝐑1subscript𝐧𝑃\mathbf{n}_{P}^{l}=\mathbf{R}^{-1}\cdot\mathbf{n}_{P}bold_n start_POSTSUBSCRIPT italic_P end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l end_POSTSUPERSCRIPT = bold_R start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT ⋅ bold_n start_POSTSUBSCRIPT italic_P end_POSTSUBSCRIPT. Equ. 5 and Equ. 6 represent the slice Sasubscript𝑆𝑎S_{a}italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT. The transformation from global to local coordinates actually degrades the solutions from to 3D into 2D, because all points have a z-axis value of zero. The solutions of above system are denoted as 𝐢1lsuperscriptsubscript𝐢1𝑙\mathbf{i}_{1}^{l}bold_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l end_POSTSUPERSCRIPT and 𝐢2lsuperscriptsubscript𝐢2𝑙\mathbf{i}_{2}^{l}bold_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l end_POSTSUPERSCRIPT, respectively, and we have:

𝐢1l=𝐢2l.superscriptsubscript𝐢1𝑙superscriptsubscript𝐢2𝑙\mathbf{i}_{1}^{l}=-\mathbf{i}_{2}^{l}.bold_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l end_POSTSUPERSCRIPT = - bold_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l end_POSTSUPERSCRIPT . (7)

Transform the solutions back to global coordinates, we have:

𝐢1=𝐓𝐢1l,𝐢2=𝐓𝐢2l.formulae-sequencesubscript𝐢1𝐓superscriptsubscript𝐢1𝑙subscript𝐢2𝐓superscriptsubscript𝐢2𝑙\mathbf{i}_{1}=\mathbf{T}\cdot\mathbf{i}_{1}^{l},\mathbf{i}_{2}=\mathbf{T}% \cdot\mathbf{i}_{2}^{l}.bold_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = bold_T ⋅ bold_i start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l end_POSTSUPERSCRIPT , bold_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = bold_T ⋅ bold_i start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_l end_POSTSUPERSCRIPT . (8)

The point that is on the same side of line 𝐜a𝐜bsubscript𝐜𝑎subscript𝐜𝑏\mathbf{c}_{a}\mathbf{c}_{b}bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT with 𝐯𝐯\mathbf{v}bold_v is denoted as 𝐢asubscript𝐢𝑎\mathbf{i}_{a}bold_i start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT, which is an end point of the line segment closer to 𝐯𝐯\mathbf{v}bold_v.

Vice versa, we compute the 𝐢bsubscript𝐢𝑏\mathbf{i}_{b}bold_i start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT for slice Sbsubscript𝑆𝑏S_{b}italic_S start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT. The value of SDF can be calculated as follows:

fSDF(Sa,Sb,𝐯)={dist(𝐢𝐚𝐢𝐛,𝐯),if 𝐯 is in the quadrilateral 𝐜a𝐜b𝐢b𝐢a;dist(𝐢𝐚𝐢𝐛,𝐯),otherwise.f_{\text{SDF}}(S_{a},S_{b},\mathbf{v})=\left\{\begin{matrix}-\text{dist}(% \mathbf{i_{a}}\mathbf{i_{b}},\mathbf{v}),&\text{if }\mathbf{v}\text{ is in the% quadrilateral }\mathbf{c}_{a}\mathbf{c}_{b}\mathbf{i}_{b}\mathbf{i}_{a};\\ \text{dist}(\mathbf{i_{a}}\mathbf{i_{b}},\mathbf{v}),&\text{otherwise}.\end{% matrix}\right.italic_f start_POSTSUBSCRIPT SDF end_POSTSUBSCRIPT ( italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , italic_S start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT , bold_v ) = { start_ARG start_ROW start_CELL - dist ( bold_i start_POSTSUBSCRIPT bold_a end_POSTSUBSCRIPT bold_i start_POSTSUBSCRIPT bold_b end_POSTSUBSCRIPT , bold_v ) , end_CELL start_CELL if bold_v is in the quadrilateral bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT bold_i start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT bold_i start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ; end_CELL end_ROW start_ROW start_CELL dist ( bold_i start_POSTSUBSCRIPT bold_a end_POSTSUBSCRIPT bold_i start_POSTSUBSCRIPT bold_b end_POSTSUBSCRIPT , bold_v ) , end_CELL start_CELL otherwise . end_CELL end_ROW end_ARG (9)

where dist(,)dist\text{dist}(\cdot,\cdot)dist ( ⋅ , ⋅ ) returns the distance between a line segment and and a point.

The function fSDF(Sa,Sb,𝐯)subscript𝑓SDFsubscript𝑆𝑎subscript𝑆𝑏𝐯f_{\text{SDF}}(S_{a},S_{b},\mathbf{v})italic_f start_POSTSUBSCRIPT SDF end_POSTSUBSCRIPT ( italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , italic_S start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT , bold_v ) calculates the SDF of voxel 𝐯𝐯\mathbf{v}bold_v for partial shape between two adjacent slices Sasubscript𝑆𝑎S_{a}italic_S start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT and Sbsubscript𝑆𝑏S_{b}italic_S start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT. Given graph 𝒢𝒢\mathcal{G}caligraphic_G, the SDF of 𝐯𝐯\mathbf{v}bold_v for the whole structure is defined as:

fSDF(𝐯)=min{mine𝒢.fSDF(Se[0],Se[1],𝐯),dball},subscript𝑓SDF𝐯subscriptformulae-sequence𝑒𝒢subscript𝑓SDFsubscript𝑆𝑒delimited-[]0subscript𝑆𝑒delimited-[]1𝐯subscript𝑑ballf_{\text{SDF}}(\mathbf{v})=\min\{\min_{e\in\mathcal{G.E}}f_{\text{SDF}}(S_{e[0% ]},S_{e[1]},\mathbf{v}),d_{\text{ball}}\},italic_f start_POSTSUBSCRIPT SDF end_POSTSUBSCRIPT ( bold_v ) = roman_min { roman_min start_POSTSUBSCRIPT italic_e ∈ caligraphic_G . caligraphic_E end_POSTSUBSCRIPT italic_f start_POSTSUBSCRIPT SDF end_POSTSUBSCRIPT ( italic_S start_POSTSUBSCRIPT italic_e [ 0 ] end_POSTSUBSCRIPT , italic_S start_POSTSUBSCRIPT italic_e [ 1 ] end_POSTSUBSCRIPT , bold_v ) , italic_d start_POSTSUBSCRIPT ball end_POSTSUBSCRIPT } , (10)

where e[0]𝑒delimited-[]0e[0]italic_e [ 0 ] and e[1]𝑒delimited-[]1e[1]italic_e [ 1 ] is the indices of two endpoints of edge e𝑒eitalic_e, dballsubscript𝑑balld_{\text{ball}}italic_d start_POSTSUBSCRIPT ball end_POSTSUBSCRIPT is a smoothing factor, which is defined as the signed distance to the ball determined by the nearest skeletal point 𝐜nsubscript𝐜𝑛\mathbf{c}_{n}bold_c start_POSTSUBSCRIPT italic_n end_POSTSUBSCRIPT: dball=𝐯𝐜nrnsubscript𝑑ballnorm𝐯subscript𝐜𝑛subscript𝑟𝑛d_{\text{ball}}=\|\mathbf{v}-\mathbf{c}_{n}\|-r_{n}italic_d start_POSTSUBSCRIPT ball end_POSTSUBSCRIPT = ∥ bold_v - bold_c start_POSTSUBSCRIPT italic_n end_POSTSUBSCRIPT ∥ - italic_r start_POSTSUBSCRIPT italic_n end_POSTSUBSCRIPT.

Refer to caption
Figure 4: A failure case when faced with poor sampling.

To obtain the SDF of 𝐯𝐯\mathbf{v}bold_v for the whole shape, we need to compute SDF values of 𝐯𝐯\mathbf{v}bold_v for all edges in the graph, which is time-consuming and inefficient. In our implementation, we only compute the SDF values for 5 nearest edges. This is based on a simple assumption: the skeletal points is well sampled so that far skeletal points have little effect on the SDF computing. Fig. 4 shows a failure case if the assumption is not satisfied, in which all 5 nearest skeletal points of a voxel inside the tube are outside the corresponding partial shape, leading to an incorrect SDF computation.

Fast SDF Approximation: The aforementioned method computes the distance between a voxel center and it’s nearest surface that is denoted as d𝑑ditalic_d in Fig. 3. A more fast way to approximate the SDF value for a shape between two adjacent slices (𝐜a,𝐧a,ra)subscript𝐜𝑎subscript𝐧𝑎subscript𝑟𝑎(\mathbf{c}_{a},\mathbf{n}_{a},r_{a})( bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , bold_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , italic_r start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ) and (𝐜b,𝐧b,rb)subscript𝐜𝑏subscript𝐧𝑏subscript𝑟𝑏(\mathbf{c}_{b},\mathbf{n}_{b},r_{b})( bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT , bold_n start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT , italic_r start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT ) is to assume 𝐧a=𝐧b=𝐜b𝐜asubscript𝐧𝑎subscript𝐧𝑏subscript𝐜𝑏subscript𝐜𝑎\mathbf{n}_{a}=\mathbf{n}_{b}=\mathbf{c}_{b}-\mathbf{c}_{a}bold_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT = bold_n start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT = bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT - bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT and compute dfsubscript𝑑fd_{\text{f}}italic_d start_POSTSUBSCRIPT f end_POSTSUBSCRIPT. For a given voxel center v𝑣vitalic_v, we project it to line segment 𝐜a𝐜bsubscript𝐜𝑎subscript𝐜𝑏\mathbf{c}_{a}\mathbf{c}_{b}bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT at a new skeletal point 𝐜vsubscript𝐜𝑣\mathbf{c}_{v}bold_c start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT, whose radius can be calculated by a simple interpolation:

rv=rb𝐜v𝐜a+ra𝐜b𝐜v𝐜b𝐜a.subscript𝑟𝑣subscript𝑟𝑏normsubscript𝐜𝑣subscript𝐜𝑎subscript𝑟𝑎normsubscript𝐜𝑏subscript𝐜𝑣normsubscript𝐜𝑏subscript𝐜𝑎r_{v}=\frac{r_{b}\cdot\|\mathbf{c}_{v}-\mathbf{c}_{a}\|+r_{a}\cdot\|\mathbf{c}% _{b}-\mathbf{c}_{v}\|}{\|\mathbf{c}_{b}-\mathbf{c}_{a}\|}.italic_r start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT = divide start_ARG italic_r start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT ⋅ ∥ bold_c start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT - bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ∥ + italic_r start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ⋅ ∥ bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT - bold_c start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ∥ end_ARG start_ARG ∥ bold_c start_POSTSUBSCRIPT italic_b end_POSTSUBSCRIPT - bold_c start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT ∥ end_ARG .

And then we have:

df=𝐯𝐜vrv.subscript𝑑fnorm𝐯subscript𝐜𝑣subscript𝑟𝑣d_{\text{f}}=\|\mathbf{v}-\mathbf{c}_{v}\|-r_{v}.italic_d start_POSTSUBSCRIPT f end_POSTSUBSCRIPT = ∥ bold_v - bold_c start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ∥ - italic_r start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT .
Refer to caption
Figure 5: Surface extraction using different SDF values.

Note that the approximated SDF value calculated through fast computation still generates an accurate surface under the equal normal assumption. As shown in Fig. 5, d1subscript𝑑1d_{1}italic_d start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and d2subscript𝑑2d_{2}italic_d start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT represent the SDF values of two adjacent voxel centers 𝐯1subscript𝐯1\mathbf{v}_{1}bold_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and 𝐯2subscript𝐯2\mathbf{v}_{2}bold_v start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT, respectively, while df1subscript𝑑𝑓1d_{f1}italic_d start_POSTSUBSCRIPT italic_f 1 end_POSTSUBSCRIPT and df2subscript𝑑𝑓2d_{f2}italic_d start_POSTSUBSCRIPT italic_f 2 end_POSTSUBSCRIPT represent the approximated SDF values. According to the principle of similar triangles, we have d1d2=df1df2subscript𝑑1subscript𝑑2subscript𝑑𝑓1subscript𝑑𝑓2\frac{d_{1}}{d_{2}}=\frac{d_{f1}}{d_{f2}}divide start_ARG italic_d start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_d start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG = divide start_ARG italic_d start_POSTSUBSCRIPT italic_f 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_d start_POSTSUBSCRIPT italic_f 2 end_POSTSUBSCRIPT end_ARG. Because the surface point is the weighted interpolation of voxel centers which can be formulated as:

𝐯=d2d1+d2𝐯1+d1d1+d2𝐯2=1d1d2+1𝐯1+11+d2d1𝐯2,𝐯subscript𝑑2subscript𝑑1subscript𝑑2subscript𝐯1subscript𝑑1subscript𝑑1subscript𝑑2subscript𝐯21subscript𝑑1subscript𝑑21subscript𝐯111subscript𝑑2subscript𝑑1subscript𝐯2\mathbf{v}=\frac{d_{2}}{d_{1}+d_{2}}\cdot\mathbf{v}_{1}+\frac{d_{1}}{d_{1}+d_{% 2}}\cdot\mathbf{v}_{2}=\frac{1}{\frac{d_{1}}{d_{2}}+1}\cdot\mathbf{v}_{1}+% \frac{1}{1+\frac{d_{2}}{d_{1}}}\cdot\mathbf{v}_{2},bold_v = divide start_ARG italic_d start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_d start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_d start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG ⋅ bold_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + divide start_ARG italic_d start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_d start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_d start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG ⋅ bold_v start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = divide start_ARG 1 end_ARG start_ARG divide start_ARG italic_d start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_d start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG + 1 end_ARG ⋅ bold_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + divide start_ARG 1 end_ARG start_ARG 1 + divide start_ARG italic_d start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT end_ARG start_ARG italic_d start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG end_ARG ⋅ bold_v start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ,

using the approximated SDF values generates the same result as using true SDF values. Note that, providing an algorithm to compute real SDF values is not without merit, as real SDF values are more useful in some tasks Park et al. (2019).

3.3 Voxel Hashing and Mesh Extraction

Instead of computing the SDF value for each voxel in the bounding box, we use a spatial hashing table Nießner et al. (2013); Han and Fang (2018) to store sparse cubes that near to the object, which greatly reduces the required memory and computational complexity. The space is represented as cubes, while each cube consists of 8×8×88888\times 8\times 88 × 8 × 8 voxels. We compute a bounding box for the input skeletal points, any cube that is located within the bounding box or has an overlap** region with the bounding box is referred to a candidate cube. For each candidate cube, we calculate the SDF values for its 8 corner voxels. If the minimum absolute value among these values is smaller than the truncated distance, or if the signs of these values are not the same, we consider that there might be some parts of surface in the cube, and the cube is added into the hash table. The truncated SDF is then calculated for all voxels in selected cubes. Finally, we use the multi-threaded marching cubes algorithm Lorensen and Cline (1987) to extract triangle meshes. The corresponding mask volume can also be easily obtained from the TSDF by identifying whether the voxels are located inside the object. Overall, the proposed shape reconstruction algorithm is summarized in Arg. 3.3. The default values of mentioned parameters during the processing are listed in Tab. 1.

Algorithm 3 Shape reconstruction from unordered skeletal points
skeletal points 𝒞𝒞\mathcal{C}caligraphic_C, radius 𝐫𝐫\mathbf{r}bold_r, number of KNN searched neighbors k𝑘kitalic_k
clustering strength s𝑠sitalic_s, voxel resolution l𝑙litalic_l and truncated distance dtsubscript𝑑𝑡d_{t}italic_d start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT
distance multiplier m𝑚mitalic_m, angle threshold atsubscript𝑎𝑡a_{t}italic_a start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT
M𝑀Mitalic_M: reconstructed triangle mesh
𝒞,𝐫radius_clustering(𝒞,𝐫,s)𝒞𝐫radius_clustering𝒞𝐫𝑠\mathcal{C},\mathbf{r}\leftarrow\text{radius\_clustering}(\mathcal{C},\mathbf{% r},s)caligraphic_C , bold_r ← radius_clustering ( caligraphic_C , bold_r , italic_s )
𝒢adaptive_graph_construction(𝒞,k,m,at)𝒢adaptive_graph_construction𝒞𝑘𝑚subscript𝑎𝑡\mathcal{G}\leftarrow\text{adaptive\_graph\_construction}(\mathcal{C},k,m,a_{t})caligraphic_G ← adaptive_graph_construction ( caligraphic_C , italic_k , italic_m , italic_a start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT )
function (compute_sdf)(𝐯)𝐯(\mathbf{v})( bold_v ): \triangleright SDF computation
     T𝑇\mathcal{I}\leftarrow Tcaligraphic_I ← italic_T.knn_search(𝐯𝐯\mathbf{v}bold_v, k𝑘kitalic_k)
     fmindtsubscript𝑓minsubscript𝑑𝑡f_{\text{min}}\leftarrow d_{t}italic_f start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ← italic_d start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT
     for i𝑖iitalic_i in \mathcal{I}caligraphic_I do
         𝐯i𝒢.𝒱[i]formulae-sequencesubscript𝐯𝑖𝒢𝒱delimited-[]𝑖\mathbf{v}_{i}\leftarrow\mathcal{G}.\mathcal{V}[i]bold_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ← caligraphic_G . caligraphic_V [ italic_i ]
         for 𝐯jsubscript𝐯𝑗\mathbf{v}_{j}bold_v start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT in 𝒢.(𝐯i)formulae-sequence𝒢subscript𝐯𝑖\mathcal{G}.\mathcal{E}(\mathbf{v}_{i})caligraphic_G . caligraphic_E ( bold_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) do
              fcompute_sdf(𝐯,𝐯i,𝐯j)𝑓compute_sdf𝐯subscript𝐯𝑖subscript𝐯𝑗f\leftarrow\text{compute\_sdf}(\mathbf{v},\mathbf{v}_{i},\mathbf{v}_{j})italic_f ← compute_sdf ( bold_v , bold_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT , bold_v start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT ) \triangleright As mentioned in Sec. 3.2
              if f<fmin𝑓subscript𝑓minf<f_{\text{min}}italic_f < italic_f start_POSTSUBSCRIPT min end_POSTSUBSCRIPT then
                  fminfsubscript𝑓min𝑓f_{\text{min}}\leftarrow fitalic_f start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ← italic_f
              end if
         end for
     end for
     dcdist(𝐯,𝒢.𝒱[[0]])𝐫[[0]]d_{c}\leftarrow\text{dist}\left(\mathbf{v},\mathcal{G}.\mathcal{V}\left[% \mathcal{I}[0]\right]\right)-\mathbf{r}\left[\mathcal{I}[0]\right]italic_d start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT ← dist ( bold_v , caligraphic_G . caligraphic_V [ caligraphic_I [ 0 ] ] ) - bold_r [ caligraphic_I [ 0 ] ] \triangleright Distance between 𝐯𝐯\mathbf{v}bold_v and the surface of the closest ball
     if fmin>dcsubscript𝑓minsubscript𝑑𝑐f_{\text{min}}>d_{c}italic_f start_POSTSUBSCRIPT min end_POSTSUBSCRIPT > italic_d start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT then
         fmindcsubscript𝑓minsubscript𝑑𝑐f_{\text{min}}\leftarrow d_{c}italic_f start_POSTSUBSCRIPT min end_POSTSUBSCRIPT ← italic_d start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT
     end if
     return fminsubscript𝑓minf_{\text{min}}italic_f start_POSTSUBSCRIPT min end_POSTSUBSCRIPT
end function
spatial_hashing(𝒞,compute_sdf)spatial_hashing𝒞compute_sdf\mathcal{H}\leftarrow\text{spatial\_hashing}(\mathcal{C},\text{compute\_sdf})caligraphic_H ← spatial_hashing ( caligraphic_C , compute_sdf ) \triangleright Store selected cubes in a spatial hashing table
for v𝑣vitalic_v in \mathcal{H}caligraphic_H do
     H[𝐯]𝐻delimited-[]𝐯H[\mathbf{v}]italic_H [ bold_v ].sdf \leftarrow compute_sdf(𝐯𝐯\mathbf{v}bold_v)
end for
M𝑀absentM\leftarrowitalic_M ←marching_cubes(\mathcal{H}caligraphic_H) \triangleright Mesh extraction through Marching Cubes algorithm
return M𝑀Mitalic_M
Table 1: Parameter table. Default values are set empirically.
Algorithm Parameter Notation Default Value
Radius clustering Clustering strength s𝑠sitalic_s 0.75
Graph reconstruction Number of KNN searched neighbors k𝑘kitalic_k 5
Distance multiplier m𝑚mitalic_m 2.5
Angle threshold atsubscript𝑎𝑡a_{t}italic_a start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT 75
SDF computation Number of KNN searched neighbors k𝑘kitalic_k 5
Voxel resolution l𝑙litalic_l 0.025
Truncated distance dtsubscript𝑑𝑡d_{t}italic_d start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT 0.1

4 Experimental Results

4.1 Datasets

Refer to caption
Figure 6: Qualitative experimental results. From top to bottom each row shows reconstruction results for datasets CAT08, ImageCAS, ATM22, PARSE2022 and DeepVesselNet, respectively. Columns from left to right are visualizations of skeletal points and reconstructed shapes using different methods. The recovered shapes by our method are more complete and accurate, achieving the best reconstruction quality.

We evaluate our method on five public datasets. CAT08 Schaap et al. (2009) is a coronary artery center-line extraction dataset which contains 8 CCTA volumes with carefully labeled center-lines. ImagesCAS Zeng et al. (2022) is a large coronary artery segmentation dataset that contains 1000 3D images with sizes of 512 ×\times× 512 ×\times× (206-275). ATM22 Zhang et al. (2023b) is a pulmonary airway segmentation dataset and contains 500 CT scans with sizes of 512 ×\times× 512 ×\times× (84-879). PARSE2022 Maurya et al. (2022) contains 200 3D volumes with sizes of 512 ×\times× 512 ×\times× (228-376) for pulmonary artery segmentation. DeepVesselNet Tetteh et al. (2020) contains 100 synthetic 3D images for complicated vessel segmentation. The images have a size of 325 ×\times× 304 ×\times× 600 voxels. All these segmentation datasets only contains labeled masks, and their skeletons are calculated through a binary thinning algorithm Zhang and Suen (1984).

Table 2: Quantitative experimental results.
Dataset Method Dice Score Radius Difference Center Agreement Average Running Time (s)
CAT08 (1496) Ball Pivoting - 0.2286 0.9194 0.18
Poisson - 0.1887 0.9999 0.61
Ours - 0.1013 1.0000 0.54
Ours (fast) - 0.1010 1.0000 0.24
ImageCAS (1507) Ball Pivoting 0.7007 0.7619 0.6999 0.22
Poisson 0.7548 0.4614 0.9939 0.76
Ours 0.7566 0.5983 0.9994 0.39
Ours (fast) 0.7638 0.5511 0.9997 0.22
ATM22 (2688) Ball Pivoting 0.3619 1.2396 0.7040 2.11
Poisson 0.6805 0.7867 0.9929 1.89
Ours 0.6882 0.4884 0.9992 1.56
Ours (fast) 0.7045 0.4048 0.9997 0.93
PARSE2022 (8885) Ball Pivoting 0.2810 0.8912 0.7527 8.50
Poisson 0.6263 0.6415 0.9915 4.87
Ours 0.6347 0.4883 0.9985 4.63
Ours (fast) 0.6516 0.3773 0.9994 3.21
DeepVesselNet (62519) Ball Pivoting 0.2960 0.6602 0.7943 73.32
Poisson 0.7387 0.3239 0.9987 32.13
Ours 0.7473 0.3394 0.9998 25.96
Ours (fast) 0.7498 0.2819 0.9999 19.54

4.2 Evaluation Metrics

We use three metrics to measure the reconstruction accuracy. We recover mask volume from reconstructed shape and compute Dice score between ground-truth and recovered mask for segmentation datasets. Radius difference is defined as the average different between the re-computed radius of recovered shape and original radius. Center agreement calculates the percentage of skeletal points that are located inside the recovered shape. Additionally, we compare the efficiency of different reconstruction algorithms through the average running time.

4.3 Qualitative and Quantitative Analysis

We compare our algorithm with two previous works. Ball Pivoting Bernardini et al. (1999) tries to connect the surface points to form triangles, while Screened Poisson Kazhdan and Hoppe (2013) calculates the indicator function by solving the regularized Poisson equation. Both of them are shape reconstruction algorithms from surface points and cannot be directly applied on skeletal representations. Therefore, for each slice we generate 10 surface points to run the baseline algorithms. Note that the slices are generated from constructed graph as mentioned in Sec. 3.1.

Tab. 2 shows the quantitative results, where we introduce the accuracy and performance of our reconstruction algorithms using real and approximated sdf values, denoted as ours and ours (fast), respectively . Our methods demonstrate high superiority in reconstruction accuracy. While the mask and shape recovered by ours (fast) maintains the highest consistency with original mask and skeleton, the reconstruction accuracy with real sdf values slightly decreases, possibly due to the precision loss incurred during the computation process. Meanwhile, the proposed methods are generally more efficient. Ours (fast) is 2.38×\times× faster than Ball Pivoting Bernardini et al. (1999) and 1.67×\times× faster than Screened Poisson Kazhdan and Hoppe (2013), respectively. It’s worth noting that the shapes recovered by our methods also have much smaller volumes than the ones by Screened Poisson Kazhdan and Hoppe (2013) while maintaining a higher reconstruction quality.

5 Conclusion

We propose a novel algorithmic pipeline to reconstruct tubular shape from skeletal representation. Specifically, we use a radius-based clustering as pre-processing to reduce point redundancy and obtain string-like skeletal points. Based on the simple assumption that tubular shape can be recovered through a linear interpolation of slices, we analyze the geometric solution of SDF computing and propose a fast SDF approximation. Finally, we use a paralleled marching cube algorithm to extract surface models. Experiments shows that our method achieves superior reconstruction quality with lower computational complexity compared to other methods.

Acknowledgements: This work is supported in part by the Natural Science Foundation of China (Grant 62371270) and Shenzhen Key Laboratory of Ubiquitous Data Enabling (No.ZDSYS20220527171406015).

References

  • Carr et al. [2003] Jonathan C Carr, Richard K Beatson, Bruce C McCallum, W Richard Fright, Tim J McLennan, and Tim J Mitchell. Smooth surface reconstruction from noisy range data. In Proceedings of the 1st international conference on Computer graphics and interactive techniques in Australasia and South East Asia, pages 119–ff, 2003.
  • Kazhdan et al. [2006] Michael Kazhdan, Matthew Bolitho, and Hugues Hoppe. Poisson surface reconstruction. In Proceedings of the fourth Eurographics symposium on Geometry processing, volume 7, page 0, 2006.
  • Hou et al. [2022] Fei Hou, Chiyu Wang, Wencheng Wang, Hong Qin, Chen Qian, and Ying He. Iterative poisson surface reconstruction (ipsr) for unoriented points. arXiv preprint arXiv:2209.09510, 2022.
  • Nießner et al. [2013] Matthias Nießner, Michael Zollhöfer, Shahram Izadi, and Marc Stamminger. Real-time 3d reconstruction at scale using voxel hashing. ACM Transactions on Graphics (ToG), 32(6):1–11, 2013.
  • Han and Fang [2018] Lei Han and Lu Fang. Flashfusion: Real-time globally consistent dense 3d reconstruction using cpu computing. In Robotics: Science and Systems, volume 1, page 7, 2018.
  • Mildenhall et al. [2021] Ben Mildenhall, Pratul P Srinivasan, Matthew Tancik, Jonathan T Barron, Ravi Ramamoorthi, and Ren Ng. Nerf: Representing scenes as neural radiance fields for view synthesis. Communications of the ACM, 65(1):99–106, 2021.
  • Dong et al. [2018] Wei Dong, Qiuyuan Wang, Xin Wang, and Hongbin Zha. Psdf fusion: Probabilistic signed distance function for on-the-fly 3d data fusion and scene reconstruction. In Proceedings of the European conference on computer vision (ECCV), pages 701–717, 2018.
  • Huang et al. [2020] Zitian Huang, Yikuan Yu, Jiawen Xu, Feng Ni, and Xinyi Le. Pf-net: Point fractal network for 3d point cloud completion. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, pages 7662–7670, 2020.
  • Wen et al. [2020] Xin Wen, Tianyang Li, Zhizhong Han, and Yu-Shen Liu. Point cloud completion by skip-attention network with hierarchical folding. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 1939–1948, 2020.
  • Kraevoy and Sheffer [2005] Vladislav Kraevoy and Alla Sheffer. Template-based mesh completion. In Symposium on Geometry Processing, volume 385, pages 13–22, 2005.
  • Dai et al. [2017] Angela Dai, Charles Ruizhongtai Qi, and Matthias Nießner. Shape completion using 3d-encoder-predictor cnns and shape synthesis. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 5868–5877, 2017.
  • Choi et al. [1997] Hyeong In Choi, Sung Woo Choi, and Hwan Pyo Moon. Mathematical theory of medial axis transform. pacific journal of mathematics, 181(1):57–88, 1997.
  • Zwettler et al. [2008] Gerald Zwettler, Franz Pfeifer, Roland Swoboda, and Werner Backfrieder. Accelerated skeletonization algorithm for tubular structures in large datasets by randomized erosion. In International Conference on Computer Vision Theory and Applications, volume 2, pages 74–81. SCITEPRESS, 2008.
  • Wang et al. [2020] Yan Wang, Xu Wei, Fengze Liu, Jieneng Chen, Yuyin Zhou, Wei Shen, Elliot K Fishman, and Alan L Yuille. Deep distance transform for tubular structure segmentation in ct scans. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 3833–3842, 2020.
  • Shit et al. [2021] Suprosanna Shit, Johannes C Paetzold, Anjany Sekuboyina, Ivan Ezhov, Alexander Unger, Andrey Zhylka, Josien PW Pluim, Ulrich Bauer, and Bjoern H Menze. cldice-a novel topology-preserving loss function for tubular structure segmentation. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 16560–16569, 2021.
  • Metz et al. [2008] Coert Metz, Michiel Schaap, Theo van Walsum, Alina van der Giessen, Annick Weustink, Nico Mollet, Gabriel Krestin, and Wiro Niessen. 3d segmentation in the clinic: A grand challenge ii-coronary artery tracking. Insight Journal, 1(5):6, 2008.
  • Schaap et al. [2009] Michiel Schaap, Coert T Metz, Theo van Walsum, Alina G van der Giessen, Annick C Weustink, Nico R Mollet, Christian Bauer, Hrvoje Bogunović, Carlos Castro, Xiang Deng, et al. Standardized evaluation methodology and reference database for evaluating coronary artery centerline extraction algorithms. Medical image analysis, 13(5):701–714, 2009.
  • Xing and Makinouchi [2001] HL Xing and A Makinouchi. Numerical analysis and design for tubular hydroforming. International Journal of Mechanical Sciences, 43(4):1009–1026, 2001.
  • Hu et al. [2019] Xiaoling Hu, Fuxin Li, Dimitris Samaras, and Chao Chen. Topology-preserving deep image segmentation. Advances in neural information processing systems, 32, 2019.
  • Luo et al. [2021] Chen Luo, Chuan Zhen Han, Xiang Yu Zhang, Xue Gang Zhang, Xin Ren, and Yi Min Xie. Design, manufacturing and applications of auxetic tubular structures: A review. Thin-Walled Structures, 163:107682, 2021.
  • Gharleghi et al. [2022] Ramtin Gharleghi, Nanway Chen, Arcot Sowmya, and Susann Beier. Towards automated coronary artery segmentation: A systematic review. Computer Methods and Programs in Biomedicine, page 107015, 2022.
  • Huang et al. [2013] Hui Huang, Shihao Wu, Daniel Cohen-Or, Minglun Gong, Hao Zhang, Guiqing Li, and Baoquan Chen. L1-medial skeleton of point cloud. ACM Trans. Graph., 32(4):65–1, 2013.
  • Qin et al. [2019] Hongxing Qin, Jia Han, Ning Li, Hui Huang, and Baoquan Chen. Mass-driven topology-aware curve skeleton extraction from incomplete point clouds. IEEE transactions on visualization and computer graphics, 26(9):2805–2817, 2019.
  • Lin et al. [2021] Cheng Lin, Changjian Li, Yuan Liu, Nenglun Chen, Yi-King Choi, and Wen** Wang. Point2skeleton: Learning skeletal representations from point clouds. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, pages 4277–4286, 2021.
  • Zhang et al. [2023a] Guoqing Zhang, Caixia Dong, and Yang Li. Topology-preserving hard pixel mining for tubular structure segmentation. In 34th British Machine Vision Conference 2023, BMVC 2023, Aberdeen, UK, November 20-24, 2023. BMVA, 2023a. URL https://papers.bmvc2023.org/0846.pdf.
  • Lorensen and Cline [1987] William E Lorensen and Harvey E Cline. Marching cubes: A high resolution 3d surface construction algorithm. ACM siggraph computer graphics, 21(4):163–169, 1987.
  • Park et al. [2019] Jeong Joon Park, Peter Florence, Julian Straub, Richard Newcombe, and Steven Lovegrove. Deepsdf: Learning continuous signed distance functions for shape representation. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, pages 165–174, 2019.
  • Jiang et al. [2020] Chiyu Jiang, Avneesh Sud, Ameesh Makadia, **gwei Huang, Matthias Nießner, Thomas Funkhouser, et al. Local implicit grid representations for 3d scenes. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 6001–6010, 2020.
  • Mescheder et al. [2019] Lars Mescheder, Michael Oechsle, Michael Niemeyer, Sebastian Nowozin, and Andreas Geiger. Occupancy networks: Learning 3d reconstruction in function space. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, pages 4460–4470, 2019.
  • Genova et al. [2020] Kyle Genova, Forrester Cole, Avneesh Sud, Aaron Sarna, and Thomas Funkhouser. Local deep implicit functions for 3d shape. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 4857–4866, 2020.
  • Barron et al. [2021] Jonathan T Barron, Ben Mildenhall, Matthew Tancik, Peter Hedman, Ricardo Martin-Brualla, and Pratul P Srinivasan. Mip-nerf: A multiscale representation for anti-aliasing neural radiance fields. In Proceedings of the IEEE/CVF International Conference on Computer Vision, pages 5855–5864, 2021.
  • Pumarola et al. [2021] Albert Pumarola, Enric Corona, Gerard Pons-Moll, and Francesc Moreno-Noguer. D-nerf: Neural radiance fields for dynamic scenes. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 10318–10327, 2021.
  • Oechsle et al. [2021] Michael Oechsle, Songyou Peng, and Andreas Geiger. Unisurf: Unifying neural implicit surfaces and radiance fields for multi-view reconstruction. In Proceedings of the IEEE/CVF International Conference on Computer Vision, pages 5589–5599, 2021.
  • Wang et al. [2021] Peng Wang, Lingjie Liu, Yuan Liu, Christian Theobalt, Taku Komura, and Wen** Wang. Neus: Learning neural implicit surfaces by volume rendering for multi-view reconstruction. arXiv preprint arXiv:2106.10689, 2021.
  • Rosinol et al. [2022] Antoni Rosinol, John J Leonard, and Luca Carlone. Nerf-slam: Real-time dense monocular slam with neural radiance fields. arXiv preprint arXiv:2210.13641, 2022.
  • Deng et al. [2023] Junyuan Deng, Qi Wu, Xieyuanli Chen, Songpengcheng Xia, Zhen Sun, Guoqing Liu, Wenxian Yu, and Ling Pei. Nerf-loam: Neural implicit representation for large-scale incremental lidar odometry and map**. In Proceedings of the IEEE/CVF International Conference on Computer Vision, pages 8218–8227, 2023.
  • Bernardini et al. [1999] Fausto Bernardini, Joshua Mittleman, Holly Rushmeier, Cláudio Silva, and Gabriel Taubin. The ball-pivoting algorithm for surface reconstruction. IEEE transactions on visualization and computer graphics, 5(4):349–359, 1999.
  • Lin et al. [2022] Siyou Lin, Dong Xiao, Zuoqiang Shi, and Bin Wang. Surface reconstruction from point clouds without normals by parametrizing the gauss formula. ACM Transactions on Graphics, 42(2):1–19, 2022.
  • Xu et al. [2023] Rui Xu, Zhiyang Dou, Ningna Wang, Shiqing Xin, Shuangmin Chen, Mingyan Jiang, ** Wang, and Changhe Tu. Globally consistent normal orientation for point clouds by regularizing the winding-number field. ACM Transactions on Graphics (TOG), 42(4):1–15, 2023.
  • Ji et al. [2017] Mengqi Ji, Juergen Gall, Haitian Zheng, Yebin Liu, and Lu Fang. Surfacenet: An end-to-end 3d neural network for multiview stereopsis. In Proceedings of the IEEE international conference on computer vision, pages 2307–2315, 2017.
  • Friedman et al. [1977] Jerome H Friedman, Jon Louis Bentley, and Raphael Ari Finkel. An algorithm for finding best matches in logarithmic expected time. ACM Transactions on Mathematical Software (TOMS), 3(3):209–226, 1977.
  • Rodrigues [1840] Olinde Rodrigues. Des lois géométriques qui régissent les déplacements d’un système solide dans l’espace, et de la variation des coordonnées provenant de ces déplacements considérés indépendamment des causes qui peuvent les produire. Journal de mathématiques pures et appliquées, 5:380–440, 1840.
  • Rasala [1981] Richard Rasala. The rodrigues formula and polynomial differential operators. Journal of Mathematical Analysis and Applications, 84(2):443–482, 1981.
  • Zeng et al. [2022] An Zeng, Chunbiao Wu, Mei** Huang, Jian Zhuang, Shanshan Bi, Dan Pan, Najeeb Ullah, Kaleem Nawaz Khan, Tianchen Wang, Yiyu Shi, et al. Imagecas: A large-scale dataset and benchmark for coronary artery segmentation based on computed tomography angiography images. arXiv preprint arXiv:2211.01607, 2022.
  • Zhang et al. [2023b] Minghui Zhang, Yangqian Wu, Hanxiao Zhang, Yulei Qin, Hao Zheng, Wen Tang, Corey Arnold, Chenhao Pei, Pengxin Yu, Yang Nan, et al. Multi-site, multi-domain airway tree modeling (atm’22): A public benchmark for pulmonary airway segmentation. arXiv preprint arXiv:2303.05745, 2023b.
  • Maurya et al. [2022] Akansh Maurya, Kunal Dashrath Patil, Rohan Padhy, Kalluri Ramakrishna, and Ganapathy Krishnamurthi. Parse challenge 2022: Pulmonary arteries segmentation using swin u-net transformer (swin unetr) and u-net. arXiv preprint arXiv:2208.09636, 2022.
  • Tetteh et al. [2020] Giles Tetteh, Velizar Efremov, Nils D Forkert, Matthias Schneider, Jan Kirschke, Bruno Weber, Claus Zimmer, Marie Piraud, and Bjoern H Menze. Deepvesselnet: Vessel segmentation, centerline prediction, and bifurcation detection in 3-d angiographic volumes. Frontiers in Neuroscience, page 1285, 2020.
  • Zhang and Suen [1984] Tongjie Y Zhang and Ching Y. Suen. A fast parallel algorithm for thinning digital patterns. Communications of the ACM, 27(3):236–239, 1984.
  • Kazhdan and Hoppe [2013] Michael Kazhdan and Hugues Hoppe. Screened poisson surface reconstruction. ACM Transactions on Graphics (ToG), 32(3):1–13, 2013.