@@ -128,6 +128,13 @@ def interpolate_bboxes(self, bboxes :dict) -> dict:
128128 Returns:
129129 dict: interpolated bboxes {'Men': {tracker_number: [(box_frame1),(box_frame2),....], ...} 'Woman': {tracker_number: [(box_frame1),(box_frame2),....], ...}}
130130 """
131+ interpolation = 'quadratic'
132+ if self .params .supervised_tracking and not self .params .supervised_tracking_is_exit_condition :
133+ # NOTE: wh have to use linea interpolation to get flat lines at when the feature leave the tracking area
134+ interpolation = 'linear'
135+
136+ self .logger .info ("Use %s interpolation" , interpolation )
137+
131138 interpolated_bboxes = {}
132139 for tracker_type in bboxes :
133140 interpolated_bboxes [tracker_type ] = {}
@@ -144,10 +151,10 @@ def interpolate_bboxes(self, bboxes :dict) -> dict:
144151 x_head = [x [0 ]- 1 ]+ x + [x [- 1 ]+ 1 ]
145152 boxes = [boxes [0 ]]+ boxes + [boxes [- 1 ]]
146153
147- fx0 = interp1d (x_head , [item [0 ] for item in boxes ], kind = 'quadratic' )
148- fy0 = interp1d (x_head , [item [1 ] for item in boxes ], kind = 'quadratic' )
149- fw = interp1d (x_head , [item [2 ] for item in boxes ], kind = 'quadratic' )
150- fh = interp1d (x_head , [item [3 ] for item in boxes ], kind = 'quadratic' )
154+ fx0 = interp1d (x_head , [item [0 ] for item in boxes ], kind = interpolation )
155+ fy0 = interp1d (x_head , [item [1 ] for item in boxes ], kind = interpolation )
156+ fw = interp1d (x_head , [item [2 ] for item in boxes ], kind = interpolation )
157+ fh = interp1d (x_head , [item [3 ] for item in boxes ], kind = interpolation )
151158
152159 for i in range (min (x ), max (x )+ 1 ):
153160 interpolated_bboxes [tracker_type ][tracker_number ].append ((float (fx0 (i )), float (fy0 (i )), float (fw (i )), float (fh (i ))))
0 commit comments