Futhark - 09 January 2010 06:19 AM
1Gbps link is only for syncing purposes. All data processing from cameras is done on computers that cams are connected to. The latency is important because my application is kind of a real-time face motion capture app, but I can do postprocessing as well. I capture grayscale .(JavaScript must be enabled to view this email address). Every cam is connected to it’s own hardware usb controller.
Since the latency is critical, it will be very hard for you to achieve what you want since Windows is not a real-time OS and there are no guaranties on how long any operation will take. I see here two problems:
1. Camera synchronization
In order for you to synchronize the cameras you would need some kind of way of time stamping every captured frame. Now in order to perform this over multiple machines you would absolutely need to have them both run and use exactly same time (up to ms resolution, at least). To add this you would have to calculate the latency of sync data packet transmission over Ethernet. And this is all assuming that your system is running stable without any CPU bursts that could mess things up. With all this you will achieve the sync between the frames, or at least know exactly how much they are off.
One thing that comes to mind is that since you will be doing blob tracking, besides blob position (x, y), you will probably keep track of blob delta (dx, dy) and acceleration values as well. Now even though the camera frames occur at discrete times and will be offset by at most 1 frame you could compensate for this by setting one camera as a reference and predicting the positions of all other captured blobs (based on dx, dy and acceleration) to match the time stamp of the reference camera.
2. Minimizing the latency
In order to minimize the latency basically you would want to process the frame data as soon as it comes to you.
In conclusion, as you see, these two methods are kind of complementary and you would need to set on one or the other. In another words, if you want to minimize latency you cannot have cameras fully in sync, and if you sync them your latency will go up.
So it comes down to what is the latency time that is acceptable for you? At 60fps the camera frames will be at most 8.33ms off. This is pretty fast, but if you add synchronization then this time will go up to 16.66ms or maybe a bit more.
Another option is to try and drop the resolution to 320x240 and run at 125fps thus reducing the latency and sync time in half.
Hope this helps a bit,
AlexP