\section*{References}

\section{Conclusion}
We have presented a cluster-driven mesh denoising framework which can generate clusters for mesh surfaces, especially for CAD-like models. It can be easily integrated with existing mesh denoising methods. Both visual and quantitative results confirm that our method enables better mesh denoising outcomes, especially for models corrupted with large noise, with a significant ease for users.

As with most existing clustering methods like K-means or Mean-shift \cite{comaniciu2002mean}, it still has limited robustness to very large noise, and is not easy to output decent clusters without the aid of the pre-processing \cite{Lu2016}.
As the future work, we would like to design more robust clustering techniques for noisy 3D shapes.
\section{Introduction}
\label{sec:introduction}
Mesh denoising is a fundamental research problem in geometry processing. The denoised mesh models can be applied to further geometry processing, computer animation, industrial design and so on. The main challenges lie in the removal of noise while preserving sharp features.

Most existing mesh denoising methods focused on the use of local information (e.g., \cite{sun2007fast,Sun2008,Zheng2011,zhang2015guided,Wang-2016-SA,Lu2017-1,Lu2017-2,pan2020hlo}). However, it still remains a challenge in recovering sharp features from noisy mesh models to date. In particular, the face normal based methods \cite{sun2007fast,Zheng2011,zhang2015guided,Lu2017-1} often consider the design of small weights for anisotropic faces and large weights for isotropic weights, while small weights still affect the denoising outcomes. Furthermore, they sometimes require remarkable efforts and even tremendous efforts in parameter tuning. That is, it is sometimes not easy to achieve desired outcomes, especially for those who have insufficient familiarity with the algorithms. A few other methods utilize more information for mesh denoising \cite{Lu2018,Li2018}. Nevertheless, they involve significant computation and are usually slow.

To address the above issues, we introduce a novel segmentation approach to greatly facilitate existing mesh denoising methods, with reducing the difficulty in parameter tuning for users.
The key idea is to cluster the surface of a mesh model before real denoising. Specifically, we realize the segmentation by simply contrasting an edge indicator. The cluster information can essentially eliminate the disturbance of anisotropic surfaces.
As a result, some commonly-used mesh denoising methods can be further employed for mesh denoising. We conduct extensive experiments to validate our approach, and found it is able to boost mesh denoising outcomes. It is simple and easy to be embedded into plenty of existing mesh denoising frameworks.

Our main contributions are summarized as follows.
\begin{itemize}
\item We design a region-growing segmentation approach to divide a noisy input mesh model into pieces.
\item The achieved segmentation is applied to facilitate and boost some commonly-used mesh denoising methods.
\end{itemize}

\section{Method}
\label{sec:method}

\subsection{Method Overview}
Fig. \ref{fig:pipeline} provides an overview of our method. The first step is pre-filtering which provides good initialization. This step is only required for input with relatively large noise (e.g., $0.3$ of the average edge length in the mesh). Next, we segment the model into clusters. Finally,
the cluster information can be utilized for mesh denoising with existing mesh denoising algorithms such as \cite{Zheng2011}. Notice that the clusters are mapped to the original noisy model if pre-processing is required.
\begin{figure}[ht]
	\centering{
		\includegraphics[width=8cm]{Fig/method/FlowChart-eps-converted-to.pdf}
	}
	\caption{Overview of our approach. } \label{fig:pipeline}
\end{figure}

\subsection{Pre-processing}
We simply adopt the pre-filtering algorithm introduced by \cite{Lu2016} for the pre-processing purpose, when the noise level of the input mesh is relatively high. The objective function is
\begin{equation}\label{eq:prefiltering}
    \min \sum_i ||\tilde{p}_i-p_i||_2^2 + \alpha\sum_e w(e)||D(e)||_2^2 + \beta\sum_e w(e)||R(e)||_2^2,
\end{equation}
where $\tilde{p}_i$ is the new position which is unknown and $i$ denotes the $i$-th vertex. $\alpha$ and $\beta$ are the weights of two different terms. $D(e)$ and $R(e)$ are the area-based edge operator and the regularizer in \cite{He2013}. $w(e)$ is the weighting function for the edge $e$, which utilizes normal information.

The above objective function can be easily solved with linear equation systems. It should be noted that this step is only required for input meshes corrupted with relatively large noise. {Fig.~\ref{fig:pre-filtering} shows two examples for pre-filtering.}

\begin{figure}[ht]
	\centering
		\includegraphics[width=2cm]{Fig/method/f2/f2a-eps-converted-to.pdf}
		\includegraphics[width=2cm]{Fig/method/f2/f2b-eps-converted-to.pdf}
		\includegraphics[width=2cm]{Fig/method/f2/f2c-eps-converted-to.pdf}
		\includegraphics[width=2cm]{Fig/method/f2/f2d-eps-converted-to.pdf}
	\caption{Two pre-filtering examples. }\label{fig:pre-filtering}
\end{figure}

\subsection{Region-growing Segmentation}
\label{sec:clustering}
We propose to use an edge metric for mesh segmentation. An intuitive way is to take account the normal information on the mesh surface. Nevertheless, normals are quite sensitive to noise level. We resort to the differential edge operator defined in \cite{He2013} as the edge metric in segmentation, which is one term appeared in Eq.(1).
The edge operator is

\begin{equation}\label{e1}
\begin{aligned}
D(e) =
\left[
\begin{array}{c}
\frac{\triangle_{123}(p_4-p_3)\cdot(p_3-p_1)+\triangle_{134}(p_1-p_3)\cdot(p_3-p_2)}{(\begin{vmatrix}p_3-p_1\end{vmatrix})^2(\triangle_{123}+\triangle_{134})}\\
\frac{\triangle_{134}}{\triangle_{123}+\triangle_{134}} \\
\frac{\triangle_{123}(p_3-p_1)\cdot(p_1-p_4)+\triangle_{134}(p_2-p_1)\cdot(p_1-p_3)}{(\begin{vmatrix}p_3-p_1\end{vmatrix})^2(\triangle_{1,2,3}+\triangle_{1,3,4})} \\
\frac{\triangle_{123}}{\triangle_{123}+\triangle_{134}} \\
\end{array}
\right]^\mathrm{T}
\left[
\begin{array}{ccc}
p_1\\
p_2\\
p_3\\
p_4\\
\end{array}
\right]
\end{aligned}
\end{equation}
where $\triangle_{123}$ denotes the area of the triangle defined by $p_1$, $p_2$ and $p_3$, and $\triangle_{134}$ is the area of the triangle formed by $p_1$, $p_3$ and $p_4$.

