Update the trunk to the OpenCV's CVS (2008-07-14)
[opencv] / docs / ref / opencvref_cv.htm
index 0f98b15..da057d8 100644 (file)
@@ -32,6 +32,7 @@
 <li><a href="#cv_motion_motempl">Motion Templates</a>
 <li><a href="#cv_motion_tracking">Object Tracking</a>
 <li><a href="#cv_motion_optflow">Optical Flow</a>
+<li><a href="#cv_motion_feature">Feature Matching</a>
 <li><a href="#cv_motion_estimators">Estimators</a>
 </ul>
 <li><a href="#cv_pattern">Pattern Recognition</a>
@@ -434,7 +435,7 @@ void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR )
 <dt>interpolation<dd>Interpolation method:<ul>
     <li>CV_INTER_NN - nearest-neighbor interpolation,
     <li>CV_INTER_LINEAR - bilinear interpolation (used by default)
-    <li>CV_INTER_AREA - resampling using pixel area relation. It is preferred method for image
+    <li>CV_INTER_AREA - resampling using pixel area relation. It is the preferred method for image
     decimation that gives moire-free results.
     In case of zooming it is similar to <code>CV_INTER_NN</code> method.
     <li>CV_INTER_CUBIC - bicubic interpolation.
@@ -798,41 +799,43 @@ operation, for "top hat" and "black hat".
 <pre>
 void cvSmooth( const CvArr* src, CvArr* dst,
                int smoothtype=CV_GAUSSIAN,
-               int param1=3, int param2=0, double param3=0, double param4=0 );
+               int size1=3, int size2=0, double sigma1=0, double sigma2=0 );
 </pre><p><dl>
 <dt>src<dd>The source image.
 <dt>dst<dd>The destination image.
 <dt>smoothtype<dd>Type of the smoothing operation:<ul>
 <li>CV_BLUR_NO_SCALE (simple blur with no scaling) -
               for each pixel the result is a sum of pixels values in
-              <code>param1</code>&times;<code>param2</code> neighborhood of the pixel.
+              <code>size1</code>&times;<code>size2</code> neighborhood of the pixel.
               If the neighborhood size varies from pixel to pixel, compute the sums
               using integral image (<a href="#decl_cvIntegral">cvIntegral</a>).
-<li>CV_BLUR (simple blur) - for each pixel the result is a mean of pixel values
-              <code>param1</code>&times;<code>param2</code> neighborhood of the pixel.
+<li>CV_BLUR (simple blur) - for each pixel the result is the average value (brightness/color)
+              of <code>size1</code>&times;<code>size2</code> neighborhood of the pixel.
 <li>CV_GAUSSIAN (Gaussian blur) - the image is smoothed using the Gaussian kernel
-              of size <code>param1</code>&times;<code>param2</code>.
-              <code>param3</code> and <code>param4</code> may optionally be
+              of aperture size <code>size1</code>&times;<code>size2</code>.
+              <code>sigma1</code> and <code>sigma2</code> may optionally be
               used to specify shape of the kernel.
 <li>CV_MEDIAN (median blur) - the image is smoothed using medial filter
-              of size <code>param1</code>&times;<code>param1</code>.
+              of size <code>size1</code>&times;<code>size1</code> (i.e. only square aperture can be used).
               That is, for each pixel the result is the median computed
-              over <code>param1</code>&times;<code>param1</code> neighborhood.
+              over <code>size1</code>&times;<code>size1</code> neighborhood.
 <li>CV_BILATERAL (bilateral filter) -
               the image is smoothed using a bilateral 3x3 filter
-              with color sigma=<code>param1</code> and
-              space sigma=<code>param2</code>.
+              with color sigma=<code>sigma1</code> and
+              spatial sigma=<code>sigma2</code>. If <code>size1!=0</code>, then
+              a circular kernel with diameter <code>size1</code> is used;
+              otherwise the diameter of the kernel is computed from <code>sigma2</code>.
               Information about bilateral filtering
               can be found at <a href="http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html">
               http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html</a>
 </ul>
