Git Product home page Git Product logo

Comments (7)

MarekKowalski avatar MarekKowalski commented on May 25, 2024

Hi,

There is currently not synchronization mechanism employed in the app. Whenever a client receives a request for a frame it sends the last frame that was obtained from the sensor.
Because of that even if one client has a lower framerate (for example due to the fact that it runs in debug) the sever should still receive at a high framerate (unless it is limited by bandwidth).

Does that answer your question?

Marek

from livescan3d.

ChienDuong avatar ChienDuong commented on May 25, 2024

Hi Marek,
Thank you for your answer. I would like to point out some of my thoughts below.

Sever sends the request to the Client, then it will receive the information whenever the Flag "allGathered=true" ( Sever finished to receive all Client information).
The reason that the sever doesnt reduce frame rate to the slowest one is:

  • Client: Capture the image and Send the information are independent. Client always acquired new image. Whenever it received the request from the Sever, it just sendd the latest Frame. Thus, the faster Client may send the newer frame while the slower frame still sendd the same frame (the slower has not captured the new frame at the time it received request). The disadvantage is: the two frames from two Kinects showing in the sever are not captured at the same moment.
    image

Second, If I want to do the simple synchronization (I am tracking the skeleton of human, so I want to make sure that two skeleton come from the same frame as much as possible), the most simple way I can do is: somehow, the faster Client captures the image only when the slower Client captures the image. Dont let them do it independent, then the results in Sever is at slowest frame rate.

I attached the current results, I combine another information into one Client, it make this Client is much slower than another Client. And without synchronization, two skeleton is differents
ezgif com-video-to-gif
Do I understand correctly?

Thank you,
Mark

from livescan3d.

ChienDuong avatar ChienDuong commented on May 25, 2024

Hi Marek,
I think my thoughts above is correct. I already can synchronize as shown in the result below .
3synchronizeresults
However, Now I have another questions.
Kinect SDK2.0 provided the The MultiSouceFrameReader, which can read many stream data at the same time such as: Color, Depth, Body, Inferred. As far as I know, the multisouceFrame reader somehow fuse all the stream together and we can get the slowest fps (e.g. if: Color 15fps and depth, inferred: 30fps -> Multisouces =15fps). But it is not correct 100%, sometimes, when Multisoucesreader is successful, all the specific types inside are still not successful. Thus, If we want to take out the specific stream (GetBody, GetColor,GetDepth), we still need to double check it right?.

Thank you,
Mark

from livescan3d.

MarekKowalski avatar MarekKowalski commented on May 25, 2024

Hi ChienDuong,

Your resoning in the first post is correct, this is exactly how the system works.
As for ways to synchornize the two Kinects: the method you proposed should work ok for two devices. I guess a more robust method would be to synchronize the clocks of the clients and use timestamps for each frame. This way you might even be able to interpolate between frames to achieve better alignment.

As for the MultSourceFrameReader, it's been a while since I looked at the Kinect SDK and I am not sure how this particular method works, sorry :(

Let me know if you have any other questions I can help with!

Thanks,

Marek

from livescan3d.

ChienDuong avatar ChienDuong commented on May 25, 2024

Hi Marek,

I really appreciate your suggestions. I will spend time to improve my result.

Thank you so much,

Mark

from livescan3d.

percramer avatar percramer commented on May 25, 2024

Hi ChienDuong,

the skeleton synchronization is that something you added to your source? Or is it in the general source also? And does it handle 2 Kinects or multiple?

Regards,

Per

from livescan3d.

ChienDuong avatar ChienDuong commented on May 25, 2024

Hi Per,

Long-time ago, I may forget something obvious.
As far as I remember, The skeleton is already implemented in the code, Kinect SDK also supports skeleton detection. You just need to show it out. In order to combine the view from multiple views (multiple Clients) into one, Marek already implemented it. For synchronization the timestamp, the original code did not implement it, the result I showed above is also the results without synchronization.
The results have slightly different between cameras, the client (camera) sends their latest frame when received the request from the server.

Hope it can help,
Mark

from livescan3d.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.