mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
297 lines
13 KiB
297 lines
13 KiB
/*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_*/
|
|
|