$D(e)$ is a vector ($1\times 3$), which essentially describes the feature/non-feature property of the edge $e$. Its $L_2$-norm should be $0$ when the corresponding two triangles are on a plane (two triangles sharing the edge). Thus, the ideal threshold $D_{thr}$ is $0$ for determining feature regions or non-feature regions. While meeting noisy input, we can relax this constraint by setting a greater threshold.

\begin{figure} [htbp]
\centering
        	\includegraphics[width=2.1cm]{Fig/method/f3/f3a-eps-converted-to.pdf}
			\includegraphics[width=2.1cm]{Fig/method/f3/f3b-eps-converted-to.pdf}
			\includegraphics[width=2.1cm]{Fig/method/f3/f3c-eps-converted-to.pdf}\\
\caption{The edge operator metric can distinguish sharp edges from non-sharp edges. Triangular faces with sharp edges are rendered in red and those without sharp edges are rendered in green.
}
\label{3.2}
\end{figure}

After having the edge metric, we propose to do region-grow segmentation based on the values of the differential edge operator for each edge, which to some extent determines the edge is a feature or non-feature edge. Experiment shows that our region-growing scheme is more robust in segmentation (Fig.~\ref{fig: clustering_compare}). To achieve the region-growing segmentation, we first set a seeding triangle face in the input mesh and assign a label to it. We then compute each edge operator of this face and determine if the edge-connected faces belong to the same cluster as the seeding face, by comparing the $L_2$-norm of edge operators with the threshold $D_{thr}$. If the $L_2$-norm is smaller than $D_{thr}$, we assign the cluster label of the seeding face to that connected triangle face. The new faces with the same label are all viewed as seeding faces. We further calculate the edge operators of new faces, and continue this procedure until the norm of a new edge operator is greater than or equal to $D_{thr}$. If it is stopped, we randomly select a seeding face from the rest area of the input mesh and continue the above procedure again. We stop it until all faces on the mesh are clustered. Fig. \ref{fig:regionGrow} shows a demonstration of our segmentation process.

\begin{figure} [htbp]
	\begin{center}
		\begin{tabular}{c}
			\includegraphics[width=8cm]{Fig/method/boat.pdf}
		\end{tabular}
	\end{center}
	\caption[front]
	{ \label{fig:regionGrow}
		Demonstration of our region-growing segmentation method based on the edge operator metric. A seed triangle will be diffused to its three co-sided neighbors, and the diffusion process is based on the value of the $L_2$-norm of the differential edge operator. An edge with a greater width indicates a larger $L_2$-norm of the edge operator. }
\end{figure}

Fig.~\ref{fig: clustering_compare} shows the segmentation results of several methods. Since some other segmentation methods such as mean-shift~\cite{comaniciu2002mean} is using the same metrics as K-means, we only display the result of K-means here. The region-growing segmentation based on distance and normal metric is highly sensitive to noise, while our segmentation method generates better results. Fig.~\ref{fig: clustering_threshold} shows that our segmentation results are influenced by $D_{thr}$.

\begin{figure} [htbp]
\centering

			\includegraphics[width=2.1cm]{Fig/method/f5/f5a-eps-converted-to.pdf}
			\includegraphics[width=2.1cm]{Fig/method/f5/f5b-eps-converted-to.pdf}
			\includegraphics[width=2.1cm]{Fig/method/f5/f5c-eps-converted-to.pdf}\\

			\makebox[2.1cm]{(a) K-means}
			\makebox[2.1cm]{(b) Region grow}
			\makebox[2.1cm]{(c) Ours} \\
\caption{Segmentation results of several different methods. (a) K-means ($K = 12$). (b) Region-growing segmentation based on normal angle and face distance.
(c) Our method.
}
\label{fig: clustering_compare}
\end{figure}

\begin{figure} [htbp]
\centering
			\includegraphics[width=2cm]{Fig/method/f6/f6a-eps-converted-to.pdf}
			\includegraphics[width=2cm]{Fig/method/f6/f6b-eps-converted-to.pdf}
			\includegraphics[width=2cm]{Fig/method/f6/f6c-eps-converted-to.pdf}
            \includegraphics[width=2cm]{Fig/method/f6/f6d-eps-converted-to.pdf}\\
			\makebox[2cm]{(a) $D_{thr}=0.4$}
			\makebox[2cm]{(b) $D_{thr}=0.6$}
			\makebox[2cm]{(c) $D_{thr}=0.8$}
			\makebox[2cm]{(d) $D_{thr}=1.0$} \\
\caption{Segmentation results by our method with different $D_{thr}$.
}
\label{fig: clustering_threshold}
\end{figure}

\SetKwRepeat{Do}{do}{while}

\begin{algorithm}[t]
\SetKwInput{KwData}{Input}
\SetKwInput{KwResult}{Output}
  \KwData{Mesh with low noises or preprocessed mesh, Threshold  $D_{thr}$ }
  \KwResult{Mesh with clusters }
  Compute differential edge operator $D(e)$ for each edge\;
    \Repeat{all faces are clustered}
    {
      Randomly select an unprocessed face $F_{i}$ as a seed for a new cluster $C$\;
       Get $F_{i}$'s edge-connected neighbors $\{F_{j}\}$ and corresponding edges $\{e_{j}\}$\;
  	      \While{$D_{e_{j}}<D_{thr}$}
  	      {
  	      cluster $F_{j}$ into $C$\;
 	      mark $F_{j}$ as a new seed\;
       }
    }
  \caption{Region-growing Segmentation}
  \label{alg:regionGrow}
\end{algorithm}

\textbf{Refinement.} Small clusters are sometimes observed after region-growing segmentation, which is inevitable due to noise. We further found that such small clusters usually pose negative impacts to mesh denoising (Fig.~\ref{fig: refine}). We simply identify small clusters with less than $50$ triangles, and merge them into other clusters. Specifically, for each triangle face in the small cluster, we calculate the cosine of the current face normal and each of its 2-ring neighborhood face normal and sum the cosine within the same cluster. For simplicity, the cluster label which induces the greatest sum is assigned to this triangle face. The function is defined as
\begin{equation}
    \argmax_k \sum_{j\in S(i)} \cos(n_i,n_j),
