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#ifndef __CVAUX__H__ 436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define __CVAUX__H__ 446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "cv.h" 466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef __cplusplus 486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennextern "C" { 496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*) cvSegmentImage( const CvArr* srcarr, CvArr* dstarr, 526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double canny_threshold, 536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double ffill_threshold, 546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* storage ); 556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* Eigen objects * 586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef int (CV_CDECL * CvCallback)(int index, void* buffer, void* user_data); 616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef union 626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvCallback callback; 646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn void* data; 656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvInput; 676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EIGOBJ_NO_CALLBACK 0 696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EIGOBJ_INPUT_CALLBACK 1 706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EIGOBJ_OUTPUT_CALLBACK 2 716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_EIGOBJ_BOTH_CALLBACK 3 726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates covariation matrix of a set of arrays */ 746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvCalcCovarMatrixEx( int nObjects, void* input, int ioFlags, 756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int ioBufSize, uchar* buffer, void* userData, 766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* avg, float* covarMatrix ); 776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates eigen values and vectors of covariation matrix of a set of 796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn arrays */ 806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvCalcEigenObjects( int nObjects, void* input, void* output, 816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int ioFlags, int ioBufSize, void* userData, 826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvTermCriteria* calcLimit, IplImage* avg, 836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* eigVals ); 846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Calculates dot product (obj - avg) * eigObj (i.e. projects image to eigen vector) */ 866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double) cvCalcDecompCoeff( IplImage* obj, IplImage* eigObj, IplImage* avg ); 876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Projects image to eigen space (finds all decomposion coefficients */ 896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvEigenDecomposite( IplImage* obj, int nEigObjs, void* eigInput, 906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int ioFlags, void* userData, IplImage* avg, 916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* coeffs ); 926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Projects original objects used to calculate eigen space basis to that space */ 946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvEigenProjection( void* eigInput, int nEigObjs, int ioFlags, 956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn void* userData, float* coeffs, IplImage* avg, 966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* proj ); 976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* 1D/2D HMM * 1006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 1016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvImgObsInfo 1036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 1046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int obs_x; 1056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int obs_y; 1066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int obs_size; 1076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* obs;//consequtive observations 1086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* state;/* arr of pairs superstate/state to which observation belong */ 1106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* mix; /* number of mixture to which observation belong */ 1116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 1136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvImgObsInfo;/*struct for 1 image*/ 1146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef CvImgObsInfo Cv1DObsInfo; 1166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvEHMMState 1186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 1196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int num_mix; /*number of mixtures in this state*/ 1206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* mu; /*mean vectors corresponding to each mixture*/ 1216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* inv_var; /* square root of inversed variances corresp. to each mixture*/ 1226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* log_var_val; /* sum of 0.5 (LN2PI + ln(variance[i]) ) for i=1,n */ 1236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* weight; /*array of mixture weights. Summ of all weights in state is 1. */ 1246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 1266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvEHMMState; 1276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvEHMM 1296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 1306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int level; /* 0 - lowest(i.e its states are real states), ..... */ 1316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int num_states; /* number of HMM states */ 1326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* transP;/*transition probab. matrices for states */ 1336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float** obsProb; /* if level == 0 - array of brob matrices corresponding to hmm 1346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if level == 1 - martix of matrices */ 1356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn union 1366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn { 1376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvEHMMState* state; /* if level == 0 points to real states array, 1386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if not - points to embedded hmms */ 1396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn struct CvEHMM* ehmm; /* pointer to an embedded model or NULL, if it is a leaf */ 1406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn } u; 1416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 1436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvEHMM; 1446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*CVAPI(int) icvCreate1DHMM( CvEHMM** this_hmm, 1466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int state_number, int* num_mix, int obs_size ); 1476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvRelease1DHMM( CvEHMM** phmm ); 1496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvUniform1DSegm( Cv1DObsInfo* obs_info, CvEHMM* hmm ); 1516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvInit1DMixSegm( Cv1DObsInfo** obs_info_array, int num_img, CvEHMM* hmm); 1536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvEstimate1DHMMStateParams( CvImgObsInfo** obs_info_array, int num_img, CvEHMM* hmm); 1556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvEstimate1DObsProb( CvImgObsInfo* obs_info, CvEHMM* hmm ); 1576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvEstimate1DTransProb( Cv1DObsInfo** obs_info_array, 1596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int num_seq, 1606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvEHMM* hmm ); 1616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(float) icvViterbi( Cv1DObsInfo* obs_info, CvEHMM* hmm); 1636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icv1DMixSegmL2( CvImgObsInfo** obs_info_array, int num_img, CvEHMM* hmm );*/ 1656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*********************************** Embedded HMMs *************************************/ 1676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Creates 2D HMM */ 1696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvEHMM*) cvCreate2DHMM( int* stateNumber, int* numMix, int obsSize ); 1706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Releases HMM */ 1726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvRelease2DHMM( CvEHMM** hmm ); 1736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_COUNT_OBS(roi, win, delta, numObs ) \ 1756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ \ 1766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn (numObs)->width =((roi)->width -(win)->width +(delta)->width)/(delta)->width; \ 1776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn (numObs)->height =((roi)->height -(win)->height +(delta)->height)/(delta)->height;\ 1786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 1796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Creates storage for observation vectors */ 1816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvImgObsInfo*) cvCreateObsInfo( CvSize numObs, int obsSize ); 1826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Releases storage for observation vectors */ 1846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvReleaseObsInfo( CvImgObsInfo** obs_info ); 1856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* The function takes an image on input and and returns the sequnce of observations 1886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn to be used with an embedded HMM; Each observation is top-left block of DCT 1896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn coefficient matrix */ 1906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvImgToObs_DCT( const CvArr* arr, float* obs, CvSize dctSize, 1916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSize obsSize, CvSize delta ); 1926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Uniformly segments all observation vectors extracted from image */ 1956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvUniformImgSegm( CvImgObsInfo* obs_info, CvEHMM* ehmm ); 1966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 1976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Does mixture segmentation of the states of embedded HMM */ 1986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvInitMixSegm( CvImgObsInfo** obs_info_array, 1996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int num_img, CvEHMM* hmm ); 2006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Function calculates means, variances, weights of every Gaussian mixture 2026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn of every low-level state of embedded HMM */ 2036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvEstimateHMMStateParams( CvImgObsInfo** obs_info_array, 2046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int num_img, CvEHMM* hmm ); 2056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Function computes transition probability matrices of embedded HMM 2076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn given observations segmentation */ 2086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvEstimateTransProb( CvImgObsInfo** obs_info_array, 2096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int num_img, CvEHMM* hmm ); 2106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Function computes probabilities of appearing observations at any state 2126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn (i.e. computes P(obs|state) for every pair(obs,state)) */ 2136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvEstimateObsProb( CvImgObsInfo* obs_info, 2146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvEHMM* hmm ); 2156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Runs Viterbi algorithm for embedded HMM */ 2176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(float) cvEViterbi( CvImgObsInfo* obs_info, CvEHMM* hmm ); 2186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Function clusters observation vectors from several images 2216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn given observations segmentation. 2226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Euclidean distance used for clustering vectors. 2236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Centers of clusters are given means of every mixture */ 2246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvMixSegmL2( CvImgObsInfo** obs_info_array, 2256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int num_img, CvEHMM* hmm ); 2266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 2286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* A few functions from old stereo gesture recognition demosions * 2296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 2306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Creates hand mask image given several points on the hand */ 2326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvCreateHandMask( CvSeq* hand_points, 2336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage *img_mask, CvRect *roi); 2346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds hand region in range image data */ 2366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvFindHandRegion (CvPoint3D32f* points, int count, 2376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSeq* indexs, 2386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* line, CvSize2D32f size, int flag, 2396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D32f* center, 2406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* storage, CvSeq **numbers); 2416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds hand region in range image data (advanced version) */ 2436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvFindHandRegionA( CvPoint3D32f* points, int count, 2446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSeq* indexs, 2456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* line, CvSize2D32f size, int jc, 2466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D32f* center, 2476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* storage, CvSeq **numbers); 2486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 2506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* Additional operations on Subdivisions * 2516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 2526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// paints voronoi diagram: just demo function 2546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvDrawMosaic( CvSubdiv2D* subdiv, IplImage* src, IplImage* dst ); 2556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// checks planar subdivision for correctness. It is not an absolute check, 2576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// but it verifies some relations between quad-edges 2586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvSubdiv2DCheck( CvSubdiv2D* subdiv ); 2596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// returns squared distance between two 2D points with floating-point coordinates. 2616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE double icvSqDist2D32f( CvPoint2D32f pt1, CvPoint2D32f pt2 ) 2626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 2636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double dx = pt1.x - pt2.x; 2646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double dy = pt1.y - pt2.y; 2656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return dx*dx + dy*dy; 2676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 2686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 2716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* More operations on sequences * 2726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 2736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*****************************************************************************************/ 2756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CURRENT_INT( reader ) (*((int *)(reader).ptr)) 2776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_PREV_INT( reader ) (*((int *)(reader).prev_elem)) 2786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GRAPH_WEIGHTED_VERTEX_FIELDS() CV_GRAPH_VERTEX_FIELDS()\ 2806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float weight; 2816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GRAPH_WEIGHTED_EDGE_FIELDS() CV_GRAPH_EDGE_FIELDS() 2836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvGraphWeightedVtx 2856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 2866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_GRAPH_WEIGHTED_VERTEX_FIELDS() 2876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 2886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvGraphWeightedVtx; 2896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvGraphWeightedEdge 2916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 2926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_GRAPH_WEIGHTED_EDGE_FIELDS() 2936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 2946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvGraphWeightedEdge; 2956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 2966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef enum CvGraphWeightType 2976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 2986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_NOT_WEIGHTED, 2996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_WEIGHTED_VTX, 3006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_WEIGHTED_EDGE, 3016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_WEIGHTED_ALL 3026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvGraphWeightType; 3036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*****************************************************************************************/ 3066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*******************************Stereo correspondence*************************************/ 3096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvCliqueFinder 3116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 3126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvGraph* graph; 3136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int** adj_matr; 3146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int N; //graph size 3156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn // stacks, counters etc/ 3176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int k; //stack size 3186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* current_comp; 3196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int** All; 3206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* ne; 3226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* ce; 3236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* fixp; //node with minimal disconnections 3246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* nod; 3256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* s; //for selected candidate 3266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int status; 3276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int best_score; 3286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int weighted; 3296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int weighted_edges; 3306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float best_weight; 3316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* edge_weights; 3326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* vertex_weights; 3336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* cur_weight; 3346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float* cand_weight; 3356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvCliqueFinder; 3376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CLIQUE_TIME_OFF 2 3396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CLIQUE_FOUND 1 3406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CLIQUE_END 0 3416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*CVAPI(void) cvStartFindCliques( CvGraph* graph, CvCliqueFinder* finder, int reverse, 3436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int weighted CV_DEFAULT(0), int weighted_edges CV_DEFAULT(0)); 3446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvFindNextMaximalClique( CvCliqueFinder* finder, int* clock_rest CV_DEFAULT(0) ); 3456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvEndFindCliques( CvCliqueFinder* finder ); 3466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvBronKerbosch( CvGraph* graph );*/ 3486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*F/////////////////////////////////////////////////////////////////////////////////////// 3516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 3526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Name: cvSubgraphWeight 3536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Purpose: finds weight of subgraph in a graph 3546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Context: 3556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Parameters: 3566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// graph - input graph. 3576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// subgraph - sequence of pairwise different ints. These are indices of vertices of subgraph. 3586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weight_type - describes the way we measure weight. 3596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// one of the following: 3606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// CV_NOT_WEIGHTED - weight of a clique is simply its size 3616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// CV_WEIGHTED_VTX - weight of a clique is the sum of weights of its vertices 3626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// CV_WEIGHTED_EDGE - the same but edges 3636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// CV_WEIGHTED_ALL - the same but both edges and vertices 3646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weight_vtx - optional vector of floats, with size = graph->total. 3656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// If weight_type is either CV_WEIGHTED_VTX or CV_WEIGHTED_ALL 3666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weights of vertices must be provided. If weight_vtx not zero 3676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// these weights considered to be here, otherwise function assumes 3686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// that vertices of graph are inherited from CvGraphWeightedVtx. 3696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weight_edge - optional matrix of floats, of width and height = graph->total. 3706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// If weight_type is either CV_WEIGHTED_EDGE or CV_WEIGHTED_ALL 3716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weights of edges ought to be supplied. If weight_edge is not zero 3726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// function finds them here, otherwise function expects 3736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// edges of graph to be inherited from CvGraphWeightedEdge. 3746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// If this parameter is not zero structure of the graph is determined from matrix 3756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// rather than from CvGraphEdge's. In particular, elements corresponding to 3766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// absent edges should be zero. 3776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Returns: 3786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weight of subgraph. 3796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Notes: 3806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//F*/ 3816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*CVAPI(float) cvSubgraphWeight( CvGraph *graph, CvSeq *subgraph, 3826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvGraphWeightType weight_type CV_DEFAULT(CV_NOT_WEIGHTED), 3836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect32f weight_vtx CV_DEFAULT(0), 3846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr32f weight_edge CV_DEFAULT(0) );*/ 3856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 3876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*F/////////////////////////////////////////////////////////////////////////////////////// 3886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 3896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Name: cvFindCliqueEx 3906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Purpose: tries to find clique with maximum possible weight in a graph 3916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Context: 3926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Parameters: 3936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// graph - input graph. 3946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// storage - memory storage to be used by the result. 3956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// is_complementary - optional flag showing whether function should seek for clique 3966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// in complementary graph. 3976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weight_type - describes our notion about weight. 3986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// one of the following: 3996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// CV_NOT_WEIGHTED - weight of a clique is simply its size 4006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// CV_WEIGHTED_VTX - weight of a clique is the sum of weights of its vertices 4016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// CV_WEIGHTED_EDGE - the same but edges 4026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// CV_WEIGHTED_ALL - the same but both edges and vertices 4036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weight_vtx - optional vector of floats, with size = graph->total. 4046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// If weight_type is either CV_WEIGHTED_VTX or CV_WEIGHTED_ALL 4056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weights of vertices must be provided. If weight_vtx not zero 4066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// these weights considered to be here, otherwise function assumes 4076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// that vertices of graph are inherited from CvGraphWeightedVtx. 4086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weight_edge - optional matrix of floats, of width and height = graph->total. 4096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// If weight_type is either CV_WEIGHTED_EDGE or CV_WEIGHTED_ALL 4106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// weights of edges ought to be supplied. If weight_edge is not zero 4116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// function finds them here, otherwise function expects 4126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// edges of graph to be inherited from CvGraphWeightedEdge. 4136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Note that in case of CV_WEIGHTED_EDGE or CV_WEIGHTED_ALL 4146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// nonzero is_complementary implies nonzero weight_edge. 4156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// start_clique - optional sequence of pairwise different ints. They are indices of 4166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// vertices that shall be present in the output clique. 4176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// subgraph_of_ban - optional sequence of (maybe equal) ints. They are indices of 4186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// vertices that shall not be present in the output clique. 4196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// clique_weight_ptr - optional output parameter. Weight of found clique stored here. 4206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// num_generations - optional number of generations in evolutionary part of algorithm, 4216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// zero forces to return first found clique. 4226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// quality - optional parameter determining degree of required quality/speed tradeoff. 4236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Must be in the range from 0 to 9. 4246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 0 is fast and dirty, 9 is slow but hopefully yields good clique. 4256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Returns: 4266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// sequence of pairwise different ints. 4276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// These are indices of vertices that form found clique. 4286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Notes: 4296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// in cases of CV_WEIGHTED_EDGE and CV_WEIGHTED_ALL weights should be nonnegative. 4306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// start_clique has a priority over subgraph_of_ban. 4316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//F*/ 4326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*CVAPI(CvSeq*) cvFindCliqueEx( CvGraph *graph, CvMemStorage *storage, 4336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int is_complementary CV_DEFAULT(0), 4346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvGraphWeightType weight_type CV_DEFAULT(CV_NOT_WEIGHTED), 4356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect32f weight_vtx CV_DEFAULT(0), 4366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr32f weight_edge CV_DEFAULT(0), 4376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSeq *start_clique CV_DEFAULT(0), 4386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSeq *subgraph_of_ban CV_DEFAULT(0), 4396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float *clique_weight_ptr CV_DEFAULT(0), 4406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int num_generations CV_DEFAULT(3), 4416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int quality CV_DEFAULT(2) );*/ 4426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_UNDEF_SC_PARAM 12345 //default value of parameters 4456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_IDP_BIRCHFIELD_PARAM1 25 4476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_IDP_BIRCHFIELD_PARAM2 5 4486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_IDP_BIRCHFIELD_PARAM3 12 4496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_IDP_BIRCHFIELD_PARAM4 15 4506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_IDP_BIRCHFIELD_PARAM5 25 4516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_DISPARITY_BIRCHFIELD 0 4546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*F/////////////////////////////////////////////////////////////////////////// 4576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 4586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Name: cvFindStereoCorrespondence 4596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Purpose: find stereo correspondence on stereo-pair 4606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Context: 4616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Parameters: 4626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// leftImage - left image of stereo-pair (format 8uC1). 4636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// rightImage - right image of stereo-pair (format 8uC1). 4646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// mode - mode of correspondence retrieval (now CV_DISPARITY_BIRCHFIELD only) 4656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// dispImage - destination disparity image 4666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// maxDisparity - maximal disparity 4676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// param1, param2, param3, param4, param5 - parameters of algorithm 4686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Returns: 4696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Notes: 4706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Images must be rectified. 4716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// All images must have format 8uC1. 4726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn//F*/ 4736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) 4746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RenncvFindStereoCorrespondence( 4756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const CvArr* leftImage, const CvArr* rightImage, 4766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int mode, 4776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvArr* dispImage, 4786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int maxDisparity, 4796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double param1 CV_DEFAULT(CV_UNDEF_SC_PARAM), 4806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double param2 CV_DEFAULT(CV_UNDEF_SC_PARAM), 4816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double param3 CV_DEFAULT(CV_UNDEF_SC_PARAM), 4826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double param4 CV_DEFAULT(CV_UNDEF_SC_PARAM), 4836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double param5 CV_DEFAULT(CV_UNDEF_SC_PARAM) ); 4846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*****************************************************************************************/ 4866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/************ Epiline functions *******************/ 4876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvStereoLineCoeff 4916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 4926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double Xcoef; 4936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double XcoefA; 4946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double XcoefB; 4956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double XcoefAB; 4966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 4976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double Ycoef; 4986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double YcoefA; 4996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double YcoefB; 5006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double YcoefAB; 5016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double Zcoef; 5036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double ZcoefA; 5046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double ZcoefB; 5056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double ZcoefAB; 5066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}CvStereoLineCoeff; 5076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvCamera 5106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 5116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float imgSize[2]; /* size of the camera view, used during calibration */ 5126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float matrix[9]; /* intinsic camera parameters: [ fx 0 cx; 0 fy cy; 0 0 1 ] */ 5136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float distortion[4]; /* distortion coefficients - two coefficients for radial distortion 5146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn and another two for tangential: [ k1 k2 p1 p2 ] */ 5156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float rotMatr[9]; 5166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float transVect[3]; /* rotation matrix and transition vector relatively 5176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn to some reference point in the space. */ 5186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 5196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvCamera; 5206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvStereoCamera 5226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 5236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvCamera* camera[2]; /* two individual camera parameters */ 5246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float fundMatr[9]; /* fundamental matrix */ 5256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* New part for stereo */ 5276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D32f epipole[2]; 5286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f quad[2][4]; /* coordinates of destination quadrangle after 5296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn epipolar geometry rectification */ 5306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double coeffs[2][3][3];/* coefficients for transformation */ 5316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f border[2][4]; 5326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSize warpSize; 5336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvStereoLineCoeff* lineCoeffs; 5346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int needSwapCameras;/* flag set to 1 if need to swap cameras for good reconstruction */ 5356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float rotMatrix[9]; 5366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float transVector[3]; 5376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 5386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvStereoCamera; 5396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvContourOrientation 5426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 5436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float egvals[2]; 5446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float egvects[4]; 5456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float max, min; // minimum and maximum projections 5476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int imax, imin; 5486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvContourOrientation; 5496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_CAMERA_TO_WARP 1 5516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_WARP_TO_CAMERA 2 5526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvConvertWarpCoordinates(double coeffs[3][3], 5546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f* cameraPoint, 5556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f* warpPoint, 5566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int direction); 5576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvGetSymPoint3D( CvPoint3D64f pointCorner, 5596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f point1, 5606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f point2, 5616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f *pointSym2); 5626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetPieceLength3D(CvPoint3D64f point1,CvPoint3D64f point2,double* dist); 5646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvCompute3DPoint( double alpha,double betta, 5666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvStereoLineCoeff* coeffs, 5676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f* point); 5686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvCreateConvertMatrVect( CvMatr64d rotMatr1, 5706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d transVect1, 5716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d rotMatr2, 5726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d transVect2, 5736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d convRotMatr, 5746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d convTransVect); 5756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvConvertPointSystem(CvPoint3D64f M2, 5776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f* M1, 5786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d rotMatr, 5796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d transVect 5806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn ); 5816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvComputeCoeffForStereo( CvStereoCamera* stereoCamera); 5836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvGetCrossPieceVector(CvPoint2D32f p1_start,CvPoint2D32f p1_end,CvPoint2D32f v2_start,CvPoint2D32f v2_end,CvPoint2D32f *cross); 5856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvGetCrossLineDirect(CvPoint2D32f p1,CvPoint2D32f p2,float a,float b,float c,CvPoint2D32f* cross); 5866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(float) icvDefinePointPosition(CvPoint2D32f point1,CvPoint2D32f point2,CvPoint2D32f point); 5876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvStereoCalibration( int numImages, 5886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* nums, 5896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSize imageSize, 5906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f* imagePoints1, 5916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f* imagePoints2, 5926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D32f* objectPoints, 5936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvStereoCamera* stereoparams 5946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn ); 5956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvComputeRestStereoParams(CvStereoCamera *stereoparams); 5986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 5996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvComputePerspectiveMap( const double coeffs[3][3], CvArr* rectMapX, CvArr* rectMapY ); 6006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvComCoeffForLine( CvPoint2D64f point1, 6026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f point2, 6036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f point3, 6046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f point4, 6056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr1, 6066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d rotMatr1, 6076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d transVect1, 6086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr2, 6096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d rotMatr2, 6106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d transVect2, 6116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvStereoLineCoeff* coeffs, 6126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* needSwapCameras); 6136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvGetDirectionForPoint( CvPoint2D64f point, 6156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr, 6166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f* direct); 6176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvGetCrossLines(CvPoint3D64f point11,CvPoint3D64f point12, 6196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f point21,CvPoint3D64f point22, 6206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f* midPoint); 6216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvComputeStereoLineCoeffs( CvPoint3D64f pointA, 6236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f pointB, 6246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f pointCam1, 6256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double gamma, 6266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvStereoLineCoeff* coeffs); 6276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*CVAPI(int) icvComputeFundMatrEpipoles ( CvMatr64d camMatr1, 6296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d rotMatr1, 6306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect64d transVect1, 6316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr2, 6326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d rotMatr2, 6336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect64d transVect2, 6346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f* epipole1, 6356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f* epipole2, 6366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d fundMatr);*/ 6376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) icvGetAngleLine( CvPoint2D64f startPoint, CvSize imageSize,CvPoint2D64f *point1,CvPoint2D64f *point2); 6396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetCoefForPiece( CvPoint2D64f p_start,CvPoint2D64f p_end, 6416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double *a,double *b,double *c, 6426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* result); 6436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*CVAPI(void) icvGetCommonArea( CvSize imageSize, 6456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f epipole1,CvPoint2D64f epipole2, 6466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d fundMatr, 6476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect64d coeff11,CvVect64d coeff12, 6486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect64d coeff21,CvVect64d coeff22, 6496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* result);*/ 6506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvComputeeInfiniteProject1(CvMatr64d rotMatr, 6526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr1, 6536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr2, 6546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f point1, 6556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f *point2); 6566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvComputeeInfiniteProject2(CvMatr64d rotMatr, 6586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr1, 6596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr2, 6606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f* point1, 6616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f point2); 6626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetCrossDirectDirect( CvVect64d direct1,CvVect64d direct2, 6646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f *cross,int* result); 6656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetCrossPieceDirect( CvPoint2D64f p_start,CvPoint2D64f p_end, 6676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double a,double b,double c, 6686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f *cross,int* result); 6696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetCrossPiecePiece( CvPoint2D64f p1_start,CvPoint2D64f p1_end, 6716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f p2_start,CvPoint2D64f p2_end, 6726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f* cross, 6736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* result); 6746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetPieceLength(CvPoint2D64f point1,CvPoint2D64f point2,double* dist); 6766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetCrossRectDirect( CvSize imageSize, 6786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double a,double b,double c, 6796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f *start,CvPoint2D64f *end, 6806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* result); 6816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvProjectPointToImage( CvPoint3D64f point, 6836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr,CvMatr64d rotMatr,CvVect64d transVect, 6846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f* projPoint); 6856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 6866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetQuadsTransform( CvSize imageSize, 6876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr1, 6886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d rotMatr1, 6896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect64d transVect1, 6906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d camMatr2, 6916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d rotMatr2, 6926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect64d transVect2, 6936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSize* warpSize, 6946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double quad1[4][2], 6956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double quad2[4][2], 6966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr64d fundMatr, 6976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f* epipole1, 6986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D64f* epipole2 6996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn ); 7006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetQuadsTransformStruct( CvStereoCamera* stereoCamera); 7026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvComputeStereoParamsForCameras(CvStereoCamera* stereoCamera); 7046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetCutPiece( CvVect64d areaLineCoef1,CvVect64d areaLineCoef2, 7066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f epipole, 7076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSize imageSize, 7086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f* point11,CvPoint2D64f* point12, 7096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f* point21,CvPoint2D64f* point22, 7106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* result); 7116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetMiddleAnglePoint( CvPoint2D64f basePoint, 7136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f point1,CvPoint2D64f point2, 7146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f* midPoint); 7156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetNormalDirect(CvVect64d direct,CvPoint2D64f point,CvVect64d normDirect); 7176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double) icvGetVect(CvPoint2D64f basePoint,CvPoint2D64f point1,CvPoint2D64f point2); 7196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvProjectPointToDirect( CvPoint2D64f point,CvVect64d lineCoeff, 7216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D64f* projectPoint); 7226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) icvGetDistanceFromPointToDirect( CvPoint2D64f point,CvVect64d lineCoef,double*dist); 7246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(IplImage*) icvCreateIsometricImage( IplImage* src, IplImage* dst, 7266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int desired_depth, int desired_num_channels ); 7276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvDeInterlace( const CvArr* frame, CvArr* fieldEven, CvArr* fieldOdd ); 7296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*CVAPI(int) icvSelectBestRt( int numImages, 7316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* numPoints, 7326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSize imageSize, 7336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f* imagePoints1, 7346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f* imagePoints2, 7356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D32f* objectPoints, 7366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr32f cameraMatrix1, 7386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect32f distortion1, 7396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr32f rotMatrs1, 7406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect32f transVects1, 7416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr32f cameraMatrix2, 7436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect32f distortion2, 7446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr32f rotMatrs2, 7456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect32f transVects2, 7466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMatr32f bestRotMatr, 7486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVect32f bestTransVect 7496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn );*/ 7506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 7526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* Contour Morphing * 7536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 7546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* finds correspondence between two contours */ 7566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvSeq* cvCalcContoursCorrespondence( const CvSeq* contour1, 7576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const CvSeq* contour2, 7586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* storage); 7596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* morphs contours using the pre-calculated correspondence: 7616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn alpha=0 ~ contour1, alpha=1 ~ contour2 */ 7626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvSeq* cvMorphContours( const CvSeq* contour1, const CvSeq* contour2, 7636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSeq* corr, double alpha, 7646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* storage ); 7656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 7676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* Texture Descriptors * 7686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 7696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCM_OPTIMIZATION_NONE -2 7716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCM_OPTIMIZATION_LUT -1 7726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCM_OPTIMIZATION_HISTOGRAM 0 7736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_OPTIMIZATION_ALLOWDOUBLENEST 10 7756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_OPTIMIZATION_ALLOWTRIPLENEST 11 7766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_OPTIMIZATION_HISTOGRAM 4 7776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_ENTROPY 0 7796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_ENERGY 1 7806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_HOMOGENITY 2 7816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_CONTRAST 3 7826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_CLUSTERTENDENCY 4 7836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_CLUSTERSHADE 5 7846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_CORRELATION 6 7856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_CORRELATIONINFO1 7 7866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_CORRELATIONINFO2 8 7876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCMDESC_MAXIMUMPROBABILITY 9 7886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCM_ALL 0 7906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCM_GLCM 1 7916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_GLCM_DESC 2 7926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvGLCM CvGLCM; 7946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 7956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvGLCM*) cvCreateGLCM( const IplImage* srcImage, 7966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int stepMagnitude, 7976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const int* stepDirections CV_DEFAULT(0), 7986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int numStepDirections CV_DEFAULT(0), 7996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int optimizationType CV_DEFAULT(CV_GLCM_OPTIMIZATION_NONE)); 8006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvReleaseGLCM( CvGLCM** GLCM, int flag CV_DEFAULT(CV_GLCM_ALL)); 8026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvCreateGLCMDescriptors( CvGLCM* destGLCM, 8046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int descriptorOptimizationType 8056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_DEFAULT(CV_GLCMDESC_OPTIMIZATION_ALLOWDOUBLENEST)); 8066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(double) cvGetGLCMDescriptor( CvGLCM* GLCM, int step, int descriptor ); 8086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvGetGLCMDescriptorStatistics( CvGLCM* GLCM, int descriptor, 8106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double* average, double* standardDeviation ); 8116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(IplImage*) cvCreateGLCMImage( CvGLCM* GLCM, int step ); 8136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 8156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* Face eyes&mouth tracking * 8166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 8176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvFaceTracker CvFaceTracker; 8206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_NUM_FACE_ELEMENTS 3 8226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennenum CV_FACE_ELEMENTS 8236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 8246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_FACE_MOUTH = 0, 8256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_FACE_LEFT_EYE = 1, 8266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_FACE_RIGHT_EYE = 2 8276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}; 8286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvFaceTracker*) cvInitFaceTracker(CvFaceTracker* pFaceTracking, const IplImage* imgGray, 8306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvRect* pRects, int nRects); 8316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvTrackFace( CvFaceTracker* pFaceTracker, IplImage* imgGray, 8326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvRect* pRects, int nRects, 8336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint* ptRotate, double* dbAngleRotate); 8346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvReleaseFaceTracker(CvFaceTracker** ppFaceTracker); 8356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvFace 8386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 8396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvRect MouthRect; 8406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvRect LeftEyeRect; 8416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvRect RightEyeRect; 8426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvFaceData; 8436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvSeq * cvFindFace(IplImage * Image,CvMemStorage* storage); 8456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvSeq * cvPostBoostingFindFace(IplImage * Image,CvMemStorage* storage); 8466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 8496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* 3D Tracker * 8506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 8516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef unsigned char CvBool; 8536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct 8556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 8566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int id; 8576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f p; // pgruebele: So we do not loose precision, this needs to be float 8586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} Cv3dTracker2dTrackedObject; 8596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE Cv3dTracker2dTrackedObject cv3dTracker2dTrackedObject(int id, CvPoint2D32f p) 8616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 8626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Cv3dTracker2dTrackedObject r; 8636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn r.id = id; 8646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn r.p = p; 8656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return r; 8666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 8676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct 8696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 8706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int id; 8716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint3D32f p; // location of the tracked object 8726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} Cv3dTrackerTrackedObject; 8736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE Cv3dTrackerTrackedObject cv3dTrackerTrackedObject(int id, CvPoint3D32f p) 8756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 8766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Cv3dTrackerTrackedObject r; 8776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn r.id = id; 8786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn r.p = p; 8796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return r; 8806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 8816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct 8836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 8846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvBool valid; 8856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float mat[4][4]; /* maps camera coordinates to world coordinates */ 8866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f principal_point; /* copied from intrinsics so this structure */ 8876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* has all the info we need */ 8886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} Cv3dTrackerCameraInfo; 8896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct 8916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 8926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f principal_point; 8936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float focal_length[2]; 8946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float distortion[4]; 8956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} Cv3dTrackerCameraIntrinsics; 8966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 8976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvBool) cv3dTrackerCalibrateCameras(int num_cameras, 8986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const Cv3dTrackerCameraIntrinsics camera_intrinsics[], /* size is num_cameras */ 8996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSize etalon_size, 9006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float square_size, 9016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage *samples[], /* size is num_cameras */ 9026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Cv3dTrackerCameraInfo camera_info[]); /* size is num_cameras */ 9036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cv3dTrackerLocateObjects(int num_cameras, int num_objects, 9056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const Cv3dTrackerCameraInfo camera_info[], /* size is num_cameras */ 9066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const Cv3dTracker2dTrackedObject tracking_info[], /* size is num_objects*num_cameras */ 9076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Cv3dTrackerTrackedObject tracked_objects[]); /* size is num_objects */ 9086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/**************************************************************************************** 9096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn tracking_info is a rectangular array; one row per camera, num_objects elements per row. 9106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn The id field of any unused slots must be -1. Ids need not be ordered or consecutive. On 9116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn completion, the return value is the number of objects located; i.e., the number of objects 9126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn visible by more than one camera. The id field of any unused slots in tracked objects is 9136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn set to -1. 9146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn****************************************************************************************/ 9156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 9186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* Skeletons and Linear-Contour Models * 9196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 9206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef enum CvLeeParameters 9226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 9236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_LEE_INT = 0, 9246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_LEE_FLOAT = 1, 9256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_LEE_DOUBLE = 2, 9266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_LEE_AUTO = -1, 9276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_LEE_ERODE = 0, 9286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_LEE_ZOOM = 1, 9296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_LEE_NON = 2 9306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvLeeParameters; 9316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_NEXT_VORONOISITE2D( SITE ) ((SITE)->edge[0]->site[((SITE)->edge[0]->site[0] == (SITE))]) 9336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_PREV_VORONOISITE2D( SITE ) ((SITE)->edge[1]->site[((SITE)->edge[1]->site[0] == (SITE))]) 9346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_FIRST_VORONOIEDGE2D( SITE ) ((SITE)->edge[0]) 9356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_LAST_VORONOIEDGE2D( SITE ) ((SITE)->edge[1]) 9366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_NEXT_VORONOIEDGE2D( EDGE, SITE ) ((EDGE)->next[(EDGE)->site[0] != (SITE)]) 9376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_PREV_VORONOIEDGE2D( EDGE, SITE ) ((EDGE)->next[2 + ((EDGE)->site[0] != (SITE))]) 9386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_VORONOIEDGE2D_BEGINNODE( EDGE, SITE ) ((EDGE)->node[((EDGE)->site[0] != (SITE))]) 9396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_VORONOIEDGE2D_ENDNODE( EDGE, SITE ) ((EDGE)->node[((EDGE)->site[0] == (SITE))]) 9406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_TWIN_VORONOISITE2D( SITE, EDGE ) ( (EDGE)->site[((EDGE)->site[0] == (SITE))]) 9416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_VORONOISITE2D_FIELDS() \ 9436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn struct CvVoronoiNode2D *node[2]; \ 9446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn struct CvVoronoiEdge2D *edge[2]; 9456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvVoronoiSite2D 9476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 9486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_VORONOISITE2D_FIELDS() 9496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn struct CvVoronoiSite2D *next[2]; 9506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvVoronoiSite2D; 9516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_VORONOIEDGE2D_FIELDS() \ 9536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn struct CvVoronoiNode2D *node[2]; \ 9546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn struct CvVoronoiSite2D *site[2]; \ 9556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn struct CvVoronoiEdge2D *next[4]; 9566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvVoronoiEdge2D 9586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 9596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_VORONOIEDGE2D_FIELDS() 9606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvVoronoiEdge2D; 9616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_VORONOINODE2D_FIELDS() \ 9636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_SET_ELEM_FIELDS(CvVoronoiNode2D) \ 9646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f pt; \ 9656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float radius; 9666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvVoronoiNode2D 9686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 9696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_VORONOINODE2D_FIELDS() 9706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvVoronoiNode2D; 9716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_VORONOIDIAGRAM2D_FIELDS() \ 9736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_GRAPH_FIELDS() \ 9746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSet *sites; 9756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvVoronoiDiagram2D 9776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 9786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_VORONOIDIAGRAM2D_FIELDS() 9796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvVoronoiDiagram2D; 9806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes Voronoi Diagram for given polygons with holes */ 9826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvVoronoiDiagramFromContour(CvSeq* ContourSeq, 9836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVoronoiDiagram2D** VoronoiDiagram, 9846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* VoronoiStorage, 9856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvLeeParameters contour_type CV_DEFAULT(CV_LEE_INT), 9866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int contour_orientation CV_DEFAULT(-1), 9876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int attempt_number CV_DEFAULT(10)); 9886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes Voronoi Diagram for domains in given image */ 9906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvVoronoiDiagramFromImage(IplImage* pImage, 9916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSeq** ContourSeq, 9926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvVoronoiDiagram2D** VoronoiDiagram, 9936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* VoronoiStorage, 9946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvLeeParameters regularization_method CV_DEFAULT(CV_LEE_NON), 9956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float approx_precision CV_DEFAULT(CV_LEE_AUTO)); 9966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 9976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Deallocates the storage */ 9986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvReleaseVoronoiStorage(CvVoronoiDiagram2D* VoronoiDiagram, 9996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage** pVoronoiStorage); 10006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*********************** Linear-Contour Model ****************************/ 10026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstruct CvLCMEdge; 10046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstruct CvLCMNode; 10056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvLCMEdge 10076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 10086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_GRAPH_EDGE_FIELDS() 10096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSeq* chain; 10106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float width; 10116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int index1; 10126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int index2; 10136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvLCMEdge; 10146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvLCMNode 10166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 10176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_GRAPH_VERTEX_FIELDS() 10186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvContour* contour; 10196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} CvLCMNode; 10206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Computes hybrid model from Voronoi Diagram */ 10236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvGraph*) cvLinearContorModelFromVoronoiDiagram(CvVoronoiDiagram2D* VoronoiDiagram, 10246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float maxWidth); 10256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Releases hybrid model storage */ 10276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvReleaseLinearContorModelStorage(CvGraph** Graph); 10286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* two stereo-related functions */ 10316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvInitPerspectiveTransform( CvSize size, const CvPoint2D32f vertex[4], double matrix[3][3], 10336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvArr* rectMap ); 10346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*CVAPI(void) cvInitStereoRectification( CvStereoCamera* params, 10366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvArr* rectMap1, CvArr* rectMap2, 10376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int do_undistortion );*/ 10386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*************************** View Morphing Functions ************************/ 10406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* The order of the function corresponds to the order they should appear in 10426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn the view morphing pipeline */ 10436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds ending points of scanlines on left and right images of stereo-pair */ 10456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvMakeScanlines( const CvMatrix3* matrix, CvSize img_size, 10466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* scanlines1, int* scanlines2, 10476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* lengths1, int* lengths2, 10486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* line_count ); 10496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Grab pixel values from scanlines and stores them sequentially 10516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn (some sort of perspective image transform) */ 10526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvPreWarpImage( int line_count, 10536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* img, 10546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar* dst, 10556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* dst_nums, 10566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* scanlines); 10576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Approximate each grabbed scanline by a sequence of runs 10596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn (lossy run-length compression) */ 10606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvFindRuns( int line_count, 10616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar* prewarp1, 10626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar* prewarp2, 10636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* line_lengths1, 10646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* line_lengths2, 10656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* runs1, 10666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* runs2, 10676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* num_runs1, 10686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* num_runs2); 10696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Compares two sets of compressed scanlines */ 10716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvDynamicCorrespondMulti( int line_count, 10726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* first, 10736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* first_runs, 10746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* second, 10756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* second_runs, 10766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* first_corr, 10776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* second_corr); 10786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Finds scanline ending coordinates for some intermediate "virtual" camera position */ 10806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvMakeAlphaScanlines( int* scanlines1, 10816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* scanlines2, 10826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* scanlinesA, 10836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* lengths, 10846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int line_count, 10856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float alpha); 10866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 10876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Blends data of the left and right image scanlines to get 10886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn pixel values of "virtual" image scanlines */ 10896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvMorphEpilinesMulti( int line_count, 10906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar* first_pix, 10916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* first_num, 10926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar* second_pix, 10936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* second_num, 10946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar* dst_pix, 10956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* dst_num, 10966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float alpha, 10976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* first, 10986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* first_runs, 10996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* second, 11006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* second_runs, 11016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* first_corr, 11026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* second_corr); 11036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Does reverse warping of the morphing result to make 11056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn it fill the destination image rectangle */ 11066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvPostWarpImage( int line_count, 11076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar* src, 11086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* src_nums, 11096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* img, 11106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* scanlines); 11116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Deletes Moire (missed pixels that appear due to discretization) */ 11136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvDeleteMoire( IplImage* img ); 11146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 11176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* Background/foreground segmentation * 11186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 11196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* We discriminate between foreground and background pixels 11216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * by building and maintaining a model of the background. 11226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * Any pixel which does not fit this model is then deemed 11236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * to be foreground. 11246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 11256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * At present we support two core background models, 11266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * one of which has two variations: 11276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 11286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * o CV_BG_MODEL_FGD: latest and greatest algorithm, described in 11296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 11306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * Foreground Object Detection from Videos Containing Complex Background. 11316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * Liyuan Li, Weimin Huang, Irene Y.H. Gu, and Qi Tian. 11326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * ACM MM2003 9p 11336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 11346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * o CV_BG_MODEL_FGD_SIMPLE: 11356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * A code comment describes this as a simplified version of the above, 11366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * but the code is in fact currently identical 11376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 11386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * o CV_BG_MODEL_MOG: "Mixture of Gaussians", older algorithm, described in 11396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 11406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * Moving target classification and tracking from real-time video. 11416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * A Lipton, H Fujijoshi, R Patil 11426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * Proceedings IEEE Workshop on Application of Computer Vision pp 8-14 1998 11436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 11446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * Learning patterns of activity using real-time tracking 11456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * C Stauffer and W Grimson August 2000 11466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * IEEE Transactions on Pattern Analysis and Machine Intelligence 22(8):747-757 11476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn */ 11486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BG_MODEL_FGD 0 11516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BG_MODEL_MOG 1 /* "Mixture of Gaussians". */ 11526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BG_MODEL_FGD_SIMPLE 2 11536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennstruct CvBGStatModel; 11556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef void (CV_CDECL * CvReleaseBGStatModel)( struct CvBGStatModel** bg_model ); 11576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef int (CV_CDECL * CvUpdateBGStatModel)( IplImage* curr_frame, struct CvBGStatModel* bg_model ); 11586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BG_STAT_MODEL_FIELDS() \ 11606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int type; /*type of BG model*/ \ 11616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvReleaseBGStatModel release; \ 11626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvUpdateBGStatModel update; \ 11636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* background; /*8UC3 reference background image*/ \ 11646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* foreground; /*8UC1 foreground image*/ \ 11656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage** layers; /*8UC3 reference background image, can be null */ \ 11666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int layer_count; /* can be zero */ \ 11676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* storage; /*storage for �foreground_regions�*/ \ 11686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSeq* foreground_regions /*foreground object contours*/ 11696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvBGStatModel 11716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 11726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_BG_STAT_MODEL_FIELDS(); 11736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 11746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvBGStatModel; 11756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// 11776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Releases memory used by BGStatModel 11796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE void cvReleaseBGStatModel( CvBGStatModel** bg_model ) 11806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 11816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn if( bg_model && *bg_model && (*bg_model)->release ) 11826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn (*bg_model)->release( bg_model ); 11836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 11846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Updates statistical model and returns number of found foreground regions 11866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCV_INLINE int cvUpdateBGStatModel( IplImage* current_frame, CvBGStatModel* bg_model ) 11876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 11886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn return bg_model && bg_model->update ? bg_model->update( current_frame, bg_model ) : 0; 11896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 11906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// Performs FG post-processing using segmentation 11926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// (all pixels of a region will be classified as foreground if majority of pixels of the region are FG). 11936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// parameters: 11946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// segments - pointer to result of segmentation (for example MeanShiftSegmentation) 11956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn// bg_model - pointer to CvBGStatModel structure 11966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvRefineForegroundMaskBySegm( CvSeq* segments, CvBGStatModel* bg_model ); 11976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 11986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Common use change detection function */ 11996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvChangeDetection( IplImage* prev_frame, 12006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* curr_frame, 12016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* change_mask ); 12026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* 12046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Interface of ACM MM2003 algorithm 12056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*/ 12066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Default parameters of foreground detection algorithm: */ 12086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_LC 128 12096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_N1C 15 12106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_N2C 25 12116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_LCC 64 12136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_N1CC 25 12146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_N2CC 40 12156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Background reference image update parameter: */ 12176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_ALPHA_1 0.1f 12186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* stat model update parameter 12206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 0.002f ~ 1K frame(~45sec), 0.005 ~ 18sec (if 25fps and absolutely static BG) 12216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn */ 12226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_ALPHA_2 0.005f 12236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* start value for alpha parameter (to fast initiate statistic model) */ 12256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_ALPHA_3 0.1f 12266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_DELTA 2 12286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_T 0.9f 12306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_MINAREA 15.f 12326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_FGD_BG_UPDATE_TRESH 0.5f 12346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* See the above-referenced Li/Huang/Gu/Tian paper 12366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * for a full description of these background-model 12376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * tuning parameters. 12386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 12396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * Nomenclature: 'c' == "color", a three-component red/green/blue vector. 12406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * We use histograms of these to model the range of 12416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * colors we've seen at a given background pixel. 12426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 12436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * 'cc' == "color co-occurrence", a six-component vector giving 12446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * RGB color for both this frame and preceding frame. 12456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * We use histograms of these to model the range of 12466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn * color CHANGES we've seen at a given background pixel. 12476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn */ 12486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvFGDStatModelParams 12496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 12506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int Lc; /* Quantized levels per 'color' component. Power of two, typically 32, 64 or 128. */ 12516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int N1c; /* Number of color vectors used to model normal background color variation at a given pixel. */ 12526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int N2c; /* Number of color vectors retained at given pixel. Must be > N1c, typically ~ 5/3 of N1c. */ 12536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Used to allow the first N1c vectors to adapt over time to changing background. */ 12546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int Lcc; /* Quantized levels per 'color co-occurrence' component. Power of two, typically 16, 32 or 64. */ 12566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int N1cc; /* Number of color co-occurrence vectors used to model normal background color variation at a given pixel. */ 12576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int N2cc; /* Number of color co-occurrence vectors retained at given pixel. Must be > N1cc, typically ~ 5/3 of N1cc. */ 12586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Used to allow the first N1cc vectors to adapt over time to changing background. */ 12596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int is_obj_without_holes;/* If TRUE we ignore holes within foreground blobs. Defaults to TRUE. */ 12616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int perform_morphing; /* Number of erode-dilate-erode foreground-blob cleanup iterations. */ 12626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* These erase one-pixel junk blobs and merge almost-touching blobs. Default value is 1. */ 12636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float alpha1; /* How quickly we forget old background pixel values seen. Typically set to 0.1 */ 12656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float alpha2; /* "Controls speed of feature learning". Depends on T. Typical value circa 0.005. */ 12666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float alpha3; /* Alternate to alpha2, used (e.g.) for quicker initial convergence. Typical value 0.1. */ 12676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float delta; /* Affects color and color co-occurrence quantization, typically set to 2. */ 12696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float T; /* "A percentage value which determines when new features can be recognized as new background." (Typically 0.9).*/ 12706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float minArea; /* Discard foreground blobs whose bounding box is smaller than this threshold. */ 12716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 12726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvFGDStatModelParams; 12736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvBGPixelCStatTable 12756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 12766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float Pv, Pvb; 12776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar v[3]; 12786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 12796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvBGPixelCStatTable; 12806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvBGPixelCCStatTable 12826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 12836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float Pv, Pvb; 12846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar v[6]; 12856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 12866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvBGPixelCCStatTable; 12876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvBGPixelStat 12896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 12906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float Pbc; 12916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float Pbcc; 12926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvBGPixelCStatTable* ctable; 12936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvBGPixelCCStatTable* cctable; 12946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar is_trained_st_model; 12956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar is_trained_dyn_model; 12966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 12976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvBGPixelStat; 12986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 12996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvFGDStatModel 13016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 13026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_BG_STAT_MODEL_FIELDS(); 13036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvBGPixelStat* pixel_stat; 13046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* Ftd; 13056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* Fbd; 13066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn IplImage* prev_frame; 13076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvFGDStatModelParams params; 13086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 13096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvFGDStatModel; 13106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Creates FGD model */ 13126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvBGStatModel*) cvCreateFGDStatModel( IplImage* first_frame, 13136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvFGDStatModelParams* parameters CV_DEFAULT(NULL)); 13146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* 13166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Interface of Gaussian mixture algorithm 13176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn "An improved adaptive background mixture model for real-time tracking with shadow detection" 13196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn P. KadewTraKuPong and R. Bowden, 13206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Proc. 2nd European Workshp on Advanced Video-Based Surveillance Systems, 2001." 13216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn http://personal.ee.surrey.ac.uk/Personal/R.Bowden/publications/avbs01/avbs01.pdf 13226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn*/ 13236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Note: "MOG" == "Mixture Of Gaussians": */ 13256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_MOG_MAX_NGAUSSIANS 500 13276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* default parameters of gaussian background detection algorithm */ 13296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_MOG_BACKGROUND_THRESHOLD 0.7 /* threshold sum of weights for background test */ 13306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_MOG_STD_THRESHOLD 2.5 /* lambda=2.5 is 99% */ 13316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_MOG_WINDOW_SIZE 200 /* Learning rate; alpha = 1/CV_GBG_WINDOW_SIZE */ 13326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_MOG_NGAUSSIANS 5 /* = K = number of Gaussians in mixture */ 13336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_MOG_WEIGHT_INIT 0.05 13346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_MOG_SIGMA_INIT 30 13356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_MOG_MINAREA 15.f 13366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#define CV_BGFG_MOG_NCOLORS 3 13396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvGaussBGStatModelParams 13416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 13426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int win_size; /* = 1/alpha */ 13436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int n_gauss; 13446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double bg_threshold, std_threshold, minArea; 13456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double weight_init, variance_init; 13466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}CvGaussBGStatModelParams; 13476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvGaussBGValues 13496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 13506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int match_sum; 13516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double weight; 13526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double variance[CV_BGFG_MOG_NCOLORS]; 13536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double mean[CV_BGFG_MOG_NCOLORS]; 13546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 13556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvGaussBGValues; 13566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvGaussBGPoint 13586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 13596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvGaussBGValues* g_values; 13606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 13616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvGaussBGPoint; 13626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvGaussBGModel 13656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 13666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_BG_STAT_MODEL_FIELDS(); 13676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvGaussBGStatModelParams params; 13686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvGaussBGPoint* g_point; 13696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int countFrames; 13706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 13716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvGaussBGModel; 13726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* Creates Gaussian mixture background model */ 13756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvBGStatModel*) cvCreateGaussianBGModel( IplImage* first_frame, 13766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvGaussBGStatModelParams* parameters CV_DEFAULT(NULL)); 13776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvBGCodeBookElem 13806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 13816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn struct CvBGCodeBookElem* next; 13826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int tLastUpdate; 13836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int stale; 13846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar boxMin[3]; 13856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar boxMax[3]; 13866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar learnMin[3]; 13876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar learnMax[3]; 13886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 13896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvBGCodeBookElem; 13906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 13916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef struct CvBGCodeBookModel 13926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 13936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSize size; 13946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int t; 13956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar cbBounds[3]; 13966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar modMin[3]; 13976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn uchar modMax[3]; 13986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvBGCodeBookElem** cbmap; 13996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* storage; 14006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvBGCodeBookElem* freeList; 14016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 14026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvBGCodeBookModel; 14036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvBGCodeBookModel*) cvCreateBGCodeBookModel(); 14056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvReleaseBGCodeBookModel( CvBGCodeBookModel** model ); 14066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvBGCodeBookUpdate( CvBGCodeBookModel* model, const CvArr* image, 14086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvRect roi CV_DEFAULT(cvRect(0,0,0,0)), 14096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const CvArr* mask CV_DEFAULT(0) ); 14106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(int) cvBGCodeBookDiff( const CvBGCodeBookModel* model, const CvArr* image, 14126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvArr* fgmask, CvRect roi CV_DEFAULT(cvRect(0,0,0,0)) ); 14136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(void) cvBGCodeBookClearStale( CvBGCodeBookModel* model, int staleThresh, 14156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvRect roi CV_DEFAULT(cvRect(0,0,0,0)), 14166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn const CvArr* mask CV_DEFAULT(0) ); 14176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCVAPI(CvSeq*) cvSegmentFGMask( CvArr *fgmask, int poly1Hull0 CV_DEFAULT(1), 14196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn float perimScale CV_DEFAULT(4.f), 14206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* storage CV_DEFAULT(0), 14216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint offset CV_DEFAULT(cvPoint(0,0))); 14226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef __cplusplus 14246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 14256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 14266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#ifdef __cplusplus 14286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/****************************************************************************************\ 14306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn* Calibration engine * 14316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn\****************************************************************************************/ 14326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renntypedef enum CvCalibEtalonType 14346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 14356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_CALIB_ETALON_USER = -1, 14366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_CALIB_ETALON_CHESSBOARD = 0, 14376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_CALIB_ETALON_CHECKERBOARD = CV_CALIB_ETALON_CHESSBOARD 14386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn} 14396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius RennCvCalibEtalonType; 14406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennclass CV_EXPORTS CvCalibFilter 14426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn{ 14436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennpublic: 14446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Constructor & destructor */ 14456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvCalibFilter(); 14466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual ~CvCalibFilter(); 14476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Sets etalon type - one for all cameras. 14496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn etalonParams is used in case of pre-defined etalons (such as chessboard). 14506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Number of elements in etalonParams is determined by etalonType. 14516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn E.g., if etalon type is CV_ETALON_TYPE_CHESSBOARD then: 14526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn etalonParams[0] is number of squares per one side of etalon 14536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn etalonParams[1] is number of squares per another side of etalon 14546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn etalonParams[2] is linear size of squares in the board in arbitrary units. 14556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn pointCount & points are used in case of 14566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CV_CALIB_ETALON_USER (user-defined) etalon. */ 14576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool 14586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn SetEtalon( CvCalibEtalonType etalonType, double* etalonParams, 14596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int pointCount = 0, CvPoint2D32f* points = 0 ); 14606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Retrieves etalon parameters/or and points */ 14626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual CvCalibEtalonType 14636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn GetEtalon( int* paramCount = 0, const double** etalonParams = 0, 14646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* pointCount = 0, const CvPoint2D32f** etalonPoints = 0 ) const; 14656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Sets number of cameras calibrated simultaneously. It is equal to 1 initially */ 14676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual void SetCameraCount( int cameraCount ); 14686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Retrieves number of cameras */ 14706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int GetCameraCount() const { return cameraCount; } 14716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Starts cameras calibration */ 14736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool SetFrames( int totalFrames ); 14746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14756acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Stops cameras calibration */ 14766acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual void Stop( bool calibrate = false ); 14776acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14786acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Retrieves number of cameras */ 14796acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn bool IsCalibrated() const { return isCalibrated; } 14806acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14816acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Feeds another serie of snapshots (one per each camera) to filter. 14826acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Etalon points on these images are found automatically. 14836acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn If the function can't locate points, it returns false */ 14846acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool FindEtalon( IplImage** imgs ); 14856acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14866acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* The same but takes matrices */ 14876acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool FindEtalon( CvMat** imgs ); 14886acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14896acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Lower-level function for feeding filter with already found etalon points. 14906acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn Array of point arrays for each camera is passed. */ 14916acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool Push( const CvPoint2D32f** points = 0 ); 14926acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14936acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Returns total number of accepted frames and, optionally, 14946acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn total number of frames to collect */ 14956acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual int GetFrameCount( int* framesTotal = 0 ) const; 14966acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 14976acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Retrieves camera parameters for specified camera. 14986acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn If camera is not calibrated the function returns 0 */ 14996acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual const CvCamera* GetCameraParams( int idx = 0 ) const; 15006acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15016acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual const CvStereoCamera* GetStereoParams() const; 15026acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15036acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Sets camera parameters for all cameras */ 15046acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool SetCameraParams( CvCamera* params ); 15056acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15066acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Saves all camera parameters to file */ 15076acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool SaveCameraParams( const char* filename ); 15086acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15096acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Loads all camera parameters from file */ 15106acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool LoadCameraParams( const char* filename ); 15116acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15126acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Undistorts images using camera parameters. Some of src pointers can be NULL. */ 15136acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool Undistort( IplImage** src, IplImage** dst ); 15146acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15156acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Undistorts images using camera parameters. Some of src pointers can be NULL. */ 15166acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool Undistort( CvMat** src, CvMat** dst ); 15176acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15186acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Returns array of etalon points detected/partally detected 15196acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn on the latest frame for idx-th camera */ 15206acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool GetLatestPoints( int idx, CvPoint2D32f** pts, 15216acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int* count, bool* found ); 15226acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15236acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Draw the latest detected/partially detected etalon */ 15246acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual void DrawPoints( IplImage** dst ); 15256acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15266acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Draw the latest detected/partially detected etalon */ 15276acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual void DrawPoints( CvMat** dst ); 15286acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15296acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool Rectify( IplImage** srcarr, IplImage** dstarr ); 15306acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn virtual bool Rectify( CvMat** srcarr, CvMat** dstarr ); 15316acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15326acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Rennprotected: 15336acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15346acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn enum { MAX_CAMERAS = 3 }; 15356acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15366acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* etalon data */ 15376acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvCalibEtalonType etalonType; 15386acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int etalonParamCount; 15396acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn double* etalonParams; 15406acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int etalonPointCount; 15416acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f* etalonPoints; 15426acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvSize imgSize; 15436acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMat* grayImg; 15446acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMat* tempImg; 15456acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMemStorage* storage; 15466acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15476acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* camera data */ 15486acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int cameraCount; 15496acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvCamera cameraParams[MAX_CAMERAS]; 15506acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvStereoCamera stereo; 15516acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f* points[MAX_CAMERAS]; 15526acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMat* undistMap[MAX_CAMERAS][2]; 15536acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMat* undistImg; 15546acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int latestCounts[MAX_CAMERAS]; 15556acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvPoint2D32f* latestPoints[MAX_CAMERAS]; 15566acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn CvMat* rectMap[MAX_CAMERAS][2]; 15576acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15586acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn /* Added by Valery */ 15596acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn //CvStereoCamera stereoParams; 15606acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15616acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int maxPoints; 15626acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int framesTotal; 15636acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn int framesAccepted; 15646acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn bool isCalibrated; 15656acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn}; 15666acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15676acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "cvaux.hpp" 15686acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#include "cvvidsurv.hpp" 15696acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/*#include "cvmat.hpp"*/ 15706acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 15716acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15726acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn#endif 15736acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn 15746acb9a7ea3d7564944e12cbc73a857b88c1301eeMarius Renn/* End of file. */ 1575