예제 #1
0
def meastype_name(i):
    d = { 0: "boards",
          1: "points",
          2: "regularization" }
    return d[i]


for test in tests:

    try:
        full = \
            subprocess.check_output( [f"{testdir}/../test-gradients"] + test.split(),
                                     shell = False,
                                     encoding = 'ascii')
    except Exception as e:
        testutils.confirm(False, msg=f"failed to check gradients for '{test}'")
        continue

    varmap  = get_variable_map(full)
    measmap = get_measurement_map(full)

    cut = subprocess.check_output( ("vnl-filter",
                                    "gradient_reported || gradient_observed",
                                    "--perl",

                                    # I compute error_relative myself because I
                                    # want to add an extra eps. This smoothes
                                    # out reported relative gradient errors for
                                    # tiny gradients. If they're tiny I could
                                    # accidentally trigger an error otherwise
                                    "-p", "error_relative=error/((abs(gradient_reported)+abs(gradient_observed))/2. + 1e-3)",
예제 #2
0
                        mrcal.apply_homography(H10, q0),
                        worstcase=True,
                        eps=0.1,
                        msg=f'out-of-bounds search_radius works ok')
templatesize_hw = np.array((templatesize[-1], templatesize[-2]))
testutils.confirm_equal(
    diagnostics['matchoutput_image'].shape,
    image1.shape - templatesize_hw + 1,
    msg='out-of-bounds search radius looks at the whole image')

q1_matched, diagnostics = \
    mrcal.match_feature( image*0, image1,
                         templatesize,
                         cv2.TM_CCOEFF_NORMED,
                         50,
                         q0,
                         H10_shifted)
testutils.confirm_equal(q1_matched,
                        None,
                        msg='failing correlation returns None')

try:
    mrcal.match_feature(image * 0, image1, (5000, 5000), cv2.TM_CCOEFF_NORMED,
                        50, q0, H10_shifted)
except:
    testutils.confirm(True, msg='Too-big template size throws an exception')
else:
    testutils.confirm(False, msg='Too-big template size throws an exception')

testutils.finish()
예제 #3
0
    az_fov_deg = 90
    el_fov_deg = 50
    models_rectified = \
        mrcal.rectified_system( (model0, model1),
                                az_fov_deg = az_fov_deg,
                                el_fov_deg = el_fov_deg,
                                pixels_per_deg_az = -1./8.,
                                pixels_per_deg_el = -1./4.,
                                rectification_model = lensmodel)
    az0 = 0.
    el0 = 0.

    try:
        mrcal.stereo._validate_models_rectified(models_rectified)
        testutils.confirm(True,
                          msg=f'Generated models pass validation ({lensmodel})')
    except:
        testutils.confirm(False,
                          msg=f'Generated models pass validation ({lensmodel})')

    Rt_cam0_rect = mrcal.compose_Rt( model0.extrinsics_Rt_fromref(),
                                     models_rectified[0].extrinsics_Rt_toref())
    Rt01_rectified = mrcal.compose_Rt( models_rectified[0].extrinsics_Rt_fromref(),
                                       models_rectified[1].extrinsics_Rt_toref())

    testutils.confirm_equal(models_rectified[0].intrinsics()[0], lensmodel,
                            msg=f'model0 has the right lensmodel ({lensmodel})')
    testutils.confirm_equal(models_rectified[1].intrinsics()[0], lensmodel,
                            msg=f'model1 has the right lensmodel ({lensmodel})')

    testutils.confirm_equal(Rt_cam0_rect, mrcal.identity_Rt(),
예제 #4
0
             any(on_bottom_edge) ):
        return ": No points lie on the edge"

    # all good
    return ''


err_msg = \
    fit_check( mrcal.scale_focal__best_pinhole_fit(m, 'corners'),
               intrinsics_core,
               mrcal.unproject( np.array(((  0 ,  0),
                                          (W-1,   0),
                                          (  0, H-1),
                                          (W-1, H-1)), dtype=float),
                                *m.intrinsics()),)
testutils.confirm( err_msg == '',
                   msg = 'scale_focal__best_pinhole_fit' + err_msg)

err_msg = \
    fit_check( mrcal.scale_focal__best_pinhole_fit(m, 'centers-horizontal'),
               intrinsics_core,
               mrcal.unproject( np.array(((  0, (H-1.)/2.),
                                          (W-1, (H-1.)/2.)), dtype=float),
                                *m.intrinsics()),)
testutils.confirm( err_msg == '',
                   msg = 'scale_focal__best_pinhole_fit' + err_msg)

err_msg = \
    fit_check( mrcal.scale_focal__best_pinhole_fit(m, 'centers-vertical'),
               intrinsics_core,
               mrcal.unproject( np.array((((W-1.)/2.,   0.),
                                          ((W-1.)/2., H-1.)), dtype=float),
observations_true,                                     \
Nframes =                                         \
    calibration_baseline(model,
                         Ncameras,
                         Nframes,
                         None,
                         object_width_n,
                         object_height_n,
                         object_spacing,
                         extrinsics_rt_fromref_true,
                         calobject_warp_true,
                         fixedframes,
                         testdir)

for i in range(len(models_baseline)):
    testutils.confirm(
        not models_baseline[i]._extrinsics_moved_since_calibration(),
        msg=f"Camera {i} unmoved")

extrinsics_rt_fromref = extrinsics_rt_fromref_true.copy()
extrinsics_rt_fromref[:, -1] += 1e-3

for i in range(len(models_baseline)):
    models_baseline[i].extrinsics_rt_fromref(extrinsics_rt_fromref[i])

for i in range(len(models_baseline)):
    testutils.confirm(models_baseline[i]._extrinsics_moved_since_calibration(),
                      msg=f"Camera {i} moved")

testutils.finish()
예제 #6
0
파일: test-stereo.py 프로젝트: gmke/mrcal
# I create geometries to test. First off, a vanilla geometry for left-right stereo
rt01 = np.array((0,0,0,  3.0, 0, 0))
model1.extrinsics_rt_toref( mrcal.compose_rt(model0.extrinsics_rt_toref(),
                                             rt01))

az_fov_deg = 90
el_fov_deg = 50
models_rectified = \
    mrcal.rectified_system( (model0, model1),
                            az_fov_deg = az_fov_deg,
                            el_fov_deg = el_fov_deg,
                            pixels_per_deg_az = -1./8.,
                            pixels_per_deg_el = -1./4.)
try:
    mrcal.stereo._validate_models_rectified(models_rectified)
    testutils.confirm(True,
                      msg='Generated models pass validation')
except:
    testutils.confirm(False,
                      msg='Generated models pass validation')

Rt_cam0_stereo = mrcal.compose_Rt( model0.extrinsics_Rt_fromref(),
                                   models_rectified[0].extrinsics_Rt_toref())
Rt01_rectified = mrcal.compose_Rt( models_rectified[0].extrinsics_Rt_fromref(),
                                   models_rectified[1].extrinsics_Rt_toref())
fxycxy = models_rectified[0].intrinsics()[1]

testutils.confirm_equal(Rt_cam0_stereo, mrcal.identity_Rt(),
                        msg='vanilla stereo has a vanilla geometry')

testutils.confirm_equal( Rt01_rectified[3,0],
                         nps.mag(rt01[3:]),