\end{equation}
where $k$ indicates the cluster label $k$. $n_i$ is the current face normal, and $\{j\}=S(i)$ represents the face set with a certain cluster label in the 2-ring neighborhood. $n_j$ denotes a face normal corresponding to index $j$ in this set.
Algorithm \ref{alg:regionGrow} summarizes our region-growing segmentation algorithm.

\begin{figure} [htbp]
\centering
			\includegraphics[width=2cm]{Fig/method/f7/3-eps-converted-to.pdf}
			\includegraphics[width=2cm]{Fig/method/f7/4-eps-converted-to.pdf}
			\includegraphics[width=2cm]{Fig/method/f7/1-eps-converted-to.pdf}
            \includegraphics[width=2cm]{Fig/method/f7/2-eps-converted-to.pdf}\\
			\makebox[2cm]{(a) }
			\makebox[2cm]{(b) }
			\makebox[2cm]{(c) }
			\makebox[2cm]{(d) } \\
\caption{Denoising results with/without cluster refinement. (a) Cluster result without refinement; (b) denoising result based on (a); (c) cluster result with refinement; (d) denoising result based on (c).
}
\label{fig: refine}
\end{figure}

\subsection{Mesh Denoising}
\label{sec:method-denoising}
Regarding mesh denoising applications, our segmentation can be easily embedded into some commonly-used mesh denoising frameworks, and is able to help boost the performance. In particular, the output clusters provide useful information in excluding anisotropic neighbors and avoid the negative influence from anisotropic neighbors. In this respect, many local based mesh denoising techniques can benefit from our segmentation, such as \cite{sun2007fast,Zheng2011,zhang2015guided,Lu2017-1}.  We constrain and update the neighbors within the same cluster for mesh denoising, which also reduces the difficulty in parameter tuning and increases stability to mesh denoising algorithms.

\section{Related Work}
\label{sec:relatedwork}
\subsection{Mesh Segmentation}
Mesh segmentation, a.k.a. mesh clustering, is to decompose an input mesh into smaller and meaningful subsets. It is usually divided into two categories: semantic segmentation and geometric segmentation. The former one is to segment the mesh into meaningful clusters based on semantic information, while the latter clusters based on geometric criteria such as curvatures and normals. It has been a very active area of research in computer graphics~\cite{Huang2009shape}. Readers may refer to~\cite{Chen2009benchmark,shamir2008survey,gupta2019comparative} for comprehensive surveys.

In this work, we mainly review geometric segmentation which includes region-based and boundary-based segmentation methods.
Region-based segmentation is a clustering method that gathers similar regions together based on geometric information. The common methods are K-means and its variant~\cite{debelee2019evaluation}. Variational Shape Approximation (VSA) is an error-driven method which fits planar proxies to geometry~\cite{cohen2004variational}. Distortion error is iteratively reduced through repeated clustering of faces into best-fitting regions. Each iteration consists of a region growing phase based on the $L^{2}$ or $L^{1}$ metric. In the work of \cite{achanta2012slic,simari2014fast}, SLIC superpixel technique is used to compute super facets efficiently with the K-means approach. Similar to superpixel in image processing, triangles with similar geometric metrics are then grouped into super facets. Other region-based clustering methods contain mean-shift~\cite{comaniciu2002mean}, medoid shift~\cite{sheikh2007mode}, quick shift~\cite{vedaldi2008quick},  hierarchical decomposition~\cite{katz2003hierarchical}, primitive fitting~\cite{attene2006hierarchical}, random walks~\cite{lai2008fast}, and so on.
Boundary-based methods extract or detect the geometric feature boundaries of the input mesh, such that the object can be divided into different parts by the boundaries. Relevant methods include randomized cuts~\cite{golovinskiy2008randomized},
fuzzy-clustering-and-cuts (FCC)~\cite{katz2003hierarchical}, shape diameter function~\cite{shapira2008consistent}, 3D mesh scissoring~\cite{zheng2011dot,lee2005mesh}, etc. These methods highly rely on the local geometric information of the input mesh, and easily fail once the structure of the mesh becomes complicated or noises level becomes high.

Recent advances in deep learning lead to new data-driven methods for mesh segmentation~\cite{kalogerakis2010learning}. The majority of them deal with the semantic segmentation problem; see ~\cite{garcia2017review} for a comprehensive review.

\subsection{Mesh Denoising}
There exists a large body of literature for mesh denoising; readers are referred to ~\cite{botsch2008,botsch2010} for comprehensive reviews.

The Laplacian smoothing methods~\cite{Vollmer1999,Field1988} are early research for mesh denoising. However, its isotropic nature results in feature-wiping and shrinking artifacts. Taubin~\cite{taubin1995signal} proposed a two-step smoothing method for non-shrinking mesh denoising.
Later, a fairing method based on diffusion and curvature flow ~\cite{desbrun1999} was proposed to handle irregular meshes.
Various isotropic smoothing methods~\cite{liu2002,kim2005,Nehab2005,Nealen2006,su2009} have been further introduced based on volume preservation, pass frequency controlling, differential properties etc.

The above isotropic methods often wipe out features. Various anisotropic methods have been proposed to mitigate this issue. Some common approaches consist of diffusion/differential-based methods~\cite{Tasdizen2002,Clarenz2000,Desbrun2000,Bajaj2003,Hildebrandt2004,Ohtake2000,Ouafdi2008:global,Ouafdi2008:smart,He2013}, bilateral methods~\cite{Jones2003,Fleishman2003,Zheng2011,Lee2005,Wang2006}, two-step methods involving normal filtering and vertex update~\cite{Zheng2011,Lee2005,Taubin2001,Ohtake2001,chen2005sharpness,Sun2008,sun2007fast,Shen2004,Jones2003,Yagou2002,Yagou2003,zhang2015guided,Wang-2016-SA,Lu2017-1,Lu2017-2}.
The two-step methods including normal smoothing and vertex update have been proved to be promising in preserving sharp features~\cite{Zheng2011,Lee2005,Taubin2001,Ohtake2001,chen2005sharpness,Sun2008,sun2007fast,Shen2004,Jones2003,Yagou2002,Yagou2003,zhang2015guided,Wang-2016-SA,Lu2017-1,Lu2017-2,Yadav2018-1,Yadav2018-2}. In recent years, some researchers attempted to conduct vertex and face classification for better mesh denoising~\cite{Wei2015,Fan2010,Bian2011,Wang2012,Zhu2013,Wang2009,Wei2017}. These classification strategies are mainly focused on local neighborhood and usually sensitive to noise. The ideas of pre-filtering \cite{Lu2016,Lu2017-1,Lu2017-2} are introduced for better denoising outcomes. Arvanitis et al. \cite{Arvanitis2019} introduced a novel coarse-to-fine graph spectral processing approach for mesh denoising.

