| /*M/////////////////////////////////////////////////////////////////////////////////////// |
| // |
| // 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. |
| // |
| // |
| // Intel License Agreement |
| // For Open Source Computer Vision Library |
| // |
| // Copyright (C) 2000, 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: |
| // |
| // * Redistribution's of source code must retain the above copyright notice, |
| // this list of conditions and the following disclaimer. |
| // |
| // * Redistribution's 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. |
| // |
| // * The name of Intel Corporation may not 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 Intel Corporation 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. |
| // |
| //M*/ |
| |
| #ifndef _CV_VM_H_ |
| #define _CV_VM_H_ |
| |
| /*----------------------- Internal ViewMorphing Functions ------------------------------*/ |
| |
| /*======================================================================================*/ |
| |
| typedef struct CvMatrix4 |
| { |
| float m[4][4]; |
| } |
| CvMatrix4; |
| |
| |
| /* Scanline section. Find coordinates by fundamental matrix */ |
| |
| /* Epsilon and real zero */ |
| #define EPSILON 1.e-4 |
| //#define REAL_ZERO(x) ( (x) < EPSILON && (x) > -EPSILON) |
| #define REAL_ZERO(x) ( (x) < 1e-8 && (x) > -1e-8) |
| |
| #define SIGN(x) ( (x)<0 ? -1:((x)>0?1:0 ) ) |
| |
| CvStatus icvMakeScanlinesLengths( int* scanlines, |
| int numlines, |
| int* lens); |
| |
| /*=============================== PreWarp section ======================================*/ |
| |
| CV_INLINE int icvGetColor(uchar* valueRGB); |
| |
| CvStatus icvFindRunsInOneImage( |
| int numLines, /* number of scanlines */ |
| uchar* prewarp, /* prewarp image */ |
| int* line_lens, /* line lengths in pixels */ |
| int* runs, /* result runs */ |
| int* num_runs); |
| |
| /*================================ Morphing section ====================================*/ |
| |
| CvStatus icvMorphEpilines8uC3( uchar* first_pix, /* raster epiline from the first image */ |
| uchar* second_pix, /* raster epiline from the second image */ |
| uchar* dst_pix, /* raster epiline from the destination image */ |
| /* (it's an output parameter) */ |
| float alpha, /* relative position of camera */ |
| int* first, /* first sequence of runs */ |
| int first_runs, /* it's length */ |
| int* second, /* second sequence of runs */ |
| int second_runs, |
| int* first_corr, /* correspond information for the 1st seq */ |
| int* second_corr, |
| int dst_len); /* correspond information for the 2nd seq */ |
| |
| /*========================== Dynamic correspond section ================================*/ |
| |
| CvStatus icvDynamicCorrespond( int* first, /* first sequence of runs */ |
| /* s0|w0|s1|w1|...|s(n-1)|w(n-1)|sn */ |
| int first_runs, /* number of runs */ |
| int* second, /* second sequence of runs */ |
| int second_runs, |
| int* first_corr, /* s0'|e0'|s1'|e1'|... */ |
| int* second_corr ); |
| |
| /*============================= PostWarp Functions =====================================*/ |
| |
| CvStatus icvFetchLine8uC3R( |
| uchar* src, int src_step, |
| uchar* dst, int* dst_num, |
| CvSize src_size, |
| CvPoint start, |
| CvPoint end ); |
| |
| CvStatus icvDrawLine8uC3R( |
| uchar* src, int src_num, |
| uchar* dst, int dst_step, |
| CvSize dst_size, |
| CvPoint start, |
| CvPoint end ); |
| |
| |
| /*============================== Fundamental Matrix Functions ==========================*/ |
| CvStatus icvPoint7( int* points1, |
| int* points2, |
| double* F, |
| int* amount |
| ); |
| |
| CvStatus icvCubic( double a2, double a1, |
| double a0, double* squares ); |
| |
| double icvDet( double* M ); |
| double icvMinor( double* M, int x, int y ); |
| |
| int |
| icvGaussMxN( double *A, double *B, int M, int N, double **solutions ); |
| |
| CvStatus |
| icvGetCoef( double *f1, double *f2, double *a2, double *a1, double *a0 ); |
| |
| /*================================= Scanlines Functions ================================*/ |
| |
| CvStatus icvGetCoefficient( CvMatrix3* matrix, |
| CvSize imgSize, |
| int* scanlines_1, |
| int* scanlines_2, |
| int* numlines); |
| |
| CvStatus icvGetCoefficientDefault( CvMatrix3* matrix, |
| CvSize imgSize, |
| int* scanlines_1, |
| int* scanlines_2, |
| int* numlines); |
| |
| CvStatus icvGetCoefficientStereo( CvMatrix3* matrix, |
| CvSize imgSize, |
| float* l_epipole, |
| float* r_epipole, |
| int* scanlines_1, |
| int* scanlines_2, |
| int* numlines |
| ); |
| |
| CvStatus icvGetCoefficientOrto( CvMatrix3* matrix, |
| CvSize imgSize, |
| int* scanlines_1, |
| int* scanlines_2, |
| int* numlines); |
| |
| |
| CvStatus icvGetCrossEpilineFrame( CvSize imgSize, |
| float* epiline, |
| int* x1, |
| int* y1, |
| int* x2, |
| int* y2 |
| ); |
| |
| CvStatus icvBuildScanlineLeftStereo( |
| CvSize imgSize, |
| CvMatrix3* matrix, |
| float* l_epipole, |
| float* l_angle, |
| float l_radius, |
| int* scanlines_1, |
| int* scanlines_2, |
| int* numlines); |
| |
| CvStatus icvBuildScanlineRightStereo( |
| CvSize imgSize, |
| CvMatrix3* matrix, |
| float* r_epipole, |
| float* r_angle, |
| float r_radius, |
| int* scanlines_1, |
| int* scanlines_2, |
| int* numlines); |
| |
| CvStatus icvGetStartEnd1( |
| CvMatrix3* matrix, |
| CvSize imgSize, |
| float* l_start_end, |
| float* r_start_end ); |
| |
| CvStatus icvGetStartEnd2( |
| CvMatrix3* matrix, |
| CvSize imgSize, |
| float* l_start_end, |
| float* r_start_end ); |
| |
| CvStatus icvGetStartEnd3( |
| CvMatrix3* matrix, |
| CvSize imgSize, |
| float* l_start_end, |
| float* r_start_end ); |
| |
| CvStatus icvGetStartEnd4( |
| CvMatrix3* matrix, |
| CvSize imgSize, |
| float* l_start_end, |
| float* r_start_end ); |
| |
| CvStatus icvBuildScanlineLeft( |
| CvMatrix3* matrix, |
| CvSize imgSize, |
| int* scanlines_1, |
| int* scanlines_2, |
| float* l_start_end, |
| int* numlines |
| ); |
| |
| CvStatus icvBuildScanlineRight( |
| CvMatrix3* matrix, |
| CvSize imgSize, |
| int* scanlines_1, |
| int* scanlines_2, |
| float* r_start_end, |
| int* numlines |
| ); |
| |
| |
| /*=================================== LMedS Functions ==================================*/ |
| CvStatus icvLMedS7( |
| int* points1, |
| int* points2, |
| CvMatrix3* matrix); |
| |
| |
| CvStatus icvLMedS( int* points1, |
| int* points2, |
| int numPoints, |
| CvMatrix3* fundamentalMatrix ); |
| |
| |
| /* |
| CvStatus icvFindFundamentalMatrix( |
| int* points1, |
| int* points2, |
| int numpoints, |
| int method, |
| CvMatrix3* matrix); |
| */ |
| void icvChoose7( int* ml, int* mr, |
| int num, int* ml7, |
| int* mr7 ); |
| |
| double icvMedian( int* ml, int* mr, |
| int num, double* F ); |
| |
| int icvBoltingPoints( int* ml, int* mr, |
| int num, double* F, |
| double Mj, int* *new_ml, |
| int* *new_mr, int* new_num); |
| |
| CvStatus icvPoints8( int* ml, int* mr, |
| int num, double* F ); |
| |
| CvStatus icvRank2Constraint( double* F ); |
| |
| CvStatus icvSort( double* array, int length ); |
| |
| double icvAnalyticPoints8( double* A, |
| int num, double* F ); |
| |
| int icvSingularValueDecomposition( int M, |
| int N, |
| double* A, |
| double* W, |
| int get_U, |
| double* U, |
| int get_V, |
| double* V |
| ); |
| |
| |
| /*======================================================================================*/ |
| #endif/*_CV_VM_H_*/ |
| |