Regularization term nurbs surface fitting

263 Views Asked by At

When fitting b-spline curves $c(u)$ to points, it is usual to write a cost function such as:

$$ \sum_{k=1}^{n} \left( [(p_k-c(u))^T\cdot n_k]^2 \right) $$

The function is then derived so as to express unknow control points $P_i$ and then solve for them.

Now when it turns to fitting a b-spline surface $s(u,v)$ to a points cloud, it is usual to see a cost function with several components, to both 1) stick to points $p_k$ and 2) get a smooth surface. 2) is called the regularization term. The cost function is given by:

$$ \sum_{k=1}^{n} \left( [(p_k-s(u,v))^T\cdot n_k]^2 \right) + \lambda \int \|\ddot{s}(u,v)\|^2dt $$

Though I have not been able to find a paper or book where the surface fitting cost is derived, even the NURBS book does not mention it. I think I could find out how to derive component 1) on my own (extending the way things are done for the curves), but I have really no idea how to derive component 2).

Any idea? Any link to websites, books, or papers?

---------- EDIT -----------

$\ddot{s}(u,v)$ is not well defined and only "captures" that the regularization is aimed at mitigating the deformations of the resulting surface. A more accurate an widespread cost function is given by the thin plate spline method:

$$ \sum_{k=1}^{n} \left( [(p_k-s(u,v))^T\cdot n_k]^2 \right) + \lambda \iint \left[\left( \frac{\partial^2s}{\partial u^2}\right)^2 + 2 \left( \frac{\partial^2s}{\partial u \partial v}\right)^2 + \left( \frac{\partial^2s}{\partial v^2}\right)^2 \right] du dv $$

Now the question is how do I get from this complex formula to a numerical method (or say algorithm)? The papers I have seen (and I have read a lot) never mention this step. I does really not look obvious to me...

1

There are 1 best solutions below

8
On

In your equation, it's not even clear what $\ddot{s}$ means. But these "smoothing" terms are typically some heuristic measure of the "energy" required to bend the curve or surface. In other words, small values of this term make the geometry "smooth" in some vague sense.

Many sorts of smoothing terms are available, but they typically don't have a very good physical interpretation. Conversely, the expressions that make physical sense lead to nasty non-linear computations. There is a good discussion of this topic in Henry Moreton's thesis.

Perhaps the simplest approach is the so-called thin plate spline. Also see here.

Fortran source code for 1D spline smoothing can be found in the examples from Carl de Boor's book "A Practical Guide to Splines". Updated versions are available also on his web site. Presumably the algorithms can be extended to 2D (i.e. to surfaces), though I have never tried this.

Another good place to look for code is "The NURBS Book" by Piegl and Tiller. I don't know if it covers exactly the technique you're asking about, but it describes general techniques for least-squares fitting with NURBS surfaces, which might be adequate for your needs.