Sparsity was introduced into mesh smoothing in some recent works~\cite{He2013,Wang2014,Lu2016,Zhao2018}. He et al.~\cite{He2013} developed an $L_{0}$ minimization framework. It is non-convex and slow. An improved alternating optimization strategy \cite{Zhao2018} was designed to solve the $L_0$ minimization, which involves vertex positions and face normals. Wang et al.~\cite{Wang2014} proposed a method to decouple noise and features by weighted $L_{1}$-analysis compressed sensing.
Lu et al. \cite{Lu2016} introduced a novel $L_1$ minimization to detect features. A low-rank matrix approximation approach was proposed for geometry filtering \cite{Lu2018}. The low-rank idea was further extended to mesh denoising~\cite{Li2018,Wei2018}.
Li et al. \cite{li2019feature} described a method to extract feature lines with Laplacian preprocessing on noisy models, and the feature lines are used to identify neighbours for guided normal estimation. By constructing half window of local neighborhood for each vertex, Pan et al.~\cite{pan2020hlo} proposed a half-kernel Laplacian operator to reduce the damages on features while removing noise. This method is fast and effective, but has limited capability for sharp edge preservation in CAD-like models.

There are also some data-driven methods, such as Wang et al.~\cite{Wang-2016-SA} and ~\cite{wang2019data}. They defined the filtered facet normal descriptor (FDN) according to the neighborhood of a noisy mesh facet to the noise-free mesh facet normal, and then modeled non-linear regression functions by mapping the FDN. The modeled function is used to compute new facet normals. Multiple iterations of mesh denoising are required which forms the cascaded normal regression.

\section{Experimental Results}
\label{sec:results}

\subsection{Parameter Setting}

The selected state-of-the-art techniques are:  the unilateral normal filter (UNF)~\cite{sun2007fast}, the bilateral normal filter (BNF)~\cite{Zheng2011}, $L_0$ minimization (L0) \cite{He2013}, the guided normal filter (GNF) ~\cite{zhang2015guided}, and the $L_1$-Median filter (L1)~\cite{Lu2017-1}. We select them since the involved source codes available online or provided by the original authors. We embed our clustering approch into each of these methods. The parameters of these methods used in our experiments are summarized in Table~\ref{table:tablepara}. Note that we have one extra parameter (segmentation threshold ($D_{thr}$)) which is easy to tune. Desired mesh denoising results can be easily obtained, because the influences of the original parameters are significantly reduced by our clustering method. For reasonable and fair comparisons, we set the same parameters for the original methods and the adapted cluster-driven methods.

\begin{table}[htbp]\scriptsize
    \centering
    \setlength\tabcolsep{1pt}
    \caption{Parameters of some commonly used mesh denoising methods. }\label{table:tablepara}
    \begin{tabular}{|l|c|l|}\hline

    Methods & \tabincell{l}{Parameters} & Parameters\\

    \hline
    UNF & 3 & \tabincell{l}{$ T $: threshold for controlling the averaging weights \\ $ n_{iter} $: number of iterations for normal update \\ $ v_{iter} $: number of iterations for vertex update}
    \\ \hline
    BNF(Local)& 3 &\tabincell{l}{$ v_{iter} $: number of iterations for vertex update\\ $ \sigma_{s} $: variance parameter for the spatial kernel \\ $ n_{iter} $: number of iterations for normal update}
    \\ \hline
    GNF & 5 &\tabincell{l}{$ v_{iter} $: number of iterations for vertex update\\ $ \sigma_{r} $ : variance parameter for the range kernel \\ $ \sigma_{s} $: variance parameter for the spatial kernel \\$ r $: radius parameter $ r $ for finding a geometrical neighborhood \\$ n_{iter} $: number of iterations for normal update}
    \\ \hline
  	L0  & 6 & \tabincell{l}{$ \mu_\beta $: update ratios for $ \beta $\\ $ \beta_{0} $: initial values for $ \beta $ \\ $ \beta_{max} $: maximum value of $ \beta $ \\$ \mu_\alpha $: update ratios for $ \alpha $\\$ \alpha_{0} $: initial values for $ \alpha $.\\$ \lambda $: weight for the L0  term in the target function}
  	\\ \hline
  	L1 Median& 3 & \tabincell{l}{$ v_{iter} $: number of iterations for vertex update\\ $ \sigma_{s} $: variance parameter for the spatial kernel \\ $ n_{iter} $: number of iterations for normal update}
  	\\ \hline
  	Our+Others & $1+X$ & \tabincell{l}{$ D_{thr} $ : Segmentation threshold\\
  	$X$: the parameters of other methods}
        \\ \hline
    \end{tabular}
\end{table}

\subsection{Visual Results}

\textit{Synthetic CAD-like models.} We compare our method with the selected state-of-the-art methods on various models corrupted with synthetic noise.
According to state-of-the-art mesh smoothing techniques, noisy synthetic models are generated by adding zero-mean Gaussian noise with standard deviation $\sigma_n$ to the corresponding ground truth. $\sigma_n$ is proportional to the mean edge length $l_{e}$ of the input mesh.

