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