September 29, 2008 // 7:24 pm
- As posted by AlexP
on the forums of the Web site linked above:
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, less than 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
Downloads: PS3 Eye Driver
/ PS3 Eye Test
[Fixed 320x240 frame (full sensor), Now capturing at 60fps.]
This makes the PS3Eye ideal for multitouch applications. The best part is the price $39.99!
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 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 a camera as a device with direct access, thus eliminating the complexities and the overhead of DirectShow system. I will be working on custom PS3EYE capture filter for use in TouchLib.
I am currently running Vista and all the code is developed and tested under this particular OS.
- First run the Install.bat in Driver directory. You might need to reboot your machine after this step.
- Plug in the PS3Eye camera. Let the Windows detect the hub and two USB Camera-B3.04.06.1 devices.
- One of these is the audio and the other one is the camera itself. After a few seconds Windows will automatically detect and install one of the USB Camera-B3.04.06.1 devices. This will be the audio device. The one that is left is the camera.
- Windows will prompt you for a driver. Cancel out of that and go to the Device Manager, right click on USB Camera-B3.04.06.1 device and chose Update Driver Software.
- From there select Browse my computer for driver software and select the Driver directory. The PS3Eye Camera driver will be installed.
Now run the PS3EyeTest.exe program, and the captured video as well as the FPS counter will be displayed.
Go, try it for yourself...