16acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*M///////////////////////////////////////////////////////////////////////////////////////
26acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
36acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
46acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
56acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//  By downloading, copying, installing or using the software you agree to this license.
66acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//  If you do not agree to this license, do not download, install,
76acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//  copy or use the software.
86acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
96acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//                        Intel License Agreement
116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//                For Open Source Computer Vision Library
126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Copyright (C) 2000, Intel Corporation, all rights reserved.
146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Third party copyrights are property of their respective owners.
156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Redistribution and use in source and binary forms, with or without modification,
176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// are permitted provided that the following conditions are met:
186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//   * Redistribution's of source code must retain the above copyright notice,
206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//     this list of conditions and the following disclaimer.
216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//   * Redistribution's in binary form must reproduce the above copyright notice,
236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//     this list of conditions and the following disclaimer in the documentation
246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//     and/or other materials provided with the distribution.
256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//   * The name of Intel Corporation may not be used to endorse or promote products
276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//     derived from this software without specific prior written permission.
286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// This software is provided by the copyright holders and contributors "as is" and
306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// any express or implied warranties, including, but not limited to, the implied
316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// warranties of merchantability and fitness for a particular purpose are disclaimed.
326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// In no event shall the Intel Corporation or contributors be liable for any direct,
336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// indirect, incidental, special, exemplary, or consequential damages
346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// (including, but not limited to, procurement of substitute goods or services;
356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// loss of use, data, or profits; or business interruption) however caused
366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// and on any theory of liability, whether in contract, strict liability,
376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// or tort (including negligence or otherwise) arising in any way out of
386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// the use of this software, even if advised of the possibility of such damage.
396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//
406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//M*/
416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifndef _CV_H_
446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define _CV_H_
456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef __IPL_H__
476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define HAVE_IPL
486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifndef SKIP_INCLUDES
516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #if defined(_CH_)
526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #pragma package <chopencv>
536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    #include <chdl.h>
546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    LOAD_CHDL(cv)
556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn  #endif
566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "cxcore.h"
596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "cvtypes.h"
606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef __cplusplus
626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern "C" {
636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                                    Image Processing                                    *
676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Copies source 2D array inside of the larger destination array and
706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   makes a border of the specified type (IPL_BORDER_*) around the copied area. */
716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvCopyMakeBorder( const CvArr* src, CvArr* dst, CvPoint offset,
726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              int bordertype, CvScalar value CV_DEFAULT(cvScalarAll(0)));
736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BLUR_NO_SCALE 0
756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BLUR  1
766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GAUSSIAN  2
776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_MEDIAN 3
786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BILATERAL 4
796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Smoothes array (removes noise) */
816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvSmooth( const CvArr* src, CvArr* dst,
826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      int smoothtype CV_DEFAULT(CV_GAUSSIAN),
836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      int size1 CV_DEFAULT(3),
846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      int size2 CV_DEFAULT(0),
856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      double sigma1 CV_DEFAULT(0),
866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      double sigma2 CV_DEFAULT(0));
876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Convolves the image with the kernel */
896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvFilter2D( const CvArr* src, CvArr* dst, const CvMat* kernel,
906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                        CvPoint anchor CV_DEFAULT(cvPoint(-1,-1)));
916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds integral image: SUM(X,Y) = sum(x<X,y<Y)I(x,y) */
936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvIntegral( const CvArr* image, CvArr* sum,
946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                       CvArr* sqsum CV_DEFAULT(NULL),
956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                       CvArr* tilted_sum CV_DEFAULT(NULL));
966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*
986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Smoothes the input image with gaussian kernel and then down-samples it.
996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   dst_width = floor(src_width/2)[+1],
1006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   dst_height = floor(src_height/2)[+1]
1016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*/
1026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvPyrDown( const CvArr* src, CvArr* dst,
1036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                        int filter CV_DEFAULT(CV_GAUSSIAN_5x5) );
1046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*
1066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Up-samples image and smoothes the result with gaussian kernel.
1076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   dst_width = src_width*2,
1086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   dst_height = src_height*2
1096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*/
1106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvPyrUp( const CvArr* src, CvArr* dst,
1116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      int filter CV_DEFAULT(CV_GAUSSIAN_5x5) );
1126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Builds pyramid for an image */
1146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvMat**) cvCreatePyramid( const CvArr* img, int extra_layers, double rate,
1156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                const CvSize* layer_sizes CV_DEFAULT(0),
1166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvArr* bufarr CV_DEFAULT(0),
1176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                int calc CV_DEFAULT(1),
1186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                int filter CV_DEFAULT(CV_GAUSSIAN_5x5) );
1196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Releases pyramid */
1216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvReleasePyramid( CvMat*** pyramid, int extra_layers );
1226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Splits color or grayscale image into multiple connected components
1256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   of nearly the same color/brightness using modification of Burt algorithm.
1266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   comp with contain a pointer to sequence (CvSeq)
1276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   of connected components (CvConnectedComp) */
1286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvPyrSegmentation( IplImage* src, IplImage* dst,
1296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              CvMemStorage* storage, CvSeq** comp,
1306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              int level, double threshold1,
1316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              double threshold2 );
1326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Filters image using meanshift algorithm */
1346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvPyrMeanShiftFiltering( const CvArr* src, CvArr* dst,
1356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    double sp, double sr, int max_level CV_DEFAULT(1),
1366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvTermCriteria termcrit CV_DEFAULT(cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,5,1)));
1376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Segments image using seed "markers" */
1396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvWatershed( const CvArr* image, CvArr* markers );
1406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_INPAINT_NS      0
1426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_INPAINT_TELEA   1
1436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Inpaints the selected region in the image */
1456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvInpaint( const CvArr* src, const CvArr* inpaint_mask,
1466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                       CvArr* dst, double inpaintRange, int flags );
1476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_SCHARR -1
1496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_MAX_SOBEL_KSIZE 7
1506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates an image derivative using generalized Sobel
1526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   (aperture_size = 1,3,5,7) or Scharr (aperture_size = -1) operator.
1536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Scharr can be used only for the first dx or dy derivative */
1546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvSobel( const CvArr* src, CvArr* dst,
1556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                    int xorder, int yorder,
1566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                    int aperture_size CV_DEFAULT(3));
1576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates the image Laplacian: (d2/dx + d2/dy)I */
1596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvLaplace( const CvArr* src, CvArr* dst,
1606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      int aperture_size CV_DEFAULT(3) );
1616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Constants for color conversion */
1636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2BGRA    0
1646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2RGBA    CV_BGR2BGRA
1656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGRA2BGR    1
1676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGBA2RGB    CV_BGRA2BGR
1686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2RGBA    2
1706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2BGRA    CV_BGR2RGBA
1716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGBA2BGR    3
1736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGRA2RGB    CV_RGBA2BGR
1746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2RGB     4
1766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2BGR     CV_BGR2RGB
1776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGRA2RGBA   5
1796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGBA2BGRA   CV_BGRA2RGBA
1806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2GRAY    6
1826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2GRAY    7
1836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_GRAY2BGR    8
1846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_GRAY2RGB    CV_GRAY2BGR
1856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_GRAY2BGRA   9
1866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_GRAY2RGBA   CV_GRAY2BGRA
1876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGRA2GRAY   10
1886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGBA2GRAY   11
1896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2BGR565  12
1916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2BGR565  13
1926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR5652BGR  14
1936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR5652RGB  15
1946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGRA2BGR565 16
1956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGBA2BGR565 17
1966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR5652BGRA 18
1976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR5652RGBA 19
1986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
1996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_GRAY2BGR565 20
2006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR5652GRAY 21
2016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2BGR555  22
2036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2BGR555  23
2046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR5552BGR  24
2056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR5552RGB  25
2066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGRA2BGR555 26
2076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGBA2BGR555 27
2086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR5552BGRA 28
2096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR5552RGBA 29
2106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_GRAY2BGR555 30
2126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR5552GRAY 31
2136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2XYZ     32
2156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2XYZ     33
2166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_XYZ2BGR     34
2176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_XYZ2RGB     35
2186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2YCrCb   36
2206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2YCrCb   37
2216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_YCrCb2BGR   38
2226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_YCrCb2RGB   39
2236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2HSV     40
2256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2HSV     41
2266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2Lab     44
2286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2Lab     45
2296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BayerBG2BGR 46
2316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BayerGB2BGR 47
2326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BayerRG2BGR 48
2336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BayerGR2BGR 49
2346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BayerBG2RGB CV_BayerRG2BGR
2366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BayerGB2RGB CV_BayerGR2BGR
2376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BayerRG2RGB CV_BayerBG2BGR
2386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BayerGR2RGB CV_BayerGB2BGR
2396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2Luv     50
2416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2Luv     51
2426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_BGR2HLS     52
2436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_RGB2HLS     53
2446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_HSV2BGR     54
2466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_HSV2RGB     55
2476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_Lab2BGR     56
2496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_Lab2RGB     57
2506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_Luv2BGR     58
2516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_Luv2RGB     59
2526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_HLS2BGR     60
2536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_HLS2RGB     61
2546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_COLORCVT_MAX  100
2566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Converts input array pixels from one color space to another */
2586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCvtColor( const CvArr* src, CvArr* dst, int code );
2596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_INTER_NN        0
2616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_INTER_LINEAR    1
2626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_INTER_CUBIC     2
2636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_INTER_AREA      3
2646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_WARP_FILL_OUTLIERS 8
2666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_WARP_INVERSE_MAP  16
2676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Resizes image (input array is resized to fit the destination array) */
2696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvResize( const CvArr* src, CvArr* dst,
2706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                       int interpolation CV_DEFAULT( CV_INTER_LINEAR ));
2716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Warps image with affine transform */
2736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvWarpAffine( const CvArr* src, CvArr* dst, const CvMat* map_matrix,
2746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           int flags CV_DEFAULT(CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS),
2756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           CvScalar fillval CV_DEFAULT(cvScalarAll(0)) );
2766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes affine transform matrix for mapping src[i] to dst[i] (i=0,1,2) */
2786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvMat*) cvGetAffineTransform( const CvPoint2D32f * src,
2796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    const CvPoint2D32f * dst,
2806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    CvMat * map_matrix );
2816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes rotation_matrix matrix */
2836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvMat*)  cv2DRotationMatrix( CvPoint2D32f center, double angle,
2846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   double scale, CvMat* map_matrix );
2856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Warps image with perspective (projective) transform */
2876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvWarpPerspective( const CvArr* src, CvArr* dst, const CvMat* map_matrix,
2886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                int flags CV_DEFAULT(CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS),
2896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvScalar fillval CV_DEFAULT(cvScalarAll(0)) );
2906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes perspective transform matrix for mapping src[i] to dst[i] (i=0,1,2,3) */
2926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvMat*) cvGetPerspectiveTransform( const CvPoint2D32f* src,
2936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         const CvPoint2D32f* dst,
2946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         CvMat* map_matrix );
2956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
2966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Performs generic geometric transformation using the specified coordinate maps */
2976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvRemap( const CvArr* src, CvArr* dst,
2986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      const CvArr* mapx, const CvArr* mapy,
2996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      int flags CV_DEFAULT(CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS),
3006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      CvScalar fillval CV_DEFAULT(cvScalarAll(0)) );
3016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Converts mapx & mapy from floating-point to integer formats for cvRemap */
3036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvConvertMaps( const CvArr* mapx, const CvArr* mapy,
3046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            CvArr* mapxy, CvArr* mapalpha );
3056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Performs forward or inverse log-polar image transform */
3076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvLogPolar( const CvArr* src, CvArr* dst,
3086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         CvPoint2D32f center, double M,
3096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         int flags CV_DEFAULT(CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS));
3106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_SHAPE_RECT      0
3126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_SHAPE_CROSS     1
3136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_SHAPE_ELLIPSE   2
3146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_SHAPE_CUSTOM    100
3156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* creates structuring element used for morphological operations */
3176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(IplConvKernel*)  cvCreateStructuringElementEx(
3186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn            int cols, int  rows, int  anchor_x, int  anchor_y,
3196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn            int shape, int* values CV_DEFAULT(NULL) );
3206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* releases structuring element */
3226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvReleaseStructuringElement( IplConvKernel** element );
3236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* erodes input image (applies minimum filter) one or more times.
3256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   If element pointer is NULL, 3x3 rectangular element is used */
3266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvErode( const CvArr* src, CvArr* dst,
3276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      IplConvKernel* element CV_DEFAULT(NULL),
3286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      int iterations CV_DEFAULT(1) );
3296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* dilates input image (applies maximum filter) one or more times.
3316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   If element pointer is NULL, 3x3 rectangular element is used */
3326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvDilate( const CvArr* src, CvArr* dst,
3336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                       IplConvKernel* element CV_DEFAULT(NULL),
3346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                       int iterations CV_DEFAULT(1) );
3356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_MOP_OPEN         2
3376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_MOP_CLOSE        3
3386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_MOP_GRADIENT     4
3396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_MOP_TOPHAT       5
3406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_MOP_BLACKHAT     6
3416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Performs complex morphological transformation */
3436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvMorphologyEx( const CvArr* src, CvArr* dst,
3446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             CvArr* temp, IplConvKernel* element,
3456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             int operation, int iterations CV_DEFAULT(1) );
3466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates all spatial and central moments up to the 3rd order */
3486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvMoments( const CvArr* arr, CvMoments* moments, int binary CV_DEFAULT(0));
3496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Retrieve particular spatial, central or normalized central moments */
3516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double)  cvGetSpatialMoment( CvMoments* moments, int x_order, int y_order );
3526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double)  cvGetCentralMoment( CvMoments* moments, int x_order, int y_order );
3536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double)  cvGetNormalizedCentralMoment( CvMoments* moments,
3546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                             int x_order, int y_order );
3556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates 7 Hu's invariants from precalculated spatial and central moments */
3576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvGetHuMoments( CvMoments*  moments, CvHuMoments*  hu_moments );
3586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*********************************** data sampling **************************************/
3606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Fetches pixels that belong to the specified line segment and stores them to the buffer.
3626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Returns the number of retrieved points. */
3636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int)  cvSampleLine( const CvArr* image, CvPoint pt1, CvPoint pt2, void* buffer,
3646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          int connectivity CV_DEFAULT(8));
3656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Retrieves the rectangular image region with specified center from the input array.
3676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn dst(x,y) <- src(x + center.x - dst_width/2, y + center.y - dst_height/2).
3686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Values of pixels with fractional coordinates are retrieved using bilinear interpolation*/
3696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvGetRectSubPix( const CvArr* src, CvArr* dst, CvPoint2D32f center );
3706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Retrieves quadrangle from the input array.
3736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    matrixarr = ( a11  a12 | b1 )   dst(x,y) <- src(A[x y]' + b)
3746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                ( a21  a22 | b2 )   (bilinear interpolation is used to retrieve pixels
3756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     with fractional coordinates)
3766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*/
3776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvGetQuadrangleSubPix( const CvArr* src, CvArr* dst,
3786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    const CvMat* map_matrix );
3796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Methods for comparing two array */
3816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_TM_SQDIFF        0
3826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_TM_SQDIFF_NORMED 1
3836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_TM_CCORR         2
3846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_TM_CCORR_NORMED  3
3856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_TM_CCOEFF        4
3866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_TM_CCOEFF_NORMED 5
3876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Measures similarity between template and overlapped windows in the source image
3896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   and fills the resultant image with the measurements */
3906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvMatchTemplate( const CvArr* image, const CvArr* templ,
3916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              CvArr* result, int method );
3926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
3936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes earth mover distance between
3946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   two weighted point sets (called signatures) */
3956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(float)  cvCalcEMD2( const CvArr* signature1,
3966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          const CvArr* signature2,
3976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          int distance_type,
3986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          CvDistanceFunction distance_func CV_DEFAULT(NULL),
3996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          const CvArr* cost_matrix CV_DEFAULT(NULL),
4006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          CvArr* flow CV_DEFAULT(NULL),
4016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          float* lower_bound CV_DEFAULT(NULL),
4026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          void* userdata CV_DEFAULT(NULL));
4036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
4056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                              Contours retrieving                                       *
4066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
4076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Retrieves outer and optionally inner boundaries of white (non-zero) connected
4096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   components in the black (zero) background */
4106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int)  cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour,
4116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int header_size CV_DEFAULT(sizeof(CvContour)),
4126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int mode CV_DEFAULT(CV_RETR_LIST),
4136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int method CV_DEFAULT(CV_CHAIN_APPROX_SIMPLE),
4146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            CvPoint offset CV_DEFAULT(cvPoint(0,0)));
4156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Initalizes contour retrieving process.
4186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Calls cvStartFindContours.
4196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Calls cvFindNextContour until null pointer is returned
4206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   or some other condition becomes true.
4216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Calls cvEndFindContours at the end. */
4226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvContourScanner)  cvStartFindContours( CvArr* image, CvMemStorage* storage,
4236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int header_size CV_DEFAULT(sizeof(CvContour)),
4246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int mode CV_DEFAULT(CV_RETR_LIST),
4256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int method CV_DEFAULT(CV_CHAIN_APPROX_SIMPLE),
4266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            CvPoint offset CV_DEFAULT(cvPoint(0,0)));
4276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Retrieves next contour */
4296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*)  cvFindNextContour( CvContourScanner scanner );
4306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Substitutes the last retrieved contour with the new one
4336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   (if the substitutor is null, the last retrieved contour is removed from the tree) */
4346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)   cvSubstituteContour( CvContourScanner scanner, CvSeq* new_contour );
4356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Releases contour scanner and returns pointer to the first outer contour */
4386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*)  cvEndFindContours( CvContourScanner* scanner );
4396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Approximates a single Freeman chain or a tree of chains to polygonal curves */
4416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*) cvApproxChains( CvSeq* src_seq, CvMemStorage* storage,
4426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int method CV_DEFAULT(CV_CHAIN_APPROX_SIMPLE),
4436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            double parameter CV_DEFAULT(0),
4446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int  minimal_perimeter CV_DEFAULT(0),
4456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int  recursive CV_DEFAULT(0));
4466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Initalizes Freeman chain reader.
4496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   The reader is used to iteratively get coordinates of all the chain points.
4506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   If the Freeman codes should be read as is, a simple sequence reader should be used */
4516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvStartReadChainPoints( CvChain* chain, CvChainPtReader* reader );
4526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Retrieves the next chain point */
4546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvPoint) cvReadChainPoint( CvChainPtReader* reader );
4556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
4586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                                  Motion Analysis                                       *
4596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
4606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/************************************ optical flow ***************************************/
4626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates optical flow for 2 images using classical Lucas & Kanade algorithm */
4646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcOpticalFlowLK( const CvArr* prev, const CvArr* curr,
4656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  CvSize win_size, CvArr* velx, CvArr* vely );
4666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates optical flow for 2 images using block matching algorithm */
4686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcOpticalFlowBM( const CvArr* prev, const CvArr* curr,
4696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  CvSize block_size, CvSize shift_size,
4706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  CvSize max_range, int use_previous,
4716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  CvArr* velx, CvArr* vely );
4726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates Optical flow for 2 images using Horn & Schunck algorithm */
4746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcOpticalFlowHS( const CvArr* prev, const CvArr* curr,
4756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  int use_previous, CvArr* velx, CvArr* vely,
4766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  double lambda, CvTermCriteria criteria );
4776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_LKFLOW_PYR_A_READY       1
4796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_LKFLOW_PYR_B_READY       2
4806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_LKFLOW_INITIAL_GUESSES   4
4816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_LKFLOW_GET_MIN_EIGENVALS 8
4826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
4836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* It is Lucas & Kanade method, modified to use pyramids.
4846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Also it does several iterations to get optical flow for
4856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   every point at every pyramid level.
4866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Calculates optical flow between two images for certain set of points (i.e.
4876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   it is a "sparse" optical flow, which is opposite to the previous 3 methods) */
4886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcOpticalFlowPyrLK( const CvArr*  prev, const CvArr*  curr,
4896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     CvArr*  prev_pyr, CvArr*  curr_pyr,
4906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     const CvPoint2D32f* prev_features,
4916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     CvPoint2D32f* curr_features,
4926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     int       count,
4936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     CvSize    win_size,
4946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     int       level,
4956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     char*     status,
4966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     float*    track_error,
4976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     CvTermCriteria criteria,
4986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     int       flags );
4996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Modification of a previous sparse optical flow algorithm to calculate
5026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   affine flow */
5036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcAffineFlowPyrLK( const CvArr*  prev, const CvArr*  curr,
5046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    CvArr*  prev_pyr, CvArr*  curr_pyr,
5056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    const CvPoint2D32f* prev_features,
5066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    CvPoint2D32f* curr_features,
5076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    float* matrices, int  count,
5086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    CvSize win_size, int  level,
5096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    char* status, float* track_error,
5106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    CvTermCriteria criteria, int flags );
5116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Estimate rigid transformation between 2 images or 2 point sets */
5136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int)  cvEstimateRigidTransform( const CvArr* A, const CvArr* B,
5146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                      CvMat* M, int full_affine );
5156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/********************************* motion templates *************************************/
5176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
5196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*        All the motion template functions work only with single channel images.         *
5206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*        Silhouette image must have depth IPL_DEPTH_8U or IPL_DEPTH_8S                   *
5216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*        Motion history image must have depth IPL_DEPTH_32F,                             *
5226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*        Gradient mask - IPL_DEPTH_8U or IPL_DEPTH_8S,                                   *
5236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*        Motion orientation image - IPL_DEPTH_32F                                        *
5246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*        Segmentation mask - IPL_DEPTH_32F                                               *
5256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*        All the angles are in degrees, all the times are in milliseconds                *
5266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
5276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Updates motion history image given motion silhouette */
5296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)    cvUpdateMotionHistory( const CvArr* silhouette, CvArr* mhi,
5306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                      double timestamp, double duration );
5316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates gradient of the motion history image and fills
5336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   a mask indicating where the gradient is valid */
5346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)    cvCalcMotionGradient( const CvArr* mhi, CvArr* mask, CvArr* orientation,
5356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     double delta1, double delta2,
5366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     int aperture_size CV_DEFAULT(3));
5376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates average motion direction within a selected motion region
5396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   (region can be selected by setting ROIs and/or by composing a valid gradient mask
5406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   with the region mask) */
5416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double)  cvCalcGlobalOrientation( const CvArr* orientation, const CvArr* mask,
5426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                        const CvArr* mhi, double timestamp,
5436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                        double duration );
5446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Splits a motion history image into a few parts corresponding to separate independent motions
5466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   (e.g. left hand, right hand) */
5476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*)  cvSegmentMotion( const CvArr* mhi, CvArr* seg_mask,
5486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvMemStorage* storage,
5496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                double timestamp, double seg_thresh );
5506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*********************** Background statistics accumulation *****************************/
5526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Adds image to accumulator */
5546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvAcc( const CvArr* image, CvArr* sum,
5556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                    const CvArr* mask CV_DEFAULT(NULL) );
5566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Adds squared image to accumulator */
5586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvSquareAcc( const CvArr* image, CvArr* sqsum,
5596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          const CvArr* mask CV_DEFAULT(NULL) );
5606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Adds a product of two images to accumulator */
5626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvMultiplyAcc( const CvArr* image1, const CvArr* image2, CvArr* acc,
5636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            const CvArr* mask CV_DEFAULT(NULL) );
5646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Adds image to accumulator with weights: acc = acc*(1-alpha) + image*alpha */
5666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvRunningAvg( const CvArr* image, CvArr* acc, double alpha,
5676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           const CvArr* mask CV_DEFAULT(NULL) );
5686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
5716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                                       Tracking                                         *
5726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
5736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Implements CAMSHIFT algorithm - determines object position, size and orientation
5756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   from the object histogram back project (extension of meanshift) */
5766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int)  cvCamShift( const CvArr* prob_image, CvRect  window,
5776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                       CvTermCriteria criteria, CvConnectedComp* comp,
5786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                       CvBox2D* box CV_DEFAULT(NULL) );
5796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Implements MeanShift algorithm - determines object position
5816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   from the object histogram back project */
5826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int)  cvMeanShift( const CvArr* prob_image, CvRect  window,
5836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                        CvTermCriteria criteria, CvConnectedComp* comp );
5846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Creates ConDensation filter state */
5866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvConDensation*)  cvCreateConDensation( int dynam_params,
5876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                             int measure_params,
5886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                             int sample_count );
5896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Releases ConDensation filter state */
5916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvReleaseConDensation( CvConDensation** condens );
5926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Updates ConDensation filter by time (predict future state of the system) */
5946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvConDensUpdateByTime( CvConDensation* condens);
5956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Initializes ConDensation filter samples  */
5976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvConDensInitSampleSet( CvConDensation* condens, CvMat* lower_bound, CvMat* upper_bound );
5986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
5996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Creates Kalman filter and sets A, B, Q, R and state to some initial values */
6006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvKalman*) cvCreateKalman( int dynam_params, int measure_params,
6016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                int control_params CV_DEFAULT(0));
6026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Releases Kalman filter state */
6046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvReleaseKalman( CvKalman** kalman);
6056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Updates Kalman filter by time (predicts future state of the system) */
6076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(const CvMat*)  cvKalmanPredict( CvKalman* kalman,
6086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     const CvMat* control CV_DEFAULT(NULL));
6096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Updates Kalman filter by measurement
6116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   (corrects state of the system and internal matrices) */
6126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(const CvMat*)  cvKalmanCorrect( CvKalman* kalman, const CvMat* measurement );
6136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
6156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                              Planar subdivisions                                       *
6166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
6176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Initializes Delaunay triangulation */
6196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvInitSubdivDelaunay2D( CvSubdiv2D* subdiv, CvRect rect );
6206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Creates new subdivision */
6226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSubdiv2D*)  cvCreateSubdiv2D( int subdiv_type, int header_size,
6236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                      int vtx_size, int quadedge_size,
6246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                      CvMemStorage* storage );
6256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/************************* high-level subdivision functions ***************************/
6276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Simplified Delaunay diagram creation */
6296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE  CvSubdiv2D* cvCreateSubdivDelaunay2D( CvRect rect, CvMemStorage* storage )
6306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
6316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvSubdiv2D* subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*subdiv),
6326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         sizeof(CvSubdiv2DPoint), sizeof(CvQuadEdge2D), storage );
6336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    cvInitSubdivDelaunay2D( subdiv, rect );
6356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return subdiv;
6366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
6376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Inserts new point to the Delaunay triangulation */
6406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSubdiv2DPoint*)  cvSubdivDelaunay2DInsert( CvSubdiv2D* subdiv, CvPoint2D32f pt);
6416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Locates a point within the Delaunay triangulation (finds the edge
6436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   the point is left to or belongs to, or the triangulation point the given
6446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   point coinsides with */
6456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSubdiv2DPointLocation)  cvSubdiv2DLocate(
6466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               CvSubdiv2D* subdiv, CvPoint2D32f pt,
6476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               CvSubdiv2DEdge* edge,
6486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               CvSubdiv2DPoint** vertex CV_DEFAULT(NULL) );
6496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates Voronoi tesselation (i.e. coordinates of Voronoi points) */
6516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcSubdivVoronoi2D( CvSubdiv2D* subdiv );
6526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Removes all Voronoi points from the tesselation */
6556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvClearSubdivVoronoi2D( CvSubdiv2D* subdiv );
6566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds the nearest to the given point vertex in subdivision. */
6596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSubdiv2DPoint*) cvFindNearestPoint2D( CvSubdiv2D* subdiv, CvPoint2D32f pt );
6606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/************ Basic quad-edge navigation and operations ************/
6636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE  CvSubdiv2DEdge  cvSubdiv2DNextEdge( CvSubdiv2DEdge edge )
6656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
6666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return  CV_SUBDIV2D_NEXT_EDGE(edge);
6676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
6686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE  CvSubdiv2DEdge  cvSubdiv2DRotateEdge( CvSubdiv2DEdge edge, int rotate )
6716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
6726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return  (edge & ~3) + ((edge + rotate) & 3);
6736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
6746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE  CvSubdiv2DEdge  cvSubdiv2DSymEdge( CvSubdiv2DEdge edge )
6766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
6776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return edge ^ 2;
6786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
6796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE  CvSubdiv2DEdge  cvSubdiv2DGetEdge( CvSubdiv2DEdge edge, CvNextEdgeType type )
6816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
6826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
6836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    edge = e->next[(edge + (int)type) & 3];
6846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return  (edge & ~3) + ((edge + ((int)type >> 4)) & 3);
6856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
6866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE  CvSubdiv2DPoint*  cvSubdiv2DEdgeOrg( CvSubdiv2DEdge edge )
6896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
6906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
6916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return (CvSubdiv2DPoint*)e->pt[edge & 3];
6926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
6936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
6956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE  CvSubdiv2DPoint*  cvSubdiv2DEdgeDst( CvSubdiv2DEdge edge )
6966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
6976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
6986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return (CvSubdiv2DPoint*)e->pt[(edge + 2) & 3];
6996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
7006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE  double  cvTriangleArea( CvPoint2D32f a, CvPoint2D32f b, CvPoint2D32f c )
7036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
7046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
7056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
7066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
7096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                            Contour Processing and Shape Analysis                       *
7106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
7116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_POLY_APPROX_DP 0
7136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Approximates a single polygonal curve (contour) or
7156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   a tree of polygonal curves (contours) */
7166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*)  cvApproxPoly( const void* src_seq,
7176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             int header_size, CvMemStorage* storage,
7186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             int method, double parameter,
7196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             int parameter2 CV_DEFAULT(0));
7206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_DOMINANT_IPAN 1
7226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds high-curvature points of the contour */
7246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*) cvFindDominantPoints( CvSeq* contour, CvMemStorage* storage,
7256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   int method CV_DEFAULT(CV_DOMINANT_IPAN),
7266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   double parameter1 CV_DEFAULT(0),
7276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   double parameter2 CV_DEFAULT(0),
7286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   double parameter3 CV_DEFAULT(0),
7296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   double parameter4 CV_DEFAULT(0));
7306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates perimeter of a contour or length of a part of contour */
7326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double)  cvArcLength( const void* curve,
7336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            CvSlice slice CV_DEFAULT(CV_WHOLE_SEQ),
7346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int is_closed CV_DEFAULT(-1));
7356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define cvContourPerimeter( contour ) cvArcLength( contour, CV_WHOLE_SEQ, 1 )
7366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates contour boundning rectangle (update=1) or
7386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   just retrieves pre-calculated rectangle (update=0) */
7396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvRect)  cvBoundingRect( CvArr* points, int update CV_DEFAULT(0) );
7406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates area of a contour or contour segment */
7426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double)  cvContourArea( const CvArr* contour,
7436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              CvSlice slice CV_DEFAULT(CV_WHOLE_SEQ));
7446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds minimum area rotated rectangle bounding a set of points */
7466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvBox2D)  cvMinAreaRect2( const CvArr* points,
7476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvMemStorage* storage CV_DEFAULT(NULL));
7486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds minimum enclosing circle for a set of points */
7506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int)  cvMinEnclosingCircle( const CvArr* points,
7516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  CvPoint2D32f* center, float* radius );
7526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CONTOURS_MATCH_I1  1
7546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CONTOURS_MATCH_I2  2
7556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CONTOURS_MATCH_I3  3
7566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Compares two contours by matching their moments */
7586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double)  cvMatchShapes( const void* object1, const void* object2,
7596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              int method, double parameter CV_DEFAULT(0));
7606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Builds hierarhical representation of a contour */
7626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvContourTree*)  cvCreateContourTree( const CvSeq* contour,
7636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                            CvMemStorage* storage,
7646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                            double threshold );
7656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Reconstruct (completelly or partially) contour a from contour tree */
7676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*)  cvContourFromContourTree( const CvContourTree* tree,
7686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         CvMemStorage* storage,
7696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         CvTermCriteria criteria );
7706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Compares two contour trees */
7726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_CONTOUR_TREES_MATCH_I1  1
7736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double)  cvMatchContourTrees( const CvContourTree* tree1,
7756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    const CvContourTree* tree2,
7766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    int method, double threshold );
7776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates histogram of a contour */
7796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcPGH( const CvSeq* contour, CvHistogram* hist );
7806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CLOCKWISE         1
7826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_COUNTER_CLOCKWISE 2
7836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates exact convex hull of 2d point set */
7856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*) cvConvexHull2( const CvArr* input,
7866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             void* hull_storage CV_DEFAULT(NULL),
7876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             int orientation CV_DEFAULT(CV_CLOCKWISE),
7886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             int return_points CV_DEFAULT(0));
7896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Checks whether the contour is convex or not (returns 1 if convex, 0 if not) */
7916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int)  cvCheckContourConvexity( const CvArr* contour );
7926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds convexity defects for the contour */
7946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*)  cvConvexityDefects( const CvArr* contour, const CvArr* convexhull,
7956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   CvMemStorage* storage CV_DEFAULT(NULL));
7966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
7976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Fits ellipse into a set of 2d points */
7986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvBox2D) cvFitEllipse2( const CvArr* points );
7996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds minimum rectangle containing two given rectangles */
8016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvRect)  cvMaxRect( const CvRect* rect1, const CvRect* rect2 );
8026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds coordinates of the box vertices */
8046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvBoxPoints( CvBox2D box, CvPoint2D32f pt[4] );
8056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Initializes sequence header for a matrix (column or row vector) of points -
8076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   a wrapper for cvMakeSeqHeaderForArray (it does not initialize bounding rectangle!!!) */
8086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*) cvPointSeqFromMat( int seq_kind, const CvArr* mat,
8096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                 CvContour* contour_header,
8106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                 CvSeqBlock* block );
8116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Checks whether the point is inside polygon, outside, on an edge (at a vertex).
8136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Returns positive, negative or zero value, correspondingly.
8146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Optionally, measures a signed distance between
8156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   the point and the nearest polygon edge (measure_dist=1) */
8166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double) cvPointPolygonTest( const CvArr* contour,
8176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  CvPoint2D32f pt, int measure_dist );
8186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
8206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                                  Histogram functions                                   *
8216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
8226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Creates new histogram */
8246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvHistogram*)  cvCreateHist( int dims, int* sizes, int type,
8256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   float** ranges CV_DEFAULT(NULL),
8266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   int uniform CV_DEFAULT(1));
8276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Assignes histogram bin ranges */
8296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvSetHistBinRanges( CvHistogram* hist, float** ranges,
8306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                int uniform CV_DEFAULT(1));
8316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Creates histogram header for array */
8336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvHistogram*)  cvMakeHistHeaderForArray(
8346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int  dims, int* sizes, CvHistogram* hist,
8356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            float* data, float** ranges CV_DEFAULT(NULL),
8366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int uniform CV_DEFAULT(1));
8376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Releases histogram */
8396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvReleaseHist( CvHistogram** hist );
8406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Clears all the histogram bins */
8426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvClearHist( CvHistogram* hist );
8436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds indices and values of minimum and maximum histogram bins */
8456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvGetMinMaxHistValue( const CvHistogram* hist,
8466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   float* min_value, float* max_value,
8476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   int* min_idx CV_DEFAULT(NULL),
8486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   int* max_idx CV_DEFAULT(NULL));
8496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Normalizes histogram by dividing all bins by sum of the bins, multiplied by <factor>.
8526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   After that sum of histogram bins is equal to <factor> */
8536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvNormalizeHist( CvHistogram* hist, double factor );
8546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Clear all histogram bins that are below the threshold */
8576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvThreshHist( CvHistogram* hist, double threshold );
8586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_COMP_CORREL        0
8606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_COMP_CHISQR        1
8616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_COMP_INTERSECT     2
8626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_COMP_BHATTACHARYYA 3
8636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Compares two histogram */
8656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double)  cvCompareHist( const CvHistogram* hist1,
8666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              const CvHistogram* hist2,
8676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              int method);
8686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Copies one histogram to another. Destination histogram is created if
8706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   the destination pointer is NULL */
8716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCopyHist( const CvHistogram* src, CvHistogram** dst );
8726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates bayesian probabilistic histograms
8756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   (each or src and dst is an array of <number> histograms */
8766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcBayesianProb( CvHistogram** src, int number,
8776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvHistogram** dst);
8786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates array histogram */
8806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcArrHist( CvArr** arr, CvHistogram* hist,
8816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int accumulate CV_DEFAULT(0),
8826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            const CvArr* mask CV_DEFAULT(NULL) );
8836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE  void  cvCalcHist( IplImage** image, CvHistogram* hist,
8856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             int accumulate CV_DEFAULT(0),
8866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             const CvArr* mask CV_DEFAULT(NULL) )
8876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
8886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    cvCalcArrHist( (CvArr**)image, hist, accumulate, mask );
8896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
8906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates back project */
8926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcArrBackProject( CvArr** image, CvArr* dst,
8936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   const CvHistogram* hist );
8946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  cvCalcBackProject(image, dst, hist) cvCalcArrBackProject((CvArr**)image, dst, hist)
8956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
8976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Does some sort of template matching but compares histograms of
8986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   template and each window location */
8996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcArrBackProjectPatch( CvArr** image, CvArr* dst, CvSize range,
9006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                        CvHistogram* hist, int method,
9016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                        double factor );
9026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  cvCalcBackProjectPatch( image, dst, range, hist, method, factor ) \
9036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn     cvCalcArrBackProjectPatch( (CvArr**)image, dst, range, hist, method, factor )
9046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* calculates probabilistic density (divides one histogram by another) */
9076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcProbDensity( const CvHistogram* hist1, const CvHistogram* hist2,
9086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvHistogram* dst_hist, double scale CV_DEFAULT(255) );
9096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* equalizes histogram of 8-bit single-channel image */
9116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvEqualizeHist( const CvArr* src, CvArr* dst );
9126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_VALUE  1
9156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define  CV_ARRAY  2
9166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Updates active contour in order to minimize its cummulative
9176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   (internal and external) energy. */
9186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvSnakeImage( const IplImage* image, CvPoint* points,
9196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           int  length, float* alpha,
9206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           float* beta, float* gamma,
9216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           int coeff_usage, CvSize  win,
9226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           CvTermCriteria criteria, int calc_gradient CV_DEFAULT(1));
9236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates the cooficients of the homography matrix */
9256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCalcImageHomography( float* line, CvPoint3D32f* center,
9266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    float* intrinsic, float* homography );
9276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_DIST_MASK_3   3
9296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_DIST_MASK_5   5
9306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_DIST_MASK_PRECISE 0
9316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Applies distance transform to binary image */
9336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvDistTransform( const CvArr* src, CvArr* dst,
9346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              int distance_type CV_DEFAULT(CV_DIST_L2),
9356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              int mask_size CV_DEFAULT(3),
9366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              const float* mask CV_DEFAULT(NULL),
9376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              CvArr* labels CV_DEFAULT(NULL));
9386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Types of thresholding */
9416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_THRESH_BINARY      0  /* value = value > threshold ? max_value : 0       */
9426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_THRESH_BINARY_INV  1  /* value = value > threshold ? 0 : max_value       */
9436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_THRESH_TRUNC       2  /* value = value > threshold ? threshold : value   */
9446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_THRESH_TOZERO      3  /* value = value > threshold ? value : 0           */
9456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_THRESH_TOZERO_INV  4  /* value = value > threshold ? 0 : value           */
9466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_THRESH_MASK        7
9476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_THRESH_OTSU        8  /* use Otsu algorithm to choose the optimal threshold value;
9496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    combine the flag with one of the above CV_THRESH_* values */
9506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Applies fixed-level threshold to grayscale image.
9526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   This is a basic operation applied before retrieving contours */
9536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double)  cvThreshold( const CvArr*  src, CvArr*  dst,
9546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            double  threshold, double  max_value,
9556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                            int threshold_type );
9566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_ADAPTIVE_THRESH_MEAN_C  0
9586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_ADAPTIVE_THRESH_GAUSSIAN_C  1
9596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Applies adaptive threshold to grayscale image.
9616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   The two parameters for methods CV_ADAPTIVE_THRESH_MEAN_C and
9626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   CV_ADAPTIVE_THRESH_GAUSSIAN_C are:
9636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   neighborhood size (3, 5, 7 etc.),
9646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   and a constant subtracted from mean (...,-3,-2,-1,0,1,2,3,...) */
9656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value,
9666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  int adaptive_method CV_DEFAULT(CV_ADAPTIVE_THRESH_MEAN_C),
9676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  int threshold_type CV_DEFAULT(CV_THRESH_BINARY),
9686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  int block_size CV_DEFAULT(3),
9696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                  double param1 CV_DEFAULT(5));
9706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_FLOODFILL_FIXED_RANGE (1 << 16)
9726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_FLOODFILL_MASK_ONLY   (1 << 17)
9736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Fills the connected component until the color difference gets large enough */
9756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvFloodFill( CvArr* image, CvPoint seed_point,
9766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          CvScalar new_val, CvScalar lo_diff CV_DEFAULT(cvScalarAll(0)),
9776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          CvScalar up_diff CV_DEFAULT(cvScalarAll(0)),
9786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          CvConnectedComp* comp CV_DEFAULT(NULL),
9796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          int flags CV_DEFAULT(4),
9806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          CvArr* mask CV_DEFAULT(NULL));
9816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
9836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                                  Feature detection                                     *
9846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
9856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CANNY_L2_GRADIENT  (1 << 31)
9876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Runs canny edge detector */
9896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCanny( const CvArr* image, CvArr* edges, double threshold1,
9906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                      double threshold2, int  aperture_size CV_DEFAULT(3) );
9916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates constraint image for corner detection
9936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Dx^2 * Dyy + Dxx * Dy^2 - 2 * Dx * Dy * Dxy.
9946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Applying threshold to the result gives coordinates of corners */
9956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvPreCornerDetect( const CvArr* image, CvArr* corners,
9966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              int aperture_size CV_DEFAULT(3) );
9976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
9986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates eigen values and vectors of 2x2
9996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   gradient covariation matrix at every image pixel */
10006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCornerEigenValsAndVecs( const CvArr* image, CvArr* eigenvv,
10016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                      int block_size, int aperture_size CV_DEFAULT(3) );
10026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates minimal eigenvalue for 2x2 gradient covariation matrix at
10046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   every image pixel */
10056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCornerMinEigenVal( const CvArr* image, CvArr* eigenval,
10066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                 int block_size, int aperture_size CV_DEFAULT(3) );
10076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Harris corner detector:
10096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   Calculates det(M) - k*(trace(M)^2), where M is 2x2 gradient covariation matrix for each pixel */
10106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvCornerHarris( const CvArr* image, CvArr* harris_responce,
10116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             int block_size, int aperture_size CV_DEFAULT(3),
10126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             double k CV_DEFAULT(0.04) );
10136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Adjust corner position using some sort of gradient search */
10156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners,
10166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                 int count, CvSize win, CvSize zero_zone,
10176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                 CvTermCriteria  criteria );
10186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds a sparse set of points within the selected region
10206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   that seem to be easy to track */
10216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvGoodFeaturesToTrack( const CvArr* image, CvArr* eig_image,
10226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   CvArr* temp_image, CvPoint2D32f* corners,
10236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   int* corner_count, double  quality_level,
10246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   double  min_distance,
10256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   const CvArr* mask CV_DEFAULT(NULL),
10266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   int block_size CV_DEFAULT(3),
10276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   int use_harris CV_DEFAULT(0),
10286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   double k CV_DEFAULT(0.04) );
10296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_HOUGH_STANDARD 0
10316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_HOUGH_PROBABILISTIC 1
10326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_HOUGH_MULTI_SCALE 2
10336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_HOUGH_GRADIENT 3
10346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds lines on binary image using one of several methods.
10366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   line_storage is either memory storage or 1 x <max number of lines> CvMat, its
10376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   number of columns is changed by the function.
10386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   method is one of CV_HOUGH_*;
10396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   rho, theta and threshold are used for each of those methods;
10406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   param1 ~ line length, param2 ~ line gap - for probabilistic,
10416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   param1 ~ srn, param2 ~ stn - for multi-scale */
10426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*)  cvHoughLines2( CvArr* image, void* line_storage, int method,
10436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              double rho, double theta, int threshold,
10446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              double param1 CV_DEFAULT(0), double param2 CV_DEFAULT(0));
10456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds circles in the image */
10476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*) cvHoughCircles( CvArr* image, void* circle_storage,
10486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              int method, double dp, double min_dist,
10496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              double param1 CV_DEFAULT(100),
10506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              double param2 CV_DEFAULT(100),
10516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              int min_radius CV_DEFAULT(0),
10526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              int max_radius CV_DEFAULT(0));
10536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Fits a line into set of 2d or 3d points in a robust way (M-estimator technique) */
10556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvFitLine( const CvArr* points, int dist_type, double param,
10566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                        double reps, double aeps, float* line );
10576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstruct CvFeatureTree;
10616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Constructs kd-tree from set of feature descriptors */
10636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(struct CvFeatureTree*) cvCreateFeatureTree(CvMat* desc);
10646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Release kd-tree */
10666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvReleaseFeatureTree(struct CvFeatureTree* tr);
10676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Searches kd-tree for k nearest neighbors of given reference points,
10696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   searching at most emax leaves. */
10706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvFindFeatures(struct CvFeatureTree* tr, CvMat* desc,
10716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn		    CvMat* results, CvMat* dist, int k CV_DEFAULT(2), int emax CV_DEFAULT(20));
10726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Search kd-tree for all points that are inlier to given rect region. */
10746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvFindFeaturesBoxed(struct CvFeatureTree* tr,
10756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn		    CvMat* bounds_min, CvMat* bounds_max,
10766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn		    CvMat* results);
10776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvSURFPoint
10796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
10806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvPoint2D32f pt;
10816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int laplacian;
10826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int size;
10836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    float dir;
10846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    float hessian;
10856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvSURFPoint;
10866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
10876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE CvSURFPoint cvSURFPoint( CvPoint2D32f pt, int laplacian,
10886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   int size, float dir CV_DEFAULT(0),
10896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   float hessian CV_DEFAULT(0))
10906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
10916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvSURFPoint kp;
10926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    kp.pt = pt;
10936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    kp.laplacian = laplacian;
10946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    kp.size = size;
10956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    kp.dir = dir;
10966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    kp.hessian = hessian;
10976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    return kp;
10986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
10996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvSURFParams
11016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
11026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int extended;
11036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    double hessianThreshold;
11046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int nOctaves;
11066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int nOctaveLayers;
11076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
11086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvSURFParams;
11096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSURFParams) cvSURFParams( double hessianThreshold, int extended CV_DEFAULT(0) );
11116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvExtractSURF( const CvArr* img, const CvArr* mask,
11126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           CvSeq** keypoints, CvSeq** descriptors,
11136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           CvMemStorage* storage, CvSURFParams params );
11146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
11166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                         Haar-like Object Detection functions                           *
11176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
11186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Loads haar classifier cascade from a directory.
11206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   It is obsolete: convert your cascade to xml and use cvLoad instead */
11216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvHaarClassifierCascade*) cvLoadHaarClassifierCascade(
11226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                    const char* directory, CvSize orig_window_size);
11236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvReleaseHaarClassifierCascade( CvHaarClassifierCascade** cascade );
11256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_HAAR_DO_CANNY_PRUNING    1
11276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_HAAR_SCALE_IMAGE         2
11286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_HAAR_FIND_BIGGEST_OBJECT 4
11296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_HAAR_DO_ROUGH_SEARCH     8
11306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*) cvHaarDetectObjects( const CvArr* image,
11326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                     CvHaarClassifierCascade* cascade,
11336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                     CvMemStorage* storage, double scale_factor CV_DEFAULT(1.1),
11346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                     int min_neighbors CV_DEFAULT(3), int flags CV_DEFAULT(0),
11356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                     CvSize min_size CV_DEFAULT(cvSize(0,0)));
11366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* sets images for haar classifier cascade */
11386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvSetImagesForHaarClassifierCascade( CvHaarClassifierCascade* cascade,
11396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                                const CvArr* sum, const CvArr* sqsum,
11406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                                const CvArr* tilted_sum, double scale );
11416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* runs the cascade on the specified window */
11436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvRunHaarClassifierCascade( CvHaarClassifierCascade* cascade,
11446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                      CvPoint pt, int start_stage CV_DEFAULT(0));
11456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Alternate version that uses ints instead of floats */
11486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*) mycvHaarDetectObjects( const CvArr* image,
11496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                     CvHaarClassifierCascade* cascade,
11506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                     CvMemStorage* storage, double scale_factor CV_DEFAULT(1.1),
11516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                     int min_neighbors CV_DEFAULT(3), int flags CV_DEFAULT(0),
11526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                     CvSize min_size CV_DEFAULT(cvSize(0,0)));
11536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) mycvSetImagesForHaarClassifierCascade( CvHaarClassifierCascade* cascade,
11556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                                const CvArr* sum, const CvArr* sqsum,
11566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                                const CvArr* tilted_sum, double scale );
11576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) mycvRunHaarClassifierCascade( CvHaarClassifierCascade* cascade,
11596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                      CvPoint pt, int start_stage CV_DEFAULT(0));
11606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
11626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                      Camera Calibration, Pose Estimation and Stereo                    *
11636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
11646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Transforms the input image to compensate lens distortion */
11666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvUndistort2( const CvArr* src, CvArr* dst,
11676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          const CvMat* camera_matrix,
11686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                          const CvMat* distortion_coeffs );
11696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes transformation map from intrinsic camera parameters
11716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   that can used by cvRemap */
11726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvInitUndistortMap( const CvMat* camera_matrix,
11736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                const CvMat* distortion_coeffs,
11746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvArr* mapx, CvArr* mapy );
11756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes undistortion+rectification map for a head of stereo camera */
11776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvInitUndistortRectifyMap( const CvMat* camera_matrix,
11786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                       const CvMat* dist_coeffs,
11796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                       const CvMat *R, const CvMat* new_camera_matrix,
11806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                       CvArr* mapx, CvArr* mapy );
11816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes the original (undistorted) feature coordinates
11836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   from the observed (distorted) coordinates */
11846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvUndistortPoints( const CvMat* src, CvMat* dst,
11856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               const CvMat* camera_matrix,
11866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               const CvMat* dist_coeffs,
11876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               const CvMat* R CV_DEFAULT(0),
11886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               const CvMat* P CV_DEFAULT(0));
11896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Converts rotation vector to rotation matrix or vice versa */
11916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvRodrigues2( const CvMat* src, CvMat* dst,
11926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         CvMat* jacobian CV_DEFAULT(0) );
11936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_LMEDS 4
11956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_RANSAC 8
11966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
11976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds perspective transformation between the object plane and image (view) plane */
11986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvFindHomography( const CvMat* src_points,
11996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             const CvMat* dst_points,
12006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             CvMat* homography,
12016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             int method CV_DEFAULT(0),
12026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             double ransacReprojThreshold CV_DEFAULT(0),
12036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             CvMat* mask CV_DEFAULT(0));
12046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes RQ decomposition for 3x3 matrices */
12066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvRQDecomp3x3( const CvMat *matrixM, CvMat *matrixR, CvMat *matrixQ,
12076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           CvMat *matrixQx CV_DEFAULT(NULL),
12086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           CvMat *matrixQy CV_DEFAULT(NULL),
12096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           CvMat *matrixQz CV_DEFAULT(NULL),
12106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           CvPoint3D64f *eulerAngles CV_DEFAULT(NULL));
12116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes projection matrix decomposition */
12136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvDecomposeProjectionMatrix( const CvMat *projMatr, CvMat *calibMatr,
12146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         CvMat *rotMatr, CvMat *posVect,
12156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         CvMat *rotMatrX CV_DEFAULT(NULL),
12166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         CvMat *rotMatrY CV_DEFAULT(NULL),
12176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         CvMat *rotMatrZ CV_DEFAULT(NULL),
12186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         CvPoint3D64f *eulerAngles CV_DEFAULT(NULL));
12196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes d(AB)/dA and d(AB)/dB */
12216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvCalcMatMulDeriv( const CvMat* A, const CvMat* B, CvMat* dABdA, CvMat* dABdB );
12226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes r3 = rodrigues(rodrigues(r2)*rodrigues(r1)),
12246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   t3 = rodrigues(r2)*t1 + t2 and the respective derivatives */
12256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvComposeRT( const CvMat* _rvec1, const CvMat* _tvec1,
12266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         const CvMat* _rvec2, const CvMat* _tvec2,
12276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         CvMat* _rvec3, CvMat* _tvec3,
12286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         CvMat* dr3dr1 CV_DEFAULT(0), CvMat* dr3dt1 CV_DEFAULT(0),
12296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         CvMat* dr3dr2 CV_DEFAULT(0), CvMat* dr3dt2 CV_DEFAULT(0),
12306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         CvMat* dt3dr1 CV_DEFAULT(0), CvMat* dt3dt1 CV_DEFAULT(0),
12316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                         CvMat* dt3dr2 CV_DEFAULT(0), CvMat* dt3dt2 CV_DEFAULT(0) );
12326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Projects object points to the view plane using
12346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   the specified extrinsic and intrinsic camera parameters */
12356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvProjectPoints2( const CvMat* object_points, const CvMat* rotation_vector,
12366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              const CvMat* translation_vector, const CvMat* camera_matrix,
12376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              const CvMat* distortion_coeffs, CvMat* image_points,
12386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              CvMat* dpdrot CV_DEFAULT(NULL), CvMat* dpdt CV_DEFAULT(NULL),
12396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              CvMat* dpdf CV_DEFAULT(NULL), CvMat* dpdc CV_DEFAULT(NULL),
12406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              CvMat* dpddist CV_DEFAULT(NULL),
12416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                              double aspect_ratio CV_DEFAULT(0));
12426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds extrinsic camera parameters from
12446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   a few known corresponding point pairs and intrinsic parameters */
12456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvFindExtrinsicCameraParams2( const CvMat* object_points,
12466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                          const CvMat* image_points,
12476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                          const CvMat* camera_matrix,
12486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                          const CvMat* distortion_coeffs,
12496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                          CvMat* rotation_vector,
12506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                          CvMat* translation_vector );
12516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes initial estimate of the intrinsic camera parameters
12536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   in case of planar calibration target (e.g. chessboard) */
12546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvInitIntrinsicParams2D( const CvMat* object_points,
12556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     const CvMat* image_points,
12566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     const CvMat* npoints, CvSize image_size,
12576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     CvMat* camera_matrix,
12586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     double aspect_ratio CV_DEFAULT(1.) );
12596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_CB_ADAPTIVE_THRESH  1
12616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_CB_NORMALIZE_IMAGE  2
12626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_CB_FILTER_QUADS     4
12636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Detects corners on a chessboard calibration pattern */
12656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvFindChessboardCorners( const void* image, CvSize pattern_size,
12666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    CvPoint2D32f* corners,
12676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    int* corner_count CV_DEFAULT(NULL),
12686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                    int flags CV_DEFAULT(CV_CALIB_CB_ADAPTIVE_THRESH+
12696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                        CV_CALIB_CB_NORMALIZE_IMAGE) );
12706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Draws individual chessboard corners or the whole chessboard detected */
12726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvDrawChessboardCorners( CvArr* image, CvSize pattern_size,
12736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     CvPoint2D32f* corners,
12746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                     int count, int pattern_was_found );
12756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_USE_INTRINSIC_GUESS  1
12776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_FIX_ASPECT_RATIO     2
12786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_FIX_PRINCIPAL_POINT  4
12796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_ZERO_TANGENT_DIST    8
12806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_FIX_FOCAL_LENGTH 16
12816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_FIX_K1  32
12826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_FIX_K2  64
12836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_FIX_K3  128
12846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds intrinsic and extrinsic camera parameters
12866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   from a few views of known calibration pattern */
12876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvCalibrateCamera2( const CvMat* object_points,
12886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                const CvMat* image_points,
12896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                const CvMat* point_counts,
12906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvSize image_size,
12916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvMat* camera_matrix,
12926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvMat* distortion_coeffs,
12936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvMat* rotation_vectors CV_DEFAULT(NULL),
12946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvMat* translation_vectors CV_DEFAULT(NULL),
12956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                int flags CV_DEFAULT(0) );
12966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
12976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes various useful characteristics of the camera from the data computed by
12986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   cvCalibrateCamera2 */
12996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvCalibrationMatrixValues( const CvMat *camera_matrix,
13006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvSize image_size,
13016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                double aperture_width CV_DEFAULT(0),
13026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                double aperture_height CV_DEFAULT(0),
13036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                double *fovx CV_DEFAULT(NULL),
13046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                double *fovy CV_DEFAULT(NULL),
13056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                double *focal_length CV_DEFAULT(NULL),
13066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                CvPoint2D64f *principal_point CV_DEFAULT(NULL),
13076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                double *pixel_aspect_ratio CV_DEFAULT(NULL));
13086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_FIX_INTRINSIC  256
13106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_SAME_FOCAL_LENGTH 512
13116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes the transformation from one camera coordinate system to another one
13136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   from a few correspondent views of the same calibration target. Optionally, calibrates
13146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   both cameras */
13156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvStereoCalibrate( const CvMat* object_points, const CvMat* image_points1,
13166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               const CvMat* image_points2, const CvMat* npoints,
13176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               CvMat* camera_matrix1, CvMat* dist_coeffs1,
13186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               CvMat* camera_matrix2, CvMat* dist_coeffs2,
13196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               CvSize image_size, CvMat* R, CvMat* T,
13206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               CvMat* E CV_DEFAULT(0), CvMat* F CV_DEFAULT(0),
13216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               CvTermCriteria term_crit CV_DEFAULT(cvTermCriteria(
13226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,30,1e-6)),
13236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                               int flags CV_DEFAULT(CV_CALIB_FIX_INTRINSIC) );
13246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CALIB_ZERO_DISPARITY 1024
13266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes 3D rotations (+ optional shift) for each camera coordinate system to make both
13286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   views parallel (=> to make all the epipolar lines horizontal or vertical) */
13296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvStereoRectify( const CvMat* camera_matrix1, const CvMat* camera_matrix2,
13306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             const CvMat* dist_coeffs1, const CvMat* dist_coeffs2,
13316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             CvSize image_size, const CvMat* R, const CvMat* T,
13326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             CvMat* R1, CvMat* R2, CvMat* P1, CvMat* P2,
13336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             CvMat* Q CV_DEFAULT(0),
13346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                             int flags CV_DEFAULT(CV_CALIB_ZERO_DISPARITY) );
13356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes rectification transformations for uncalibrated pair of images using a set
13376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   of point correspondences */
13386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvStereoRectifyUncalibrated( const CvMat* points1, const CvMat* points2,
13396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                        const CvMat* F, CvSize img_size,
13406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                        CvMat* H1, CvMat* H2,
13416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                        double threshold CV_DEFAULT(5));
13426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvPOSITObject CvPOSITObject;
13446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Allocates and initializes CvPOSITObject structure before doing cvPOSIT */
13466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvPOSITObject*)  cvCreatePOSITObject( CvPoint3D32f* points, int point_count );
13476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Runs POSIT (POSe from ITeration) algorithm for determining 3d position of
13506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   an object given its model and projection in a weak-perspective case */
13516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvPOSIT(  CvPOSITObject* posit_object, CvPoint2D32f* image_points,
13526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                       double focal_length, CvTermCriteria criteria,
13536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                       CvMatr32f rotation_matrix, CvVect32f translation_vector);
13546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Releases CvPOSITObject structure */
13566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvReleasePOSITObject( CvPOSITObject**  posit_object );
13576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* updates the number of RANSAC iterations */
13596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvRANSACUpdateNumIters( double p, double err_prob,
13606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   int model_points, int max_iters );
13616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvConvertPointsHomogeneous( const CvMat* src, CvMat* dst );
13636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates fundamental matrix given a set of corresponding points */
13656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_FM_7POINT 1
13666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_FM_8POINT 2
13676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_FM_LMEDS_ONLY  CV_LMEDS
13686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_FM_RANSAC_ONLY CV_RANSAC
13696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_FM_LMEDS CV_LMEDS
13706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_FM_RANSAC CV_RANSAC
13716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvFindFundamentalMat( const CvMat* points1, const CvMat* points2,
13726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                 CvMat* fundamental_matrix,
13736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                 int method CV_DEFAULT(CV_FM_RANSAC),
13746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                 double param1 CV_DEFAULT(3.), double param2 CV_DEFAULT(0.99),
13756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                 CvMat* status CV_DEFAULT(NULL) );
13766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* For each input point on one of images
13786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   computes parameters of the corresponding
13796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn   epipolar line on the other image */
13806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvComputeCorrespondEpilines( const CvMat* points,
13816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         int which_image,
13826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         const CvMat* fundamental_matrix,
13836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                         CvMat* correspondent_lines );
13846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* stereo correspondence parameters and functions */
13866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_STEREO_BM_NORMALIZED_RESPONSE  0
13886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Block matching algorithm structure */
13906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvStereoBMState
13916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
13926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    // pre-filtering (normalization of input images)
13936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int preFilterType; // =CV_STEREO_BM_NORMALIZED_RESPONSE now
13946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int preFilterSize; // averaging window size: ~5x5..21x21
13956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int preFilterCap; // the output of pre-filtering is clipped by [-preFilterCap,preFilterCap]
13966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
13976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    // correspondence using Sum of Absolute Difference (SAD)
13986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int SADWindowSize; // ~5x5..21x21
13996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int minDisparity;  // minimum disparity (can be negative)
14006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int numberOfDisparities; // maximum disparity - minimum disparity (> 0)
14016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    // post-filtering
14036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int textureThreshold;  // the disparity is only computed for pixels
14046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           // with textured enough neighborhood
14056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int uniquenessRatio;   // accept the computed disparity d* only if
14066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           // SAD(d) >= SAD(d*)*(1 + uniquenessRatio/100.)
14076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                           // for any d != d*+/-1 within the search range.
14086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int speckleWindowSize; // disparity variation window
14096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int speckleRange; // acceptable range of variation in window
14106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    // temporary buffers
14126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* preFilteredImg0;
14136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* preFilteredImg1;
14146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* slidingSumBuf;
14156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
14166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvStereoBMState;
14176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_STEREO_BM_BASIC 0
14196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_STEREO_BM_FISH_EYE 1
14206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_STEREO_BM_NARROW 2
14216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvStereoBMState*) cvCreateStereoBMState(int preset CV_DEFAULT(CV_STEREO_BM_BASIC),
14236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                              int numberOfDisparities CV_DEFAULT(0));
14246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvReleaseStereoBMState( CvStereoBMState** state );
14266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvFindStereoCorrespondenceBM( const CvArr* left, const CvArr* right,
14286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                          CvArr* disparity, CvStereoBMState* state );
14296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Kolmogorov-Zabin stereo-correspondence algorithm (a.k.a. KZ1) */
14316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_STEREO_GC_OCCLUDED  SHRT_MAX
14326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvStereoGCState
14346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{
14356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int Ithreshold;
14366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int interactionRadius;
14376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    float K, lambda, lambda1, lambda2;
14386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int occlusionCost;
14396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int minDisparity;
14406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int numberOfDisparities;
14416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    int maxIters;
14426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* left;
14446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* right;
14456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* dispLeft;
14466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* dispRight;
14476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* ptrLeft;
14486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* ptrRight;
14496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* vtxBuf;
14506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn    CvMat* edgeBuf;
14516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
14526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvStereoGCState;
14536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvStereoGCState*) cvCreateStereoGCState( int numberOfDisparities, int maxIters );
14556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvReleaseStereoGCState( CvStereoGCState** state );
14566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvFindStereoCorrespondenceGC( const CvArr* left, const CvArr* right,
14586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                          CvArr* disparityLeft, CvArr* disparityRight,
14596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                          CvStereoGCState* state,
14606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                          int useDisparityGuess CV_DEFAULT(0) );
14616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Reprojects the computed disparity image to the 3D space using the specified 4x4 matrix */
14636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void)  cvReprojectImageTo3D( const CvArr* disparityImage,
14646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn                                   CvArr* _3dImage, const CvMat* Q );
14656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef __cplusplus
14676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}
14686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
14696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef __cplusplus
14716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "cv.hpp"
14726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
14736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\
14756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*                                 Backward compatibility                                 *
14766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/
14776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifndef CV_NO_BACKWARD_COMPATIBILITY
14796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "cvcompat.h"
14806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif
14816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn
14826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif /*_CV_H_*/
1483