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.