-
Notifications
You must be signed in to change notification settings - Fork 104
Improvements + Fixes #212
Now that I'm nearly done with my degree :P, I got some free time to push back some changes and fixes I found along the way. These are changes related to Psi's core components. Please let me know if these changes are appropriate. I'm not sure if it's preferable to (1) have them as one big pull request or (2) each item as its own pull request, or (3) combinations of them.
Bug Fixes
- The fix in
Exporter.csdiscussed in PsiStore operations on very big stores leads to running out of memory. #207 andCropInPlacefunction inPsiStore.cs. The fix only involve passing thedeliveryPolicytoPipeTowhich should not effect any existing code.
Improvements:
- Updated the AzureKinect & Body Tracker component to use the 1.4.1 SDK. As part of 1.4.1, the body tracker is now a local installed SDK (set using PATH) instead of Nuget (There is no nuget equivalent).
- Unsealed AzureKinectBody Tracker so that we can run the body tracker afterwards if the IR + Depth Image + Calibration were saved.
- Added
Sources/Filters/Microsoft.Psi.Filters/FilterExtensions.cswhich wrapped the component as a function:IProducer<double> OneEuroFilter(this IProducer<double> input, double cutoffSlope = 0, double minCutoffFrequency = 1.0, double derivateCutoffFrequency = 1.0) - Created
Flipoperator inSources/Imaging/Microsoft.Psi.Imaging/ImageExtensions.csfor Depth Images and also its associated function. - Another overload of ReplayDescriptor ->
ReplayDescriptor(DateTime start, TimeSpan duration, bool enforceReplayClock = true) - An
IsolateStreamfunction inSources/Tools/PsiStoreTool/Utility.csthat creates a new store with one single stream. - Added default store name, stream name, and path generate methods when creating annotation stream (configured through PsiStudioSettings). The use case here is that it automatically prefill the information when creating a new annotation stream and avoid repeating the same information when you have to create one for every single session.
I'm curious what y'all think about the change. I'm not sure if (2) is a good idea, it could be something people change themselves if they wanted to. The improvement (1) and (6) probably need a more fine comb code review. Please let me know if any of the items aren't clear and I'm happy to go into more details about it :)
All reactions
-
❤️ 1
Replies: 1 comment
These improvements sound fantastic! We would love for you contribute any/all of them that you feel comfortable sharing. I think it would make the most sense to split this into at least a few separate PRs that we can code review and provide feedback on. For example, it would be good to separate all the AzureKinect changes into their own PR. I'll let you split the rest of them up in whatever way you prefer and is easiest for you.
A few quick questions/comments based on the improvements you've listed:
(1) This is awesome to see, as I've been meaning to create the 1.4.1. version of the body tracker component for my own work, but hadn't gotten around to it yet. I'm curious how you accomplished it without the availability of a C# nuget to use.
(2) I'm wondering why the class needs to be unsealed so you can derive from it? I was hoping it would be usable as is. But maybe I'm missing a use case.
(5) Maybe we need to see your use cases, but we should decide whether or not it's worth adding this additional constructor rather than simply using the existing one with ReplayDescriptor(start, start+duration)
(6) This is super useful functionality to add to the tool, but I might call it something like ExtractStream instead.
Thanks, and excited to see these updates!