Merge pull request #3772 from Dmitry-Me:reduceVariableScope4

pull/3775/head
Vadim Pisarevsky 10 years ago
commit 7c7a63bebc
  1. 22
      modules/calib3d/src/posit.cpp

@ -116,7 +116,7 @@ static CvStatus icvPOSIT( CvPOSITObject *pObject, CvPoint2D32f *imagePoints,
{ {
int i, j, k; int i, j, k;
int count = 0, converged = 0; int count = 0, converged = 0;
float inorm, jnorm, invInorm, invJnorm, invScale, scale = 0, inv_Z = 0; float scale = 0, inv_Z = 0;
float diff = (float)criteria.epsilon; float diff = (float)criteria.epsilon;
/* Check bad arguments */ /* Check bad arguments */
@ -195,16 +195,18 @@ static CvStatus icvPOSIT( CvPOSITObject *pObject, CvPoint2D32f *imagePoints,
} }
} }
inorm = rotation[0] /*[0][0]*/ * rotation[0] /*[0][0]*/ + float inorm =
rotation[0] /*[0][0]*/ * rotation[0] /*[0][0]*/ +
rotation[1] /*[0][1]*/ * rotation[1] /*[0][1]*/ + rotation[1] /*[0][1]*/ * rotation[1] /*[0][1]*/ +
rotation[2] /*[0][2]*/ * rotation[2] /*[0][2]*/; rotation[2] /*[0][2]*/ * rotation[2] /*[0][2]*/;
jnorm = rotation[3] /*[1][0]*/ * rotation[3] /*[1][0]*/ + float jnorm =
rotation[3] /*[1][0]*/ * rotation[3] /*[1][0]*/ +
rotation[4] /*[1][1]*/ * rotation[4] /*[1][1]*/ + rotation[4] /*[1][1]*/ * rotation[4] /*[1][1]*/ +
rotation[5] /*[1][2]*/ * rotation[5] /*[1][2]*/; rotation[5] /*[1][2]*/ * rotation[5] /*[1][2]*/;
invInorm = cvInvSqrt( inorm ); const float invInorm = cvInvSqrt( inorm );
invJnorm = cvInvSqrt( jnorm ); const float invJnorm = cvInvSqrt( jnorm );
inorm *= invInorm; inorm *= invInorm;
jnorm *= invJnorm; jnorm *= invJnorm;
@ -234,7 +236,7 @@ static CvStatus icvPOSIT( CvPOSITObject *pObject, CvPoint2D32f *imagePoints,
converged = ((criteria.type & CV_TERMCRIT_EPS) && (diff < criteria.epsilon)); converged = ((criteria.type & CV_TERMCRIT_EPS) && (diff < criteria.epsilon));
converged |= ((criteria.type & CV_TERMCRIT_ITER) && (count == criteria.max_iter)); converged |= ((criteria.type & CV_TERMCRIT_ITER) && (count == criteria.max_iter));
} }
invScale = 1 / scale; const float invScale = 1 / scale;
translation[0] = imagePoints[0].x * invScale; translation[0] = imagePoints[0].x * invScale;
translation[1] = imagePoints[0].y * invScale; translation[1] = imagePoints[0].y * invScale;
translation[2] = 1 / inv_Z; translation[2] = 1 / inv_Z;
@ -266,8 +268,6 @@ static CvStatus icvReleasePOSITObject( CvPOSITObject ** ppObject )
void void
icvPseudoInverse3D( float *a, float *b, int n, int method ) icvPseudoInverse3D( float *a, float *b, int n, int method )
{ {
int k;
if( method == 0 ) if( method == 0 )
{ {
float ata00 = 0; float ata00 = 0;
@ -276,8 +276,8 @@ icvPseudoInverse3D( float *a, float *b, int n, int method )
float ata01 = 0; float ata01 = 0;
float ata02 = 0; float ata02 = 0;
float ata12 = 0; float ata12 = 0;
float det = 0;
int k;
/* compute matrix ata = transpose(a) * a */ /* compute matrix ata = transpose(a) * a */
for( k = 0; k < n; k++ ) for( k = 0; k < n; k++ )
{ {
@ -295,7 +295,6 @@ icvPseudoInverse3D( float *a, float *b, int n, int method )
} }
/* inverse matrix ata */ /* inverse matrix ata */
{ {
float inv_det;
float p00 = ata11 * ata22 - ata12 * ata12; float p00 = ata11 * ata22 - ata12 * ata12;
float p01 = -(ata01 * ata22 - ata12 * ata02); float p01 = -(ata01 * ata22 - ata12 * ata02);
float p02 = ata12 * ata01 - ata11 * ata02; float p02 = ata12 * ata01 - ata11 * ata02;
@ -304,11 +303,12 @@ icvPseudoInverse3D( float *a, float *b, int n, int method )
float p12 = -(ata00 * ata12 - ata01 * ata02); float p12 = -(ata00 * ata12 - ata01 * ata02);
float p22 = ata00 * ata11 - ata01 * ata01; float p22 = ata00 * ata11 - ata01 * ata01;
float det = 0;
det += ata00 * p00; det += ata00 * p00;
det += ata01 * p01; det += ata01 * p01;
det += ata02 * p02; det += ata02 * p02;
inv_det = 1 / det; const float inv_det = 1 / det;
/* compute resultant matrix */ /* compute resultant matrix */
for( k = 0; k < n; k++ ) for( k = 0; k < n; k++ )

Loading…
Cancel
Save