|
|
|
@ -568,7 +568,7 @@ CV_IMPL void cvProjectPoints2( const CvMat* objectPoints, |
|
|
|
|
(objectPoints->rows == count && CV_MAT_CN(objectPoints->type)*objectPoints->cols == 3) || |
|
|
|
|
(objectPoints->rows == 3 && CV_MAT_CN(objectPoints->type) == 1 && objectPoints->cols == count))) |
|
|
|
|
{ |
|
|
|
|
matM = cvCreateMat( objectPoints->rows, objectPoints->cols, CV_MAKETYPE(CV_64F,CV_MAT_CN(objectPoints->type)) ); |
|
|
|
|
matM.reset(cvCreateMat( objectPoints->rows, objectPoints->cols, CV_MAKETYPE(CV_64F,CV_MAT_CN(objectPoints->type)) )); |
|
|
|
|
cvConvert(objectPoints, matM); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
@ -584,7 +584,7 @@ CV_IMPL void cvProjectPoints2( const CvMat* objectPoints, |
|
|
|
|
(imagePoints->rows == count && CV_MAT_CN(imagePoints->type)*imagePoints->cols == 2) || |
|
|
|
|
(imagePoints->rows == 2 && CV_MAT_CN(imagePoints->type) == 1 && imagePoints->cols == count))) |
|
|
|
|
{ |
|
|
|
|
_m = cvCreateMat( imagePoints->rows, imagePoints->cols, CV_MAKETYPE(CV_64F,CV_MAT_CN(imagePoints->type)) ); |
|
|
|
|
_m.reset(cvCreateMat( imagePoints->rows, imagePoints->cols, CV_MAKETYPE(CV_64F,CV_MAT_CN(imagePoints->type)) )); |
|
|
|
|
cvConvert(imagePoints, _m); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
@ -664,10 +664,10 @@ CV_IMPL void cvProjectPoints2( const CvMat* objectPoints, |
|
|
|
|
|
|
|
|
|
if( CV_MAT_TYPE(dpdr->type) == CV_64FC1 ) |
|
|
|
|
{ |
|
|
|
|
_dpdr = cvCloneMat(dpdr); |
|
|
|
|
_dpdr.reset(cvCloneMat(dpdr)); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
_dpdr = cvCreateMat( 2*count, 3, CV_64FC1 ); |
|
|
|
|
_dpdr.reset(cvCreateMat( 2*count, 3, CV_64FC1 )); |
|
|
|
|
dpdr_p = _dpdr->data.db; |
|
|
|
|
dpdr_step = _dpdr->step/sizeof(dpdr_p[0]); |
|
|
|
|
} |
|
|
|
@ -682,10 +682,10 @@ CV_IMPL void cvProjectPoints2( const CvMat* objectPoints, |
|
|
|
|
|
|
|
|
|
if( CV_MAT_TYPE(dpdt->type) == CV_64FC1 ) |
|
|
|
|
{ |
|
|
|
|
_dpdt = cvCloneMat(dpdt); |
|
|
|
|
_dpdt.reset(cvCloneMat(dpdt)); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
_dpdt = cvCreateMat( 2*count, 3, CV_64FC1 ); |
|
|
|
|
_dpdt.reset(cvCreateMat( 2*count, 3, CV_64FC1 )); |
|
|
|
|
dpdt_p = _dpdt->data.db; |
|
|
|
|
dpdt_step = _dpdt->step/sizeof(dpdt_p[0]); |
|
|
|
|
} |
|
|
|
@ -699,10 +699,10 @@ CV_IMPL void cvProjectPoints2( const CvMat* objectPoints, |
|
|
|
|
|
|
|
|
|
if( CV_MAT_TYPE(dpdf->type) == CV_64FC1 ) |
|
|
|
|
{ |
|
|
|
|
_dpdf = cvCloneMat(dpdf); |
|
|
|
|
_dpdf.reset(cvCloneMat(dpdf)); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
_dpdf = cvCreateMat( 2*count, 2, CV_64FC1 ); |
|
|
|
|
_dpdf.reset(cvCreateMat( 2*count, 2, CV_64FC1 )); |
|
|
|
|
dpdf_p = _dpdf->data.db; |
|
|
|
|
dpdf_step = _dpdf->step/sizeof(dpdf_p[0]); |
|
|
|
|
} |
|
|
|
@ -716,10 +716,10 @@ CV_IMPL void cvProjectPoints2( const CvMat* objectPoints, |
|
|
|
|
|
|
|
|
|
if( CV_MAT_TYPE(dpdc->type) == CV_64FC1 ) |
|
|
|
|
{ |
|
|
|
|
_dpdc = cvCloneMat(dpdc); |
|
|
|
|
_dpdc.reset(cvCloneMat(dpdc)); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
_dpdc = cvCreateMat( 2*count, 2, CV_64FC1 ); |
|
|
|
|
_dpdc.reset(cvCreateMat( 2*count, 2, CV_64FC1 )); |
|
|
|
|
dpdc_p = _dpdc->data.db; |
|
|
|
|
dpdc_step = _dpdc->step/sizeof(dpdc_p[0]); |
|
|
|
|
} |
|
|
|
@ -736,10 +736,10 @@ CV_IMPL void cvProjectPoints2( const CvMat* objectPoints, |
|
|
|
|
|
|
|
|
|
if( CV_MAT_TYPE(dpdk->type) == CV_64FC1 ) |
|
|
|
|
{ |
|
|
|
|
_dpdk = cvCloneMat(dpdk); |
|
|
|
|
_dpdk.reset(cvCloneMat(dpdk)); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
_dpdk = cvCreateMat( dpdk->rows, dpdk->cols, CV_64FC1 ); |
|
|
|
|
_dpdk.reset(cvCreateMat( dpdk->rows, dpdk->cols, CV_64FC1 )); |
|
|
|
|
dpdk_p = _dpdk->data.db; |
|
|
|
|
dpdk_step = _dpdk->step/sizeof(dpdk_p[0]); |
|
|
|
|
} |
|
|
|
@ -950,8 +950,8 @@ CV_IMPL void cvFindExtrinsicCameraParams2( const CvMat* objectPoints, |
|
|
|
|
CV_IS_MAT(A) && CV_IS_MAT(rvec) && CV_IS_MAT(tvec) ); |
|
|
|
|
|
|
|
|
|
count = MAX(objectPoints->cols, objectPoints->rows); |
|
|
|
|
matM = cvCreateMat( 1, count, CV_64FC3 ); |
|
|
|
|
_m = cvCreateMat( 1, count, CV_64FC2 ); |
|
|
|
|
matM.reset(cvCreateMat( 1, count, CV_64FC3 )); |
|
|
|
|
_m.reset(cvCreateMat( 1, count, CV_64FC2 )); |
|
|
|
|
|
|
|
|
|
cvConvertPointsHomogeneous( objectPoints, matM ); |
|
|
|
|
cvConvertPointsHomogeneous( imagePoints, _m ); |
|
|
|
@ -963,8 +963,8 @@ CV_IMPL void cvFindExtrinsicCameraParams2( const CvMat* objectPoints, |
|
|
|
|
CV_Assert( (CV_MAT_DEPTH(tvec->type) == CV_64F || CV_MAT_DEPTH(tvec->type) == CV_32F) && |
|
|
|
|
(tvec->rows == 1 || tvec->cols == 1) && tvec->rows*tvec->cols*CV_MAT_CN(tvec->type) == 3 ); |
|
|
|
|
|
|
|
|
|
_mn = cvCreateMat( 1, count, CV_64FC2 ); |
|
|
|
|
_Mxy = cvCreateMat( 1, count, CV_64FC2 ); |
|
|
|
|
_mn.reset(cvCreateMat( 1, count, CV_64FC2 )); |
|
|
|
|
_Mxy.reset(cvCreateMat( 1, count, CV_64FC2 )); |
|
|
|
|
|
|
|
|
|
// normalize image points
|
|
|
|
|
// (unapply the intrinsic matrix transformation and distortion)
|
|
|
|
@ -1055,7 +1055,7 @@ CV_IMPL void cvFindExtrinsicCameraParams2( const CvMat* objectPoints, |
|
|
|
|
CvPoint3D64f* M = (CvPoint3D64f*)matM->data.db; |
|
|
|
|
CvPoint2D64f* mn = (CvPoint2D64f*)_mn->data.db; |
|
|
|
|
|
|
|
|
|
matL = cvCreateMat( 2*count, 12, CV_64F ); |
|
|
|
|
matL.reset(cvCreateMat( 2*count, 12, CV_64F )); |
|
|
|
|
L = matL->data.db; |
|
|
|
|
|
|
|
|
|
for( i = 0; i < count; i++, L += 24 ) |
|
|
|
@ -1162,11 +1162,11 @@ CV_IMPL void cvInitIntrinsicParams2D( const CvMat* objectPoints, |
|
|
|
|
if( objectPoints->rows != 1 || imagePoints->rows != 1 ) |
|
|
|
|
CV_Error( CV_StsBadSize, "object points and image points must be a single-row matrices" ); |
|
|
|
|
|
|
|
|
|
matA = cvCreateMat( 2*nimages, 2, CV_64F ); |
|
|
|
|
_b = cvCreateMat( 2*nimages, 1, CV_64F ); |
|
|
|
|
matA.reset(cvCreateMat( 2*nimages, 2, CV_64F )); |
|
|
|
|
_b.reset(cvCreateMat( 2*nimages, 1, CV_64F )); |
|
|
|
|
a[2] = (imageSize.width - 1)*0.5; |
|
|
|
|
a[5] = (imageSize.height - 1)*0.5; |
|
|
|
|
_allH = cvCreateMat( nimages, 9, CV_64F ); |
|
|
|
|
_allH.reset(cvCreateMat( nimages, 9, CV_64F )); |
|
|
|
|
|
|
|
|
|
// extract vanishing points in order to obtain initial value for the focal length
|
|
|
|
|
for( i = 0, pos = 0; i < nimages; i++, pos += ni ) |
|
|
|
@ -1310,16 +1310,16 @@ CV_IMPL double cvCalibrateCamera2( const CvMat* objectPoints, |
|
|
|
|
total += ni; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
matM = cvCreateMat( 1, total, CV_64FC3 ); |
|
|
|
|
_m = cvCreateMat( 1, total, CV_64FC2 ); |
|
|
|
|
matM.reset(cvCreateMat( 1, total, CV_64FC3 )); |
|
|
|
|
_m.reset(cvCreateMat( 1, total, CV_64FC2 )); |
|
|
|
|
|
|
|
|
|
cvConvertPointsHomogeneous( objectPoints, matM ); |
|
|
|
|
cvConvertPointsHomogeneous( imagePoints, _m ); |
|
|
|
|
|
|
|
|
|
nparams = NINTRINSIC + nimages*6; |
|
|
|
|
_Ji = cvCreateMat( maxPoints*2, NINTRINSIC, CV_64FC1 ); |
|
|
|
|
_Je = cvCreateMat( maxPoints*2, 6, CV_64FC1 ); |
|
|
|
|
_err = cvCreateMat( maxPoints*2, 1, CV_64FC1 ); |
|
|
|
|
_Ji.reset(cvCreateMat( maxPoints*2, NINTRINSIC, CV_64FC1 )); |
|
|
|
|
_Je.reset(cvCreateMat( maxPoints*2, 6, CV_64FC1 )); |
|
|
|
|
_err.reset(cvCreateMat( maxPoints*2, 1, CV_64FC1 )); |
|
|
|
|
cvZero( _Ji ); |
|
|
|
|
|
|
|
|
|
_k = cvMat( distCoeffs->rows, distCoeffs->cols, CV_MAKETYPE(CV_64F,CV_MAT_CN(distCoeffs->type)), k); |
|
|
|
@ -1662,7 +1662,7 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1 |
|
|
|
|
CV_MAT_TYPE(_npoints->type) == CV_32SC1 ); |
|
|
|
|
|
|
|
|
|
nimages = _npoints->cols + _npoints->rows - 1; |
|
|
|
|
npoints = cvCreateMat( _npoints->rows, _npoints->cols, _npoints->type ); |
|
|
|
|
npoints.reset(cvCreateMat( _npoints->rows, _npoints->cols, _npoints->type )); |
|
|
|
|
cvCopy( _npoints, npoints ); |
|
|
|
|
|
|
|
|
|
for( i = 0, pointsTotal = 0; i < nimages; i++ ) |
|
|
|
@ -1671,8 +1671,8 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1 |
|
|
|
|
pointsTotal += npoints->data.i[i]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
objectPoints = cvCreateMat( _objectPoints->rows, _objectPoints->cols, |
|
|
|
|
CV_64FC(CV_MAT_CN(_objectPoints->type))); |
|
|
|
|
objectPoints.reset(cvCreateMat( _objectPoints->rows, _objectPoints->cols, |
|
|
|
|
CV_64FC(CV_MAT_CN(_objectPoints->type)))); |
|
|
|
|
cvConvert( _objectPoints, objectPoints ); |
|
|
|
|
cvReshape( objectPoints, objectPoints, 3, 1 ); |
|
|
|
|
|
|
|
|
@ -1691,7 +1691,7 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1 |
|
|
|
|
K[k] = cvMat(3,3,CV_64F,A[k]); |
|
|
|
|
Dist[k] = cvMat(1,8,CV_64F,dk[k]); |
|
|
|
|
|
|
|
|
|
imagePoints[k] = cvCreateMat( points->rows, points->cols, CV_64FC(CV_MAT_CN(points->type))); |
|
|
|
|
imagePoints[k].reset(cvCreateMat( points->rows, points->cols, CV_64FC(CV_MAT_CN(points->type)))); |
|
|
|
|
cvConvert( points, imagePoints[k] ); |
|
|
|
|
cvReshape( imagePoints[k], imagePoints[k], 2, 1 ); |
|
|
|
|
|
|
|
|
@ -1729,10 +1729,10 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1 |
|
|
|
|
|
|
|
|
|
recomputeIntrinsics = (flags & CV_CALIB_FIX_INTRINSIC) == 0; |
|
|
|
|
|
|
|
|
|
err = cvCreateMat( maxPoints*2, 1, CV_64F ); |
|
|
|
|
Je = cvCreateMat( maxPoints*2, 6, CV_64F ); |
|
|
|
|
J_LR = cvCreateMat( maxPoints*2, 6, CV_64F ); |
|
|
|
|
Ji = cvCreateMat( maxPoints*2, NINTRINSIC, CV_64F ); |
|
|
|
|
err.reset(cvCreateMat( maxPoints*2, 1, CV_64F )); |
|
|
|
|
Je.reset(cvCreateMat( maxPoints*2, 6, CV_64F )); |
|
|
|
|
J_LR.reset(cvCreateMat( maxPoints*2, 6, CV_64F )); |
|
|
|
|
Ji.reset(cvCreateMat( maxPoints*2, NINTRINSIC, CV_64F )); |
|
|
|
|
cvZero( Ji ); |
|
|
|
|
|
|
|
|
|
// we optimize for the inter-camera R(3),t(3), then, optionally,
|
|
|
|
@ -1740,7 +1740,7 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1 |
|
|
|
|
nparams = 6*(nimages+1) + (recomputeIntrinsics ? NINTRINSIC*2 : 0); |
|
|
|
|
|
|
|
|
|
// storage for initial [om(R){i}|t{i}] (in order to compute the median for each component)
|
|
|
|
|
RT0 = cvCreateMat( 6, nimages, CV_64F ); |
|
|
|
|
RT0.reset(cvCreateMat( 6, nimages, CV_64F )); |
|
|
|
|
|
|
|
|
|
solver.init( nparams, 0, termCrit ); |
|
|
|
|
if( recomputeIntrinsics ) |
|
|
|
@ -2080,7 +2080,7 @@ icvGetRectangles( const CvMat* cameraMatrix, const CvMat* distCoeffs, |
|
|
|
|
{ |
|
|
|
|
const int N = 9; |
|
|
|
|
int x, y, k; |
|
|
|
|
cv::Ptr<CvMat> _pts = cvCreateMat(1, N*N, CV_32FC2); |
|
|
|
|
cv::Ptr<CvMat> _pts(cvCreateMat(1, N*N, CV_32FC2)); |
|
|
|
|
CvPoint2D32f* pts = (CvPoint2D32f*)(_pts->data.ptr); |
|
|
|
|
|
|
|
|
|
for( y = k = 0; y < N; y++ ) |
|
|
|
@ -2439,10 +2439,10 @@ CV_IMPL int cvStereoRectifyUncalibrated( |
|
|
|
|
|
|
|
|
|
npoints = _points1->rows * _points1->cols * CV_MAT_CN(_points1->type) / 2; |
|
|
|
|
|
|
|
|
|
_m1 = cvCreateMat( _points1->rows, _points1->cols, CV_64FC(CV_MAT_CN(_points1->type)) ); |
|
|
|
|
_m2 = cvCreateMat( _points2->rows, _points2->cols, CV_64FC(CV_MAT_CN(_points2->type)) ); |
|
|
|
|
_lines1 = cvCreateMat( 1, npoints, CV_64FC3 ); |
|
|
|
|
_lines2 = cvCreateMat( 1, npoints, CV_64FC3 ); |
|
|
|
|
_m1.reset(cvCreateMat( _points1->rows, _points1->cols, CV_64FC(CV_MAT_CN(_points1->type)) )); |
|
|
|
|
_m2.reset(cvCreateMat( _points2->rows, _points2->cols, CV_64FC(CV_MAT_CN(_points2->type)) )); |
|
|
|
|
_lines1.reset(cvCreateMat( 1, npoints, CV_64FC3 )); |
|
|
|
|
_lines2.reset(cvCreateMat( 1, npoints, CV_64FC3 )); |
|
|
|
|
|
|
|
|
|
cvConvert( F0, &F ); |
|
|
|
|
|
|
|
|
|