diff --git a/Pose2Sim/S00_Demo_BatchSession/Config.toml b/Pose2Sim/S00_Demo_BatchSession/Config.toml index 6bcf2cb..aa0e334 100644 --- a/Pose2Sim/S00_Demo_BatchSession/Config.toml +++ b/Pose2Sim/S00_Demo_BatchSession/Config.toml @@ -134,12 +134,13 @@ interp_if_gap_smaller_than = 10 # do not interpolate bigger gaps show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low -make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon! +make_c3d = false # save triangulated data in c3d format in addition to trc [filtering] type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed display_figures = false # true or false (lowercase) +make_c3d = false # also save triangulated data in c3d format [filtering.butterworth] order = 4 diff --git a/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/Config.toml b/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/Config.toml index 02c39a2..c4e84e3 100644 --- a/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/Config.toml +++ b/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/Config.toml @@ -133,12 +133,13 @@ # show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated # handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower # undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low -# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon! +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering] # type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed # display_figures = false # true or false (lowercase) +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering.butterworth] # order = 4 diff --git a/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/S00_P00_T00_StaticTrial/Config.toml b/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/S00_P00_T00_StaticTrial/Config.toml index 52aeb24..49095bc 100644 --- a/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/S00_P00_T00_StaticTrial/Config.toml +++ b/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/S00_P00_T00_StaticTrial/Config.toml @@ -133,12 +133,13 @@ # show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated # handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower # undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low -# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon! +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering] # type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed # display_figures = false # true or false (lowercase) +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering.butterworth] # order = 4 diff --git a/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/S00_P00_T01_BalancingTrial/Config.toml b/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/S00_P00_T01_BalancingTrial/Config.toml index 6ff66a2..ed8de55 100644 --- a/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/S00_P00_T01_BalancingTrial/Config.toml +++ b/Pose2Sim/S00_Demo_BatchSession/S00_P00_SingleParticipant/S00_P00_T01_BalancingTrial/Config.toml @@ -133,12 +133,13 @@ # show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated # handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower # undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low -# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon! +# make_c3d = false # save triangulated data in c3d format in addition to trc [filtering] # type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed display_figures = false # true or false (lowercase) +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering.butterworth] # order = 4 diff --git a/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/Config.toml b/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/Config.toml index 02c39a2..c4e84e3 100644 --- a/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/Config.toml +++ b/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/Config.toml @@ -133,12 +133,13 @@ # show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated # handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower # undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low -# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon! +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering] # type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed # display_figures = false # true or false (lowercase) +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering.butterworth] # order = 4 diff --git a/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T00_StaticTrialParticipant1/Config.toml b/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T00_StaticTrialParticipant1/Config.toml index d6b778b..783934a 100644 --- a/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T00_StaticTrialParticipant1/Config.toml +++ b/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T00_StaticTrialParticipant1/Config.toml @@ -133,12 +133,13 @@ # show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated # handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower # undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low -# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon! +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering] # type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed # display_figures = false # true or false (lowercase) +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering.butterworth] # order = 4 diff --git a/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T01_StaticTrialParticipant2/Config.toml b/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T01_StaticTrialParticipant2/Config.toml index 70d077d..3244c35 100644 --- a/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T01_StaticTrialParticipant2/Config.toml +++ b/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T01_StaticTrialParticipant2/Config.toml @@ -132,12 +132,13 @@ # show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated # handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower # undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low -# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon! +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering] # type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed # display_figures = false # true or false (lowercase) +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering.butterworth] # order = 4 diff --git a/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T02_Participants1-2/Config.toml b/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T02_Participants1-2/Config.toml index ac847e0..aac6721 100644 --- a/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T02_Participants1-2/Config.toml +++ b/Pose2Sim/S00_Demo_BatchSession/S00_P01_MultiParticipants/S00_P01_T02_Participants1-2/Config.toml @@ -129,12 +129,13 @@ reorder_trc = true # only checked if multi_person analysis # show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated # handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower # undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low -# make_c3d = false # save triangulated data in c3d format in addition to trc # Coming soon! +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering] # type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed # display_figures = false # true or false (lowercase) +# make_c3d = false # save triangulated data in c3d format in addition to trc # [filtering.butterworth] # order = 4 diff --git a/Pose2Sim/S01_Demo_SingleTrial/Config.toml b/Pose2Sim/S01_Demo_SingleTrial/Config.toml index 8519827..6c107e3 100644 --- a/Pose2Sim/S01_Demo_SingleTrial/Config.toml +++ b/Pose2Sim/S01_Demo_SingleTrial/Config.toml @@ -52,7 +52,7 @@ reset_sync = false # Revert to state before synchronization. Won't attempt to sy # Take heart, calibration is not that complicated once you get the hang of it! [calibration] -calibration_type = 'convert' # 'convert' or 'calculate' +calibration_type = 'calculate' # 'convert' or 'calculate' [calibration.convert] convert_from = 'qualisys' # 'qualisys', 'optitrack', vicon', 'opencap', 'easymocap', 'biocv', 'anipose', or 'freemocap' @@ -70,7 +70,7 @@ calibration_type = 'convert' # 'convert' or 'calculate' [calibration.calculate] # Camera properties, theoretically need to be calculated only once in a camera lifetime [calibration.calculate.intrinsics] - overwrite_intrinsics = false # set to false if you don't want to recalculate intrinsic parameters + overwrite_intrinsics = true # set to false if you don't want to recalculate intrinsic parameters show_detection_intrinsics = true # true or false (lowercase) intrinsics_extension = 'jpg' # any video or image extension extract_every_N_sec = 1 # if video, extract frames every N seconds (can be <1 ) @@ -140,6 +140,7 @@ make_c3d = false # save triangulated data in c3d format in addition to trc # Com [filtering] type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed display_figures = false # true or false (lowercase) +make_c3d = false # save triangulated data in c3d format in addition to trc [filtering.butterworth] order = 4 diff --git a/README.md b/README.md index 545428a..cb7a16d 100644 --- a/README.md +++ b/README.md @@ -40,14 +40,14 @@ If you can only use one single camera and don't mind losing some accuracy, pleas
**Pose2Sim releases:** -- [x] v0.1: Published online -- [x] v0.2: Published associated paper -- [x] v0.3: Supported other pose estimation algorithms -- [x] v0.4: New calibration tool based on scene measurements -- [x] v0.5: Automatic batch processing -- [x] v0.6: Marker augmentation, Blender visualizer -- [x] v0.7: Multi-person analysis -- [x] **v0.8: New synchronization tool** +- [x] **v0.1** *(09/2021)*: Published online +- [x] **v0.2** *(09/2022)*: Published associated paper +- [x] **v0.3** *(01/2023)*: Supported other pose estimation algorithms +- [x] **v0.4** *(07/2023)*: New calibration tool based on scene measurements +- [x] **v0.5** *(12/2023)*: Automatic batch processing +- [x] **v0.6** *(02/2024)*: Marker augmentation, Blender visualizer +- [x] **v0.7** *(03/2024)*: Multi-person analysis +- [x] **v0.8 *(04/2024)*: New synchronization tool** - [ ] v0.9: Calibration based on keypoint detection, Handling left/right swaps, Correcting lens distortions - [ ] v0.10: Graphical User Interface - [ ] v1.0: First accomplished release @@ -375,7 +375,7 @@ If you already have a calibration file, set `calibration_type` type to `convert` > _**Calculate calibration parameters with a checkerboard, with measurements on the scene, or automatically with detected keypoints.**_\ > Take heart, it is not that complicated once you get the hang of it! - > *N.B.:* Try the calibration tool on the Demo by changing `calibration_type` to `calculate` in [Config.toml](https://github.com/perfanalytics/pose2sim/blob/main/Pose2Sim/S01_Demo_SingleTrial/Config.toml).\ + > *N.B.:* Try the calibration tool on the Demo by changing `calibration_type` to `calculate` in [Config.toml](https://github.com/perfanalytics/pose2sim/blob/main/Pose2Sim/S00_Demo_BatchSession/Config.toml).\ For the sake of practicality, there are voluntarily few board images for intrinsic calibration, and few points to click for extrinsic calibration. In spite of this, your reprojection error should be under 1-2 cm, which [does not hinder the quality of kinematic results in practice](https://www.mdpi.com/1424-8220/21/19/6530/htm#:~:text=Angle%20results%20were,Table%203).). - **Calculate intrinsic parameters with a checkerboard:** @@ -385,7 +385,7 @@ If you already have a calibration file, set `calibration_type` type to `convert` - Create a folder for each camera in your `Calibration\intrinsics` folder. - For each camera, film a checkerboard or a charucoboard. Either the board or the camera can be moved. - - Adjust parameters in the [Config.toml](https://github.com/perfanalytics/pose2sim/blob/main/Pose2Sim/S01_Demo_SingleTrial/Config.toml) file. + - Adjust parameters in the [Config.toml](https://github.com/perfanalytics/pose2sim/blob/main/Pose2Sim/S00_Demo_BatchSession/Config.toml) file. - Make sure that the board: - is filmed from different angles, covers a large part of the video frame, and is in focus. - is flat, without reflections, surrounded by a white border, and is not rotationally invariant (Nrows ≠ Ncols, and Nrows odd if Ncols even). @@ -403,7 +403,7 @@ If you already have a calibration file, set `calibration_type` type to `convert` - Create a folder for each camera in your `Calibration\extrinsics` folder. - Once your cameras are in place, shortly film either a board laid on the floor, or the raw scene\ (only one frame is needed, but do not just take a photo unless you are sure it does not change the image format). - - Adjust parameters in the [Config.toml](https://github.com/perfanalytics/pose2sim/blob/main/Pose2Sim/S01_Demo_SingleTrial/Config.toml) file. + - Adjust parameters in the [Config.toml](https://github.com/perfanalytics/pose2sim/blob/main/Pose2Sim/S00_Demo_BatchSession/Config.toml) file. - Then, - **With a checkerboard:**\ Make sure that it is seen by all cameras. \ diff --git a/setup.cfg b/setup.cfg index 05986b6..f67c053 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = pose2sim -version = 0.8.0 +version = 0.8.1 author = David Pagnon author_email = contact@david-pagnon.com description = Perform a markerless kinematic analysis from multiple calibrated views as a unified workflow from an OpenPose input to an OpenSim result. @@ -51,4 +51,4 @@ install_requires = packages = find_namespace: [options.package_data] -* = OpenSim_Setup/**, MarkerAugmenter/**, S00_Demo_Session/**, S00_Demo_Session/**/.*, S00_Demo_Session/**/**/.*, S00_Demo_Session/**/**/**/.*, S00_Demo_Session/**/**/**/**/.* +* = OpenSim_Setup/**, MarkerAugmenter/**, S00_Demo_BatchSession/**, S00_Demo_BatchSession/**/.*, S00_Demo_BatchSession/**/**/.*, S00_Demo_BatchSession/**/**/**/.*, S00_Demo_BatchSession/**/**/**/**/.*, S01_Demo_SingleTrial/**, S01_Demo_SingleTrial/**/.*, S01_Demo_SingleTrial/**/**/.*