next up previous contents index
Next: iter_fksmooth Up: Reference Previous: gass   Contents   Index


$ \bigcirc$Name

gcsf Generalized Curve Shortening Flow of a curve

$ \bigcirc$Command Synopsis

gcsf [-g g] [-f f] [-l l] [-e eps] [-n n] [-r r] [-i i] [-c] [-a a] [-v] in out

-g g : power of the curvature (double >   1/3.) (default 1)

-f f : first scale (default 0.)

-l l : last scale (default: 1.0)

-e eps : relative sampling precision (-log10 scale), in [2,13] (default 3.)

-n n : minimal number of iterations (default: 1)

-r r : bounding box radius (default: minimal)

-i i : number of iterations

-c : do not convexify last iteration

-a a : relative eroded area (-log10 area), in [2,13] (default 4.)

-v : verbose mode

in : input (Dlists)

out : output (Dlists)

$ \bigcirc$Function Summary

Dlists gcsf (in , out , gam , first , last , eps , area , n , r , v , iter , conv )

Dlists in , out ;

double *first , *last , *eps , *area , *r , *gam ;

char *v , *conv ;

int *n , *iter ;

$ \bigcirc$Description

This module is a generalization of the gass module and computes the evolution of the curve in between scales t = f and t = l according to the geometric equation [CM01]

$\displaystyle {\frac{{\partial C}}{{\partial t}}}$ = (t$\displaystyle \kappa$)g $\displaystyle \bf N$.

In this equation, C is the current point of the curve, $ \bf N$ the normal vector to the curve, $ \kappa$ its local curvature, and g must satisfy g > 1/3. The factor t is a choice of renormalizing the scale, making the equation zoom covariant (if you zoom the curve with a factor $ \lambda$ then the scale should also be zoomed by $ \lambda$).

Like the affine erosion, the algorithm is based on area computation. Nevertheless, there is no simple relation between the area erosion and the erosion scale, since it depends on the curve and of the power of the curvature used as parameter. As a consequence, the algorithm becomes slower and slower as g increases.

The options -i and -c allow to fix the number of iterations (instead of the final scale) and not to convexify the last step. We left them as debugging options.

The area used for curvature approximation is given by the -a and -r options. If r is not precised, the program starts by computing a rectangle containing all the curves. The area of the chord-arc sets is obtained by multiplying the area of the bounding box by 10-a. In general, a = 4 is sufficient. For non smooth curves (typically polygons with long edges and very sharp angles) and large values of g, larger values may be necessary.

The curve sampling is given by using the -e option. Beyond values of order 4, the computations become very slow and memory consuming.

Troubleshooting: a very sensitive part of the algorithm is the convexification step (cf [Moi98]). It is a priori quite stable by now, although some optimization compilation options may lead to weird and dramatic results with recent compilers (gcc-3.0).

$ \bigcirc$See Also


$ \bigcirc$Version 1.2

Last Modification date : Wed Apr 9 21:28:10 2003

$ \bigcirc$Author

Frederic Cao, Lionel Moisan

next up previous contents index
Next: iter_fksmooth Up: Reference Previous: gass   Contents   Index
mw 2004-05-05