|
|
|
@ -52,7 +52,6 @@ |
|
|
|
|
that is (in a large extent) based on the paper: |
|
|
|
|
Z. Zhang. "A flexible new technique for camera calibration". |
|
|
|
|
IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330-1334, 2000. |
|
|
|
|
|
|
|
|
|
The 1st initial port was done by Valery Mosyagin. |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
@ -896,9 +895,9 @@ CV_IMPL void cvProjectPoints2( const CvMat* objectPoints, |
|
|
|
|
double dicdist2_dt = -icdist2*icdist2*(k[5]*dr2dt + 2*k[6]*r2*dr2dt + 3*k[7]*r4*dr2dt); |
|
|
|
|
double da1dt = 2*(x*dydt[j] + y*dxdt[j]); |
|
|
|
|
double dmxdt = (dxdt[j]*cdist*icdist2 + x*dcdist_dt*icdist2 + x*cdist*dicdist2_dt + |
|
|
|
|
k[2]*da1dt + k[3]*(dr2dt + 2*x*dxdt[j]) + k[8]*dr2dt + 2*r2*k[9]*dr2dt); |
|
|
|
|
k[2]*da1dt + k[3]*(dr2dt + 4*x*dxdt[j]) + k[8]*dr2dt + 2*r2*k[9]*dr2dt); |
|
|
|
|
double dmydt = (dydt[j]*cdist*icdist2 + y*dcdist_dt*icdist2 + y*cdist*dicdist2_dt + |
|
|
|
|
k[2]*(dr2dt + 2*y*dydt[j]) + k[3]*da1dt + k[10]*dr2dt + 2*r2*k[11]*dr2dt); |
|
|
|
|
k[2]*(dr2dt + 4*y*dydt[j]) + k[3]*da1dt + k[10]*dr2dt + 2*r2*k[11]*dr2dt); |
|
|
|
|
dXdYd = dMatTilt*Vec2d(dmxdt, dmydt); |
|
|
|
|
dpdt_p[j] = fx*dXdYd(0); |
|
|
|
|
dpdt_p[dpdt_step+j] = fy*dXdYd(1); |
|
|
|
@ -935,9 +934,9 @@ CV_IMPL void cvProjectPoints2( const CvMat* objectPoints, |
|
|
|
|
double dicdist2_dr = -icdist2*icdist2*(k[5] + 2*k[6]*r2 + 3*k[7]*r4)*dr2dr; |
|
|
|
|
double da1dr = 2*(x*dydr + y*dxdr); |
|
|
|
|
double dmxdr = (dxdr*cdist*icdist2 + x*dcdist_dr*icdist2 + x*cdist*dicdist2_dr + |
|
|
|
|
k[2]*da1dr + k[3]*(dr2dr + 2*x*dxdr) + (k[8] + 2*r2*k[9])*dr2dr); |
|
|
|
|
k[2]*da1dr + k[3]*(dr2dr + 4*x*dxdr) + (k[8] + 2*r2*k[9])*dr2dr); |
|
|
|
|
double dmydr = (dydr*cdist*icdist2 + y*dcdist_dr*icdist2 + y*cdist*dicdist2_dr + |
|
|
|
|
k[2]*(dr2dr + 2*y*dydr) + k[3]*da1dr + (k[10] + 2*r2*k[11])*dr2dr); |
|
|
|
|
k[2]*(dr2dr + 4*y*dydr) + k[3]*da1dr + (k[10] + 2*r2*k[11])*dr2dr); |
|
|
|
|
dXdYd = dMatTilt*Vec2d(dmxdr, dmydr); |
|
|
|
|
dpdr_p[j] = fx*dXdYd(0); |
|
|
|
|
dpdr_p[dpdr_step+j] = fy*dXdYd(1); |
|
|
|
@ -1911,14 +1910,12 @@ double cvStereoCalibrate( const CvMat* _objectPoints, const CvMat* _imagePoints1 |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Compute initial estimate of pose |
|
|
|
|
|
|
|
|
|
For each image, compute: |
|
|
|
|
R(om) is the rotation matrix of om |
|
|
|
|
om(R) is the rotation vector of R |
|
|
|
|
R_ref = R(om_right) * R(om_left)' |
|
|
|
|
T_ref_list = [T_ref_list; T_right - R_ref * T_left] |
|
|
|
|
om_ref_list = {om_ref_list; om(R_ref)] |
|
|
|
|
|
|
|
|
|
om = median(om_ref_list) |
|
|
|
|
T = median(T_ref_list) |
|
|
|
|
*/ |
|
|
|
|