Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
dlib
Commits
5b30b06d
Commit
5b30b06d
authored
Oct 21, 2011
by
Davis King
Browse files
merged
parents
e4ae6686
2e1927cd
Changes
37
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
776 additions
and
25 deletions
+776
-25
dlib/matrix/matrix_conv_abstract.h
dlib/matrix/matrix_conv_abstract.h
+138
-0
dlib/matrix/matrix_utilities.h
dlib/matrix/matrix_utilities.h
+38
-0
dlib/matrix/matrix_utilities_abstract.h
dlib/matrix/matrix_utilities_abstract.h
+16
-0
dlib/optimization/optimization_bobyqa.h
dlib/optimization/optimization_bobyqa.h
+2
-5
dlib/sqlite/sqlite.h
dlib/sqlite/sqlite.h
+4
-1
dlib/svm/structural_svm_problem.h
dlib/svm/structural_svm_problem.h
+1
-1
dlib/test/CMakeLists.txt
dlib/test/CMakeLists.txt
+1
-0
dlib/test/array2d.cpp
dlib/test/array2d.cpp
+4
-0
dlib/test/disjoint_subsets.cpp
dlib/test/disjoint_subsets.cpp
+106
-0
dlib/test/geometry.cpp
dlib/test/geometry.cpp
+160
-0
dlib/test/makefile
dlib/test/makefile
+3
-2
dlib/test/matrix4.cpp
dlib/test/matrix4.cpp
+154
-0
docs/docs/algorithms.xml
docs/docs/algorithms.xml
+55
-16
docs/docs/containers.xml
docs/docs/containers.xml
+28
-0
docs/docs/imaging.xml
docs/docs/imaging.xml
+38
-0
docs/docs/metaprogramming.xml
docs/docs/metaprogramming.xml
+14
-0
docs/docs/term_index.xml
docs/docs/term_index.xml
+14
-0
No files found.
dlib/matrix/matrix_conv_abstract.h
0 → 100644
View file @
5b30b06d
// Copyright (C) 2011 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#undef DLIB_MATRIx_CONV_ABSTRACT_H__
#ifdef DLIB_MATRIx_CONV_ABSTRACT_H__
#include "matrix_abstract.h"
namespace
dlib
{
// ----------------------------------------------------------------------------------------
const
matrix_exp
conv
(
const
matrix_exp
&
m1
,
const
matrix_exp
&
m2
);
/*!
requires
- m1 and m2 both contain elements of the same type
ensures
- returns a matrix R such that:
- R is the convolution of m1 with m2. In particular, this function is
equivalent to performing the following in matlab: R = conv2(m1,m2).
- R::type == the same type that was in m1 and m2.
- R.nr() == m1.nr()+m2.nr()-1
- R.nc() == m1.nc()+m2.nc()-1
!*/
// ----------------------------------------------------------------------------------------
const
matrix_exp
xcorr
(
const
matrix_exp
&
m1
,
const
matrix_exp
&
m2
);
/*!
requires
- m1 and m2 both contain elements of the same type
ensures
- returns a matrix R such that:
- R is the cross-correlation of m1 with m2. In particular, this
function returns conv(m1,flip(m2)).
- R::type == the same type that was in m1 and m2.
- R.nr() == m1.nr()+m2.nr()-1
- R.nc() == m1.nc()+m2.nc()-1
!*/
// ----------------------------------------------------------------------------------------
const
matrix_exp
conv_same
(
const
matrix_exp
&
m1
,
const
matrix_exp
&
m2
);
/*!
requires
- m1 and m2 both contain elements of the same type
ensures
- returns a matrix R such that:
- R is the convolution of m1 with m2. In particular, this function is
equivalent to performing the following in matlab: R = conv2(m1,m2,'same').
In particular, this means the result will have the same dimensions as m1 and will
contain the central part of the full convolution. Therefore, conv_same(m1,m2) is
equivalent to subm(conv(m1,m2), m2.nr()/2, m2.nc()/2, m1.nr(), m1.nc()).
- R::type == the same type that was in m1 and m2.
- R.nr() == m1.nr()
- R.nc() == m1.nc()
!*/
// ----------------------------------------------------------------------------------------
const
matrix_exp
xcorr_same
(
const
matrix_exp
&
m1
,
const
matrix_exp
&
m2
);
/*!
requires
- m1 and m2 both contain elements of the same type
ensures
- returns a matrix R such that:
- R is the cross-correlation of m1 with m2. In particular, this
function returns conv_same(m1,flip(m2)).
- R::type == the same type that was in m1 and m2.
- R.nr() == m1.nr()
- R.nc() == m1.nc()
!*/
// ----------------------------------------------------------------------------------------
const
matrix_exp
conv_valid
(
const
matrix_exp
&
m1
,
const
matrix_exp
&
m2
);
/*!
requires
- m1 and m2 both contain elements of the same type
ensures
- returns a matrix R such that:
- R is the convolution of m1 with m2. In particular, this function is
equivalent to performing the following in matlab: R = conv2(m1,m2,'valid').
In particular, this means only elements of the convolution which don't require
zero padding are included in the result.
- R::type == the same type that was in m1 and m2.
- if (m1 has larger dimensions than m2) then
- R.nr() == m1.nr()-m2.nr()+1
- R.nc() == m1.nc()-m2.nc()+1
- else
- R.nr() == 0
- R.nc() == 0
!*/
// ----------------------------------------------------------------------------------------
const
matrix_exp
xcorr_valid
(
const
matrix_exp
&
m1
,
const
matrix_exp
&
m2
);
/*!
requires
- m1 and m2 both contain elements of the same type
ensures
- returns a matrix R such that:
- R is the cross-correlation of m1 with m2. In particular, this
function returns conv_valid(m1,flip(m2)).
- R::type == the same type that was in m1 and m2.
- if (m1 has larger dimensions than m2) then
- R.nr() == m1.nr()-m2.nr()+1
- R.nc() == m1.nc()-m2.nc()+1
- else
- R.nr() == 0
- R.nc() == 0
!*/
// ----------------------------------------------------------------------------------------
}
#endif // DLIB_MATRIx_CONV_ABSTRACT_H__
dlib/matrix/matrix_utilities.h
View file @
5b30b06d
...
@@ -3967,6 +3967,44 @@ namespace dlib
...
@@ -3967,6 +3967,44 @@ namespace dlib
return
matrix_op
<
op
>
(
op
(
m
.
ref
()));
return
matrix_op
<
op
>
(
op
(
m
.
ref
()));
}
}
// ----------------------------------------------------------------------------------------
template
<
typename
M
>
struct
op_flip
{
op_flip
(
const
M
&
m_
)
:
m
(
m_
){}
const
M
&
m
;
const
static
long
cost
=
M
::
cost
;
const
static
long
NR
=
M
::
NR
;
const
static
long
NC
=
M
::
NC
;
typedef
typename
M
::
type
type
;
typedef
typename
M
::
const_ret_type
const_ret_type
;
typedef
typename
M
::
mem_manager_type
mem_manager_type
;
typedef
typename
M
::
layout_type
layout_type
;
const_ret_type
apply
(
long
r
,
long
c
)
const
{
return
m
(
m
.
nr
()
-
r
-
1
,
m
.
nc
()
-
c
-
1
);
}
long
nr
()
const
{
return
m
.
nr
();
}
long
nc
()
const
{
return
m
.
nc
();
}
template
<
typename
U
>
bool
aliases
(
const
matrix_exp
<
U
>&
item
)
const
{
return
m
.
aliases
(
item
);
}
template
<
typename
U
>
bool
destructively_aliases
(
const
matrix_exp
<
U
>&
item
)
const
{
return
m
.
aliases
(
item
);
}
};
template
<
typename
M
>
const
matrix_op
<
op_flip
<
M
>
>
flip
(
const
matrix_exp
<
M
>&
m
)
{
typedef
op_flip
<
M
>
op
;
return
matrix_op
<
op
>
(
op
(
m
.
ref
()));
}
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template
<
typename
T
,
long
NR
,
long
NC
,
typename
MM
,
typename
L
>
template
<
typename
T
,
long
NR
,
long
NC
,
typename
MM
,
typename
L
>
...
...
dlib/matrix/matrix_utilities_abstract.h
View file @
5b30b06d
...
@@ -400,6 +400,22 @@ namespace dlib
...
@@ -400,6 +400,22 @@ namespace dlib
M(r,c) == m(m.nr()-r-1, c)
M(r,c) == m(m.nr()-r-1, c)
!*/
!*/
// ----------------------------------------------------------------------------------------
const
matrix_exp
flip
(
const
matrix_exp
&
m
);
/*!
ensures
- flips the matrix m from up to down and left to right and returns the
result. I.e. returns flipud(fliplr(m)).
- returns a matrix M such that:
- M::type == the same type that was in m
- M has the same dimensions as m
- for all valid r and c:
M(r,c) == m(m.nr()-r-1, m.nc()-c-1)
!*/
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template
<
template
<
...
...
dlib/optimization/optimization_bobyqa.h
View file @
5b30b06d
...
@@ -2670,7 +2670,7 @@ L350:
...
@@ -2670,7 +2670,7 @@ L350:
integer
isav
;
integer
isav
;
doublereal
temp
=
0
,
zero
=
0
,
xsav
=
0
,
xsum
=
0
,
angbd
=
0
,
dredg
=
0
,
sredg
=
0
;
doublereal
temp
=
0
,
zero
=
0
,
xsav
=
0
,
xsum
=
0
,
angbd
=
0
,
dredg
=
0
,
sredg
=
0
;
integer
iterc
;
integer
iterc
;
doublereal
resid
=
0
,
delsq
=
0
,
ggsav
=
0
,
tempa
=
0
,
tempb
=
0
,
ratio
=
0
,
sqstp
=
0
,
doublereal
resid
=
0
,
delsq
=
0
,
ggsav
=
0
,
tempa
=
0
,
tempb
=
0
,
redmax
=
0
,
dredsq
=
0
,
redsav
=
0
,
onemin
=
0
,
gredsq
=
0
,
rednew
=
0
;
redmax
=
0
,
dredsq
=
0
,
redsav
=
0
,
onemin
=
0
,
gredsq
=
0
,
rednew
=
0
;
integer
itcsav
=
0
;
integer
itcsav
=
0
;
doublereal
rdprev
=
0
,
rdnext
=
0
,
stplen
=
0
,
stepsq
=
0
;
doublereal
rdprev
=
0
,
rdnext
=
0
,
stplen
=
0
,
stepsq
=
0
;
...
@@ -2750,7 +2750,6 @@ L350:
...
@@ -2750,7 +2750,6 @@ L350:
iterc
=
0
;
iterc
=
0
;
nact
=
0
;
nact
=
0
;
sqstp
=
zero
;
i__1
=
n
;
i__1
=
n
;
for
(
i__
=
1
;
i__
<=
i__1
;
++
i__
)
{
for
(
i__
=
1
;
i__
<=
i__1
;
++
i__
)
{
xbdi
[
i__
]
=
zero
;
xbdi
[
i__
]
=
zero
;
...
@@ -3003,7 +3002,6 @@ L120:
...
@@ -3003,7 +3002,6 @@ L120:
xbdi
[
i__
]
=
one
;
xbdi
[
i__
]
=
one
;
goto
L100
;
goto
L100
;
}
}
ratio
=
one
;
/* Computing 2nd power */
/* Computing 2nd power */
d__1
=
d__
[
i__
];
d__1
=
d__
[
i__
];
/* Computing 2nd power */
/* Computing 2nd power */
...
@@ -3221,7 +3219,7 @@ L210:
...
@@ -3221,7 +3219,7 @@ L210:
doublereal
d__1
,
d__2
,
d__3
;
doublereal
d__1
,
d__2
,
d__3
;
/* Local variables */
/* Local variables */
integer
i__
,
j
,
k
,
jl
,
jp
;
integer
i__
,
j
,
k
,
jp
;
doublereal
one
,
tau
,
temp
;
doublereal
one
,
tau
,
temp
;
integer
nptm
;
integer
nptm
;
doublereal
zero
,
alpha
,
tempa
,
tempb
,
ztest
;
doublereal
zero
,
alpha
,
tempa
,
tempb
,
ztest
;
...
@@ -3267,7 +3265,6 @@ L210:
...
@@ -3267,7 +3265,6 @@ L210:
/* Apply the rotations that put zeros in the KNEW-th row of ZMAT. */
/* Apply the rotations that put zeros in the KNEW-th row of ZMAT. */
jl
=
1
;
i__2
=
nptm
;
i__2
=
nptm
;
for
(
j
=
2
;
j
<=
i__2
;
++
j
)
{
for
(
j
=
2
;
j
<=
i__2
;
++
j
)
{
if
((
d__1
=
zmat
[
knew
+
j
*
zmat_dim1
],
std
::
abs
(
d__1
))
>
ztest
)
{
if
((
d__1
=
zmat
[
knew
+
j
*
zmat_dim1
],
std
::
abs
(
d__1
))
>
ztest
)
{
...
...
dlib/sqlite/sqlite.h
View file @
5b30b06d
...
@@ -268,7 +268,10 @@ namespace dlib
...
@@ -268,7 +268,10 @@ namespace dlib
);
);
const
char
*
data
=
reinterpret_cast
<
const
char
*>
(
sqlite3_column_text
(
stmt
,
idx
));
const
char
*
data
=
reinterpret_cast
<
const
char
*>
(
sqlite3_column_text
(
stmt
,
idx
));
if
(
data
!=
0
)
return
std
::
string
(
data
);
return
std
::
string
(
data
);
else
return
std
::
string
();
}
}
double
get_column_as_double
(
double
get_column_as_double
(
...
...
dlib/svm/structural_svm_problem.h
View file @
5b30b06d
...
@@ -131,7 +131,7 @@ namespace dlib
...
@@ -131,7 +131,7 @@ namespace dlib
long
max_use
=
1
;
long
max_use
=
1
;
if
(
lru_count
.
size
()
!=
0
)
if
(
lru_count
.
size
()
!=
0
)
max_use
=
max
(
vector_to_matrix
(
lru_count
))
+
1
;
max_use
=
max
(
vector_to_matrix
(
lru_count
))
+
1
;
lru_count
.
push_back
(
lru_count
.
size
()
);
lru_count
.
push_back
(
max_use
);
}
}
}
}
...
...
dlib/test/CMakeLists.txt
View file @
5b30b06d
...
@@ -34,6 +34,7 @@ set (tests
...
@@ -34,6 +34,7 @@ set (tests
data_io.cpp
data_io.cpp
directed_graph.cpp
directed_graph.cpp
discriminant_pca.cpp
discriminant_pca.cpp
disjoint_subsets.cpp
ekm_and_lisf.cpp
ekm_and_lisf.cpp
empirical_kernel_map.cpp
empirical_kernel_map.cpp
entropy_coder.cpp
entropy_coder.cpp
...
...
dlib/test/array2d.cpp
View file @
5b30b06d
...
@@ -548,6 +548,10 @@ namespace
...
@@ -548,6 +548,10 @@ namespace
DLIB_TEST
((
char
*
)
&
img
[
0
][
0
]
+
img
.
width_step
()
==
(
char
*
)
&
img
[
1
][
0
]);
DLIB_TEST
((
char
*
)
&
img
[
0
][
0
]
+
img
.
width_step
()
==
(
char
*
)
&
img
[
1
][
0
]);
}
}
COMPILE_TIME_ASSERT
(
is_array2d
<
array2d
<
unsigned
char
>
>::
value
==
true
);
COMPILE_TIME_ASSERT
(
is_array2d
<
array2d
<
float
>
>::
value
==
true
);
COMPILE_TIME_ASSERT
(
is_array2d
<
float
>::
value
==
false
);
}
}
...
...
dlib/test/disjoint_subsets.cpp
0 → 100644
View file @
5b30b06d
// Copyright (C) 2011 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#include <sstream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <dlib/disjoint_subsets.h>
#include "tester.h"
namespace
{
using
namespace
test
;
using
namespace
dlib
;
using
namespace
std
;
logger
dlog
(
"test.disjoint_subsets"
);
void
test_disjoint_subset
()
{
print_spinner
();
disjoint_subsets
s
;
DLIB_TEST
(
s
.
size
()
==
0
);
s
.
set_size
(
5
);
DLIB_TEST
(
s
.
size
()
==
5
);
DLIB_TEST
(
s
.
find_set
(
0
)
==
0
);
DLIB_TEST
(
s
.
find_set
(
1
)
==
1
);
DLIB_TEST
(
s
.
find_set
(
2
)
==
2
);
DLIB_TEST
(
s
.
find_set
(
3
)
==
3
);
DLIB_TEST
(
s
.
find_set
(
4
)
==
4
);
unsigned
long
id
=
s
.
merge_sets
(
1
,
3
);
DLIB_TEST
(
s
.
find_set
(
0
)
==
0
);
DLIB_TEST
(
s
.
find_set
(
1
)
==
id
);
DLIB_TEST
(
s
.
find_set
(
2
)
==
2
);
DLIB_TEST
(
s
.
find_set
(
3
)
==
id
);
DLIB_TEST
(
s
.
find_set
(
4
)
==
4
);
id
=
s
.
merge_sets
(
s
.
find_set
(
1
),
4
);
DLIB_TEST
(
s
.
find_set
(
0
)
==
0
);
DLIB_TEST
(
s
.
find_set
(
1
)
==
id
);
DLIB_TEST
(
s
.
find_set
(
2
)
==
2
);
DLIB_TEST
(
s
.
find_set
(
3
)
==
id
);
DLIB_TEST
(
s
.
find_set
(
4
)
==
id
);
unsigned
long
id2
=
s
.
merge_sets
(
0
,
2
);
DLIB_TEST
(
s
.
find_set
(
0
)
==
id2
);
DLIB_TEST
(
s
.
find_set
(
1
)
==
id
);
DLIB_TEST
(
s
.
find_set
(
2
)
==
id2
);
DLIB_TEST
(
s
.
find_set
(
3
)
==
id
);
DLIB_TEST
(
s
.
find_set
(
4
)
==
id
);
id
=
s
.
merge_sets
(
s
.
find_set
(
1
),
s
.
find_set
(
0
));
DLIB_TEST
(
s
.
find_set
(
0
)
==
id
);
DLIB_TEST
(
s
.
find_set
(
1
)
==
id
);
DLIB_TEST
(
s
.
find_set
(
2
)
==
id
);
DLIB_TEST
(
s
.
find_set
(
3
)
==
id
);
DLIB_TEST
(
s
.
find_set
(
4
)
==
id
);
DLIB_TEST
(
s
.
size
()
==
5
);
s
.
set_size
(
1
);
DLIB_TEST
(
s
.
size
()
==
1
);
DLIB_TEST
(
s
.
find_set
(
0
)
==
0
);
s
.
set_size
(
2
);
DLIB_TEST
(
s
.
size
()
==
2
);
DLIB_TEST
(
s
.
find_set
(
0
)
==
0
);
DLIB_TEST
(
s
.
find_set
(
1
)
==
1
);
id
=
s
.
merge_sets
(
0
,
1
);
DLIB_TEST
(
s
.
size
()
==
2
);
DLIB_TEST
(
id
==
s
.
find_set
(
0
));
DLIB_TEST
(
id
==
s
.
find_set
(
1
));
DLIB_TEST
(
s
.
size
()
==
2
);
s
.
clear
();
DLIB_TEST
(
s
.
size
()
==
0
);
}
class
tester_disjoint_subsets
:
public
tester
{
public:
tester_disjoint_subsets
(
)
:
tester
(
"test_disjoint_subsets"
,
"Runs tests on the disjoint_subsets component."
)
{}
void
perform_test
(
)
{
test_disjoint_subset
();
}
}
a
;
}
dlib/test/geometry.cpp
View file @
5b30b06d
...
@@ -10,6 +10,8 @@
...
@@ -10,6 +10,8 @@
#include <dlib/string.h>
#include <dlib/string.h>
#include <dlib/matrix.h>
#include <dlib/matrix.h>
#include <dlib/rand.h>
#include <dlib/rand.h>
#include <dlib/array2d.h>
#include <dlib/image_transforms.h>
#include "tester.h"
#include "tester.h"
...
@@ -366,10 +368,168 @@ namespace
...
@@ -366,10 +368,168 @@ namespace
}
}
// ----------------------------------------------------------------------------------------
void
test_border_enumerator
()
{
border_enumerator
be
;
DLIB_TEST
(
be
.
at_start
()
==
true
);
DLIB_TEST
(
be
.
size
()
==
0
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
move_next
()
==
false
);
DLIB_TEST
(
be
.
at_start
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
move_next
()
==
false
);
DLIB_TEST
(
be
.
at_start
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
size
()
==
0
);
be
=
border_enumerator
(
rectangle
(
4
,
4
,
4
,
4
),
1
);
DLIB_TEST
(
be
.
at_start
()
==
true
);
DLIB_TEST
(
be
.
size
()
==
1
);
be
=
border_enumerator
(
rectangle
(
4
,
4
,
4
,
4
),
3
);
DLIB_TEST
(
be
.
at_start
()
==
true
);
DLIB_TEST
(
be
.
size
()
==
1
);
be
=
border_enumerator
(
rectangle
(
4
,
4
,
4
,
4
),
0
);
DLIB_TEST
(
be
.
at_start
()
==
true
);
DLIB_TEST
(
be
.
size
()
==
0
);
be
=
border_enumerator
(
rectangle
(
4
,
4
,
5
,
5
),
0
);
DLIB_TEST
(
be
.
at_start
()
==
true
);
DLIB_TEST
(
be
.
size
()
==
0
);
be
=
border_enumerator
(
rectangle
(
4
,
4
,
5
,
5
),
1
);
DLIB_TEST
(
be
.
at_start
()
==
true
);
DLIB_TEST
(
be
.
size
()
==
4
);
be
=
border_enumerator
(
rectangle
(
4
,
4
,
5
,
5
),
2
);
DLIB_TEST
(
be
.
size
()
==
4
);
be
=
border_enumerator
(
rectangle
(
4
,
4
,
6
,
6
),
1
);
DLIB_TEST
(
be
.
size
()
==
8
);
be
=
border_enumerator
(
rectangle
(
4
,
4
,
6
,
6
),
2
);
DLIB_TEST
(
be
.
size
()
==
9
);
be
=
border_enumerator
(
rectangle
(
4
,
4
,
6
,
6
),
3
);
DLIB_TEST
(
be
.
size
()
==
9
);
DLIB_TEST
(
be
.
at_start
()
==
true
);
array2d
<
unsigned
char
>
img
,
img2
;
for
(
int
size
=
1
;
size
<
10
;
++
size
)
{
for
(
int
bs
=
0
;
bs
<
4
;
++
bs
)
{
img
.
set_size
(
size
,
size
);
img2
.
set_size
(
size
,
size
);
assign_all_pixels
(
img
,
1
);
assign_all_pixels
(
img2
,
1
);
zero_border_pixels
(
img2
,
bs
,
bs
);
be
=
border_enumerator
(
get_rect
(
img
),
bs
);
DLIB_TEST
(
be
.
at_start
()
==
true
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
while
(
be
.
move_next
())
{
DLIB_TEST
(
be
.
at_start
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
true
);
DLIB_TEST_MSG
(
get_rect
(
img
).
contains
(
be
.
element
())
==
true
,
get_rect
(
img
)
<<
" "
<<
be
.
element
()
);
const
point
p
=
be
.
element
();
img
[
p
.
y
()][
p
.
x
()]
=
0
;
}
DLIB_TEST
(
be
.
at_start
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
move_next
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
move_next
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
at_start
()
==
false
);
DLIB_TEST
(
array_to_matrix
(
img
)
==
array_to_matrix
(
img2
));
}
}
for
(
int
size
=
1
;
size
<
10
;
++
size
)
{
for
(
int
bs
=
0
;
bs
<
4
;
++
bs
)
{
img
.
set_size
(
size
,
size
+
5
);
img2
.
set_size
(
size
,
size
+
5
);
assign_all_pixels
(
img
,
1
);
assign_all_pixels
(
img2
,
1
);
zero_border_pixels
(
img2
,
bs
,
bs
);
const
point
shift
(
4
,
5
);
be
=
border_enumerator
(
translate_rect
(
get_rect
(
img
),
shift
),
bs
);
DLIB_TEST
(
be
.
at_start
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
while
(
be
.
move_next
())
{
DLIB_TEST
(
be
.
current_element_valid
()
==
true
);
DLIB_TEST
(
be
.
at_start
()
==
false
);
DLIB_TEST_MSG
(
get_rect
(
img
).
contains
(
be
.
element
()
-
shift
)
==
true
,
get_rect
(
img
)
<<
" "
<<
be
.
element
()
);
const
point
p
=
be
.
element
()
-
shift
;
img
[
p
.
y
()][
p
.
x
()]
=
0
;
}
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
move_next
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
move_next
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
at_start
()
==
false
);
DLIB_TEST
(
array_to_matrix
(
img
)
==
array_to_matrix
(
img2
));
}
}
for
(
int
size
=
1
;
size
<
10
;
++
size
)
{
for
(
int
bs
=
0
;
bs
<
4
;
++
bs
)
{
img
.
set_size
(
size
+
2
,
size
);
img2
.
set_size
(
size
+
2
,
size
);
assign_all_pixels
(
img
,
1
);
assign_all_pixels
(
img2
,
1
);
zero_border_pixels
(
img2
,
bs
,
bs
);
const
point
shift
(
-
4
,
5
);
be
=
border_enumerator
(
translate_rect
(
get_rect
(
img
),
shift
),
bs
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
while
(
be
.
move_next
())
{
DLIB_TEST
(
be
.
current_element_valid
()
==
true
);
DLIB_TEST_MSG
(
get_rect
(
img
).
contains
(
be
.
element
()
-
shift
)
==
true
,
get_rect
(
img
)
<<
" "
<<
be
.
element
()
);
const
point
p
=
be
.
element
()
-
shift
;
img
[
p
.
y
()][
p
.
x
()]
=
0
;
}
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
move_next
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
be
.
move_next
()
==
false
);
DLIB_TEST
(
be
.
current_element_valid
()
==
false
);
DLIB_TEST
(
array_to_matrix
(
img
)
==
array_to_matrix
(
img2
));
}
}
}
// ----------------------------------------------------------------------------------------
class
geometry_tester
:
public
tester
class
geometry_tester
:
public
tester
{
{
...
...
dlib/test/makefile
View file @
5b30b06d
...
@@ -49,13 +49,14 @@ SRC += create_iris_datafile.cpp
...
@@ -49,13 +49,14 @@ SRC += create_iris_datafile.cpp
SRC
+=
data_io.cpp
SRC
+=
data_io.cpp
SRC
+=
directed_graph.cpp
SRC
+=
directed_graph.cpp
SRC
+=
discriminant_pca.cpp
SRC
+=
discriminant_pca.cpp
SRC
+=
disjoint_subsets.cpp
SRC
+=
ekm_and_lisf.cpp
SRC
+=
ekm_and_lisf.cpp
SRC
+=
empirical_kernel_map.cpp
SRC
+=
empirical_kernel_map.cpp
SRC
+=
entropy_coder.cpp
SRC
+=
entropy_coder.cpp
SRC
+=
entropy_encoder_model.cpp
SRC
+=
entropy_encoder_model.cpp
SRC
+=
geometry.cpp
SRC
+=
find_max_factor_graph_nmplp.cpp
SRC
+=
find_max_factor_graph_nmplp.cpp
SRC
+=
find_max_factor_graph_viterbi.cpp
SRC
+=
find_max_factor_graph_viterbi.cpp
SRC
+=
geometry.cpp
SRC
+=
graph.cpp
SRC
+=
graph.cpp
SRC
+=
hash.cpp
SRC
+=
hash.cpp
SRC
+=
hash_map.cpp
SRC
+=
hash_map.cpp
...
@@ -136,7 +137,7 @@ OBJ = $(TMP:.c=.o)
...
@@ -136,7 +137,7 @@ OBJ = $(TMP:.c=.o)
$(TARGET)
:
$(OBJ)
$(TARGET)
:
$(OBJ)
@
echo
Linking
$@
@
echo
Linking
$@
@
$(CC)
$(
LFLAGS)
$(OBJ
)
-o
$@
@
$(CC)
$(
OBJ)
$(LFLAGS
)
-o
$@
@
echo
Build Complete
@
echo
Build Complete
.cpp.o
:
$<
.cpp.o
:
$<
...
...
dlib/test/matrix4.cpp
View file @
5b30b06d
...
@@ -611,6 +611,157 @@ namespace
...
@@ -611,6 +611,157 @@ namespace
template
<
long
D1
,
long
D2
,
long
D3
,
long
D4
>
void
test_conv
()
{
dlog
<<
LINFO
<<
D1
<<
" "
<<
D2
<<
" "
<<
D3
<<
" "
<<
D4
;
matrix
<
int
,
D1
,
D1
>
a
(
1
,
1
);
matrix
<
int
,
D2
,
D2
>
b
(
2
,
2
);
matrix
<
int
,
D3
,
D3
>
c
(
3
,
3
);
matrix
<
int
,
D4
,
D1
>
d
(
4
,
1
);
a
=
4
;
b
=
1
,
2
,
3
,
4
;
c
=
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
;
d
=
1
,
2
,
3
,
4
;
matrix
<
int
>
temp
(
4
,
4
),
temp2
;
temp
=
1
,
4
,
7
,
6
,
7
,
23
,
33
,
24
,
19
,
53
,
63
,
42
,
21
,
52
,
59
,
36
;
DLIB_TEST
(
conv
(
b
,
c
)
==
temp
);
DLIB_TEST
(
conv
(
c
,
b
)
==
temp
);
DLIB_TEST
(
xcorr
(
c
,
flip
(
b
))
==
temp
);
temp
.
set_size
(
2
,
2
);
temp
=
23
,
33
,
53
,
63
;
DLIB_TEST
(
conv_same
(
b
,
c
)
==
temp
);
DLIB_TEST
(
xcorr_same
(
b
,
flip
(
c
))
==
temp
);
temp2
.
set_size
(
2
,
2
);
temp2
=
63
,
53
,
33
,
23
;
DLIB_TEST
(
flip
(
temp
)
==
temp2
);
DLIB_TEST
(
flip
(
temp
)
==
fliplr
(
flipud
(
temp
)));
DLIB_TEST
(
conv_valid
(
b
,
c
).
nr
()
==
0
);
DLIB_TEST
(
conv_valid
(
b
,
c
).
nc
()
==
0
);
DLIB_TEST
(
conv_valid
(
c
,
b
)
==
temp
);
DLIB_TEST
(
xcorr_valid
(
c
,
flip
(
b
))
==
temp
);
temp
.
set_size
(
1
,
1
);
temp
=
16
;
DLIB_TEST
(
conv
(
a
,
a
)
==
temp
);
DLIB_TEST
(
conv_same
(
a
,
a
)
==
temp
);
DLIB_TEST
(
conv_valid
(
a
,
a
)
==
temp
);
DLIB_TEST
(
xcorr
(
a
,
a
)
==
temp
);
DLIB_TEST
(
xcorr_same
(
a
,
a
)
==
temp
);
DLIB_TEST
(
xcorr_valid
(
a
,
a
)
==
temp
);
temp
.
set_size
(
0
,
0
);
DLIB_TEST
(
conv
(
temp
,
temp
).
nr
()
==
0
);
DLIB_TEST
(
conv
(
temp
,
temp
).
nc
()
==
0
);
DLIB_TEST
(
conv_same
(
temp
,
temp
).
nr
()
==
0
);
DLIB_TEST
(
conv_same
(
temp
,
temp
).
nc
()
==
0
);
DLIB_TEST_MSG
(
conv_valid
(
temp
,
temp
).
nr
()
==
0
,
conv_valid
(
temp
,
temp
).
nr
());
DLIB_TEST
(
conv_valid
(
temp
,
temp
).
nc
()
==
0
);
DLIB_TEST
(
conv
(
c
,
temp
).
nr
()
==
0
);
DLIB_TEST
(
conv
(
c
,
temp
).
nc
()
==
0
);
DLIB_TEST
(
conv_same
(
c
,
temp
).
nr
()
==
0
);
DLIB_TEST
(
conv_same
(
c
,
temp
).
nc
()
==
0
);
DLIB_TEST
(
conv_valid
(
c
,
temp
).
nr
()
==
0
);
DLIB_TEST
(
conv_valid
(
c
,
temp
).
nc
()
==
0
);
DLIB_TEST
(
conv
(
temp
,
c
).
nr
()
==
0
);
DLIB_TEST
(
conv
(
temp
,
c
).
nc
()
==
0
);
DLIB_TEST
(
conv_same
(
temp
,
c
).
nr
()
==
0
);
DLIB_TEST
(
conv_same
(
temp
,
c
).
nc
()
==
0
);
DLIB_TEST
(
conv_valid
(
temp
,
c
).
nr
()
==
0
);
DLIB_TEST
(
conv_valid
(
temp
,
c
).
nc
()
==
0
);
temp
.
set_size
(
5
,
2
);
temp
=
1
,
2
,
5
,
8
,
9
,
14
,
13
,
20
,
12
,
16
;
DLIB_TEST
(
conv
(
b
,
d
)
==
temp
);
DLIB_TEST
(
xcorr
(
b
,
flip
(
d
))
==
temp
);
temp
.
set_size
(
2
,
2
);
temp
=
9
,
14
,
13
,
20
;
DLIB_TEST
(
conv_same
(
b
,
d
)
==
temp
);
DLIB_TEST
(
xcorr_same
(
b
,
flip
(
d
))
==
temp
);
DLIB_TEST
(
conv_valid
(
b
,
d
).
nr
()
==
0
);
DLIB_TEST
(
xcorr_valid
(
b
,
flip
(
d
)).
nr
()
==
0
);
DLIB_TEST_MSG
(
conv_valid
(
b
,
d
).
nc
()
==
0
,
conv_valid
(
b
,
d
).
nc
());
DLIB_TEST
(
xcorr_valid
(
b
,
flip
(
d
)).
nc
()
==
0
);
temp
.
set_size
(
5
,
5
);
temp
=
1
,
4
,
10
,
12
,
9
,
8
,
26
,
56
,
54
,
36
,
30
,
84
,
165
,
144
,
90
,
56
,
134
,
236
,
186
,
108
,
49
,
112
,
190
,
144
,
81
;
DLIB_TEST
(
conv
(
c
,
c
)
==
temp
);
DLIB_TEST
(
xcorr
(
c
,
flip
(
c
))
==
temp
);
matrix
<
int
>
temp3
=
c
;
temp3
=
conv
(
temp3
,
c
);
DLIB_TEST
(
temp3
==
temp
);
temp3
=
c
;
temp3
=
conv
(
c
,
temp3
);
DLIB_TEST
(
temp3
==
temp
);
temp
.
set_size
(
3
,
3
);
temp
=
26
,
56
,
54
,
84
,
165
,
144
,
134
,
236
,
186
;
DLIB_TEST
(
conv_same
(
c
,
c
)
==
temp
);
DLIB_TEST
(
xcorr_same
(
c
,
flip
(
c
))
==
temp
);
temp3
=
c
;
temp3
=
conv_same
(
c
,
temp3
);
DLIB_TEST
(
temp3
==
temp
);
temp3
=
c
;
temp3
=
conv_same
(
temp3
,
c
);
DLIB_TEST
(
temp3
==
temp
);
temp
.
set_size
(
1
,
1
);
temp
=
165
;
DLIB_TEST
(
conv_valid
(
c
,
c
)
==
temp
);
DLIB_TEST
(
xcorr_valid
(
c
,
flip
(
c
))
==
temp
);
temp3
=
c
;
temp3
=
conv_valid
(
c
,
temp3
);
DLIB_TEST
(
temp3
==
temp
);
temp3
=
c
;
temp3
=
conv_valid
(
temp3
,
c
);
DLIB_TEST
(
temp3
==
temp
);
}
class
matrix_tester
:
public
tester
class
matrix_tester
:
public
tester
...
@@ -625,6 +776,9 @@ namespace
...
@@ -625,6 +776,9 @@ namespace
void
perform_test
(
void
perform_test
(
)
)
{
{
test_conv
<
0
,
0
,
0
,
0
>
();
test_conv
<
1
,
2
,
3
,
4
>
();
test_stuff
();
test_stuff
();
for
(
int
i
=
0
;
i
<
10
;
++
i
)
for
(
int
i
=
0
;
i
<
10
;
++
i
)
matrix_test
();
matrix_test
();
...
...
docs/docs/algorithms.xml
View file @
5b30b06d
...
@@ -25,20 +25,7 @@
...
@@ -25,20 +25,7 @@
<section>
<section>
<name>
Tools
</name>
<name>
Tools
</name>
<item>
bigint
</item>
<item>
bigint
</item>
<item>
crc32
</item>
<item>
disjoint_subsets
</item>
<item>
rand
</item>
<item>
hash
</item>
<item>
murmur_hash3
</item>
<item>
running_stats
</item>
<item>
running_scalar_covariance
</item>
<item>
mean_sign_agreement
</item>
<item>
correlation
</item>
<item>
covariance
</item>
<item>
r_squared
</item>
<item>
mean_squared_error
</item>
<item>
running_covariance
</item>
<item>
random_subset_selector
</item>
<item>
randomly_subsample
</item>
<item
nolink=
"true"
>
<item
nolink=
"true"
>
<name>
Quantum Computing
</name>
<name>
Quantum Computing
</name>
<sub>
<sub>
...
@@ -49,6 +36,7 @@
...
@@ -49,6 +36,7 @@
<item
nolink=
"true"
>
<item
nolink=
"true"
>
<name>
Geometry
</name>
<name>
Geometry
</name>
<sub>
<sub>
<item>
border_enumerator
</item>
<item>
rectangle
</item>
<item>
rectangle
</item>
<item>
vector
</item>
<item>
vector
</item>
<item>
point
</item>
<item>
point
</item>
...
@@ -89,8 +77,6 @@
...
@@ -89,8 +77,6 @@
<item>
hsort_array
</item>
<item>
hsort_array
</item>
<item>
isort_array
</item>
<item>
isort_array
</item>
<item>
put_in_range
</item>
<item>
put_in_range
</item>
<item>
md5
</item>
<item>
median
</item>
<item>
qsort_array
</item>
<item>
qsort_array
</item>
<item>
square_root
</item>
<item>
square_root
</item>
<item
nolink=
"true"
>
<item
nolink=
"true"
>
...
@@ -104,6 +90,30 @@
...
@@ -104,6 +90,30 @@
</item>
</item>
</section>
</section>
<section>
<name>
Statistics
</name>
<item>
rand
</item>
<item>
median
</item>
<item>
running_stats
</item>
<item>
running_scalar_covariance
</item>
<item>
mean_sign_agreement
</item>
<item>
correlation
</item>
<item>
covariance
</item>
<item>
r_squared
</item>
<item>
mean_squared_error
</item>
<item>
running_covariance
</item>
<item>
random_subset_selector
</item>
<item>
randomly_subsample
</item>
</section>
<section>
<name>
Hashing
</name>
<item>
md5
</item>
<item>
crc32
</item>
<item>
hash
</item>
<item>
murmur_hash3
</item>
</section>
</top>
</top>
</menu>
</menu>
...
@@ -234,6 +244,19 @@
...
@@ -234,6 +244,19 @@
</description>
</description>
</component>
</component>
<!-- ************************************************************************* -->
<component>
<name>
border_enumerator
</name>
<file>
dlib/geometry.h
</file>
<spec_file>
dlib/geometry/border_enumerator_abstract.h
</spec_file>
<description>
This object is an
<a
href=
"containers.html#enumerable"
>
enumerator
</a>
over the border
<a
href=
"#point"
>
points
</a>
of a
<a
href=
"#rectangle"
>
rectangle
</a>
.
</description>
</component>
<!-- ************************************************************************* -->
<!-- ************************************************************************* -->
<component>
<component>
...
@@ -256,6 +279,22 @@
...
@@ -256,6 +279,22 @@
</description>
</description>
</component>
</component>
<!-- ************************************************************************* -->
<component>
<name>
disjoint_subsets
</name>
<file>
dlib/disjoint_subsets.h
</file>
<spec_file
link=
"true"
>
dlib/disjoint_subsets/disjoint_subsets_abstract.h
</spec_file>
<description>
This object represents a set of integers which is partitioned into
a number of disjoint subsets. It supports the two fundamental operations
of finding which subset a particular integer belongs to as well as
merging subsets.
</description>
</component>
<!-- ************************************************************************* -->
<!-- ************************************************************************* -->
<component>
<component>
...
...
docs/docs/containers.xml
View file @
5b30b06d
...
@@ -387,6 +387,34 @@
...
@@ -387,6 +387,34 @@
<name>
trans
</name>
<name>
trans
</name>
<link>
dlib/matrix/matrix_utilities_abstract.h.html#trans
</link>
<link>
dlib/matrix/matrix_utilities_abstract.h.html#trans
</link>
</item>
</item>
<item>
<name>
conv
</name>
<link>
dlib/matrix/matrix_conv_abstract.h.html#conv
</link>
</item>
<item>
<name>
conv_same
</name>
<link>
dlib/matrix/matrix_conv_abstract.h.html#conv_same
</link>
</item>
<item>
<name>
conv_valid
</name>
<link>
dlib/matrix/matrix_conv_abstract.h.html#conv_valid
</link>
</item>
<item>
<name>
xcorr
</name>
<link>
dlib/matrix/matrix_conv_abstract.h.html#xcorr
</link>
</item>
<item>
<name>
xcorr_same
</name>
<link>
dlib/matrix/matrix_conv_abstract.h.html#xcorr_same
</link>
</item>
<item>
<name>
xcorr_valid
</name>
<link>
dlib/matrix/matrix_conv_abstract.h.html#xcorr_valid
</link>
</item>
<item>
<name>
flip
</name>
<link>
dlib/matrix/matrix_utilities_abstract.h.html#flip
</link>
</item>
<item>
<item>
<name>
flipud
</name>
<name>
flipud
</name>
<link>
dlib/matrix/matrix_utilities_abstract.h.html#flipud
</link>
<link>
dlib/matrix/matrix_utilities_abstract.h.html#flipud
</link>
...
...
docs/docs/imaging.xml
View file @
5b30b06d
...
@@ -125,6 +125,7 @@
...
@@ -125,6 +125,7 @@
<section>
<section>
<name>
Morphology
</name>
<name>
Morphology
</name>
<item>
label_connected_blobs
</item>
<item>
label_connected_blobs
</item>
<item>
segment_image
</item>
<item>
binary_dilation
</item>
<item>
binary_dilation
</item>
<item>
binary_erosion
</item>
<item>
binary_erosion
</item>
<item>
binary_open
</item>
<item>
binary_open
</item>
...
@@ -148,6 +149,7 @@
...
@@ -148,6 +149,7 @@
<name>
Miscellaneous
</name>
<name>
Miscellaneous
</name>
<item>
cv_image
</item>
<item>
cv_image
</item>
<item>
randomly_color_image
</item>
<item>
draw_line
</item>
<item>
draw_line
</item>
<item>
fill_rect
</item>
<item>
fill_rect
</item>
...
@@ -486,6 +488,26 @@
...
@@ -486,6 +488,26 @@
</component>
</component>
<!-- ************************************************************************* -->
<component>
<name>
randomly_color_image
</name>
<file>
dlib/image_transforms.h
</file>
<spec_file
link=
"true"
>
dlib/image_transforms/randomly_color_image_abstract.h
</spec_file>
<description>
Randomly generates a mapping from gray level pixel values
to the RGB pixel space and then uses this mapping to create
a colored version an image.
<p>
This function is useful for displaying the results of some image
segmentation. For example, the output of
<a
href=
"#label_connected_blobs"
>
label_connected_blobs
</a>
or
<a
href=
"#segment_image"
>
segment_image
</a>
.
</p>
</description>
</component>
<!-- ************************************************************************* -->
<!-- ************************************************************************* -->
<component>
<component>
...
@@ -1052,6 +1074,22 @@
...
@@ -1052,6 +1074,22 @@
</component>
</component>
<!-- ************************************************************************* -->
<component>
<name>
segment_image
</name>
<file>
dlib/image_transforms.h
</file>
<spec_file
link=
"true"
>
dlib/image_transforms/segment_image_abstract.h
</spec_file>
<description>
Attempts to segment an image into regions which have some visual consistency to them.
In particular, this function implements the algorithm described in the paper:
<blockquote>
Efficient Graph-Based Image Segmentation by Felzenszwalb and Huttenlocher.
</blockquote>
</description>
</component>
<!-- ************************************************************************* -->
<!-- ************************************************************************* -->
<component>
<component>
...
...
docs/docs/metaprogramming.xml
View file @
5b30b06d
...
@@ -43,6 +43,7 @@
...
@@ -43,6 +43,7 @@
<item>
static_switch
</item>
<item>
static_switch
</item>
<item>
noncopyable
</item>
<item>
noncopyable
</item>
<item>
enable_if
</item>
<item>
enable_if
</item>
<item>
is_array2d
</item>
<item>
is_graph
</item>
<item>
is_graph
</item>
<item>
is_rand
</item>
<item>
is_rand
</item>
<item>
is_matrix
</item>
<item>
is_matrix
</item>
...
@@ -410,6 +411,19 @@
...
@@ -410,6 +411,19 @@
</component>
</component>
<!-- ************************************************************************* -->
<component>
<name>
is_array2d
</name>
<file>
dlib/is_kind.h
</file>
<spec_file
link=
"true"
>
dlib/is_kind.h
</spec_file>
<description>
This is a template where is_array2d
<
T
>
::value == true when T
is an
<a
href=
"containers.html#array2d"
>
array2d
</a>
object.
</description>
</component>
<!-- ************************************************************************* -->
<!-- ************************************************************************* -->
<component>
<component>
...
...
docs/docs/term_index.xml
View file @
5b30b06d
...
@@ -100,7 +100,10 @@
...
@@ -100,7 +100,10 @@
<term
file=
"bayes.html"
name=
"node_next_parent_assignment"
/>
<term
file=
"bayes.html"
name=
"node_next_parent_assignment"
/>
<term
file=
"bayes.html"
name=
"node_cpt_filled_out"
/>
<term
file=
"bayes.html"
name=
"node_cpt_filled_out"
/>
<term
file=
"algorithms.html"
name=
"disjoint_subsets"
/>
<term
link=
"algorithms.html#disjoint_subsets"
name=
"union-find"
/>
<term
file=
"algorithms.html"
name=
"rectangle"
/>
<term
file=
"algorithms.html"
name=
"rectangle"
/>
<term
file=
"algorithms.html"
name=
"border_enumerator"
/>
<term
file=
"algorithms.html"
name=
"edge"
/>
<term
file=
"algorithms.html"
name=
"edge"
/>
<term
file=
"algorithms.html"
name=
"is_join_tree"
/>
<term
file=
"algorithms.html"
name=
"is_join_tree"
/>
<term
file=
"algorithms.html"
name=
"create_join_tree"
/>
<term
file=
"algorithms.html"
name=
"create_join_tree"
/>
...
@@ -317,9 +320,17 @@
...
@@ -317,9 +320,17 @@
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"diag_exp"
/>
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"diag_exp"
/>
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"diagm"
/>
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"diagm"
/>
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"trans"
/>
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"trans"
/>
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"flip"
/>
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"fliplr"
/>
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"fliplr"
/>
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"flipud"
/>
<term
file=
"dlib/matrix/matrix_utilities_abstract.h.html"
name=
"flipud"
/>
<term
file=
"dlib/matrix/matrix_conv_abstract.h.html"
name=
"conv"
/>
<term
file=
"dlib/matrix/matrix_conv_abstract.h.html"
name=
"conv_same"
/>
<term
file=
"dlib/matrix/matrix_conv_abstract.h.html"
name=
"conv_valid"
/>
<term
file=
"dlib/matrix/matrix_conv_abstract.h.html"
name=
"xcorr"
/>
<term
file=
"dlib/matrix/matrix_conv_abstract.h.html"
name=
"xcorr_same"
/>
<term
file=
"dlib/matrix/matrix_conv_abstract.h.html"
name=
"xcorr_valid"
/>
<term
file=
"dlib/matrix/symmetric_matrix_cache_abstract.h.html"
name=
"symmetric_matrix_cache"
/>
<term
file=
"dlib/matrix/symmetric_matrix_cache_abstract.h.html"
name=
"symmetric_matrix_cache"
/>
<term
name=
"dot"
>
<term
name=
"dot"
>
...
@@ -474,6 +485,7 @@
...
@@ -474,6 +485,7 @@
<term
link=
"metaprogramming.html#portability_macros"
name=
"portability macros"
/>
<term
link=
"metaprogramming.html#portability_macros"
name=
"portability macros"
/>
<term
file=
"metaprogramming.html"
name=
"static_switch"
/>
<term
file=
"metaprogramming.html"
name=
"static_switch"
/>
<term
file=
"metaprogramming.html"
name=
"is_graph"
/>
<term
file=
"metaprogramming.html"
name=
"is_graph"
/>
<term
file=
"metaprogramming.html"
name=
"is_array2d"
/>
<term
file=
"metaprogramming.html"
name=
"is_rand"
/>
<term
file=
"metaprogramming.html"
name=
"is_rand"
/>
<term
file=
"metaprogramming.html"
name=
"is_matrix"
/>
<term
file=
"metaprogramming.html"
name=
"is_matrix"
/>
<term
file=
"metaprogramming.html"
name=
"is_std_vector"
/>
<term
file=
"metaprogramming.html"
name=
"is_std_vector"
/>
...
@@ -929,6 +941,7 @@
...
@@ -929,6 +941,7 @@
<term
link=
"dlib/image_transforms/thresholding_abstract.h.html"
name=
"off_pixel"
/>
<term
link=
"dlib/image_transforms/thresholding_abstract.h.html"
name=
"off_pixel"
/>
<term
file=
"imaging.html"
name=
"randomly_color_image"
/>
<term
file=
"imaging.html"
name=
"assign_image"
/>
<term
file=
"imaging.html"
name=
"assign_image"
/>
<term
file=
"imaging.html"
name=
"assign_image_scaled"
/>
<term
file=
"imaging.html"
name=
"assign_image_scaled"
/>
<term
file=
"imaging.html"
name=
"assign_all_pixels"
/>
<term
file=
"imaging.html"
name=
"assign_all_pixels"
/>
...
@@ -947,6 +960,7 @@
...
@@ -947,6 +960,7 @@
<term
file=
"imaging.html"
name=
"binary_difference"
/>
<term
file=
"imaging.html"
name=
"binary_difference"
/>
<term
file=
"imaging.html"
name=
"label_connected_blobs"
/>
<term
file=
"imaging.html"
name=
"label_connected_blobs"
/>
<term
file=
"imaging.html"
name=
"segment_image"
/>
<term
file=
"imaging.html"
name=
"neighbors_8"
/>
<term
file=
"imaging.html"
name=
"neighbors_8"
/>
<term
file=
"imaging.html"
name=
"neighbors_4"
/>
<term
file=
"imaging.html"
name=
"neighbors_4"
/>
<term
file=
"imaging.html"
name=
"connected_if_both_not_zero"
/>
<term
file=
"imaging.html"
name=
"connected_if_both_not_zero"
/>
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment