/// testing the following member methods /// getDeltaX, getDeltaU, getZ, getDisparity bool testGetDeltaXAndGetDeltaU() { CvStereoCamModel camModel; camModel.setCameraParams(FX, FY, TX, CLX, CRX, CY, DISPUNITSCALE); for (int i=1; i<100/DISPUNITSCALE; i++) { double disp = i; double du = 25.; double dx = camModel.getDeltaX(du, disp); double dx0 = du * TX/(disp*DISPUNITSCALE - (CLX - CRX)); double diff = 0.; if ( dx != dx0 ) { printf("getDeltaX() test failed, du=%f, raw disp=%f, dx=%f\n", du, disp, dx); return false; } double z = camModel.getZ(disp); double z0 = FX*TX/(DISPUNITSCALE*disp - (CLX - CRX)); diff = fabs(z-z0); if (diff > .1e-10) { printf("getZ() test failed, disp = %f, z=%e, z0=%e, diff=%e\n", disp, z, z0, diff); return false; } // and convert it back double du0 = camModel.getDeltaU(dx, z); diff = fabs(du-du0); if ( diff > .1e-10) { printf("getDeltaU() test failed, dx=%f, z=%f, du=%e, du0=%e, diff=%e\n", dx, z, du, du0, diff); return false; } } return true; }