mirror of
https://github.com/opencv/opencv.git
synced 2026-07-21 19:33:03 +04:00
Hid symbols in static builds, added LTO flags, removed exports from ts
This commit is contained in:
committed by
Maksim Shabunin
parent
ef04ca9e0f
commit
6fb9d42c3f
@@ -1895,32 +1895,6 @@ protected:
|
||||
cv::RNG* rng;
|
||||
};
|
||||
|
||||
/****************************************************************************************\
|
||||
* Auxilary functions declarations *
|
||||
\****************************************************************************************/
|
||||
|
||||
/* Generates <sample> from multivariate normal distribution, where <mean> - is an
|
||||
average row vector, <cov> - symmetric covariation matrix */
|
||||
CVAPI(void) cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample,
|
||||
CvRNG* rng CV_DEFAULT(0) );
|
||||
|
||||
/* Generates sample from gaussian mixture distribution */
|
||||
CVAPI(void) cvRandGaussMixture( CvMat* means[],
|
||||
CvMat* covs[],
|
||||
float weights[],
|
||||
int clsnum,
|
||||
CvMat* sample,
|
||||
CvMat* sampClasses CV_DEFAULT(0) );
|
||||
|
||||
#define CV_TS_CONCENTRIC_SPHERES 0
|
||||
|
||||
/* creates test set */
|
||||
CVAPI(void) cvCreateTestSet( int type, CvMat** samples,
|
||||
int num_samples,
|
||||
int num_features,
|
||||
CvMat** responses,
|
||||
int num_classes, ... );
|
||||
|
||||
/****************************************************************************************\
|
||||
* Data *
|
||||
\****************************************************************************************/
|
||||
|
||||
@@ -114,153 +114,11 @@ void CvStatModel::write( CvFileStorage*, const char* ) const
|
||||
OPENCV_ERROR( CV_StsNotImplemented, "CvStatModel::write", "" );
|
||||
}
|
||||
|
||||
|
||||
void CvStatModel::read( CvFileStorage*, CvFileNode* )
|
||||
{
|
||||
OPENCV_ERROR( CV_StsNotImplemented, "CvStatModel::read", "" );
|
||||
}
|
||||
|
||||
|
||||
/* Calculates upper triangular matrix S, where A is a symmetrical matrix A=S'*S */
|
||||
static void cvChol( CvMat* A, CvMat* S )
|
||||
{
|
||||
int dim = A->rows;
|
||||
|
||||
int i, j, k;
|
||||
float sum;
|
||||
|
||||
for( i = 0; i < dim; i++ )
|
||||
{
|
||||
for( j = 0; j < i; j++ )
|
||||
CV_MAT_ELEM(*S, float, i, j) = 0;
|
||||
|
||||
sum = 0;
|
||||
for( k = 0; k < i; k++ )
|
||||
sum += CV_MAT_ELEM(*S, float, k, i) * CV_MAT_ELEM(*S, float, k, i);
|
||||
|
||||
CV_MAT_ELEM(*S, float, i, i) = (float)sqrt(CV_MAT_ELEM(*A, float, i, i) - sum);
|
||||
|
||||
for( j = i + 1; j < dim; j++ )
|
||||
{
|
||||
sum = 0;
|
||||
for( k = 0; k < i; k++ )
|
||||
sum += CV_MAT_ELEM(*S, float, k, i) * CV_MAT_ELEM(*S, float, k, j);
|
||||
|
||||
CV_MAT_ELEM(*S, float, i, j) =
|
||||
(CV_MAT_ELEM(*A, float, i, j) - sum) / CV_MAT_ELEM(*S, float, i, i);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Generates <sample> from multivariate normal distribution, where <mean> - is an
|
||||
average row vector, <cov> - symmetric covariation matrix */
|
||||
CV_IMPL void cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample, CvRNG* rng )
|
||||
{
|
||||
int dim = sample->cols;
|
||||
int amount = sample->rows;
|
||||
|
||||
CvRNG state = rng ? *rng : cvRNG( cvGetTickCount() );
|
||||
cvRandArr(&state, sample, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(1) );
|
||||
|
||||
CvMat* utmat = cvCreateMat(dim, dim, sample->type);
|
||||
CvMat* vect = cvCreateMatHeader(1, dim, sample->type);
|
||||
|
||||
cvChol(cov, utmat);
|
||||
|
||||
int i;
|
||||
for( i = 0; i < amount; i++ )
|
||||
{
|
||||
cvGetRow(sample, vect, i);
|
||||
cvMatMulAdd(vect, utmat, mean, vect);
|
||||
}
|
||||
|
||||
cvReleaseMat(&vect);
|
||||
cvReleaseMat(&utmat);
|
||||
}
|
||||
|
||||
|
||||
/* Generates <sample> of <amount> points from a discrete variate xi,
|
||||
where Pr{xi = k} == probs[k], 0 < k < len - 1. */
|
||||
static void cvRandSeries( float probs[], int len, int sample[], int amount )
|
||||
{
|
||||
CvMat* univals = cvCreateMat(1, amount, CV_32FC1);
|
||||
float* knots = (float*)cvAlloc( len * sizeof(float) );
|
||||
|
||||
int i, j;
|
||||
|
||||
CvRNG state = cvRNG(-1);
|
||||
cvRandArr(&state, univals, CV_RAND_UNI, cvScalarAll(0), cvScalarAll(1) );
|
||||
|
||||
knots[0] = probs[0];
|
||||
for( i = 1; i < len; i++ )
|
||||
knots[i] = knots[i - 1] + probs[i];
|
||||
|
||||
for( i = 0; i < amount; i++ )
|
||||
for( j = 0; j < len; j++ )
|
||||
{
|
||||
if ( CV_MAT_ELEM(*univals, float, 0, i) <= knots[j] )
|
||||
{
|
||||
sample[i] = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cvFree(&knots);
|
||||
}
|
||||
|
||||
/* Generates <sample> from gaussian mixture distribution */
|
||||
CV_IMPL void cvRandGaussMixture( CvMat* means[],
|
||||
CvMat* covs[],
|
||||
float weights[],
|
||||
int clsnum,
|
||||
CvMat* sample,
|
||||
CvMat* sampClasses )
|
||||
{
|
||||
int dim = sample->cols;
|
||||
int amount = sample->rows;
|
||||
|
||||
int i, clss;
|
||||
|
||||
int* sample_clsnum = (int*)cvAlloc( amount * sizeof(int) );
|
||||
CvMat** utmats = (CvMat**)cvAlloc( clsnum * sizeof(CvMat*) );
|
||||
CvMat* vect = cvCreateMatHeader(1, dim, CV_32FC1);
|
||||
|
||||
CvMat* classes;
|
||||
if( sampClasses )
|
||||
classes = sampClasses;
|
||||
else
|
||||
classes = cvCreateMat(1, amount, CV_32FC1);
|
||||
|
||||
CvRNG state = cvRNG(-1);
|
||||
cvRandArr(&state, sample, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(1));
|
||||
|
||||
cvRandSeries(weights, clsnum, sample_clsnum, amount);
|
||||
|
||||
for( i = 0; i < clsnum; i++ )
|
||||
{
|
||||
utmats[i] = cvCreateMat(dim, dim, CV_32FC1);
|
||||
cvChol(covs[i], utmats[i]);
|
||||
}
|
||||
|
||||
for( i = 0; i < amount; i++ )
|
||||
{
|
||||
CV_MAT_ELEM(*classes, float, 0, i) = (float)sample_clsnum[i];
|
||||
cvGetRow(sample, vect, i);
|
||||
clss = sample_clsnum[i];
|
||||
cvMatMulAdd(vect, utmats[clss], means[clss], vect);
|
||||
}
|
||||
|
||||
if( !sampClasses )
|
||||
cvReleaseMat(&classes);
|
||||
for( i = 0; i < clsnum; i++ )
|
||||
cvReleaseMat(&utmats[i]);
|
||||
cvFree(&utmats);
|
||||
cvFree(&sample_clsnum);
|
||||
cvReleaseMat(&vect);
|
||||
}
|
||||
|
||||
|
||||
CvMat* icvGenerateRandomClusterCenters ( int seed, const CvMat* data,
|
||||
int num_of_clusters, CvMat* _centers )
|
||||
{
|
||||
@@ -317,55 +175,6 @@ CvMat* icvGenerateRandomClusterCenters ( int seed, const CvMat* data,
|
||||
return _centers ? _centers : centers;
|
||||
} // end of icvGenerateRandomClusterCenters
|
||||
|
||||
// By S. Dilman - begin -
|
||||
|
||||
#define ICV_RAND_MAX 4294967296 // == 2^32
|
||||
|
||||
// static void cvRandRoundUni (CvMat* center,
|
||||
// float radius_small,
|
||||
// float radius_large,
|
||||
// CvMat* desired_matrix,
|
||||
// CvRNG* rng_state_ptr)
|
||||
// {
|
||||
// float rad, norm, coefficient;
|
||||
// int dim, size, i, j;
|
||||
// CvMat *cov, sample;
|
||||
// CvRNG rng_local;
|
||||
|
||||
// CV_FUNCNAME("cvRandRoundUni");
|
||||
// __BEGIN__
|
||||
|
||||
// rng_local = *rng_state_ptr;
|
||||
|
||||
// CV_ASSERT ((radius_small >= 0) &&
|
||||
// (radius_large > 0) &&
|
||||
// (radius_small <= radius_large));
|
||||
// CV_ASSERT (center && desired_matrix && rng_state_ptr);
|
||||
// CV_ASSERT (center->rows == 1);
|
||||
// CV_ASSERT (center->cols == desired_matrix->cols);
|
||||
|
||||
// dim = desired_matrix->cols;
|
||||
// size = desired_matrix->rows;
|
||||
// cov = cvCreateMat (dim, dim, CV_32FC1);
|
||||
// cvSetIdentity (cov);
|
||||
// cvRandMVNormal (center, cov, desired_matrix, &rng_local);
|
||||
|
||||
// for (i = 0; i < size; i++)
|
||||
// {
|
||||
// rad = (float)(cvRandReal(&rng_local)*(radius_large - radius_small) + radius_small);
|
||||
// cvGetRow (desired_matrix, &sample, i);
|
||||
// norm = (float) cvNorm (&sample, 0, CV_L2);
|
||||
// coefficient = rad / norm;
|
||||
// for (j = 0; j < dim; j++)
|
||||
// CV_MAT_ELEM (sample, float, 0, j) *= coefficient;
|
||||
// }
|
||||
|
||||
// __END__
|
||||
|
||||
// }
|
||||
|
||||
// By S. Dilman - end -
|
||||
|
||||
static int CV_CDECL
|
||||
icvCmpIntegers( const void* a, const void* b )
|
||||
{
|
||||
|
||||
@@ -1880,7 +1880,7 @@ double CvDTree::calc_node_dir( CvDTreeNode* node )
|
||||
namespace cv
|
||||
{
|
||||
|
||||
template<> CV_EXPORTS void DefaultDeleter<CvDTreeSplit>::operator ()(CvDTreeSplit* obj) const
|
||||
template<> void DefaultDeleter<CvDTreeSplit>::operator ()(CvDTreeSplit* obj) const
|
||||
{
|
||||
fastFree(obj);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user