Performances
Best performance on the robot is achieved when processing directly the native colorspace provided by the camera: YUV422. For other colorspaces, a conversion is done by the
ALVideoDevice module, so processing times are ranked as follow for the main colorspaces:
YUV422 < Yuv < YUV < RGB/BGR < HSY (close to HSV/HSL colorspaces in term of functionality, but faster to process).
YUV colorspace is convenient as it is more powerful than RGB:
- luminance is in the Y channel so don’t need to average the three RGB layers to get a grey level image,
- chrominance is purely embedded in both U and V channels, so it’s easier to work on colors compared to RGB for which luminance and chrominance are correlated.
Providing uncorrelated luminance and chrominance channels, it brings almost the same advantages than HSV/HSL without spending as much CPU time for processing it.
Limitations
Currently on ATOM CPU, requesting more than 5fps 1280x960 HD images remotely (getImageRemote) is bringing some frame drops. So we recommend not to go over 5fps HD images if you want to get them through the network. If all modules processing HD images are calling them locally (getImageLocal), there is no such limitation.
Here are the observed framerates when requesting uncompressed YUV422 images on NAO v4 (*).
| local | Gb Ethernet | 100Mb Ethernet | WiFi g |
40x30 (QQQQVGA) | 30fps | 30fps | 30fps | 30fps |
80x60 (QQQVGA) | 30fps | 30fps | 30fps | 30fps |
160x120 (QQVGA) | 30fps | 30fps | 30fps | 30fps |
320x240 (QVGA) | 30fps | 30fps | 30fps | 11fps |
640x480 (VGA) | 30fps | 30fps | 12fps | 2.5fps |
1280x960 (4VGA) | 29fps | 10fps | 3fps | 0.5fps |
(*)
- Remote performance might vary with the client network configuration.
- On Windows, Monitor is usually appearing as blocked at 21fps. Other remote modules don’t suffer such a limitation.
- GB Ethernet performance with 1280x960 was observed on WinXP.