Today I have the pleasure to review an amazing USB3 camera made and distributed by the indian company e-con Systems. The camera model is the See3CAM_CU30, a 3.4 MP UVC-compliant Low Light USB camera board based on AR0330 sensor from ON Semiconductor®.
This Low Light Board Camera is backward compatible with USB 2.0 and supports compressed MJPEG formats at frame rates equal to USB 3.0. This sensor enables a superior low light performance. It has a dedicated, high-performance Image Signal Processor chip (ISP) that performs all the Auto functions (Auto White Balance, Auto Exposure control) in addition to complete image signal processing pipeline that provides best-in-class images, videos and the MJPEG compressions.
The dimension of the camera are really small, the electronics is distributed on two 3×3 cm sized PCBs for a total weight of 19 grams, lens included. The lower PCB provides the USB3 type-C connector, a bicolor led to easily get information about the status of the image sensor and the ISP chip. On the upper PCB we find the AR0330 sensor protected by the M12 lens holder.
The camera provides two output formats: Uncompressed UYVY format and Compressed MJPEG format.
The videostream can be acquired in a very huge number of configurations, according to frame dimensions, frame rate and compression type requested by the application in which it is involved:
|Resolutions||USB 3.0||USB 2.0|
|3.4MP (2304 x 1536)||24 fps & 12 fps||48 fps||5 fps & 2.5 fps||48 fps|
|3MP (2304 x 1296)||30 fps & 15 fps||60 fps||6 fps & 3 fps||60 fps|
|3MP (2048 x 1536)||42 fps & 21 fps||50 fps||5 fps & 2.5 fps||50 fps|
|1280P (1920 x 1280)||50 fps & 25 fps||50 fps||6 fps & 3 fps||50 fps|
|FHD (1920 x 1080)||60,30 & 15 fps||60 fps||8 fps & 3 fps||60 fps|
|960P (1280 x 960)||58 fps & 30 fps||58 fps||14 fps & 7 fps||58 fps|
|HD (1280 x 720)||60 fps & 30 fps||60 fps||16 fps & 8 fps||60 fps|
|XGA+ (1152 x 768)||60 fps & 30 fps||UVC-compliant60 fps||19 fps & 9.5 fps||60 fps|
|VGA (640 x 480)||60 fps & 30 fps||60 fps||30 fps & 15 fps||60 fps|
The camera is fully powered through USB3 connector and it can drain up to 420mA for a total of maximum power required of 2.1W.
One of the most interesting thing about this device is that each camera has an unique ID, so a multi-camera system can be easily configured identifying each sensor in unique way.
e-con System, through its devel website, provides software and drivers for Windows and a demo made in Qt for Linux systems.
Since the camera is fully UVC-compliant it is really straightforward to interface it with the standard acquisition software and computer vision frameworks.
The easiest pipeline to acquire the video stream using GStreamer using the default configuration of “Video4Linux” interface is the following:
gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! autovideosink -v
The video has been recorded using the following GStreamer pipeline:
gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! queue ! x264enc psy-tune=film bitrate=10000 ! mp4mux ! queue ! filesink location=~/Videos/default.mp4 -e
Thanks to the “-v” options we get to know the features of the stream:
- Frame size: 2304×1536
- Frame rate: 24 FPS
- Frame format: YV12 (UYVY uncompressed)
that is the best quality of video that we can obtain.
If we want the best quality at maximum framerate we can choose FHD (1920×1080) @ 60 FPS:
gst-launch-1.0 v4l2src device=/dev/video1 ! "video/x-raw, format=YV12, width=1920, height=1080, framerate=60/1" ! videoconvert ! queue ! autovideosink
Low light feature
The AR0330 CMOS sensor allows to acquire colored frames at very low light conditions without the requirement of an external IR light source. Images results a little noisy due to the elevated gain used, but the information are really usable and a complete image analysis can be performed in condition where normal RGB camera cannot work without external lighting sources.
See the demo video to compare the same scene acquired with the See3CAM_CU30 (fullscreen stream )and a normal laptop webcam (top left rectangle)
to create the video the following GStreamer pipeline has been used:
gst-launch-1.0 v4l2src do-timestamp=true device=/dev/video1 ! 'video/x-raw, format=YV12, width=1280, height=720, framerate=30/1' ! queue ! mix.sink_0 v4l2src do-timestamp=true device=/dev/video0 ! 'video/x-raw, width=320, height=240, framerate=30/1' ! queue ! mix.sink_1 videomixer name=mix sink_1::xpos=20 sink_1::ypos=20 sink_1::zorder=1 ! queue ! videoconvert ! autovideosink sync=false async=false
Using the camera you can notice that the temperature of the PCBs raises very fast, so I decided to perform a simple thermal analysis to understand where the heat is mainly generated.
Before starting the acquisition:
$ gst-launch-1.0 v4l2src device=/dev/video1 ! "video/x-raw, format=YV12, width=1920, height=1080, framerate=60/1" ! videoconvert ! queue ! autovideosink
After 3 minutes of streaming at 1920×1280 @ 60 FPS:
After 5 minutes:
After 25 minutes:
The temperature seems to be stabilized and the ISP and the other little component near it (maybe the DC power converter) are the main hear sources.
The temperatures are effectively high, but the elaboration performed onboard are very heavy when using the camera at its highest capabilities. It is important to take care about this fact during the design of the final product that will use this kind of device as image acquisition sensor.
It is not yet easy to find an USB3 webcam if not very expensive, the See3CAM is not only an USB3 camera, it is a really interesting and cost effective USB3 camera, with features comparable to really expensive cameras.
The low light capabilities and the UVC-compatibility make the See3CAM a must buy product for video analysis applications that span from video surveillance to robotics passing to industrial control.