-
Notifications
You must be signed in to change notification settings - Fork 4
/
README
147 lines (96 loc) · 4.74 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
libabr
Simple object detection library
Department of Computer Graphics and Multimedia
Faculty of Information Technology
Brno University of Technology
Roman Juranek <[email protected]>
INTRODUCTION
The libabr is simple low-level library for high performance object detection
with WaldBoost based classifiers. The key features are following.
* Compact representation of classifiers in the form of C source code (suitable
for embedded systems) or XML file
* Evaluation of classifier on the given position in image
* Scanning the image with classifier
* SSE implementation of feature extraction (LRD, LRP, LBP)
* Multiscale image scan through repeated application of classifier to scaled image
The features not solved by the library are grouping of detections, rotation
invariant object detection and object tracking. Such applications can be build
on the top of libabr.
Compared to OpenCV which is often used for object detection, the library offers
faster classifiers using optimal decision strategy learned by WaldBoost
algorithm, simpler image features (LRD, LRP, LBP) and optimized implementations
of classifier evaluation for Intel SSE. Moreover, the library offers to use
static classifiers in the form of C source code which is more friendly to
enbedded systems than XML based classifiers.
PUBLICATIONS
The implemented algorithms are described in publications.
Herout Adam, Juránek Roman, Zemčík Pavel: Implementing the Local Binary
Patterns with SIMD Instructions of CPU, In: Proceedings of WSCG 2010, Plzeň,
CZ, ZČU v Plzni, 2010, p. 39-42, ISBN 978-80-86943-86-2
Herout Adam, Zemčík Pavel, Hradiš Michal, Juránek Roman, Havel Jiří, Jošth
Radovan, Žádník Martin: Pattern Recognition, Recent Advances, Pattern
Recognition, Recent Advances, Vienna, AT, IN-TECH, 2010, p. 111-136, ISBN
978-953-7619-90-9
Herout Adam, Zemčík Pavel, Juránek Roman, Hradiš Michal: Implementation of the
"Local Rank Differences" Image Feature Using SIMD Instructions of CPU, In:
Proceedings of Sixth Indian Conference on Computer Vision, Graphics and Image
Processing, Bhubaneswar, IN, IEEE CS, 2008, p. 9, ISBN 978-0-7695-3476-3
Hradiš Michal, Herout Adam, Zemčík Pavel: Local Rank Patterns - Novel Features
for Rapid Object Detection, In: Proceedings of International Conference on
Computer Vision and Graphics 2008, Heidelberg, DE, Springer, 2008, p. 1-12,
ISSN 0302-9743
DOWNLOAD
Latest package can be downloaded from
http://medusa.fit.vutbr.cz/libabr
REQUIREMENTS
The library requires some packages to be installed on the target system.
* OpenCV (only for image representation and some preprocessing
stuff /cvFilter2D/, so version 2.0+ would be ok)
* libxml-2 (XML parsing)
INSTALLATION
The library is compiled by the commmand:
# make lib
and the resulting file libabr.so is placed in ./lib directory. To use the
library you need to set LD_LIBRARY_PATH to ./lib.
Make with -D TARGET=DEBUG for compile the debug version of the library
There is no installation target in the Makefile so when one wants the library
integrated in the system, he must copy the files himself to propper places.
USAGE
The interface to the library is in ./include directory (libabr.h). When using
the libabr, you only need to include abr.h, set include path to the ./include
and library path to ./lib, and link against abr (-labr).
Example
test.cpp
---
#include <libabr.h>
int main() {
init_preprocess();
TClassifier * c = load_classifier_XML(/*filename*/);
// ...
return 0;
}
---
# g++ test.cpp -o test -I./include -L./lib `pkg-config --libs --cflags opencv libxml-2.0` -labr
EXAMPLES
Example programs that make use of libabr are located in ./examples directory
and they can be compiled by running make in that directory. The libabr must be
compiled beforhand.
process_image
This example shows how and image can be scanned by a classifier. Only single
scale processing is used. Engine used is selected by command line argument and
the image is preprocessed, scanned and results are printed to stdout. The
preprocessing and scanning is repeated several times for time measurement
purposes.
xml2h
Conversion of a classifier to .c/.h source code. Converted classifiers can be
included and compiled to other programs. This is suitable for creating build-in
classifiers and for embedded systems with no XML processing capability.
stats
KNOWN BUGS
Few things do not still work well or might cause crash.
* Detect_objects() still causes crash when using optimized image scanners.
It works well with scan_image_intensity and scan_image_integral.
* Responses are not equal for different implementation. But they differ only
slightly and the detection is reliable in all implementations.
* Some implementations are not stable under certain conditions and may cause
crashes.