def setUp(self):
     self.input_tracking_par_file_name = "testing_fodder/tracking_parameters/track.par"
         
     # create an instance of TrackingParams class
     # testing setters that are used in constructor
     self.track_obj1 = TrackingParams(
         accel_lim=1.1, angle_lim=2.2, add_particle=1,
         velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]])
 def test_comparison(self):
     # create two identical objects
     self.track_obj2 = TrackingParams(
         accel_lim=1.1, angle_lim=2.2, add_particle=1,
         velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]])
     
     self.failUnless(self.track_obj2 == self.track_obj1)
     self.failIf(self.track_obj2 != self.track_obj1)
     
     # change one instance variable of track_obj2 and check that the comparisons results are inverted
     # please note that the operands '==' and '!=' must be checked separately
     self.track_obj2.set_dvxmin(999.999)
     self.failUnless(self.track_obj2 != self.track_obj1)
     self.failIf(self.track_obj2 == self.track_obj1)
 def setUp(self):
     self.input_tracking_par_file_name = b"testing_fodder/tracking_parameters/track.par"
         
     # create an instance of TrackingParams class
     # testing setters that are used in constructor
     self.track_obj1 = TrackingParams(
         accel_lim=1.1, angle_lim=2.2, add_particle=1,
         velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]])
Example #4
0
 def setUp(self):
     self.input_tracking_par_file_name = "testing_fodder/tracking_parameters/track.par"
     self.output_directory = "testing_fodder/tracking_parameters/testing_output"
     
     # create a temporary output directory (will be deleted by the end of test)
     if not os.path.exists(self.output_directory):
         os.makedirs(self.output_directory)
         
     # create an instance of TrackingParams class
     # testing setters that are used in constructor
     self.track_obj1 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13)
Example #5
0
 def test_comparison(self):
     # create two identical objects
     self.track_obj2 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13)
     self.track_obj3 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13)
     
     self.failUnless(self.track_obj2 == self.track_obj3)
     self.failIf(self.track_obj2 != self.track_obj3)
     
     # change one instance variable of track_obj2 and check that the comparisons results are inverted
     # please note that the operands '==' and '!=' must be checked separately
     self.track_obj2.set_dvxmin(999.999)
     self.failUnless(self.track_obj2 != self.track_obj3)
     self.failIf(self.track_obj2 == self.track_obj3)
 def test_comparison(self):
     # create two identical objects
     self.track_obj2 = TrackingParams(
         accel_lim=1.1, angle_lim=2.2, add_particle=1,
         velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]])
     
     self.failUnless(self.track_obj2 == self.track_obj1)
     self.failIf(self.track_obj2 != self.track_obj1)
     
     # change one instance variable of track_obj2 and check that the comparisons results are inverted
     # please note that the operands '==' and '!=' must be checked separately
     self.track_obj2.set_dvxmin(999.999)
     self.failUnless(self.track_obj2 != self.track_obj1)
     self.failIf(self.track_obj2 == self.track_obj1)
Example #7
0
def py_start_proc_c(n_cams):
    """ Read parameters """

    # Control parameters
    cpar = ControlParams(n_cams)
    cpar.read_control_par(b'parameters/ptv.par')

    # Sequence parameters
    spar = SequenceParams(num_cams=n_cams)
    spar.read_sequence_par(b'parameters/sequence.par', n_cams)

    # Volume parameters
    vpar = VolumeParams()
    vpar.read_volume_par(b'parameters/criteria.par')

    # Tracking parameters
    track_par = TrackingParams()
    track_par.read_track_par(b'parameters/track.par')

    # Target parameters
    tpar = TargetParams(n_cams)
    tpar.read(b'parameters/targ_rec.par')

    # Examine parameters, multiplane (single plane vs combined calibration)
    epar = par.ExamineParams()
    epar.read()

    # Calibration parameters
    cals = []
    for i_cam in range(n_cams):
        cal = Calibration()
        tmp = cpar.get_cal_img_base_name(i_cam)
        cal.from_file(tmp + b'.ori', tmp + b'.addpar')
        cals.append(cal)

    return cpar, spar, vpar, track_par, tpar, cals, epar
