**Name**

**flstb_boundary** Discretized level line in bilinear interpolated image

**Command Synopsis**

**flstb_boundary** [-p *precision*] *image* *tree* *shape* *dualchain* *boundary*

-pprecision: Approximate max number of points per dual pixel

image: The original image

tree: A tree of shapes of the image

shape: The shape whose boundary is to be computed

dualchain: List of dual-pixels (dualchain)

boundary: boundary computed (output Flist)

**Function Summary**

Flist flstb_boundary (pPrecision , pImage , pTree , pShape , pDualchain , pBoundary , ctabtabSaddleValues )

int *pPrecision ;

Fimage pImage ;

Shapes pTree ;

Shape pShape ;

Flist pDualchain , pBoundary ;

char *ctabtabSaddleValues ;

**Description**

This module extracts a polygonal approximation of a level line in a bilinear
interpolated image (see module `flst_bilinear`). A parameter indicates
the approximate maximum number of points of discretization in each dual
pixel. The sampling is done in the manner described below. The result is in
the field `boundary` of the shape, as a list of 2-D points. If the
level line is closed, the last point coincides with the first one. If the
level line is open, the first and last points are on the rectangle
[0, *W*]×[0, *H*].

The curve is oriented so that the shape lies at the left of the curve. In this
manner, the orientation of a closed line is counterclockwise. The entry point
in each dual pixel (that is either at a data point or on a dual edgel) is put
in the curve. Then if there is no maximal curvature point on the level line in
the interior of the dual pixel, it is sampled uniformly (with step
1/`precision`) along *x* (resp. *y*) if
the local map *y* = *f* (*x*) (resp. *x* = *f* (*y*)) representing the curve is such that
| *f'*| 1.

If there is a maximal curvature point, it is sampled uniformly along the
appropriate direction (decided in the same manner as above) before reaching
the maximal curvature point, this point is inserted in the curve, and the
curve is then sampled along the other direction after this point.
The maximal number is thus 2×`precision`+1.

For parameter `ctabtabSaddleValues`, see documentation of module
`flstb_dualchain`, which is used by this one.

The `tree` parameter is a tree of shapes associated to `image`,
as returned by `flst_bilinear` or `flstb_quantize`.

*Caveat*: the algorithm has no means to verify that the `tree` is
really associated to the bilinear interpolation of `image`, and in the
negative case, the module will fail with an error message, or worse, with a
memory error. For example, if the `tree` is extracted with the module
`flst` (which does not interpret the image as a bilinear
interpolation), this will fail (unless there is no saddle point in the
image, i.e., no *T*-junction).

**See Also**

`flstb_tv`, `ll_boundaries2`, `ll_boundaries`, `ll_edges`, `ll_extract`.

**Version 1.0**

Last Modification date : Thu Nov 29 20:23:56 2001

**Author**

Pascal Monasse