Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
D
dlib
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
钟尚武
dlib
Commits
b95b2e14
Commit
b95b2e14
authored
Mar 24, 2013
by
Davis King
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added a version of setup_hashed_features() for scan_image_boxes objects.
parent
cd83f1cb
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
142 additions
and
0 deletions
+142
-0
setup_hashed_features.h
dlib/image_processing/setup_hashed_features.h
+77
-0
setup_hashed_features_abstract.h
dlib/image_processing/setup_hashed_features_abstract.h
+65
-0
No files found.
dlib/image_processing/setup_hashed_features.h
View file @
b95b2e14
...
...
@@ -24,6 +24,10 @@ namespace dlib
)
:
error
(
a
)
{}
};
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// stuff for scan_image_pyramid
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template
<
...
...
@@ -95,6 +99,79 @@ namespace dlib
setup_hashed_features
(
scanner
,
images
,
fe
,
bits
,
num_samples
);
}
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// stuff for scan_image_boxes
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template
<
typename
image_array
,
typename
feature_extractor
>
void
setup_hashed_features
(
scan_image_boxes
<
hashed_feature_image
<
feature_extractor
,
projection_hash
>
>&
scanner
,
const
image_array
&
images
,
const
feature_extractor
&
fe
,
int
bits
,
unsigned
long
num_samples
=
200000
)
{
// make sure requires clause is not broken
DLIB_ASSERT
(
0
<
bits
&&
bits
<=
32
&&
num_samples
>
1
&&
images
.
size
()
>
0
,
"
\t
void setup_hashed_features()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
bits: "
<<
bits
<<
"
\n\t
num_samples: "
<<
num_samples
<<
"
\n\t
images.size(): "
<<
images
.
size
()
);
pyramid_disable
pyr
;
const
random_subset_selector
<
typename
feature_extractor
::
descriptor_type
>&
samps
=
randomly_sample_image_features
(
images
,
pyr
,
fe
,
num_samples
);
if
(
samps
.
size
()
<=
1
)
throw
dlib
::
image_hash_construction_failure
(
"Images too small, not able to gather enough samples to make hash"
);
projection_hash
phash
=
create_random_projection_hash
(
samps
,
bits
);
hashed_feature_image
<
feature_extractor
,
projection_hash
>
hfe
;
hfe
.
set_hash
(
phash
);
hfe
.
copy_configuration
(
fe
);
scanner
.
copy_configuration
(
hfe
);
}
// ----------------------------------------------------------------------------------------
template
<
typename
image_array
,
typename
feature_extractor
>
void
setup_hashed_features
(
scan_image_boxes
<
hashed_feature_image
<
feature_extractor
,
projection_hash
>
>&
scanner
,
const
image_array
&
images
,
int
bits
,
unsigned
long
num_samples
=
200000
)
{
// make sure requires clause is not broken
DLIB_ASSERT
(
0
<
bits
&&
bits
<=
32
&&
num_samples
>
1
&&
images
.
size
()
>
0
,
"
\t
void setup_hashed_features()"
<<
"
\n\t
Invalid inputs were given to this function. "
<<
"
\n\t
bits: "
<<
bits
<<
"
\n\t
num_samples: "
<<
num_samples
<<
"
\n\t
images.size(): "
<<
images
.
size
()
);
feature_extractor
fe
;
setup_hashed_features
(
scanner
,
images
,
fe
,
bits
,
num_samples
);
}
// ----------------------------------------------------------------------------------------
}
...
...
dlib/image_processing/setup_hashed_features_abstract.h
View file @
b95b2e14
...
...
@@ -85,6 +85,71 @@ namespace dlib
feature vectors.
!*/
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template
<
typename
image_array
,
typename
feature_extractor
>
void
setup_hashed_features
(
scan_image_boxes
<
hashed_feature_image
<
feature_extractor
,
projection_hash
>
>&
scanner
,
const
image_array
&
images
,
const
feature_extractor
&
fe
,
int
bits
,
unsigned
long
num_samples
=
200000
);
/*!
requires
- 0 < bits <= 32
- num_samples > 1
- images.size() > 0
- it must be valid to pass images[0] into scanner.load().
(also, image_array must be an implementation of dlib/array/array_kernel_abstract.h)
ensures
- Creates a projection_hash suitable for hashing the feature vectors produced by
fe and then configures scanner to use this hash function.
- The hash function will map vectors into integers in the range [0, pow(2,bits))
- The hash function will be setup so that it hashes a random sample of num_samples
vectors from fe such that each bin ends up with roughly the same number of
elements in it.
throws
- image_hash_construction_failure
This exception is thrown if there is a problem creating the projection_hash.
This should only happen the images are so small they contain less than 2
feature vectors.
!*/
// ----------------------------------------------------------------------------------------
template
<
typename
image_array
,
typename
feature_extractor
>
void
setup_hashed_features
(
scan_image_boxes
<
hashed_feature_image
<
feature_extractor
,
projection_hash
>
>&
scanner
,
const
image_array
&
images
,
int
bits
,
unsigned
long
num_samples
=
200000
);
/*!
requires
- 0 < bits <= 32
- num_samples > 1
- images.size() > 0
- it must be valid to pass images[0] into scanner.load().
(also, image_array must be an implementation of dlib/array/array_kernel_abstract.h)
ensures
- performs: setup_hashed_features(scanner, images, feature_extractor(), bits, num_samples)
throws
- image_hash_construction_failure
This exception is thrown if there is a problem creating the projection_hash.
This should only happen the images are so small they contain less than 2
feature vectors.
!*/
// ----------------------------------------------------------------------------------------
}
...
...
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