Example #8
0
    def setUp(self):
        with open("testing_fodder/track/conf.yaml") as f:
            yaml_conf = yaml.load(f)
        seq_cfg = yaml_conf['sequence']

        cals = []
        img_base = []
        for cix, cam_spec in enumerate(yaml_conf['cameras']):
            cam_spec.setdefault('addpar_file', None)
            cal = Calibration()
            cal.from_file(cam_spec['ori_file'], cam_spec['addpar_file'])
            cals.append(cal)
            img_base.append(seq_cfg['targets_template'].format(cam=cix + 1))

        cpar = ControlParams(len(yaml_conf['cameras']), **yaml_conf['scene'])
        vpar = VolumeParams(**yaml_conf['correspondences'])
        tpar = TrackingParams(**yaml_conf['tracking'])
        spar = SequenceParams(image_base=img_base,
                              frame_range=(seq_cfg['first'], seq_cfg['last']))

        self.tracker = Tracker(cpar, vpar, tpar, spar, cals, framebuf_naming)
class Test_TrackingParams(unittest.TestCase):
    
    def setUp(self):
        self.input_tracking_par_file_name = "testing_fodder/tracking_parameters/track.par"
            
        # create an instance of TrackingParams class
        # testing setters that are used in constructor
        self.track_obj1 = TrackingParams(
            accel_lim=1.1, angle_lim=2.2, add_particle=1,
            velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]])
        
    # Testing getters according to the values passed in setUp
    
    def test_TrackingParams_getters(self):
        self.failUnless(self.track_obj1.get_dacc() == 1.1)
        self.failUnless(self.track_obj1.get_dangle() == 2.2)
        self.failUnless(self.track_obj1.get_dvxmin() == 3.3)
        self.failUnless(self.track_obj1.get_dvxmax() == 4.4)
        self.failUnless(self.track_obj1.get_dvymin() == 5.5)
        self.failUnless(self.track_obj1.get_dvymax() == 6.6)
        self.failUnless(self.track_obj1.get_dvzmin() == 7.7)
        self.failUnless(self.track_obj1.get_dvzmax() == 8.8)
        self.failUnless(self.track_obj1.get_add() == 1)

    def test_TrackingParams_read_from_file(self):
        """Filling a TrackingParams object by reading file"""
        
        # read tracking parameters from file
        self.track_obj1.read_track_par(self.input_tracking_par_file_name)
        
        # check that the values of track_obj1 are equal to values in tracking parameters file
        # the check is performed according to the order the parameters were read from same file
        track_file = open(self.input_tracking_par_file_name, 'r')
        self.failUnless(self.track_obj1.get_dvxmin() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvxmax() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvymin() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvymax() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvzmin() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvzmax() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dangle() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dacc() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_add() == int(track_file.readline()))
    
        self.failUnless(self.track_obj1.get_dsumg() == 0)
        self.failUnless(self.track_obj1.get_dn() == 0)
        self.failUnless(self.track_obj1.get_dnx() == 0)
        self.failUnless(self.track_obj1.get_dny() == 0)
        
    def test_comparison(self):
        # create two identical objects
        self.track_obj2 = TrackingParams(
            accel_lim=1.1, angle_lim=2.2, add_particle=1,
            velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]])
        
        self.failUnless(self.track_obj2 == self.track_obj1)
        self.failIf(self.track_obj2 != self.track_obj1)
        
        # change one instance variable of track_obj2 and check that the comparisons results are inverted
        # please note that the operands '==' and '!=' must be checked separately
        self.track_obj2.set_dvxmin(999.999)
        self.failUnless(self.track_obj2 != self.track_obj1)
        self.failIf(self.track_obj2 == self.track_obj1)
Example #10
0
def run_batch(new_seq_first, new_seq_last):
    """ this file runs inside exp_path, so the other names are
    prescribed by the OpenPTV type of a folder:
        /parameters
        /img
        /cal
        /res
    """
    # read the number of cameras
    with open('parameters/ptv.par', 'r') as f:
        n_cams = int(f.readline())

    # Control parameters
    cpar = ControlParams(n_cams)
    cpar.read_control_par(b'parameters/ptv.par')

    # Sequence parameters
    spar = SequenceParams(num_cams=n_cams)
    spar.read_sequence_par(b'parameters/sequence.par', n_cams)
    spar.set_first(new_seq_first)
    spar.set_last(new_seq_last)

    # Volume parameters
    vpar = VolumeParams()
    vpar.read_volume_par(b'parameters/criteria.par')

    # Tracking parameters
    track_par = TrackingParams()
    track_par.read_track_par(b'parameters/track.par')

    # Target parameters
    tpar = TargetParams()
    tpar.read(b'parameters/targ_rec.par')

    #

    # Calibration parameters

    cals = []
    for i_cam in range(n_cams):
        cal = Calibration()
        tmp = cpar.get_cal_img_base_name(i_cam)
        cal.from_file(tmp + b'.ori', tmp + b'.addpar')
        cals.append(cal)

    # sequence loop for all frames
    for frame in range(new_seq_first, new_seq_last + 1):
        print("processing frame %d" % frame)

        detections = []
        corrected = []
        for i_cam in range(n_cams):
            imname = spar.get_img_base_name(i_cam) + str(frame)
            img = imread(imname)
            hp = simple_highpass(img, cpar)
            targs = target_recognition(hp, tpar, i_cam, cpar)
            print(targs)

            targs.sort_y()
            detections.append(targs)
            mc = MatchedCoords(targs, cpar, cals[i_cam])
            pos, pnr = mc.as_arrays()
            print(i_cam)
            corrected.append(mc)

        #        if any([len(det) == 0 for det in detections]):
        #            return False

        # Corresp. + positions.
        sorted_pos, sorted_corresp, num_targs = correspondences(
            detections, corrected, cals, vpar, cpar)

        # Save targets only after they've been modified:
        for i_cam in xrange(n_cams):
            detections[i_cam].write(spar.get_img_base_name(i_cam), frame)


        print("Frame " + str(frame) + " had " \
              + repr([s.shape[1] for s in sorted_pos]) + " correspondences.")

        # Distinction between quad/trip irrelevant here.
        sorted_pos = np.concatenate(sorted_pos, axis=1)
        sorted_corresp = np.concatenate(sorted_corresp, axis=1)

        flat = np.array([corrected[i].get_by_pnrs(sorted_corresp[i]) \
                         for i in xrange(len(cals))])
        pos, rcm = point_positions(flat.transpose(1, 0, 2), cpar, cals, vpar)

        if len(cals) < 4:
            print_corresp = -1 * np.ones((4, sorted_corresp.shape[1]))
            print_corresp[:len(cals), :] = sorted_corresp
        else:
            print_corresp = sorted_corresp

        # Save rt_is
        rt_is = open(default_naming['corres'] + '.' + str(frame), 'w')
        rt_is.write(str(pos.shape[0]) + '\n')
        for pix, pt in enumerate(pos):
            pt_args = (pix + 1, ) + tuple(pt) + tuple(print_corresp[:, pix])
            rt_is.write("%4d %9.3f %9.3f %9.3f %4d %4d %4d %4d\n" % pt_args)
        rt_is.close()
    # end of a sequence loop

    tracker = Tracker(cpar, vpar, track_par, spar, cals, default_naming)
    tracker.full_forward()
Example #11
0
class Test_TrackingParams(unittest.TestCase):
    
    def setUp(self):
        self.input_tracking_par_file_name = "testing_fodder/tracking_parameters/track.par"
        self.output_directory = "testing_fodder/tracking_parameters/testing_output"
        
        # create a temporary output directory (will be deleted by the end of test)
        if not os.path.exists(self.output_directory):
            os.makedirs(self.output_directory)
            
        # create an instance of TrackingParams class
        # testing setters that are used in constructor
        self.track_obj1 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13)
        
    # Testing getters according to the values passed in setUp
    
    def test_TrackingParams_getters(self):
        self.failUnless(self.track_obj1.get_dacc() == 1.1)
        self.failUnless(self.track_obj1.get_dangle() == 2.2)
        self.failUnless(self.track_obj1.get_dvxmax() == 3.3)
        self.failUnless(self.track_obj1.get_dvxmin() == 4.4)
        self.failUnless(self.track_obj1.get_dvymax() == 5.5)
        self.failUnless(self.track_obj1.get_dvymin() == 6.6)
        self.failUnless(self.track_obj1.get_dvzmax() == 7.7)
        self.failUnless(self.track_obj1.get_dvzmin() == 8.8)
        self.failUnless(self.track_obj1.get_dsumg() == 9)
        self.failUnless(self.track_obj1.get_dn() == 10)
        self.failUnless(self.track_obj1.get_dnx() == 11)
        self.failUnless(self.track_obj1.get_dny() == 12)
        self.failUnless(self.track_obj1.get_add() == 13)

    def test_TrackingParams_read_from_file(self):
        """Filling a TrackingParams object by reading file"""
        
        # read tracking parameters from file
        self.track_obj1.read_track_par(self.input_tracking_par_file_name)
        
        # check that the values of track_obj1 are equal to values in tracking parameters file
        # the check is performed according to the order the parameters were read from same file
        track_file = open(self.input_tracking_par_file_name, 'r')
        self.failUnless(self.track_obj1.get_dvxmin() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvxmax() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvymin() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvymax() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvzmin() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvzmax() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dangle() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dacc() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_add() == int(track_file.readline()))
    
        self.failUnless(self.track_obj1.get_dsumg() == 0)
        self.failUnless(self.track_obj1.get_dn() == 0)
        self.failUnless(self.track_obj1.get_dnx() == 0)
        self.failUnless(self.track_obj1.get_dny() == 0)
        
    def test_comparison(self):
        # create two identical objects
        self.track_obj2 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13)
        self.track_obj3 = TrackingParams(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9, 10, 11, 12, 13)
        
        self.failUnless(self.track_obj2 == self.track_obj3)
        self.failIf(self.track_obj2 != self.track_obj3)
        
        # change one instance variable of track_obj2 and check that the comparisons results are inverted
        # please note that the operands '==' and '!=' must be checked separately
        self.track_obj2.set_dvxmin(999.999)
        self.failUnless(self.track_obj2 != self.track_obj3)
        self.failIf(self.track_obj2 == self.track_obj3)
        

    def tearDown(self):
        # remove the testing output directory and its files
        shutil.rmtree(self.output_directory)