-<dt>param1<dd>The first parameter of smoothing operation. It should be odd (1, 3, 5, ...),
-              so that a pixel neighborhood used for smoothing operation is symmetrical
-              relative to the pixel.
-<dt>param2<dd>The second parameter of smoothing operation. In case of simple scaled/non-scaled and
-              Gaussian blur if <code>param2</code> is zero, it is set to <code>param1</code>.
-              When not 0, it should be odd too.
-<dt>param3<dd>In case of Gaussian kernel this parameter may specify Gaussian sigma (standard deviation).
+<dt>size1<dd>The first parameter of smoothing operation. It should be odd (1, 3, 5, ...),
+             so that a pixel neighborhood used for smoothing operation is symmetrical
+             relative to the pixel.
+<dt>size2<dd>The second parameter of smoothing operation. In case of simple scaled/non-scaled and
+             Gaussian blur if <code>size2</code> is zero, it is set to <code>size1</code>.
+             When not 0, it should be odd too.
+<dt>sigma1<dd><p>In case of Gaussian kernel this parameter may specify Gaussian sigma (standard deviation).
               If it is zero, it is calculated from the kernel size:<br>
               <pre>
               sigma = (n/2 - 1)*0.3 + 0.8, where n=param1 for horizontal kernel,
@@ -840,20 +843,29 @@ void cvSmooth( const CvArr* src, CvArr* dst,
               </pre>
               With the standard sigma for small kernels (3&times;3 to 7&times;7) the performance is better.
               If <code>param3</code> is not zero, while <code>param1</code> and <code>param2</code>
-              are zeros, the kernel size is calculated from the sigma (to provide accurate enough operation).
-<dt>param4<dd>In case of non-square Gaussian kernel the parameter may be used to specify a different
-              (from <code>param3</code>) sigma in the vertical direction.
+              are zeros, the kernel size is calculated from the sigma (to provide accurate enough operation).</p>
+
+              <p>In case of Bilateral filter the parameter specifies color sigma; the larger the value,
+              the stronger the pasterization effect of the filter is.</p>
+<dt>sigma2<dd><p>In case of non-square Gaussian kernel the parameter may be used to specify a different
+              (from <code>param3</code>) sigma in the vertical direction.</p>
+
+              <p>In case of Bilateral filter the parameter specifies spatial sigma; the larger the value,
+              the stronger the blurring effect of the filter. Note that with large <code>sigma2</code>
+              the processing speed decreases substantionally, so it is recommended to limit the kernel
+              size using the parameter <code>size1</code>.</p>
 </dl><p>
-The function <code>cvSmooth</code> smoothes image using one of several methods. Every of the methods
-has some features and restrictions listed below</p>
-<p>Blur with no scaling works with single-channel images only and supports accumulation of
+The function <code>cvSmooth</code> smoothes image using one of the pre-defined methods. Every of the methods
+has some features and restrictions listed below:</p>
+<ul>
+<li>Blur with no scaling works with single-channel images only and supports accumulation of
 8u to 16s format (similar to <a href="#decl_cvSobel">cvSobel</a> and <a href="#decl_cvLaplace">cvLaplace</a>)
-and accumulation of 32f to 32f format.</p><p>
-Simple blur and Gaussian blur support 1- or 3-channel, 8-bit, 16-bit and 32-bit floating point images.
-These two methods can process images in-place.</p>
-<p>Median and bilateral filters work with 1- or 3-channel 8-bit images and can not process images
-in-place.</p>
-
+and accumulation of 32f to 32f format.</li>
+<li>Simple blur and Gaussian blur support 1- or 3-channel, 8-bit, 16-bit and 32-bit floating-point images.
+These two methods can process images in-place.</li>
+<li>Median filter works with 1- or 3-channel 8-bit images and can not process images in-place.</li>
+<li>Bilateral filter works with 1- or 3-channel, 8-bit or 32-bit floating-point images and can not process images in-place.</li>
+</ul>
 
 <hr><h3><a name="decl_cvFilter2D">Filter2D</a></h3>
 <p class="Blurb">Applies linear filter to image</p>
@@ -3785,6 +3797,68 @@ the readiness flag for the corresponding image can be set in the next call (i.e.
 for all the image pairs except the very first one <code>CV_LKFLOW_PYR_A_READY</code> is set).
 </p>
 
+<hr><h2><a name="cv_motion_feature">Feature Matching</a></h2>
+
+<hr><h3><a name="decl_cvCreateFeatureTree">CreateFeatureTree</a></h3>
+<p class="Blurb">Constructs a tree of feature vectors</p>
+<pre>
+CvFeatureTree* cvCreateFeatureTree(CvMat* desc);
+</pre><p><dl>
+<dt>desc<dd>n x d matrix of n d-dimensional feature vectors (CV_32FC1 or CV_64FC1).
+</dl></p><p>
+The function <code>cvCreateFeatureTree</code> constructs a balanced kd-tree index of 
+the given feature vectors. The lifetime of the desc matrix must exceed that 
+of the returned tree. I.e., no copy is made of the vectors.
+</p>
+
+<hr><h3><a name="decl_cvReleaseFeatureTree">ReleaseFeatureTree</a></h3>
+<p class="Blurb">Destroys a tree of feature vectors</p>
+<pre>
+void cvReleaseFeatureTree(CvFeatureTree* tr);
+</pre><p><dl>
+<dt>tr<dd>pointer to tree being destroyed.
+</dl></p><p>
+The function <code>cvReleaseFeatureTree</code> deallocates the given kd-tree.
+</p>
+
+<hr><h3><a name="decl_cvFindFeatures">FindFeatures</a></h3>
+<p class="Blurb">Finds approximate k nearest neighbors of given vectors using best-bin-first search</p>
+<pre>
+void cvFindFeatures(CvFeatureTree* tr, CvMat* desc,
+                   CvMat* results, CvMat* dist, int k=2, int emax=20);
+</pre><p><dl>
+<dt>tr<dd>pointer to kd-tree index of reference vectors.
+<dt>desc<dd>m x d matrix of (row-)vectors to find the nearest neighbors of.
+<dt>results<dd>m x k set of row indices of matching vectors (referring to matrix passed to cvCreateFeatureTree). Contains -1 in some columns if fewer than k neighbors found.
+<dt>dist<dd>m x k matrix of distances to k nearest neighbors.
+<dt>k<dd>The number of neighbors to find.
+<dt>emax<dd>The maximum number of leaves to visit.
+</dl></p><p>
+The function <code>cvFindFeatures</code> finds (with high probability) the <code>k</code> nearest
+neighbors in <code>tr</code> for each of the given (row-)vectors in <code>desc</code>, using
+best-bin-first searching (<a href="#paper_beis97">[Beis97]</a>).
+The complexity of the entire operation is at most <code>O(m*emax*log2(n))</code>, 
+where <code>n</code> is the number of vectors in the tree.
+</p>
+
+<hr><h3><a name="decl_cvFindFeaturesBoxed">FindFeaturesBoxed</a></h3>
+<p class="Blurb">Orthogonal range search</p>
+<pre>
+int cvFindFeaturesBoxed(CvFeatureTree* tr,
+                       CvMat* bounds_min, CvMat* bounds_max,
+                       CvMat* results);
+</pre><p><dl>
+<dt>tr<dd>pointer to kd-tree index of reference vectors.
+<dt>bounds_min<dd>1 x d or d x 1 vector (CV_32FC1 or CV_64FC1) giving minimum value for each dimension.
+<dt>bounds_max<dd>1 x d or d x 1 vector (CV_32FC1 or CV_64FC1) giving maximum value for each dimension.
+<dt>results<dd>1 x m or m x 1 vector (CV_32SC1) to contain output row indices (referring to matrix passed to cvCreateFeatureTree).
+</dl></p><p>
+The function <code>cvFindFeaturesBoxed</code> performs orthogonal range seaching on the
+given kd-tree. That is, it returns the set of vectors <code>v</code> in <code>tr</code> that satisfy
+<code>bounds_min[i] <= v[i] <= bounds_max[i], 0 <= i < d</code>, where <code>d</code> is the dimension
+of vectors in the tree. 
+The function returns the number of such vectors found.
+</p>
 
 <hr><h2><a name="cv_motion_estimators">Estimators</a></h2>
 
@@ -4763,6 +4837,33 @@ actual coordinates of image points and the ones computed using
 </p>
 
 
+<hr><h3><a name="decl_cvCalibrationMatrixValues">CalibrationMatrixValues</a></h3>
+<p class="Blurb">Finds intrinsic and extrinsic camera parameters using calibration pattern</p>
+<pre>
+void cvCalibrationMatrixValues( const CvMat *calibMatr,
+                                int imgWidth, int imgHeight,
+                                double apertureWidth=0, double apertureHeight=0,
+                                double *fovx=NULL, double *fovy=NULL,
+                                double *focalLength=NULL,
+                                CvPoint2D64f *principalPoint=NULL,
+                                double *pixelAspectRatio=NULL );
+</pre><p><dl>
+<dt>calibMatr<dd>The matrix of intrinsic parameters, e.g. computed by <a href="#decl_cvCalibrateCamera2">cvCalibrateCamera2</a>
+<dt>imgWidth<dd>Image width in pixels
+<dt>imgHeight<dd>Image height in pixels
+<dt>apertureWidth<dd>Aperture width in realworld units (optional input parameter)
+<dt>apertureHeight<dd>Aperture width in realworld units (optional input parameter)
+<dt>fovx<dd>Field of view angle in x direction in degrees (optional output parameter)
+<dt>fovx<dd>Field of view angle in y direction in degrees (optional output parameter)
+<dt>focalLength<dd>Focal length in realworld units (optional output parameter)
+<dt>principalPoint<dd>The principal point in realworld units (optional output parameter)
+<dt>pixelAspectRatio<dd>The pixel aspect ratio ~ fy/fx (optional output parameter)
+</dl></p><p>
+The function <code>cvCalibrationMatrixValues</code> computes various useful camera (sensor/lens)
+characteristics using the computed camera calibration matrix, image frame resolution in pixels
+and the physical aperture size.</p>
+
+
 <hr><h3><a name="decl_cvFindExtrinsicCameraParams2">FindExtrinsicCameraParams2</a></h3>
 <p class="Blurb">Finds extrinsic camera parameters for particular view</p>
 <pre>
@@ -5220,72 +5321,75 @@ to use multi-channel <code>Nx1</code> or <code>1xN</code> arrays.
 <table width="100%">
 <tr>
 <td width="25%"><a href="#decl_cvCalcBackProject">CalcBackProject</a></td>
-<td width="25%"><a href="#decl_cvCalibrateCamera2">CalibrateCamera2</a></td>
-<td width="25%"><a href="#decl_cvConvexityDefects">ConvexityDefects</a></td>
+<td width="25%"><a href="#decl_cvCalcBackProjectPatch">CalcBackProjectPatch</a></td>
+<td width="25%"><a href="#decl_cvCalcEMD2">CalcEMD2</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcBackProjectPatch">CalcBackProjectPatch</a></td>
-<td width="25%"><a href="#decl_cvCamShift">CamShift</a></td>
-<td width="25%"><a href="#decl_cvCopyHist">CopyHist</a></td>
+<td width="25%"><a href="#decl_cvCalcGlobalOrientation">CalcGlobalOrientation</a></td>
+<td width="25%"><a href="#decl_cvCalcHist">CalcHist</a></td>
+<td width="25%"><a href="#decl_cvCalcImageHomography">CalcImageHomography</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcEMD2">CalcEMD2</a></td>
-<td width="25%"><a href="#decl_cvCanny">Canny</a></td>
-<td width="25%"><a href="#decl_cvCopyMakeBorder">CopyMakeBorder</a></td>
+<td width="25%"><a href="#decl_cvCalcMotionGradient">CalcMotionGradient</a></td>
+<td width="25%"><a href="#decl_cvCalcOpticalFlowBM">CalcOpticalFlowBM</a></td>
+<td width="25%"><a href="#decl_cvCalcOpticalFlowHS">CalcOpticalFlowHS</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcGlobalOrientation">CalcGlobalOrientation</a></td>
-<td width="25%"><a href="#decl_cvCheckContourConvexity">CheckContourConvexity</a></td>
-<td width="25%"><a href="#decl_cvCornerEigenValsAndVecs">CornerEigenValsAndVecs</a></td>
+<td width="25%"><a href="#decl_cvCalcOpticalFlowLK">CalcOpticalFlowLK</a></td>
+<td width="25%"><a href="#decl_cvCalcOpticalFlowPyrLK">CalcOpticalFlowPyrLK</a></td>
+<td width="25%"><a href="#decl_cvCalcPGH">CalcPGH</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcHist">CalcHist</a></td>
-<td width="25%"><a href="#decl_cvClearHist">ClearHist</a></td>
-<td width="25%"><a href="#decl_cvCornerHarris">CornerHarris</a></td>
+<td width="25%"><a href="#decl_cvCalcProbDensity">CalcProbDensity</a></td>
+<td width="25%"><a href="#decl_cvCalcSubdivVoronoi2D">CalcSubdivVoronoi2D</a></td>
+<td width="25%"><a href="#decl_cvCalibrateCamera2">CalibrateCamera2</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcImageHomography">CalcImageHomography</a></td>
-<td width="25%"><a href="#decl_cvClearSubdivVoronoi2D">ClearSubdivVoronoi2D</a></td>
-<td width="25%"><a href="#decl_cvCornerMinEigenVal">CornerMinEigenVal</a></td>
+<td width="25%"><a href="#decl_cvCamShift">CamShift</a></td>
+<td width="25%"><a href="#decl_cvCanny">Canny</a></td>
+<td width="25%"><a href="#decl_cvCheckContourConvexity">CheckContourConvexity</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcMotionGradient">CalcMotionGradient</a></td>
+<td width="25%"><a href="#decl_cvClearHist">ClearHist</a></td>
+<td width="25%"><a href="#decl_cvClearSubdivVoronoi2D">ClearSubdivVoronoi2D</a></td>
 <td width="25%"><a href="#decl_cvCompareHist">CompareHist</a></td>
-<td width="25%"><a href="#decl_cvCreateConDensation">CreateConDensation</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcOpticalFlowBM">CalcOpticalFlowBM</a></td>
 <td width="25%"><a href="#decl_cvComputeCorrespondEpilines">ComputeCorrespondEpilines</a></td>
-<td width="25%"><a href="#decl_cvCreateContourTree">CreateContourTree</a></td>
+<td width="25%"><a href="#decl_cvConDensInitSampleSet">ConDensInitSampleSet</a></td>
+<td width="25%"><a href="#decl_cvConDensUpdateByTime">ConDensUpdateByTime</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcOpticalFlowHS">CalcOpticalFlowHS</a></td>
-<td width="25%"><a href="#decl_cvConDensInitSampleSet">ConDensInitSampleSet</a></td>
-<td width="25%"><a href="#decl_cvCreateHist">CreateHist</a></td>
+<td width="25%"><a href="#decl_cvContourArea">ContourArea</a></td>
+<td width="25%"><a href="#decl_cvContourFromContourTree">ContourFromContourTree</a></td>
+<td width="25%"><a href="#decl_cvConvertPointsHomogenious">ConvertPointsHomogenious</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcOpticalFlowLK">CalcOpticalFlowLK</a></td>
-<td width="25%"><a href="#decl_cvConDensUpdateByTime">ConDensUpdateByTime</a></td>
-<td width="25%"><a href="#decl_cvCreateKalman">CreateKalman</a></td>
+<td width="25%"><a href="#decl_cvConvexHull2">ConvexHull2</a></td>
+<td width="25%"><a href="#decl_cvConvexityDefects">ConvexityDefects</a></td>
+<td width="25%"><a href="#decl_cvCopyHist">CopyHist</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcOpticalFlowPyrLK">CalcOpticalFlowPyrLK</a></td>
-<td width="25%"><a href="#decl_cvContourArea">ContourArea</a></td>
-<td width="25%"><a href="#decl_cvCreatePOSITObject">CreatePOSITObject</a></td>
+<td width="25%"><a href="#decl_cvCopyMakeBorder">CopyMakeBorder</a></td>
+<td width="25%"><a href="#decl_cvCornerEigenValsAndVecs">CornerEigenValsAndVecs</a></td>
+<td width="25%"><a href="#decl_cvCornerHarris">CornerHarris</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcPGH">CalcPGH</a></td>
-<td width="25%"><a href="#decl_cvContourFromContourTree">ContourFromContourTree</a></td>
-<td width="25%"><a href="#decl_cvCreateStructuringElementEx">CreateStructuringElementEx</a></td>
+<td width="25%"><a href="#decl_cvCornerMinEigenVal">CornerMinEigenVal</a></td>
+<td width="25%"><a href="#decl_cvCreateConDensation">CreateConDensation</a></td>
+<td width="25%"><a href="#decl_cvCreateContourTree">CreateContourTree</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcProbDensity">CalcProbDensity</a></td>
-<td width="25%"><a href="#decl_cvConvertPointsHomogenious">ConvertPointsHomogenious</a></td>
+<td width="25%"><a href="#decl_cvCreateFeatureTree">cvCreateFeatureTree</a></td>
+<td width="25%"><a href="#decl_cvCreateHist">CreateHist</a></td>
+<td width="25%"><a href="#decl_cvCreateKalman">CreateKalman</a></td>
+</tr>
+<tr>
+<td width="25%"><a href="#decl_cvCreatePOSITObject">CreatePOSITObject</a></td>
+<td width="25%"><a href="#decl_cvCreateStructuringElementEx">CreateStructuringElementEx</a></td>
 <td width="25%"><a href="#decl_cvCreateSubdivDelaunay2D">CreateSubdivDelaunay2D</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvCalcSubdivVoronoi2D">CalcSubdivVoronoi2D</a></td>
-<td width="25%"><a href="#decl_cvConvexHull2">ConvexHull2</a></td>
 <td width="25%"><a href="#decl_cvCvtColor">CvtColor</a></td>
 </tr>
 </table>
@@ -5309,22 +5413,26 @@ to use multi-channel <code>Nx1</code> or <code>1xN</code> arrays.
 <table width="100%">
 <tr>
 <td width="25%"><a href="#decl_cvFilter2D">Filter2D</a></td>
-<td width="25%"><a href="#decl_cvFindExtrinsicCameraParams2">FindExtrinsicCameraParams2</a></td>
-<td width="25%"><a href="#decl_cvFindNextContour">FindNextContour</a></td>
+<td width="25%"><a href="#decl_cvFindChessboardCorners">FindChessboardCorners</a></td>
+<td width="25%"><a href="#decl_cvFindContours">FindContours</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvFindChessboardCorners">FindChessboardCorners</a></td>
-<td width="25%"><a href="#decl_cvFindFundamentalMat">FindFundamentalMat</a></td>
-<td width="25%"><a href="#decl_cvFitEllipse">FitEllipse</a></td>
+<td width="25%"><a href="#decl_cvFindCornerSubPix">FindCornerSubPix</a></td>
+<td width="25%"><a href="#decl_cvFindExtrinsicCameraParams2">FindExtrinsicCameraParams2</a></td>
+<td width="25%"><a href="#decl_cvFindFeatures">FindFeatures</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvFindContours">FindContours</a></td>
+<td width="25%"><a href="#decl_cvFindFeaturesBoxed">FindFeaturesBoxed</a></td>
+<td width="25%"><a href="#decl_cvFindFundamentalMat">FindFundamentalMat</a></td>
 <td width="25%"><a href="#decl_cvFindHomography">FindHomography</a></td>
-<td width="25%"><a href="#decl_cvFitLine2D">FitLine2D</a></td>
 </tr>
 <tr>
-<td width="25%"><a href="#decl_cvFindCornerSubPix">FindCornerSubPix</a></td>
 <td width="25%"><a href="#decl_cvFindNearestPoint2D">FindNearestPoint2D</a></td>
+<td width="25%"><a href="#decl_cvFindNextContour">FindNextContour</a></td>
+<td width="25%"><a href="#decl_cvFitEllipse">FitEllipse</a></td>
+</tr>
+<tr>
+<td width="25%"><a href="#decl_cvFitLine2D">FitLine2D</a></td>
 <td width="25%"><a href="#decl_cvFloodFill">FloodFill</a></td>
 </tr>
 </table>
@@ -5453,13 +5561,16 @@ to use multi-channel <code>Nx1</code> or <code>1xN</code> arrays.
 <td width="25%"><a href="#decl_cvRodrigues2">Rodrigues2</a></td>
 </tr>
 <tr>
+<td width="25%"><a href="#decl_cvReleaseFeatureTree">ReleaseFeatureTree</a></td>
 <td width="25%"><a href="#decl_cvReleaseHaarClassifierCascade">ReleaseHaarClassifierCascade</a></td>
 <td width="25%"><a href="#decl_cvReleaseStructuringElement">ReleaseStructuringElement</a></td>
-<td width="25%"><a href="#decl_cvRunHaarClassifierCascade">RunHaarClassifierCascade</a></td>
 </tr>
 <tr>
+<td width="25%"><a href="#decl_cvRunHaarClassifierCascade">RunHaarClassifierCascade</a></td>
 <td width="25%"><a href="#decl_cvReleaseHist">ReleaseHist</a></td>
 <td width="25%"><a href="#decl_cvRemap">Remap</a></td>
+</tr>
+<tr>
 <td width="25%"><a href="#decl_cvRunningAvg">RunningAvg</a></td>
 </tr>
 </table>
@@ -5528,6 +5639,13 @@ the OpenCV users. This list is not complete; it serves only
 as a starting point.
 </p>
 <ol>
+
+
+<li><a name="paper_beis97"><b>[Beis97]</b>
+J.S. Beis and D.G. Lowe, "Shape indexing using approximate nearest-neighbor search in highdimensional spaces".
+In Proc. IEEE Conf. Comp. Vision Patt. Recog., pages 1000--1006, 1997.
+</a>
+
 <li><a name="paper_borgefors86"><b>[Borgefors86]</b>
 Gunilla Borgefors, "Distance Transformations in Digital Images". Computer Vision, Graphics and Image Processing 34, 344-371 (1986).
 </a>