From Fig.~\ref{fig:Icosahedron_0.2} to Fig.~\ref{fig:dodecahedral_0.2}, we display the results by original methods and by the embedded versions (i.e., ours+original methods).
It is obvious that the cluster-driven approaches have a better preservation of shapr features than the original methods.
To deal with heavy noise, current denoising methods such as BNF and UNF usually require a large number of iterations for normal smoothing and vertex update (e.g., $100$ or $200$), which sometimes leads to over-smooth results (see Fig~\ref{fig:Cube_0.8}). By contrast, the embedded versions (ours+original methods) enable better preservation of sharp features.

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/Icosahedron(1)/L0-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/Icosahedron(1)/BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/Icosahedron(1)/UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/Icosahedron(1)/GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/Icosahedron(1)/L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{L0}
			\makebox[3.1cm]{BNF}
			\makebox[3.1cm]{UNF}
			\makebox[3.1cm]{GNF}
			\makebox[3.1cm]{L1}\\
			\includegraphics[width=3.1cm]{Fig/results/Icosahedron(1)/noisy-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/Icosahedron(1)/our_BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/Icosahedron(1)/our_UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/Icosahedron(1)/our_GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/Icosahedron(1)/our_L1-eps-converted-to.pdf}
			\makebox[3.1cm]{Noisy}
			\makebox[3.1cm]{our+BNF}
			\makebox[3.1cm]{our+UNF}
			\makebox[3.1cm]{our+GNF}
			\makebox[3.1cm]{our+L1}\\
\caption{Results on the noisy Icosahedron model ($\sigma_{n}=0.2l_e$).}
\label{fig:Icosahedron_0.2}
\end{figure*}

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/cube(1)/L0-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cube(1)/BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cube(1)/UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cube(1)/GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cube(1)/L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{L0}
			\makebox[3.1cm]{BNF}
			\makebox[3.1cm]{UNF}
			\makebox[3.1cm]{GNF}
			\makebox[3.1cm]{L1}\\
			\includegraphics[width=3.1cm]{Fig/results/cube(1)/noisy-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cube(1)/our_BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cube(1)/our_UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cube(1)/our_GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cube(1)/our_L1-eps-converted-to.pdf}
			\makebox[3.1cm]{Noisy}
			\makebox[3.1cm]{our+BNF}
			\makebox[3.1cm]{our+UNF}
			\makebox[3.1cm]{our+GNF}
			\makebox[3.1cm]{our+L1}\\
\caption{Results on the noisy Cube model ($\sigma_{n}=0.8l_e$). }
\label{fig:Cube_0.8}
\end{figure*}

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/partLP/L0-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/partLP/BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/partLP/UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/partLP/GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/partLP/L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{L0}
			\makebox[3.1cm]{BNF}
			\makebox[3.1cm]{UNF}
			\makebox[3.1cm]{GNF}
			\makebox[3.1cm]{L1}\\
			\includegraphics[width=3.1cm]{Fig/results/partLP/noisy-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/partLP/ourBNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/partLP/ourUNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/partLP/ourGNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/partLP/ourL1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{Noisy}
			\makebox[3.1cm]{our+BNF}
			\makebox[3.1cm]{our+UNF}
			\makebox[3.1cm]{our+GNF}
			\makebox[3.1cm]{our+L1}\\
\caption{Results on the noisy PartLP model ($\sigma_{n}=0.1l_e$). }
\label{fig:part_LP_0.2}
\end{figure*}

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/cad(0.5)(1)/L0-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cad(0.5)(1)/BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cad(0.5)(1)/UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cad(0.5)(1)/GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cad(0.5)(1)/L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{L0}
			\makebox[3.1cm]{BNF}
			\makebox[3.1cm]{UNF}
			\makebox[3.1cm]{GNF}
			\makebox[3.1cm]{L1}\\
			\includegraphics[width=3.1cm]{Fig/results/cad(0.5)(1)/noisy-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cad(0.5)(1)/our_BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cad(0.5)(1)/our_UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cad(0.5)(1)/our_GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/cad(0.5)(1)/our_L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{Noisy}
			\makebox[3.1cm]{our+BNF}
			\makebox[3.1cm]{our+UNF}
			\makebox[3.1cm]{our+GNF}
			\makebox[3.1cm]{our+L1}\\
\caption{Results on a noisy CAD model ($\sigma_{n}=0.5l_e$). }
\label{fig:cad_0.5}
\end{figure*}

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/fandisk0.2(1)/L0-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/fandisk0.2(1)/BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/fandisk0.2(1)/UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/fandisk0.2(1)/GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/fandisk0.2(1)/L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{L0}
			\makebox[3.1cm]{BNF}
			\makebox[3.1cm]{UNF}
			\makebox[3.1cm]{GNF}
			\makebox[3.1cm]{L1}\\
			\includegraphics[width=3.1cm]{Fig/results/fandisk0.2(1)/noisy-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/fandisk0.2(1)/our_BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/fandisk0.2(1)/our_UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/fandisk0.2(1)/our_GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/fandisk0.2(1)/our_L1-eps-converted-to.pdf}
			\makebox[3.1cm]{Noisy}
			\makebox[3.1cm]{our+BNF}
			\makebox[3.1cm]{our+UNF}
			\makebox[3.1cm]{our+GNF}
			\makebox[3.1cm]{our+L1}\\
\caption{Results on the noisy Fandisk model ($\sigma_{n}=0.2l_e$). }
\label{fig:fandisk0.2}
\end{figure*}

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/dodecahedral_noise0.2/L0-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/dodecahedral_noise0.2/BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/dodecahedral_noise0.2/UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/dodecahedral_noise0.2/GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/dodecahedral_noise0.2/L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{L0}
			\makebox[3.1cm]{BNF}
			\makebox[3.1cm]{UNF}
			\makebox[3.1cm]{GNF}
			\makebox[3.1cm]{L1}\\
			\includegraphics[width=3.1cm]{Fig/results/dodecahedral_noise0.2/noisy-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/dodecahedral_noise0.2/ourBNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/dodecahedral_noise0.2/ourUNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/dodecahedral_noise0.2/ourGNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/dodecahedral_noise0.2/ourL1-eps-converted-to.pdf}
			\makebox[3.1cm]{Noisy}
			\makebox[3.1cm]{our+BNF}
			\makebox[3.1cm]{our+UNF}
			\makebox[3.1cm]{our+GNF}
			\makebox[3.1cm]{our+L1}\\
\caption{Results on the noisy Dodecahedron  ($\sigma_{n}=0.2l_e$). Boundaries are rendered in red for better visual effect.}
\label{fig:dodecahedral_0.2}
\end{figure*}

\textit{Synthetic non-CAD models.} The improvement of our method on dealing with non-CAD models is less significant than that on CAD-like models. This is because that growing variations on shapes lead to an increasing difficulty on segmentation. Fig.~\ref{fig:Atenean} shows comparisons on the Atenean model corrupted by synthetic Gaussian noise ($\sigma_{n} =0.2l_{e}$). Compared with the original methods, the embedded versions can preserve more sharp creases and edges, though the improvement is not remarkable. Fig.~\ref{fig:Octaflower} shows comparisons on the Octaflower model corrupted by synthetic Gaussian noise ($\sigma_{n} =0.05l_{e}$). The edges are sharper.

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/ateneam/L0-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/ateneam/BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/ateneam/UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/ateneam/GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/ateneam/L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{L0}
			\makebox[3.1cm]{BNF}
			\makebox[3.1cm]{UNF}
			\makebox[3.1cm]{GNF}
			\makebox[3.1cm]{L1}\\
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/ateneam/noisy-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/ateneam/our_BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/ateneam/our_UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/ateneam/our_GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/ateneam/our_L1-eps-converted-to.pdf}
			\makebox[3.1cm]{Noisy}
			\makebox[3.1cm]{our+BNF}
			\makebox[3.1cm]{our+UNF}
			\makebox[3.1cm]{our+GNF}
			\makebox[3.1cm]{our+L1}\\
\caption{Results on the noisy Atenean model ($\sigma_{n}=0.2l_e$). }
\label{fig:Atenean}
\end{figure*}

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/octaflower/noisy-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/octaflower/BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/octaflower/UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/octaflower/GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/octaflower/L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{L0}
			\makebox[3.1cm]{BNF}
			\makebox[3.1cm]{UNF}
			\makebox[3.1cm]{GNF}
			\makebox[3.1cm]{L1}\\
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/octaflower/origin-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/octaflower/ourBNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/octaflower/ourUNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/octaflower/ourGNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/non_CAD/octaflower/ourL1-eps-converted-to.pdf}
			\makebox[3.1cm]{Noisy}
			\makebox[3.1cm]{our+BNF}
			\makebox[3.1cm]{our+UNF}
			\makebox[3.1cm]{our+GNF}
			\makebox[3.1cm]{our+L1}\\
