Wydajność
Filtry Adaptive Vision Studio w pełni wykorzystują możliwości współczesnych procesorów - w szczególności instrukcje SSE2 i obliczenia równoległe w architekturach wielordzeniowych. Poniższa tabela zawiera wyniki testu porównawczego Adaptive Vision Studio i konkurencyjnych bibliotek.
Porównanie wydajności biliotek wizyjnych
| Filtr | Adaptive Vision | Inny "potężny" produkt | OpenCV |
|---|---|---|---|
| Negacja obrazu | 0.073 ms | 0.078 ms | |
| Suma obrazów | 0.088 ms | 0.151 ms | 0.121 ms |
| Róznica obrazów | 0.089 ms | 0.155 ms | 0.121 ms |
| Konwersja RGB do HSV | 1.10 ms | 3.31 ms | 4.37 ms |
| Rozmycie Gaussa 3x3 | 0.089 ms | 0.420 ms | 0.514 ms |
| Rozmycie Gaussa 5x5 | 0.096 ms | 0.685 ms | 0.800 ms |
| Rozmycie Gaussa 21x21 | 1.42 ms | 3.30 ms | 4.25 ms |
| Mean filter 21x21 | 0.359 ms | 0.327 ms | 1.753 ms |
| Erozja 3x3 | 0.080 ms | 0.158 ms | 0.149 ms |
| Erozja 5x5 | 0.090 ms | 0.174 ms | 0.188 ms |
| Amplituda gradientu sobela (sum) | 0.120 ms | 0.123 ms | |
| Amplituda gradientu sobela (hypot) | 0.211 ms | 0.885 ms | |
| Progowanie do regionu | 0.35 ms | 0.34 ms |
Powyższe wyniki odpowiadają jednokanałowym, ośmiobitowym obrazom w rozdzielczości 640x480 przetwarzanym na komputerze wyposażonym w czterordzeniowy procesor Intel Core i7 - 2.67 GHz. Dla uzyskania wiarygodnych wyników do testów wykorzystano wielokrotnie większe obrazy a następnie znormalizowano wyniki.
Optymalizacje sprzętowe
Przyspieszenie uzyskiwane dzięki optymalizacjom SSE2 i zrównoleglaniu obliczeń na procesorach wielordzeniowych jest silnie zależne od specyfiki konkretnego operatora. Elementarne operacje wykonywane na każdym pikselu obrazu z osobna zrealizowane przy pomocy instrukcji SSE osiągają wydajność bliską operacji samego tylko dostępu do przetwarzanej pamięci. W przypadku bardziej złożonych filtrów, takich jak rozmycie Gaussa, możliwe jest uzyskanie przyspieszenia nawet o rząd wielkości w stosunku do klasycznych implementacji.
| Filtr | Bez optymalizacji | SSE | SSE i obliczenia równoległe (4 rdzenie) | Przyspieszenie optymalizacji SSE | Przyspieszenie obliczeń równoległych | Całkowite przyspieszenie |
|---|---|---|---|---|---|---|
| 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 |
Powyższe wyniki odpowiadają jednokanałowym, ośmiobitowym obrazom w rozdzielczości 640x480 przetwarzanym na komputerze wyposażonym w czterordzeniowy procesor Intel Q9550 - 2.83 GHz. Dla uzyskania wiarygodnych wyników do testów wykorzystano wielokrotnie większe obrazy a następnie znormalizowano wyniki.


