Table of Contents
1. Introduction. 1
2. Benchmarking
Method. 1
3. Results. 2
3.1. Color
Space Transformations. 2
3.2. Geometric
Transformations. 3
3.3. B&W
Morphology. 4
3.4. Gray
Morphology. 6
3.5. Edge
Detection. 9
3.6. Image
Enhancement. 10
3.7. Image
Analysis. 12
3.8. Linear
Filters. 14
3.9. Linear
transforms. 14
1. Introduction
This document contains a
comprehensive benchmark of the performance of Anona Labs IPT compared to
Matlab’s Image Processing Toolbox. More than 80% of the IPT functions where
benchmarked.
2. Benchmarking Method
2.1. System Specification:
CPU: Intel® Core2 Quad
Q6600 (2.4Ghz). Memory: 2GB RAM, DDR2 800Mhz.
Software: Windows XP,
Matlab® 7.5 (2007b), Anona Labs IPT 1.0.
2.2. Method
· Both Matlab and the IPT are set to use all processors cores (4 threads).
· Time is measured using Matlab’s ‘tic’ and ‘toc’.
· In order to eliminate overhead times related to m-files and dlls loading
each of the functions is called twice before the time measurement start.
3. Results

The details of the benchmark results
are listed in the tables below.
3.1. Color Space Transformations
Function Name |
Image Size |
Image Type |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
RGB2Gray |
600x800 |
uint8 |
3.1 |
12.2 |
4.0 |
600x800 |
uint16 |
5.6 |
17.2 |
3.1 |
600x800 |
single |
4.8 |
8.9 |
1.8 |
600x800 |
double |
11.6 |
12.9 |
1.1 |
RGB2HSV |
600x800 |
uint8 |
6.6 |
276.1 |
42.0 |
600x800 |
uint16 |
21.0 |
277.8 |
13.2 |
600x800 |
single |
16.4 |
214.6 |
13.1 |
600x800 |
double |
21.1 |
247.0 |
11.7 |
RGB2HLS |
600x800 |
uint8 |
8.7 |
328.7 |
37.9 |
600x800 |
uint16 |
20.6 |
342.5 |
16.7 |
600x800 |
single |
44.6 |
267.1 |
6.0 |
600x800 |
double |
73.6 |
323.2 |
4.4 |
RGB2NTSC |
600x800 |
uint8 |
6.2 |
83.6 |
13.5 |
600x800 |
uint16 |
7.1 |
83.5 |
11.8 |
600x800 |
single |
9.2 |
70.6 |
7.7 |
600x800 |
double |
17.2 |
52.0 |
3.0 |
RGB2YCbCr |
600x800 |
uint8 |
3.4 |
115.0 |
34.3 |
600x800 |
uint16 |
6.8 |
115.2 |
16.9 |
600x800 |
single |
9.1 |
110.9 |
12.2 |
600x800 |
double |
16.2 |
94.7 |
5.8 |
RGB2YUV |
600x800 |
uint8 |
3.3 |
119.5 |
35.9 |
600x800 |
uint16 |
6.9 |
119.4 |
17.2 |
600x800 |
single |
8.8 |
71.4 |
8.1 |
600x800 |
double |
16.2 |
89.0 |
5.5 |
RGB2XYZ |
600x800 |
uint8 |
5.9 |
74.2 |
12.6 |
600x800 |
uint16 |
6.9 |
75.2 |
10.9 |
600x800 |
single |
8.8 |
35.4 |
4.0 |
600x800 |
double |
16.0 |
55.7 |
3.5 |
RGB2Lab |
600x800 |
uint8 |
181.2 |
246.6 |
1.4 |
600x800 |
uint16 |
98.6 |
263.3 |
2.7 |
600x800 |
single |
96.0 |
184.6 |
1.9 |
600x800 |
double |
80.4 |
233.6 |
2.9 |
RGB2Luv |
600x800 |
uint8 |
20.9 |
214.3 |
10.2 |
600x800 |
uint16 |
14.5 |
214.1 |
14.8 |
600x800 |
single |
42.7 |
137.7 |
3.2 |
600x800 |
double |
53.6 |
195.6 |
3.6 |
XYZ2Lab |
600x800 |
uint16 |
133.0 |
335.8 |
2.5 |
600x800 |
single |
64.4 |
223.0 |
3.5 |
Lab2XYZ |
600x800 |
uint16 |
97.3 |
344.2 |
3.5 |
600x800 |
single |
63.6 |
219.4 |
3.5 |
Lab2LCH |
600x800 |
single |
23.6 |
150.0 |
6.4 |
LCH2Lab |
600x800 |
single |
27.2 |
55.8 |
2.0 |
3.2. Geometric Transformations
Function Name |
Image Size |
Image Type |
Interpolation |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
ImRotate |
600x1000 |
uint8 |
nearest |
4.7 |
444.0 |
94.1 |
600x1000 |
uint8 |
bilinear |
7.1 |
665.5 |
93.5 |
600x1000 |
uint8 |
bicubic |
12.9 |
1171.0 |
90.4 |
600x1000 |
uint16 |
nearest |
7.8 |
446.8 |
57.4 |
600x1000 |
uint16 |
bilinear |
9.8 |
649.8 |
66.6 |
600x1000 |
uint16 |
bicubic |
23.8 |
1160.7 |
48.7 |
600x1000 |
single |
nearest |
21.5 |
451.5 |
21.0 |
600x1000 |
single |
bilinear |
16.0 |
644.1 |
40.4 |
600x1000 |
single |
bicubic |
27.5 |
1113.7 |
40.6 |
600x1000 |
double |
nearest |
41.9 |
441.8 |
10.5 |
600x1000 |
double |
bilinear |
42.4 |
654.9 |
15.4 |
600x1000 |
double |
bicubic |
53.7 |
1142.1 |
21.3 |
Function Name |
Image Size |
Image Type |
Interpolation |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
ImRemap |
600x1000 |
uint8 |
nearest |
11.0 |
122.6 |
11.1 |
600x1000 |
uint8 |
bilinear |
11.3 |
213.4 |
18.8 |
600x1000 |
uint8 |
bicubic |
15.0 |
576.2 |
38.3 |
600x1000 |
uint16 |
nearest |
11.8 |
122.9 |
10.4 |
600x1000 |
uint16 |
bilinear |
12.8 |
214.6 |
16.8 |
600x1000 |
uint16 |
bicubic |
17.2 |
575.7 |
33.5 |
600x1000 |
single |
nearest |
13.8 |
120.0 |
8.7 |
600x1000 |
single |
bilinear |
14.3 |
212.3 |
14.8 |
600x1000 |
single |
bicubic |
18.2 |
573.8 |
31.6 |
600x1000 |
double |
nearest |
23.0 |
121.9 |
5.3 |
600x1000 |
double |
bilinear |
23.3 |
215.8 |
9.3 |
600x1000 |
double |
bicubic |
27.1 |
568.4 |
21.0 |
Function Name |
Image Size |
Image Type |
Interpolation |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
ImAffine |
600x1000 |
uint8 |
nearest |
5.5 |
537.9 |
97.6 |
600x1000 |
uint8 |
bilinear |
7.0 |
753.3 |
107.1 |
600x1000 |
uint8 |
bicubic |
13.6 |
1278.4 |
94.1 |
600x1000 |
uint16 |
nearest |
9.6 |
542.6 |
56.7 |
600x1000 |
uint16 |
bilinear |
11.2 |
753.5 |
67.5 |
600x1000 |
uint16 |
bicubic |
24.2 |
1288.8 |
53.3 |
600x1000 |
single |
nearest |
18.3 |
519.5 |
28.3 |
600x1000 |
single |
bilinear |
22.1 |
741.1 |
33.5 |
600x1000 |
single |
bicubic |
26.8 |
1230.5 |
45.9 |
600x1000 |
double |
nearest |
47.9 |
536.9 |
11.2 |
600x1000 |
double |
bilinear |
49.6 |
758.5 |
15.3 |
600x1000 |
double |
bicubic |
56.3 |
1260.4 |
22.4 |
Function Name |
Image Size |
Image Type |
Interpolation |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
ImPerspective |
600x1000 |
uint8 |
nearest |
4.6 |
179.2 |
39.3 |
600x1000 |
uint8 |
bilinear |
5.3 |
288.5 |
54.7 |
600x1000 |
uint8 |
bicubic |
7.9 |
667.9 |
84.5 |
600x1000 |
uint16 |
nearest |
5.1 |
179.0 |
35.0 |
600x1000 |
uint16 |
bilinear |
6.6 |
287.4 |
43.4 |
600x1000 |
uint16 |
bicubic |
10.5 |
686.0 |
65.1 |
600x1000 |
single |
nearest |
6.7 |
190.6 |
28.6 |
600x1000 |
single |
bilinear |
8.7 |
287.5 |
33.1 |
600x1000 |
single |
bicubic |
11.3 |
677.1 |
60.1 |
600x1000 |
double |
nearest |
14.5 |
187.8 |
13.0 |
600x1000 |
double |
bilinear |
16.5 |
292.9 |
17.7 |
600x1000 |
double |
bicubic |
18.5 |
694.3 |
37.5 |
3.3. B&W Morphology
Function Name |
Image Size |
Image Type |
Operation |
Iterations |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
BwMorph |
256x256 |
logical |
erode |
1 |
0.2 |
1.1 |
4.5 |
256x256 |
logical |
dilate |
1 |
0.2 |
2.6 |
11.4 |
256x256 |
logical |
open |
1 |
0.3 |
3.6 |
13.9 |
256x256 |
logical |
close |
1 |
0.3 |
3.7 |
13.0 |
256x256 |
logical |
tophat |
1 |
0.7 |
3.9 |
5.6 |
256x256 |
logical |
bothat |
1 |
0.5 |
4.0 |
7.3 |
256x256 |
logical |
bridge |
1 |
0.4 |
2.6 |
6.3 |
256x256 |
logical |
clean |
1 |
0.4 |
1.2 |
2.9 |
256x256 |
logical |
diag |
1 |
0.4 |
2.9 |
6.7 |
256x256 |
logical |
fatten |
1 |
0.7 |
2.7 |
3.9 |
256x256 |
logical |
fill |
1 |
0.4 |
2.9 |
6.5 |
256x256 |
logical |
hbreak |
1 |
0.7 |
1.2 |
1.8 |
256x256 |
logical |
majority |
1 |
0.4 |
3.3 |
7.9 |
256x256 |
logical |
perim4 |
1 |
0.5 |
1.1 |
2.2 |
256x256 |
logical |
perim8 |
1 |
0.5 |
1.2 |
2.3 |
256x256 |
logical |
remove |
1 |
0.5 |
1.2 |
2.2 |
256x256 |
logical |
shrink |
10 |
12.5 |
33.3 |
2.7 |
256x256 |
logical |
skeleton |
10 |
8.2 |
68.1 |
8.3 |
256x256 |
logical |
spur |
10 |
0.4 |
13.4 |
31.2 |
256x256 |
logical |
thicken |
10 |
15.9 |
85.3 |
5.4 |
256x256 |
logical |
thin |
10 |
8.4 |
13.8 |
1.6 |
Function Name |
Image Size |
Image Type |
Connectivity |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
BwArea |
341x753 |
logical |
N\A |
0.8 |
7.7 |
9.6 |
BwAreaOpen |
341x753 |
logical |
4 |
7.4 |
830.1 |
112.6 |
341x753 |
logical |
8 |
7.4 |
452.4 |
61.5 |
BwEuler |
341x753 |
logical |
4 |
1.0 |
8.1 |
8.2 |
341x753 |
logical |
8 |
1.0 |
7.7 |
8.0 |
BwLabel |
341x753 |
logical |
4 |
4.3 |
25.7 |
5.9 |
341x753 |
logical |
8 |
4.2 |
22.9 |
5.5 |
Function Name |
Image Size |
Image Type |
Method |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
BwDist |
512x512 |
logical |
chessboard |
2.7 |
117.9 |
43.8 |
512x512 |
logical |
cityblock |
2.3 |
94.7 |
40.8 |
512x512 |
logical |
euclidean |
6.5 |
46.2 |
7.1 |
BwUltErode |
512x512 |
logical |
chessboard |
13.3 |
145.2 |
10.9 |
512x512 |
logical |
cityblock |
12.6 |
121.9 |
9.7 |
512x512 |
logical |
euclidean |
16.2 |
106.0 |
6.5 |
Function Name |
Image Size |
Image Type |
# of points |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
BwSelect |
341x753 |
logical |
455 |
4.5 |
80.8 |
18.0 |
341x753 |
logical |
206 |
4.6 |
92.8 |
20.4 |
341x753 |
logical |
314 |
5.7 |
104.6 |
18.3 |
341x753 |
logical |
464 |
5.4 |
111.0 |
20.4 |
3.4. Gray Morphology
Function Name |
Image Size |
Image Type |
Kernel Size |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
ImErode |
600x800 |
logical |
7x7 |
3.0 |
54.1 |
17.8 |
600x800 |
logical |
17x17 |
4.0 |
12.4 |
3.1 |
600x800 |
uint8 |
7x7 |
4.7 |
157.0 |
33.5 |
600x800 |
uint8 |
17x17 |
10.1 |
261.3 |
26.0 |
600x800 |
uint16 |
7x7 |
11.9 |
154.2 |
13.0 |
600x800 |
uint16 |
17x17 |
20.6 |
266.2 |
12.9 |
600x800 |
single |
7x7 |
27.0 |
186.3 |
6.9 |
600x800 |
single |
17x17 |
39.7 |
336.9 |
8.5 |
600x800 |
double |
7x7 |
33.8 |
178.3 |
5.3 |
600x800 |
double |
17x17 |
47.2 |
348.9 |
7.4 |
ImDilate |
600x800 |
logical |
7x7 |
2.8 |
43.8 |
15.4 |
600x800 |
logical |
17x17 |
3.4 |
10.3 |
3.0 |
600x800 |
uint8 |
7x7 |
4.7 |
155.5 |
33.3 |
600x800 |
uint8 |
17x17 |
10.5 |
259.9 |
24.7 |
600x800 |
uint16 |
7x7 |
11.3 |
156.8 |
13.9 |
600x800 |
uint16 |
17x17 |
20.9 |
272.4 |
13.0 |
600x800 |
single |
7x7 |
26.7 |
188.4 |
7.1 |
600x800 |
single |
17x17 |
41.2 |
339.0 |
8.2 |
600x800 |
double |
7x7 |
33.3 |
177.8 |
5.3 |
600x800 |
double |
17x17 |
47.1 |
348.1 |
7.4 |
ImOpen |
600x800 |
logical |
7x7 |
5.0 |
8.5 |
1.7 |
600x800 |
logical |
17x17 |
6.5 |
15.6 |
2.4 |
600x800 |
uint8 |
7x7 |
8.2 |
306.3 |
37.2 |
600x800 |
uint8 |
17x17 |
18.7 |
515.5 |
27.5 |
600x800 |
uint16 |
7x7 |
20.9 |
306.9 |
14.7 |
600x800 |
uint16 |
17x17 |
38.6 |
530.2 |
13.7 |
600x800 |
single |
7x7 |
48.4 |
370.8 |
7.7 |
600x800 |
single |
17x17 |
77.5 |
662.7 |
8.6 |
600x800 |
double |
7x7 |
55.1 |
354.2 |
6.4 |
600x800 |
double |
17x17 |
83.0 |
693.0 |
8.3 |
ImClose |
600x800 |
logical |
7x7 |
5.0 |
8.5 |
1.7 |
600x800 |
logical |
17x17 |
6.3 |
15.2 |
2.4 |
600x800 |
uint8 |
7x7 |
8.4 |
306.6 |
36.5 |
600x800 |
uint8 |
17x17 |
18.5 |
515.3 |
27.8 |
600x800 |
uint16 |
7x7 |
20.8 |
305.9 |
14.7 |
600x800 |
uint16 |
17x17 |
38.8 |
531.6 |
13.7 |
600x800 |
single |
7x7 |
48.4 |
371.4 |
7.7 |
600x800 |
single |
17x17 |
77.2 |
661.9 |
8.6 |
600x800 |
double |
7x7 |
55.1 |
354.0 |
6.4 |
600x800 |
double |
17x17 |
83.3 |
690.8 |
8.3 |
ImTopHat |
600x800 |
logical |
7x7 |
5.3 |
9.5 |
1.8 |
600x800 |
logical |
17x17 |
6.5 |
16.8 |
2.6 |
600x800 |
uint8 |
7x7 |
8.6 |
307.0 |
35.7 |
600x800 |
uint8 |
17x17 |
19.6 |
516.1 |
26.3 |
600x800 |
uint16 |
7x7 |
22.9 |
307.7 |
13.4 |
600x800 |
uint16 |
17x17 |
41.4 |
529.6 |
12.8 |
600x800 |
single |
7x7 |
52.6 |
373.5 |
7.1 |
600x800 |
single |
17x17 |
82.1 |
667.0 |
8.1 |
600x800 |
double |
7x7 |
59.5 |
355.3 |
6.0 |
600x800 |
double |
17x17 |
88.0 |
699.2 |
7.9 |
ImBotHat |
600x800 |
logical |
7x7 |
5.0 |
10.1 |
2.0 |
600x800 |
logical |
17x17 |
6.6 |
17.4 |
2.6 |
600x800 |
uint8 |
7x7 |
8.9 |
305.6 |
34.4 |
600x800 |
uint8 |
17x17 |
19.9 |
516.5 |
25.9 |
600x800 |
uint16 |
7x7 |
22.9 |
308.5 |
13.5 |
600x800 |
uint16 |
17x17 |
41.0 |
535.1 |
13.1 |
600x800 |
single |
7x7 |
53.1 |
371.1 |
7.0 |
600x800 |
single |
17x17 |
81.0 |
668.9 |
8.3 |
600x800 |
double |
7x7 |
59.1 |
357.2 |
6.0 |
600x800 |
double |
17x17 |
87.2 |
695.5 |
8.0 |
Function Name |
Image Size |
Image Type |
Connectivity |
AL Time [msec] |
Matlab Time [msec] |
Performance Gain |
ImReconstruct |
600x800 |
logical |
4 |
2.2 |
121.2 |
54.1 |
600x800 |
logical |
8 |
2.4 |
182.9 |
76.1 |
600x800 |
uint8 |
4 |
6.0 |
149.7 |
25.1 |
600x800 |
uint8 |
8 |
8.3 |
211.0 |
25.4 |
600x800 |
single |
4 |
10.0 |
150.9 |
15.1 |
600x800 |
single |
8 |
10.9 |
213.0 |
19.5 |
600x800 |
double |
4 |
54.7 |
177.6 |
3.2 |
600x800 |
double |
8 |
40.6 |
226.0 |
5.6 |
ImRegionalMax |
600x800 |
uint8 |
4 |
16.9 |
117.0 |
6.9 |
600x800 |
uint8 |
8 |
30.9 |
131.6 |
4.3 |
600x800 |
single |
4 |
19.9 |
85.3 |
4.3 |
600x800 |
single |
8 |
33.8 |
130.0 |
3.8 |
600x800 |
double |
4 |
21.9 |
87.9 |
4.0 |
600x800 |
double |
8 |
39.1 |
185.5 |
4.7 |
ImRegionalMin |
600x800 |
uint8 |
4 |
18.2 |
82.4 |
4.5 |
600x800 |
uint8 |
8 |
30.7 |
127.2 |
4.1 |
600x800 |
single |
4 |
24.3 |
88.7 |
3.7 |
600x800 |
single |
8 |
36.4 |
136.5 |
3.8 |
600x800 |
double |
4 |
25.4 |
94.3 |
3.7 |
600x800 |
double |
8 |
43.4 |
134.7 |
3.1 |
ImClearBorder |
600x800 |
uint8 |
4 |
7.6 |
209.1 |
27.5 |
600x800 |
uint8 |
8 |
10.1 |
320.1 |
31.6 |
600x800 |
single |
4 |
13.4 |
227.4 |
17.0 |
600x800 |
single |
8 |
17.9 |
342.1 |
19.1 |
600x800 |
double |
4 |
53.6 |
242.8 |
4.5 |
600x800 |
double |
8 |
59.2 |
356.9 |
6.0 |
ImHMax |
600x800 |
uint8 |
4 |
5.3 |
138.4 |
26.3 |
600x800 |
uint8 |
8 |
5.6 |
200.1 |
36.1 |
600x800 |
single |
4 |
6.1 |
125.3 |
20.6 |
600x800 |
single |
8 |
7.3 |
193.4 |
26.4 |
600x800 |
double |
4 |
24.0 |
132.3 |
5.5 |
600x800 |
double |
8 |
27.2 |
204.6 |
7.5 |
ImHMin |
600x800 |
uint8 |
4 |
6.6 |
181.8 |
27.6 |
600x800 |
uint8 |
8 |
6.8 |
237.4 |
35.1 |
600x800 |
single |
4 |
8.7 |
131.0 |
15.0 |
600x800 |
single |
8 |
9.5 |
199.1 |
21.0 |
600x800 |
double |
4 |
32.6 |
138.7 |
4.3 |
600x800 |
double |
8 |
32.2 |
212.8 |
6.6 |
ImExtendedMax |
600x800 |
uint8 |
4 |
16.6 |
210.3 |
12.6 |
600x800 |
uint8 |
8 |
24.3 |
315.1 |
13.0 |
600x800 |
single |
4 |
14.9 |
181.8 |
12.2 |
600x800 |
single |
8 |
16.5 |
277.7 |
16.9 |
600x800 |
double |
4 |
30.9 |
186.8 |
| |