class Test_TrackingParams(unittest.TestCase):
    
    def setUp(self):
        self.input_tracking_par_file_name = b"testing_fodder/tracking_parameters/track.par"
            
        # create an instance of TrackingParams class
        # testing setters that are used in constructor
        self.track_obj1 = TrackingParams(
            accel_lim=1.1, angle_lim=2.2, add_particle=1,
            velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]])
        
    # Testing getters according to the values passed in setUp
    
    def test_TrackingParams_getters(self):
        self.failUnless(self.track_obj1.get_dacc() == 1.1)
        self.failUnless(self.track_obj1.get_dangle() == 2.2)
        self.failUnless(self.track_obj1.get_dvxmin() == 3.3)
        self.failUnless(self.track_obj1.get_dvxmax() == 4.4)
        self.failUnless(self.track_obj1.get_dvymin() == 5.5)
        self.failUnless(self.track_obj1.get_dvymax() == 6.6)
        self.failUnless(self.track_obj1.get_dvzmin() == 7.7)
        self.failUnless(self.track_obj1.get_dvzmax() == 8.8)
        self.failUnless(self.track_obj1.get_add() == 1)

    def test_TrackingParams_read_from_file(self):
        """Filling a TrackingParams object by reading file"""
        
        # read tracking parameters from file
        self.track_obj1.read_track_par(self.input_tracking_par_file_name)
        
        # check that the values of track_obj1 are equal to values in tracking parameters file
        # the check is performed according to the order the parameters were read from same file
        track_file = open(self.input_tracking_par_file_name, 'r')
        self.failUnless(self.track_obj1.get_dvxmin() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvxmax() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvymin() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvymax() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvzmin() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dvzmax() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dangle() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_dacc() == float(track_file.readline()))
        self.failUnless(self.track_obj1.get_add() == int(track_file.readline()))
    
        self.failUnless(self.track_obj1.get_dsumg() == 0)
        self.failUnless(self.track_obj1.get_dn() == 0)
        self.failUnless(self.track_obj1.get_dnx() == 0)
        self.failUnless(self.track_obj1.get_dny() == 0)
        
    def test_comparison(self):
        # create two identical objects
        self.track_obj2 = TrackingParams(
            accel_lim=1.1, angle_lim=2.2, add_particle=1,
            velocity_lims=[[3.3, 4.4], [5.5, 6.6], [7.7, 8.8]])
        
        self.failUnless(self.track_obj2 == self.track_obj1)
        self.failIf(self.track_obj2 != self.track_obj1)
        
        # change one instance variable of track_obj2 and check that the comparisons results are inverted
        # please note that the operands '==' and '!=' must be checked separately
        self.track_obj2.set_dvxmin(999.999)
        self.failUnless(self.track_obj2 != self.track_obj1)
        self.failIf(self.track_obj2 == self.track_obj1)