Package: gapfill
GapFillGapFill: A Python module of gap filling functions for motion capture marker dataDescriptionCollection of several functions for gap filling and recovering of motion capture marker dataInstallationGapFill can be installed fromPyPIusingpipon Python>=3.7.pipinstallgapfillUsageRows of ndarray values for marker coordinates should be filled with numpy.nan for occluded (blocked) frames.importgapfillasgf# numpy is required in order to provide necessary markers' coordinate valuesimportnumpyasnp# 'fill_marker_gap_interp()' function will update the given ndarray by filling its gaps using bspline interpolation# 'tgt_mkr_pos0': a 2D (n, 3) ndarray of a target marker position to fill the gaps# 'n' is the total number of framestgt_mkr_pos0=np.array((n,3),dtype=np.float32)# 'ret0': either True or False, True if there is any frame updated, False if there is no frame updated# 'updated_frs_mask0': a boolean ndarray to indicate which frames are updatedret0,updated_frs_mask0=gf.fill_marker_gap_interp(tgt_mkr_pos0)# 'fill_marker_gap_pattern()' function will update the given ndarray by filling its gaps using a donor marker# 'tgt_mkr_pos1': a 2D (n, 3) ndarray of a target marker position to fill the gaps# 'n' is the total number of framestgt_mkr_pos1=np.array((n,3),dtype=np.float32)# 'dnr_mkr_pos': a 2D (n, 3) ndarray of a donor marker position# 'n' is the total number of framesdnr_mkr_pos=np.array((n,3),dtype=np.float32)# 'ret1': either True or False, True if there is any frame updated, False if there is no frame updated# 'updated_frs_mask1': a boolean ndarray to indicate which frames are updatedret1,updated_frs_mask1=gf.fill_marker_gap_pattern(tgt_mkr_pos1,dnr_mkr_pos)# 'fill_marker_gap_rbt()' function will update the given ndarray by filling its gaps using a cluster of 3 markers# 'tgt_mkr_pos2': a 2D (n, 3) ndarray of a target marker position to fill the gaps# 'n' is the total number of framestgt_mkr_pos2=np.array((n,3),dtype=np.float32)# 'cl_mkr_pos': a 3D (m, n, 3) ndarray of the cluster markers# 'm' (at least 3) is the number of markers, and 'n' is the total number of framescl_mkr_pos=np.array((m,n,3),dtype=np.float32)# 'ret2': either True or False, True if there is any frame updated, False if there is no frame updated# 'updated_frs_mask2': a boolean ndarray to indicate which frames are updatedret2,updated_frs_mask2=gf.fill_marker_gap_rbt(tgt_mkr_pos2,cl_mkr_pos)DependenciesNumPySciPyReferencesSmolka, J. and Lukasik, E., 2016, July. The rigid body gap filling algorithm. In 2016 9th International Conference on Human System Interactions (HSI) (pp. 337-343). IEEE.Arun, K.S., Huang, T.S. and Blostein, S.D., 1987. Least-squares fitting of two 3-D point sets. IEEE Transactions on pattern analysis and machine intelligence, (5), pp.698-700.Wikipedia: Kabsch algorithmKwon3D: Computation of the Rotation MatrixVicon: What Gap Filling Algorithms are used Nexus 2?Qualisys: Featuring the Trajectory Editor in QTMHow to cite this workHere is a suggestion to cite this GitHub repository:Jung, M. K. (2020) GapFill: A Python module of gap filling functions for motion capture marker data. GitHub repository,https://github.com/mkjung99/gapfill.And a possible BibTeX entry:@misc{Jung2020,  
    author ={Jung, M. K.},
    title ={GapFill: A Python module of gap filling functions for motion capture marker data},  
    year ={2020},  
    publisher ={GitHub},  
    journal ={GitHub repository},  
    howpublished ={\url{https://github.com/mkjung99/gapfill}}}LicenseMIT