Realsense post processing setting in nuitrack.config


I found there is PostProcessing section in nuitrack.config.
And it contains SpatialFilter settings like follwing.

        "PostProcessing": {
            "SpatialFilter": {
                "spatial_iter": 2, 
                "spatial_alpha": 0.5, 
                "spatial_delta": 20

            "DownsampleFactor": 2

In Realsense SDK, there are Temporal filter, Decimation Filter, and more options avairable.
I tested to add “TemporalFilter” section but my app crashed on launch.
Does somebody (or Olga :wink: ) know which filter is supported or not? And how to set up properly?

Nuitrack app with realsense sometimes drops skeleton tracking during user movement.
I think this could be because of lack of post-processing feature.
Realsense original depth data is quite noisy without post-processing.

In the current SDK - only the filters listed in the nuitrack.config have been implemented as far as we can tell.

BUT FWIW - the nature of how the intel camera’s work means they have issues that cant simply be rectified by adding a filter. Sometimes the raw data is just too bad to give a repeatable result from frame to frame.

We have found that the only solution at times is to add additional downstream smoothing/interpolation - AFTER the skeleton is created .



I use the same post because its related.
Is it possible to have more information on the parameters of this config file for the RealSense?
There is a lot of things in it but not very understandable?

We work also on the body tracking with the d435. What is the best configuration for it? We have something smooth on the head but the movement arrives like waves it seems to not have a continuous speed. Do you have some advice on this?

Thanks in advance

1 Like

Thank you for your reply.
I understand the difficulties of supporting all kind of different sensors.

Raw data from realsense is sometimes poor I agree. But from my understanding, even we receive 1 or 2 poor raw depth frames, temporal filter is able to smooth it in time domain and provides a better repeatable result. But probably dev team know lots more than me so I believe your advice anyway :-).

We have found that the only solution at times is to add additional downstream smoothing/interpolation - AFTER the skeleton is created.

Thanks for this info, great to know that. Which smoothing/interpolation parameters can we use for this after skeleton generation process? Skeletonization and RegressionSkeletonization.Filter section?

I can imagine that providing documents for all parameters can be problematic especially early developing phase. I expected that I can just change the parameters and find how it works in real-time. But seems like Nuitrack::setConfigValue() only works during app initialization time.
So what I do is,

  1. change some parameter
  2. compile
  3. run app
  4. observe a result
  5. terminate app
  6. back to 1

This way, it’s bit hard to find the effect of each parameter. Is there any better workflow to tweak and find best settings?

Anyway, thank you for a quick reply and great support always :slight_smile:

Hi Hiro,

Yes - lack of documentation is a real pain though SetConfig can be called after init() in some cases provided it is called before Depth.Create() - depending on what settings you are changing.

If you want to run cycles of tests in a single execution you can however release() the current session and recall init() - however - you may also need to manually reset the intel hardware - which we have found is needed.