Skip to content

Navigation Menu

Sign in
Sign up

Improvements + Fixes #212

Zhi (xiangzhi) started this conversation in General
Discussion options

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

  1. The fix in Exporter.cs discussed in PsiStore operations on very big stores leads to running out of memory. #207 and CropInPlace function in PsiStore.cs. The fix only involve passing the deliveryPolicy to PipeTo which should not effect any existing code.

Improvements:

  1. 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).
  2. Unsealed AzureKinectBody Tracker so that we can run the body tracker afterwards if the IR + Depth Image + Calibration were saved.
  3. Added Sources/Filters/Microsoft.Psi.Filters/FilterExtensions.cs which wrapped the component as a function: IProducer<double> OneEuroFilter(this IProducer<double> input, double cutoffSlope = 0, double minCutoffFrequency = 1.0, double derivateCutoffFrequency = 1.0)
  4. Created Flip operator in Sources/Imaging/Microsoft.Psi.Imaging/ImageExtensions.cs for Depth Images and also its associated function.
  5. Another overload of ReplayDescriptor -> ReplayDescriptor(DateTime start, TimeSpan duration, bool enforceReplayClock = true)
  6. An IsolateStream function in Sources/Tools/PsiStoreTool/Utility.cs that creates a new store with one single stream.
  7. 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 :)

You must be logged in to vote

Replies: 1 comment

Comment options

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!

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet

AltStyle によって変換されたページ (->オリジナル) /