\caption{Results on the noisy Octaflower model ($\sigma_{n}=0.05l_e$). }
\label{fig:Octaflower}
\end{figure*}

\begin{figure*} [htb!]
\centering
	        \includegraphics[width=3.1cm]{Fig/results/wilhelm_std1/noisy-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/wilhelm_std1/BMF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/wilhelm_std1/HLO-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/wilhelm_std1/L0-eps-converted-to.pdf}\\
			\makebox[3.1cm]{noisy}
			\makebox[3.1cm]{BMF \cite{Fleishman2003}}
			\makebox[3.1cm]{HLO \cite{pan2020hlo}}
			\makebox[3.1cm]{L0 \cite{He2013}}\\
			\includegraphics[width=3.1cm]{Fig/results/wilhelm_std1/our_BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/wilhelm_std1/our_UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/wilhelm_std1/our_GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/wilhelm_std1/our_L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{our+BNF}
			\makebox[3.1cm]{our+UNF}
			\makebox[3.1cm]{our+GNF}
			\makebox[3.1cm]{our+L1}\\
\caption{Results on the raw scanned Wilhelm model. }
\label{fig:Wilhelm}
\end{figure*}

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/circular_box_std/2/L0-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/circular_box_std/2/BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/circular_box_std/2/UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/circular_box_std/2/GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/circular_box_std/2/L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{L0}
			\makebox[3.1cm]{BNF}
			\makebox[3.1cm]{UNF}
			\makebox[3.1cm]{GNF}
			\makebox[3.1cm]{L1}\\
			\includegraphics[width=3.1cm]{Fig/results/circular_box_std/2/noisy-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/circular_box_std/2/our_BNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/circular_box_std/2/our_UNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/circular_box_std/2/our_GNF-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/circular_box_std/2/our_L1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{Scanned Raw}
			\makebox[3.1cm]{our+BNF}
			\makebox[3.1cm]{our+UNF}
			\makebox[3.1cm]{our+GNF}
			\makebox[3.1cm]{our+L1}\\
\caption{Results on the raw scanned cube model. }
\label{fig:circular_box_low}
\end{figure*}

\textit{Raw scanned models.}
In addition to the synthetic shapes, we also experiment on scanned models corrupted with raw noise.
Fig.~\ref{fig:circular_box_low} show the smoothing results of all methods on a raw scanned mesh. Compared with the original methods (first row), our methods (second row) preserve sharp features better.
We observe from Fig.~\ref{fig:Wilhelm} that the embedded versions can produce comparable results to \cite{Fleishman2003,pan2020hlo}.

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaUNF(1)/0_9-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaUNF(1)/0_8-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaUNF(1)/0_7-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaUNF(1)/0_6-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaUNF(1)/0_5-eps-converted-to.pdf}\\
			\makebox[3.1cm]{UNF(T=0.9)}
			\makebox[3.1cm]{UNF(T=0.8)}
			\makebox[3.1cm]{UNF(T=0.7)}
			\makebox[3.1cm]{UNF(T=0.6)}
			\makebox[3.1cm]{UNF(T=0.5)}\\
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaUNF(1)/our0_9-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaUNF(1)/our0_8-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaUNF(1)/our0_7-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaUNF(1)/our0_6-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaUNF(1)/our0_5-eps-converted-to.pdf}\\
			\makebox[3.1cm]{our+UNF(T=0.9)}
			\makebox[3.1cm]{our+UNF(T=0.8)}
			\makebox[3.1cm]{our+UNF(T=0.7)}
			\makebox[3.1cm]{our+UNF(T=0.6)}
			\makebox[3.1cm]{our+UNF(T=0.5)}\\
\caption{Results by setting different $T$ for UNF and ours+UNF. }
\label{fig:UNFdiffT2}
\end{figure*}

