minor changes
This commit is contained in:
parent
7f6e6a829d
commit
2b02755920
@ -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
|
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
|
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
|
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]
|
[filtering]
|
||||||
type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||||
display_figures = false # true or false (lowercase)
|
display_figures = false # true or false (lowercase)
|
||||||
|
make_c3d = false # also save triangulated data in c3d format
|
||||||
|
|
||||||
[filtering.butterworth]
|
[filtering.butterworth]
|
||||||
order = 4
|
order = 4
|
||||||
|
@ -133,12 +133,13 @@
|
|||||||
# show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated
|
# 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
|
# 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
|
# 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]
|
# [filtering]
|
||||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||||
# display_figures = false # true or false (lowercase)
|
# display_figures = false # true or false (lowercase)
|
||||||
|
# make_c3d = false # save triangulated data in c3d format in addition to trc
|
||||||
|
|
||||||
# [filtering.butterworth]
|
# [filtering.butterworth]
|
||||||
# order = 4
|
# order = 4
|
||||||
|
@ -133,12 +133,13 @@
|
|||||||
# show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated
|
# 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
|
# 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
|
# 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]
|
# [filtering]
|
||||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||||
# display_figures = false # true or false (lowercase)
|
# display_figures = false # true or false (lowercase)
|
||||||
|
# make_c3d = false # save triangulated data in c3d format in addition to trc
|
||||||
|
|
||||||
# [filtering.butterworth]
|
# [filtering.butterworth]
|
||||||
# order = 4
|
# order = 4
|
||||||
|
@ -133,12 +133,13 @@
|
|||||||
# show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated
|
# 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
|
# 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
|
# 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]
|
[filtering]
|
||||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||||
display_figures = false # true or false (lowercase)
|
display_figures = false # true or false (lowercase)
|
||||||
|
# make_c3d = false # save triangulated data in c3d format in addition to trc
|
||||||
|
|
||||||
# [filtering.butterworth]
|
# [filtering.butterworth]
|
||||||
# order = 4
|
# order = 4
|
||||||
|
@ -133,12 +133,13 @@
|
|||||||
# show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated
|
# 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
|
# 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
|
# 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]
|
# [filtering]
|
||||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||||
# display_figures = false # true or false (lowercase)
|
# display_figures = false # true or false (lowercase)
|
||||||
|
# make_c3d = false # save triangulated data in c3d format in addition to trc
|
||||||
|
|
||||||
# [filtering.butterworth]
|
# [filtering.butterworth]
|
||||||
# order = 4
|
# order = 4
|
||||||
|
@ -133,12 +133,13 @@
|
|||||||
# show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated
|
# 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
|
# 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
|
# 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]
|
# [filtering]
|
||||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||||
# display_figures = false # true or false (lowercase)
|
# display_figures = false # true or false (lowercase)
|
||||||
|
# make_c3d = false # save triangulated data in c3d format in addition to trc
|
||||||
|
|
||||||
# [filtering.butterworth]
|
# [filtering.butterworth]
|
||||||
# order = 4
|
# order = 4
|
||||||
|
@ -132,12 +132,13 @@
|
|||||||
# show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated
|
# 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
|
# 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
|
# 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]
|
# [filtering]
|
||||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||||
# display_figures = false # true or false (lowercase)
|
# display_figures = false # true or false (lowercase)
|
||||||
|
# make_c3d = false # save triangulated data in c3d format in addition to trc
|
||||||
|
|
||||||
# [filtering.butterworth]
|
# [filtering.butterworth]
|
||||||
# order = 4
|
# order = 4
|
||||||
|
@ -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
|
# 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
|
# 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
|
# 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]
|
# [filtering]
|
||||||
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
# type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||||
# display_figures = false # true or false (lowercase)
|
# display_figures = false # true or false (lowercase)
|
||||||
|
# make_c3d = false # save triangulated data in c3d format in addition to trc
|
||||||
|
|
||||||
# [filtering.butterworth]
|
# [filtering.butterworth]
|
||||||
# order = 4
|
# order = 4
|
||||||
|
@ -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!
|
# Take heart, calibration is not that complicated once you get the hang of it!
|
||||||
[calibration]
|
[calibration]
|
||||||
calibration_type = 'convert' # 'convert' or 'calculate'
|
calibration_type = 'calculate' # 'convert' or 'calculate'
|
||||||
|
|
||||||
[calibration.convert]
|
[calibration.convert]
|
||||||
convert_from = 'qualisys' # 'qualisys', 'optitrack', vicon', 'opencap', 'easymocap', 'biocv', 'anipose', or 'freemocap'
|
convert_from = 'qualisys' # 'qualisys', 'optitrack', vicon', 'opencap', 'easymocap', 'biocv', 'anipose', or 'freemocap'
|
||||||
@ -70,7 +70,7 @@ calibration_type = 'convert' # 'convert' or 'calculate'
|
|||||||
[calibration.calculate]
|
[calibration.calculate]
|
||||||
# Camera properties, theoretically need to be calculated only once in a camera lifetime
|
# Camera properties, theoretically need to be calculated only once in a camera lifetime
|
||||||
[calibration.calculate.intrinsics]
|
[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)
|
show_detection_intrinsics = true # true or false (lowercase)
|
||||||
intrinsics_extension = 'jpg' # any video or image extension
|
intrinsics_extension = 'jpg' # any video or image extension
|
||||||
extract_every_N_sec = 1 # if video, extract frames every N seconds (can be <1 )
|
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]
|
[filtering]
|
||||||
type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
|
||||||
display_figures = false # true or false (lowercase)
|
display_figures = false # true or false (lowercase)
|
||||||
|
make_c3d = false # save triangulated data in c3d format in addition to trc
|
||||||
|
|
||||||
[filtering.butterworth]
|
[filtering.butterworth]
|
||||||
order = 4
|
order = 4
|
||||||
|
22
README.md
22
README.md
@ -40,14 +40,14 @@ If you can only use one single camera and don't mind losing some accuracy, pleas
|
|||||||
</br>
|
</br>
|
||||||
|
|
||||||
**Pose2Sim releases:**
|
**Pose2Sim releases:**
|
||||||
- [x] v0.1: Published online
|
- [x] **v0.1** *(09/2021)*: Published online
|
||||||
- [x] v0.2: Published associated paper
|
- [x] **v0.2** *(09/2022)*: Published associated paper
|
||||||
- [x] v0.3: Supported other pose estimation algorithms
|
- [x] **v0.3** *(01/2023)*: Supported other pose estimation algorithms
|
||||||
- [x] v0.4: New calibration tool based on scene measurements
|
- [x] **v0.4** *(07/2023)*: New calibration tool based on scene measurements
|
||||||
- [x] v0.5: Automatic batch processing
|
- [x] **v0.5** *(12/2023)*: Automatic batch processing
|
||||||
- [x] v0.6: Marker augmentation, Blender visualizer
|
- [x] **v0.6** *(02/2024)*: Marker augmentation, Blender visualizer
|
||||||
- [x] v0.7: Multi-person analysis
|
- [x] **v0.7** *(03/2024)*: Multi-person analysis
|
||||||
- [x] **v0.8: New synchronization tool**
|
- [x] **v0.8 *(04/2024)*: New synchronization tool**
|
||||||
- [ ] v0.9: Calibration based on keypoint detection, Handling left/right swaps, Correcting lens distortions
|
- [ ] v0.9: Calibration based on keypoint detection, Handling left/right swaps, Correcting lens distortions
|
||||||
- [ ] v0.10: Graphical User Interface
|
- [ ] v0.10: Graphical User Interface
|
||||||
- [ ] v1.0: First accomplished release
|
- [ ] 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.**_\
|
> _**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!
|
> 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).).
|
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:**
|
- **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.
|
- 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.
|
- 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:
|
- Make sure that the board:
|
||||||
- is filmed from different angles, covers a large part of the video frame, and is in focus.
|
- 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).
|
- 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.
|
- 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\
|
- 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).
|
(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,
|
- Then,
|
||||||
- **With a checkerboard:**\
|
- **With a checkerboard:**\
|
||||||
Make sure that it is seen by all cameras. \
|
Make sure that it is seen by all cameras. \
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = pose2sim
|
name = pose2sim
|
||||||
version = 0.8.0
|
version = 0.8.1
|
||||||
author = David Pagnon
|
author = David Pagnon
|
||||||
author_email = contact@david-pagnon.com
|
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.
|
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:
|
packages = find_namespace:
|
||||||
|
|
||||||
[options.package_data]
|
[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/**/**/.*
|
||||||
|
Loading…
Reference in New Issue
Block a user