Performance
The filters of Adaptive Vision Studio are highly optimized for modern multicore processors with SSE2 technology. The table below shows results of a vision libraries performance benchmark.
Vision Libraries Benchmark
| Filter | Adaptive Vision | Another "powerful" product | OpenCV |
|---|---|---|---|
| Image negation | 0.073 ms | 0.078 ms | |
| Add two images (pixel by pixel) | 0.088 ms | 0.151 ms | 0.121 ms |
| Image difference (pixel by pixel) | 0.089 ms | 0.155 ms | 0.121 ms |
| Rgb to Hsv conversion (3xUINT8) | 1.10 ms | 3.31 ms | 4.37 ms |
| Gauss filter 3x3 | 0.089 ms | 0.420 ms | 0.514 ms |
| Gauss filter 5x5 | 0.096 ms | 0.685 ms | 0.800 ms |
| Gauss filter 21x21 (std-dev: 4.3) | 1.42 ms | 3.30 ms | 4.25 ms |
| Mean filter 21x21 | 0.359 ms | 0.327 ms | 1.753 ms |
| Image erosion 3x3 | 0.080 ms | 0.158 ms | 0.149 ms |
| Image erosion 5x5 | 0.090 ms | 0.174 ms | 0.188 ms |
| Sobel gradient amplitude (sum) | 0.120 ms | 0.123 ms | |
| Sobel gradient amplitude (hypot) | 0.211 ms | 0.885 ms | |
| Threshold to region | 0.35 ms | 0.34 ms |
The above results correspond to 640x480 resolution, 1xUINT8 on an Intel Core i7 - 2.67 GHz (4 cores) machine. To assure consistent cache conditions big images were used and the results were normalized.
SEE and Multi-Core Optimization
Filters of Adaptive Vision Studio are optimized for SSE technology and for multi-core processors. Speed-up factors that can be achieved with these techniques are however highly dependent on the particular operator. Simple pixel-by-pixel transforms after SSE-based optimizations already reach memory bandwidth limits. On the other hand, more complex filters such as Gauss smoothing can achieve even 10 times lower execution times than with C++ optimizations only.
| Filter | Not optimized | SSE | SSE & Multicore (4 cores) | SEE Speed-up Factor | Multi-core Speed-up Factor | Total Speed-up Factor |
|---|---|---|---|---|---|---|
| ThresholdImage | 0.443 ms | 0.214 ms | 0.201 ms | 2.1 | 1.1 | 2.2 |
| SmoothImage_GaussFast (3x3) | 0.827 ms | 0.415 ms | 0.196 ms | 2.0 | 2.1 | 4.2 |
| RotateImage | 1.84 ms | 1.84 ms | 0.75 ms | 1.0 | 2.5 | 2.5 |
| SmoothImage_Gauss (21x21) | 12.10 ms | 5.06 ms | 1.37 ms | 2.4 | 3.7 | 8.8 |
The above results correspond to 640x480 resolution, 1xUINT8 on an Intel Q9550 - 2.83 GHz (4 cores) machine. To assure consistent cache conditions big images were used and the results were normalized.