\begin{figure*} [htb!]
\centering
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaGNF/GNF0_9-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaGNF/GNF0_7-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaGNF/GNF0_5-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaGNF/GNF0_3-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaGNF/GNF0_1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{GNF($\lambda_{r}$=0.9)}
			\makebox[3.1cm]{GNF($\lambda_{r}$=0.7)}
			\makebox[3.1cm]{GNF($\lambda_{r}$=0.5)}
			\makebox[3.1cm]{GNF($\lambda_{r}$=0.3)}
			\makebox[3.1cm]{GNF($\lambda_{r}$=0.1)}\\
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaGNF/ourGNF0_9-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaGNF/ourGNF0_7-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaGNF/ourGNF0_5-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaGNF/ourGNF0_3-eps-converted-to.pdf}
			\includegraphics[width=3.1cm]{Fig/results/StrengthenParaGNF/ourGNF0_1-eps-converted-to.pdf}\\
			\makebox[3.1cm]{our+GNF($\lambda_{r}$=0.9)}
			\makebox[3.1cm]{our+GNF($\lambda_{r}$=0.7)}
			\makebox[3.1cm]{our+GNF($\lambda_{r}$=0.5)}
			\makebox[3.1cm]{our+GNF($\lambda_{r}$=0.3)}
			\makebox[3.1cm]{our+GNF($\lambda_{r}$=0.1)}\\
\caption{Results by setting with different $\sigma_{r}$ for GNF and ours+GNF. }
\label{fig:GNFdiffSigma}
\end{figure*}

\textit{Algorithms stability.}
Our clustering increases the stability of the original algorithms, making them more robust against parameter variations. Fig.~\ref{fig:UNFdiffT2} shows the results by UNF with different thresholds $T$. For the original UNF, the visual results are quite sensitive to different thresholds. By embedding our approach, the sharp edges are generally preserved well, even with different $T$ (except $T=0.9$).
Similarly, Fig.~\ref{fig:GNFdiffSigma} shows results by GNF and the embedded version (ours+GNF), with different $\sigma_{r}$ values. This demonstrates that our approach can significantly boost the stability of existing mesh denoising methods, thus relaxing users' parameter tuning process.

