Comments (7)
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.
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.
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
Do I understand correctly?
Thank you,
Mark
from livescan3d.
Hi Marek,
I think my thoughts above is correct. I already can synchronize as shown in the result below .
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.
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.
Hi Marek,
I really appreciate your suggestions. I will spend time to improve my result.
Thank you so much,
Mark
from livescan3d.
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.
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)
- LiveScanClient build from source code failed for Azure Kinect. HOT 2
- Azure data corruption, scan merging, color problems, player crashing HOT 4
- Use Hololens 2 sensor data as input HOT 2
- Using AzureKinect, PointCloud is upside down HOT 3
- .bin file in sync while ply files out of sync for two camera recordings HOT 3
- the problem of settings HOT 9
- Place the calibrated cameras in Unity HOT 6
- hi~Thank for share your project , I have a problem is that this project can run on Visual studio 2022 ? HOT 4
- Application's validity HOT 1
- "Kinect.h" no such file or directory
- color mismatch HOT 10
- Problem with Caliberation HOT 51
- Save data in .ply format HOT 6
- How to compile .exe for Azure Kinect? HOT 2
- Problems about showing .ply in LiveScanPlayer.exe HOT 9
- Show nothing when I click 'show live' in the server.exe HOT 5
- Could we save the depth map image at the same time? HOT 4
- Xbox 360 Kinect or Xbox One only? HOT 1
- adding audio HOT 3
- Can LiveScan3D connect two KinectV2 cameras to output depth and RGB images HOT 16
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from livescan3d.