Well boys and girls, I've been working hard last few weeks to make this great camera work under Windows.
As you may seen it before, here are the specs:
- 4 channel audio input:16 bits/channel, 48kHz, SNR 90db
- 56º or 75º Field of View zoom lens
- 2.1 F-stop, <1% distortion, fixed focus (25cm to 8 at 75º FOV)
- 640 x 480 at 60 frames/second
- 320 x 240 at 120 frames/second
- USB.0 high-speed data transfer
- Uncompressed video or optional JPEG compression
This makes the PS3Eye ideal for multitouch applications. The best part is the price $39.99! I found mine here.
Now, the main problem with this camera is that there are no drivers for Windows. The camera's chipset info is virtually non-existent on the web.
After examining the camera internals (pictures here) I found that it features the OV534-LB50 camera USB 2.0 bridge and the OV7720 CMOS VGA sensor. Both of these are made by OmniVision.
I started thinking to my self: "This camera is awesome and it will be such a great and inexpensive replacement for Firefly MV and the like. If we could just get it to work under Windows..."
Initially, I started poking around with the USB trying to send some commands to the PS3Eye and see what happens…
After many long nights I'm bringing you the result:
- Full VGA (640x480) 60fps video capture test app that features uncompressed high quality raw video
- Low CPU overhead (since there is no decompression involved on the PC)
- Very low latency (1 frame time period)
The camera currently streams video in YUYV format, therefore each frame is 640*480*2 bytes.
At 30fps this amounts to about 17.5MB/s which is pretty low in comparison to the total USB 2.0 bandwidth.
At 60fps the amount of data gets higher and it could be affected by other peripherals connected to the USB host controller.
This is why it is recommended that the camera be the only device connected to the USB host controller.
Most of the CPU overhead that I currently have is the color conversion code that is implemented in straight C/C++ without any SIMD optimizations.
For real (MT) applications this code will go away, since we will be extracting raw grayscale image (every second byte of YUYV).
My driver exposes PS3Eye camera as a device with direct access, thus eliminating the complexities and the overhead of DirectShow system.
For multitouch applications (where low latency is a key) I will be working on custom PS3EYE capture filter for use in TouchLib. In parallel I will be working on a DirectShow filter that will allow wide use of this camera on Windows.
Installation:
- Unplug the PS3Eye camera from your comupter.
- Download and run the latest CL-Eye Platform file.
- Click 'Install' and follow the setup process.
- Plug in the camera.
After successful installation, your Device Manager should look similar to this:
Now run the PS3EyeTest.exe program, and the captured video as well as the FPS counter will be displayed.
I added the camera image controls:
Go, try it for yourself…
Enjoy!
1 comment:
Fucking copy-pasting Alex from NUI's work. If you are going to steal someone's work and post it on your blog, at least give them credit.
Post a Comment