299 lines
13 KiB
C
299 lines
13 KiB
C
/*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_*/
|
|
|