⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvaux.h.svn-base

📁 这是于老师移植到dsp的源码
💻 SVN-BASE
📖 第 1 页 / 共 4 页
字号:
////////////////////////////////////////////////////////////////////////////////////////////  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.////  By downloading, copying, installing or using the software you agree to this license.//  If you do not agree to this license, do not download, install,//  copy or use the software.//////                 License For Embedded Computer Vision Library//// Copyright (c) 2008, EMCV Project,// Copyright (c) 2000-2007, Intel Corporation,// All rights reserved.// Third party copyrights are property of their respective owners.//// Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met:////    * Redistributions of source code must retain the above copyright notice, //      this list of conditions and the following disclaimer.//    * Redistributions in binary form must reproduce the above copyright notice, //      this list of conditions and the following disclaimer in the documentation //      and/or other materials provided with the distribution.//    * Neither the name of the copyright holders nor the names of their contributors //      may be used to endorse or promote products derived from this software //      without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY // OF SUCH DAMAGE.//// Contributors://    * Shiqi Yu (Shenzhen Institute of Advanced Technology, Chinese Academy of Sciences)#ifndef __CVAUX__H__#define __CVAUX__H__#include <cv.h>#ifdef __cplusplusextern "C" {#endifCVAPI(CvSeq*) cvSegmentImage( const CvArr* srcarr, CvArr* dstarr,                                    double canny_threshold,                                    double ffill_threshold,                                    CvMemStorage* storage );/****************************************************************************************\*                                  Eigen objects                                         *\****************************************************************************************/typedef int (CV_CDECL * CvCallback)(int index, void* buffer, void* user_data);typedef union{    CvCallback callback;    void* data;}CvInput;#define CV_EIGOBJ_NO_CALLBACK     0#define CV_EIGOBJ_INPUT_CALLBACK  1#define CV_EIGOBJ_OUTPUT_CALLBACK 2#define CV_EIGOBJ_BOTH_CALLBACK   3/* Calculates covariation matrix of a set of arrays */CVAPI(void)  cvCalcCovarMatrixEx( int nObjects, void* input, int ioFlags,                                  int ioBufSize, uchar* buffer, void* userData,                                  IplImage* avg, float* covarMatrix );/* Calculates eigen values and vectors of covariation matrix of a set of   arrays */CVAPI(void)  cvCalcEigenObjects( int nObjects, void* input, void* output,                                 int ioFlags, int ioBufSize, void* userData,                                 CvTermCriteria* calcLimit, IplImage* avg,                                 float* eigVals );/* Calculates dot product (obj - avg) * eigObj (i.e. projects image to eigen vector) */CVAPI(double)  cvCalcDecompCoeff( IplImage* obj, IplImage* eigObj, IplImage* avg );/* Projects image to eigen space (finds all decomposion coefficients */CVAPI(void)  cvEigenDecomposite( IplImage* obj, int nEigObjs, void* eigInput,                                 int ioFlags, void* userData, IplImage* avg,                                 float* coeffs );/* Projects original objects used to calculate eigen space basis to that space */CVAPI(void)  cvEigenProjection( void* eigInput, int nEigObjs, int ioFlags,                                void* userData, float* coeffs, IplImage* avg,                                IplImage* proj );/****************************************************************************************\*                                       1D/2D HMM                                        *\****************************************************************************************/typedef struct CvImgObsInfo{    int obs_x;    int obs_y;    int obs_size;    float* obs;//consequtive observations    int* state;/* arr of pairs superstate/state to which observation belong */    int* mix;  /* number of mixture to which observation belong */}CvImgObsInfo;/*struct for 1 image*/typedef CvImgObsInfo Cv1DObsInfo;typedef struct CvEHMMState{    int num_mix;        /*number of mixtures in this state*/    float* mu;          /*mean vectors corresponding to each mixture*/    float* inv_var;     /* square root of inversed variances corresp. to each mixture*/    float* log_var_val; /* sum of 0.5 (LN2PI + ln(variance[i]) ) for i=1,n */    float* weight;      /*array of mixture weights. Summ of all weights in state is 1. */}CvEHMMState;typedef struct CvEHMM{    int level; /* 0 - lowest(i.e its states are real states), ..... */    int num_states; /* number of HMM states */    float*  transP;/*transition probab. matrices for states */    float** obsProb; /* if level == 0 - array of brob matrices corresponding to hmm                        if level == 1 - martix of matrices */    union    {        CvEHMMState* state; /* if level == 0 points to real states array,                               if not - points to embedded hmms */        struct CvEHMM* ehmm; /* pointer to an embedded model or NULL, if it is a leaf */    } u;}CvEHMM;/*CVAPI(int)  icvCreate1DHMM( CvEHMM** this_hmm,                                   int state_number, int* num_mix, int obs_size );CVAPI(int)  icvRelease1DHMM( CvEHMM** phmm );CVAPI(int)  icvUniform1DSegm( Cv1DObsInfo* obs_info, CvEHMM* hmm );CVAPI(int)  icvInit1DMixSegm( Cv1DObsInfo** obs_info_array, int num_img, CvEHMM* hmm);CVAPI(int)  icvEstimate1DHMMStateParams( CvImgObsInfo** obs_info_array, int num_img, CvEHMM* hmm);CVAPI(int)  icvEstimate1DObsProb( CvImgObsInfo* obs_info, CvEHMM* hmm );CVAPI(int)  icvEstimate1DTransProb( Cv1DObsInfo** obs_info_array,                                           int num_seq,                                           CvEHMM* hmm );CVAPI(float)  icvViterbi( Cv1DObsInfo* obs_info, CvEHMM* hmm);CVAPI(int)  icv1DMixSegmL2( CvImgObsInfo** obs_info_array, int num_img, CvEHMM* hmm );*//*********************************** Embedded HMMs *************************************//* Creates 2D HMM */CVAPI(CvEHMM*)  cvCreate2DHMM( int* stateNumber, int* numMix, int obsSize );/* Releases HMM */CVAPI(void)  cvRelease2DHMM( CvEHMM** hmm );#define CV_COUNT_OBS(roi, win, delta, numObs )                                       \{                                                                                    \   (numObs)->width  =((roi)->width  -(win)->width  +(delta)->width)/(delta)->width;  \   (numObs)->height =((roi)->height -(win)->height +(delta)->height)/(delta)->height;\}/* Creates storage for observation vectors */CVAPI(CvImgObsInfo*)  cvCreateObsInfo( CvSize numObs, int obsSize );/* Releases storage for observation vectors */CVAPI(void)  cvReleaseObsInfo( CvImgObsInfo** obs_info );/* The function takes an image on input and and returns the sequnce of observations   to be used with an embedded HMM; Each observation is top-left block of DCT   coefficient matrix */CVAPI(void)  cvImgToObs_DCT( const CvArr* arr, float* obs, CvSize dctSize,                             CvSize obsSize, CvSize delta );/* Uniformly segments all observation vectors extracted from image */CVAPI(void)  cvUniformImgSegm( CvImgObsInfo* obs_info, CvEHMM* ehmm );/* Does mixture segmentation of the states of embedded HMM */CVAPI(void)  cvInitMixSegm( CvImgObsInfo** obs_info_array,                            int num_img, CvEHMM* hmm );/* Function calculates means, variances, weights of every Gaussian mixture   of every low-level state of embedded HMM */CVAPI(void)  cvEstimateHMMStateParams( CvImgObsInfo** obs_info_array,                                       int num_img, CvEHMM* hmm );/* Function computes transition probability matrices of embedded HMM   given observations segmentation */CVAPI(void)  cvEstimateTransProb( CvImgObsInfo** obs_info_array,                                  int num_img, CvEHMM* hmm );/* Function computes probabilities of appearing observations at any state   (i.e. computes P(obs|state) for every pair(obs,state)) */CVAPI(void)  cvEstimateObsProb( CvImgObsInfo* obs_info,                                CvEHMM* hmm );/* Runs Viterbi algorithm for embedded HMM */CVAPI(float)  cvEViterbi( CvImgObsInfo* obs_info, CvEHMM* hmm );/* Function clusters observation vectors from several images   given observations segmentation.   Euclidean distance used for clustering vectors.   Centers of clusters are given means of every mixture */CVAPI(void)  cvMixSegmL2( CvImgObsInfo** obs_info_array,                          int num_img, CvEHMM* hmm );/****************************************************************************************\*               A few functions from old stereo gesture recognition demosions            *\****************************************************************************************//* Creates hand mask image given several points on the hand */CVAPI(void)  cvCreateHandMask( CvSeq* hand_points,                                   IplImage *img_mask, CvRect *roi);/* Finds hand region in range image data */CVAPI(void)  cvFindHandRegion (CvPoint3D32f* points, int count,                                CvSeq* indexs,                                float* line, CvSize2D32f size, int flag,                                CvPoint3D32f* center,                                CvMemStorage* storage, CvSeq **numbers);/* Finds hand region in range image data (advanced version) */CVAPI(void)  cvFindHandRegionA( CvPoint3D32f* points, int count,                                CvSeq* indexs,                                float* line, CvSize2D32f size, int jc,                                CvPoint3D32f* center,                                CvMemStorage* storage, CvSeq **numbers);/****************************************************************************************\*                           Additional operations on Subdivisions                        *\****************************************************************************************/// paints voronoi diagram: just demo functionCVAPI(void)  icvDrawMosaic( CvSubdiv2D* subdiv, IplImage* src, IplImage* dst );// checks planar subdivision for correctness. It is not an absolute check,// but it verifies some relations between quad-edgesCVAPI(int)   icvSubdiv2DCheck( CvSubdiv2D* subdiv );// returns squared distance between two 2D points with floating-point coordinates.CV_INLINE double icvSqDist2D32f( CvPoint2D32f pt1, CvPoint2D32f pt2 ){    double dx = pt1.x - pt2.x;    double dy = pt1.y - pt2.y;    return dx*dx + dy*dy;}/****************************************************************************************\*                           More operations on sequences                                 *\****************************************************************************************//*****************************************************************************************/#define CV_CURRENT_INT( reader ) (*((int *)(reader).ptr))#define CV_PREV_INT( reader ) (*((int *)(reader).prev_elem))#define  CV_GRAPH_WEIGHTED_VERTEX_FIELDS() CV_GRAPH_VERTEX_FIELDS()\    float weight;#define  CV_GRAPH_WEIGHTED_EDGE_FIELDS() CV_GRAPH_EDGE_FIELDS()typedef struct CvGraphWeightedVtx{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -