@@ -225,12 +225,16 @@ def interpolate_bboxes(self, bboxes :dict) -> None:
225225 for key in bboxes :
226226 x = [k for k in bboxes [key ].keys ()]
227227 boxes = [v for v in bboxes [key ].values ()]
228- if len (boxes ) == 0 : continue
228+ if len (boxes ) < 2 : continue
229229
230- fx0 = interp1d (x , [item [0 ] for item in boxes ], kind = 'quadratic' )
231- fy0 = interp1d (x , [item [1 ] for item in boxes ], kind = 'quadratic' )
232- fw = interp1d (x , [item [2 ] for item in boxes ], kind = 'quadratic' )
233- fh = interp1d (x , [item [3 ] for item in boxes ], kind = 'quadratic' )
230+ # improve border interpolation
231+ x_head = [x [0 ]- 1 ]+ x + [x [- 1 ]+ 1 ]
232+ boxes = [boxes [0 ]]+ boxes + [boxes [- 1 ]]
233+
234+ fx0 = interp1d (x_head , [item [0 ] for item in boxes ], kind = 'quadratic' )
235+ fy0 = interp1d (x_head , [item [1 ] for item in boxes ], kind = 'quadratic' )
236+ fw = interp1d (x_head , [item [2 ] for item in boxes ], kind = 'quadratic' )
237+ fh = interp1d (x_head , [item [3 ] for item in boxes ], kind = 'quadratic' )
234238
235239 for i in range (min (x ), max (x )+ 1 ):
236240 self .bboxes [key ].append ((float (fx0 (i )), float (fy0 (i )), float (fw (i )), float (fh (i ))))
0 commit comments