\begin{table}[htbp]\scriptsize
    \centering
    \caption{Quantitative comparisons. }\label{table1}
    \begin{tabular}{|l|l|l|l|l|}\hline

    Models & Methods & \tabincell{l}{MSAE\\$(\times10^{-2})$} & \tabincell{l}{$E_v$\\$(\times10^{-3})$} & Parameters \\

    \hline
    \tabincell{l}{Icosahedron\\($ \sigma_{n}=0.2l_{e} $)\\(Fig.~\ref{fig:Icosahedron_0.2})\\$\left|V\right|$: 10242 \\$\left|F\right|$: 20480\\ $D_{thr}=0.0012$} &
    \tabincell{l}{ \uppercase\expandafter{L0} \\
    \uppercase\expandafter{BNF} \\
    \uppercase\expandafter{our+BNF} \\
    \uppercase\expandafter{UNF}\\
    \uppercase\expandafter{our+UNF}\\
    \uppercase\expandafter{GNF} \\
    \uppercase\expandafter{our+GNF}\\
    \uppercase\expandafter{L1}\\
    \uppercase\expandafter{our+L1}\\

    }
    & \tabincell{l}{0.271\\12.42\\0.281\\26.29\\0.419\\0.4522\\\textbf{0.255}\\1.767\\0.279}
    & \tabincell{l}{2.02\\1.847\\1.816\\2.516\\1.819\\1.806\\\textbf{1.096}\\1.818\\1.811}
	& \tabincell{l}{$(1000,0.002,0.0001)$\\$(0.23,30,15)$\\$ (0.23,30,15) $\\$ (0.7,20,50) $\\$(0.7,20,50) $\\$ (2, 1, 0.25,20,10) $\\$ (2, 1, 0.25,20,10) $\\$ (90,60,30) $\\$(90,60,30)$}
    \\ \hline
    \tabincell{l}{Cube\\($ \sigma_{n}=0.8l_{e} $)\\(Fig.~\ref{fig:Cube_0.8})\\$\left|V\right|$: 6146 \\$\left|F\right|$: 12288\\ $D_{thr}=0.002$} &
    \tabincell{l}{\uppercase\expandafter{L0} \\
    \uppercase\expandafter{BNF} \\
    \uppercase\expandafter{our+BNF} \\
    \uppercase\expandafter{UNF}\\
    \uppercase\expandafter{our+UNF}\\
    \uppercase\expandafter{GNF} \\
    \uppercase\expandafter{our+GNF}\\
    \uppercase\expandafter{L1}\\
    \uppercase\expandafter{our+L1}\\

    }
    & \tabincell{l}{5.46\\580.23\\\textbf{0.481}\\696.95\\5.857\\171.85\\71.147\\151.61\\9.675}
    & \tabincell{l}{1.59\\10.736\\1.741\\16.531\\2.058\\\textbf{1.379}\\1.454\\1.748\\1.949}
	& \tabincell{l}{$(1000,0.002,0.1)$\\$(0.45,200,100)$\\$ (0.45,200,100) $\\$ (0, 150, 300) $\\$(0, 150, 300) $\\$ (2,1,0.25,80,40) $\\$(2,1,0.25,80,40) $\\$ (120,300,150) $\\$(120,300,150)$}
    \\ \hline
    \tabincell{l}{PartLP\\($ \sigma_{n}=0.1l_{e} $)\\(Fig.~\ref{fig:part_LP_0.2})\\$\left|V\right|$: 4261 \\$\left|F\right|$: 8530\\ $D_{thr}=0.015$} &
    \tabincell{l}{ \uppercase\expandafter{L0} \\
    \uppercase\expandafter{BNF} \\
    \uppercase\expandafter{our+BNF} \\
    \uppercase\expandafter{UNF}\\
    \uppercase\expandafter{our+UNF}\\
    \uppercase\expandafter{GNF}\\
    \uppercase\expandafter{our+GNF}\\
    \uppercase\expandafter{L1}\\
    \uppercase\expandafter{our+L1}\\

    }
    & \tabincell{l}{\textbf{0.5}\\4.024\\4.025\\4.561\\4.038\\24.482\\14.378\\4.040\\4.044}
    & \tabincell{l}{1.428\\1.429\\1.429\\1.427\\1.428\\\textbf{1.417}\\1.422\\1.425\\1.425}
	& \tabincell{l}{$\textbf{default}$\\$(0.35,20,10)$\\$ (0.35,20,10) $\\$ (0.35, 20, 50) $\\$(0.35, 20, 50) $\\$ (2, 1,0.35,20,10) $\\$(2, 1,0.35,20,10) $\\$ (30, 20, 10) $\\$(30, 20, 10)$}
    \\ \hline
   \tabincell{l}{CAD\\($ \sigma_{n}=0.5l_{e} $)\\(Fig.~\ref{fig:cad_0.5})\\$\left|V\right|$: 19398 \\$\left|F\right|$: 38792\\ $D_{thr}=0.0008$} &
    \tabincell{l}{  \uppercase\expandafter{L0} \\
    \uppercase\expandafter{BNF} \\
    \uppercase\expandafter{our+BNF} \\
    \uppercase\expandafter{UNF}\\
    \uppercase\expandafter{our+UNF}\\
    \uppercase\expandafter{GNF} \\
    \uppercase\expandafter{our+GNF}\\
    \uppercase\expandafter{L1}\\
    \uppercase\expandafter{our+L1}\\

    }
    & \tabincell{l}{\textbf{2.822}\\40.149\\9.087\\106.94\\\textbf{9.087}\\59.443\\17.479\\23.241\\10.926}
    & \tabincell{l}{\textbf{0.74}\\0.865\\0.854\\0.869\\0.854\\0.834\\0.872\\0.840\\0.787}
	& \tabincell{l}{$(1000,0.002,10)$\\$( 0.4,40,20)$\\$ ( 0.4,40,20) $\\$ ( 0.4,40,100) $\\$( 0.4,40,100) $\\$ (2, 1, 0.5,40,20) $\\$(2, 1, 0.5,40,20) $\\$ (90,100,50) $\\$(90,100,50)$}
    \\ \hline
   \tabincell{l}{fandisk\\($ \sigma_{n}=0.2l_{e} $)\\(Fig.~\ref{fig:fandisk0.2})\\$\left|V\right|$: 6475 \\$\left|F\right|$: 12946\\ $D_{thr}=0.0011$} &
    \tabincell{l}{\uppercase\expandafter{L0} \\
    \uppercase\expandafter{BNF} \\
    \uppercase\expandafter{our+BNF} \\
    \uppercase\expandafter{UNF}\\
    \uppercase\expandafter{our+UNF}\\
    \uppercase\expandafter{GNF} \\
    \uppercase\expandafter{our+GNF}\\
    \uppercase\expandafter{L1}\\
    \uppercase\expandafter{our+L1}\\
    }
    & \tabincell{l}{\textbf{3.38}\\12.154\\12.591\\16.023\\15.504\\16.882\\19.919\\15.026\\14.758}
    & \tabincell{l}{\textbf{0.232}\\0.865\\0.854\\0.869\\0.854\\0.834\\0.872\\0.840\\0.787}
	& \tabincell{l}{$(3000,0.002,100)$\\$(0.35, 20, 10)$\\$ ( 0.35, 20, 10) $\\$ (0.35,20,50) $\\$(0.35,20,50) $\\$ (2, 1,0.35,20,10) $\\$(2, 1,0.35,20,10) $\\$ (30, 20, 10) $\\$(30, 20, 10)$}
    \\ \hline
       \tabincell{l}{dodecahedral\\($ \sigma_{n}=0.2l_{e} $)\\(Fig.~\ref{fig:dodecahedral_0.2})\\$\left|V\right|$: 4610 \\$\left|F\right|$: 9216\\ $D_{thr}=0.004$} &
    \tabincell{l}{ \uppercase\expandafter{L0} \\
    \uppercase\expandafter{BNF} \\
    \uppercase\expandafter{our+BNF} \\
    \uppercase\expandafter{UNF}\\
    \uppercase\expandafter{our+UNF}\\
    \uppercase\expandafter{GNF} \\
    \uppercase\expandafter{our+GNF}\\
    \uppercase\expandafter{L1}\\
    \uppercase\expandafter{our+L1}\\
    }
    & \tabincell{l}{\textbf{2.95}\\43.522\\20.263\\46.141\\11.660\\14.440\\20.216\\42.789\\16.497}
    & \tabincell{l}{2.15\\2.046\\\textbf{2.044}\\2.047\\\textbf{2.044}\\2.051\\2.049\\2.046\\2.045}
	& \tabincell{l}{$(3000,0.001,0.001)$\\$(0.28,80,40)$\\$ (0.28,80,40)$\\$ (0.7,20,50) $\\$(0.7,20,50) $\\$ (2, 1,0.35,10,5) $\\$(2, 1,0.35,10,5) $\\$ (45,80,40) $\\$(45,80,40)$}
    \\ \hline

    \end{tabular}
\end{table}

\subsection{Quantitative Evaluations}
Besides the above visual comparisons, we also show the quantitative evaluations for the original methods and the embedded versions. Specifically, we employ $E_v$ and MSAE (Mean Square Angular Error) to respectively evaluate the errors on vertex positions and face normals, as suggested by previous works \cite{sun2007fast,Zheng2011,Lu2016}. $E_v$ is the $L^2$ vertex-based mesh-to-mesh error metric, and MSAE measures the mean square angular error between the face normals of the denoised mesh and those of the ground truth. These two metrics are calculated between the denoised results and their corresponding ground-truth models. L0 has six parameters, we set $\mu_{\beta}$, $\beta$ and $\mu_{\alpha}$ as suggested by its authors, and the remaining three parameters are ($\beta_{max}$, $\alpha$, $\lambda$).

Table \ref{table1} lists $E_v$ and MSAE over some models for all the compared methods. For most cases, the results produced by the embedded versions (ours+original method) have smaller MSAE and $E_v$ compared to the results denoised by the original methods, especially for large noise. This shows the improvement of our clustering method upon the original methods, from the quantity perspective. Analogous to previous research \cite{sun2007fast,Lu2016}, we also found that the visual comparisons might be inconsistent with $E_v$.
It should be noted that, for relatively small noise (e.g., $\sigma=0.05l_{e}$), the embedded methods usually have similar performance to the original methods.