Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
94dbc35d
Commit
94dbc35d
authored
7 years ago
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
features2d(test): more AKAZE tests
parent
ad2e864a
No related merge requests found
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
44 deletions
+64
-44
AKAZEFeatures.cpp
modules/features2d/src/kaze/AKAZEFeatures.cpp
+2
-1
test_descriptors_regression.cpp
modules/features2d/test/test_descriptors_regression.cpp
+57
-42
run_long.py
modules/ts/misc/run_long.py
+5
-1
No files found.
modules/features2d/src/kaze/AKAZEFeatures.cpp
View file @
94dbc35d
...
...
@@ -2144,7 +2144,8 @@ void generateDescriptorSubsample(Mat& sampleList, Mat& comparisons, int nbits,
}
ssz
*=
nchannels
;
CV_Assert
(
nbits
<=
ssz
);
// Descriptor size can't be bigger than full descriptor
CV_Assert
(
ssz
==
162
*
nchannels
);
CV_Assert
(
nbits
<=
ssz
&&
"Descriptor size can't be bigger than full descriptor (486 = 162*3 - 3 channels)"
);
// Since the full descriptor is usually under 10k elements, we pick
// the selection from the full matrix. We take as many samples per
...
...
This diff is collapsed.
Click to expand it.
modules/features2d/test/test_descriptors_regression.cpp
View file @
94dbc35d
...
...
@@ -43,6 +43,7 @@
using
namespace
std
;
using
namespace
cv
;
using
namespace
testing
;
const
string
FEATURES2D_DIR
=
"features2d"
;
const
string
IMAGE_FILENAME
=
"tsukuba.png"
;
...
...
@@ -417,68 +418,82 @@ TEST( Features2d_DescriptorExtractor, batch )
}
}
TEST
(
Features2d_Feature2d
,
no_crash
)
class
DescriptorImage
:
public
TestWithParam
<
std
::
string
>
{
protected
:
virtual
void
SetUp
()
{
pattern
=
GetParam
();
}
std
::
string
pattern
;
};
TEST_P
(
DescriptorImage
,
no_crash
)
{
const
String
&
pattern
=
string
(
cvtest
::
TS
::
ptr
()
->
get_data_path
()
+
"shared/*.png"
);
vector
<
String
>
fnames
;
glob
(
pattern
,
fnames
,
false
);
glob
(
cvtest
::
TS
::
ptr
()
->
get_data_path
()
+
pattern
,
fnames
,
false
);
sort
(
fnames
.
begin
(),
fnames
.
end
());
Ptr
<
AKAZE
>
akaze
=
AKAZE
::
create
();
Ptr
<
AKAZE
>
akaze_mldb
=
AKAZE
::
create
(
AKAZE
::
DESCRIPTOR_MLDB
);
Ptr
<
AKAZE
>
akaze_mldb_upright
=
AKAZE
::
create
(
AKAZE
::
DESCRIPTOR_MLDB_UPRIGHT
);
Ptr
<
AKAZE
>
akaze_mldb_256
=
AKAZE
::
create
(
AKAZE
::
DESCRIPTOR_MLDB
,
256
);
Ptr
<
AKAZE
>
akaze_mldb_upright_256
=
AKAZE
::
create
(
AKAZE
::
DESCRIPTOR_MLDB_UPRIGHT
,
256
);
Ptr
<
AKAZE
>
akaze_kaze
=
AKAZE
::
create
(
AKAZE
::
DESCRIPTOR_KAZE
);
Ptr
<
AKAZE
>
akaze_kaze_upright
=
AKAZE
::
create
(
AKAZE
::
DESCRIPTOR_KAZE_UPRIGHT
);
Ptr
<
ORB
>
orb
=
ORB
::
create
();
Ptr
<
KAZE
>
kaze
=
KAZE
::
create
();
Ptr
<
BRISK
>
brisk
=
BRISK
::
create
();
size_t
i
,
n
=
fnames
.
size
();
size_t
n
=
fnames
.
size
();
vector
<
KeyPoint
>
keypoints
;
Mat
descriptors
;
orb
->
setMaxFeatures
(
5000
);
for
(
i
=
0
;
i
<
n
;
i
++
)
for
(
size_t
i
=
0
;
i
<
n
;
i
++
)
{
printf
(
"%d. image: %s:
\n
"
,
(
int
)
i
,
fnames
[
i
].
c_str
());
if
(
strstr
(
fnames
[
i
].
c_str
(),
"MP.png"
)
!=
0
)
{
printf
(
"
\t
skip
\n
"
);
continue
;
}
bool
checkCount
=
strstr
(
fnames
[
i
].
c_str
(),
"templ.png"
)
==
0
;
Mat
img
=
imread
(
fnames
[
i
],
-
1
);
printf
(
"
\t
AKAZE ... "
);
fflush
(
stdout
);
akaze
->
detectAndCompute
(
img
,
noArray
(),
keypoints
,
descriptors
);
printf
(
"(%d keypoints) "
,
(
int
)
keypoints
.
size
());
fflush
(
stdout
);
if
(
checkCount
)
{
EXPECT_GT
((
int
)
keypoints
.
size
(),
0
);
}
ASSERT_EQ
(
descriptors
.
rows
,
(
int
)
keypoints
.
size
());
printf
(
"ok
\n
"
);
printf
(
"
\t
KAZE ... "
);
fflush
(
stdout
);
kaze
->
detectAndCompute
(
img
,
noArray
(),
keypoints
,
descriptors
);
printf
(
"(%d keypoints) "
,
(
int
)
keypoints
.
size
());
fflush
(
stdout
);
if
(
checkCount
)
{
EXPECT_GT
((
int
)
keypoints
.
size
(),
0
);
}
printf
(
"
\t
%dx%d
\n
"
,
img
.
cols
,
img
.
rows
);
#define TEST_DETECTOR(name, descriptor) \
keypoints.clear(); descriptors.release(); \
printf("\t" name "\n"); fflush(stdout); \
descriptor->detectAndCompute(img, noArray(), keypoints, descriptors); \
printf("\t\t\t(%d keypoints, descriptor size = %d)\n", (int)keypoints.size(), descriptors.cols); fflush(stdout); \
if (checkCount) \
{ \
EXPECT_GT((int)keypoints.size(), 0); \
} \
ASSERT_EQ(descriptors.rows, (int)keypoints.size());
printf
(
"ok
\n
"
);
printf
(
"
\t
ORB ... "
);
fflush
(
stdout
);
orb
->
detectAndCompute
(
img
,
noArray
(),
keypoints
,
descriptors
);
printf
(
"(%d keypoints) "
,
(
int
)
keypoints
.
size
());
fflush
(
stdout
);
if
(
checkCount
)
{
EXPECT_GT
((
int
)
keypoints
.
size
(),
0
);
}
ASSERT_EQ
(
descriptors
.
rows
,
(
int
)
keypoints
.
size
());
printf
(
"ok
\n
"
);
printf
(
"
\t
BRISK ... "
);
fflush
(
stdout
);
brisk
->
detectAndCompute
(
img
,
noArray
(),
keypoints
,
descriptors
);
printf
(
"(%d keypoints) "
,
(
int
)
keypoints
.
size
());
fflush
(
stdout
);
if
(
checkCount
)
{
EXPECT_GT
((
int
)
keypoints
.
size
(),
0
);
}
ASSERT_EQ
(
descriptors
.
rows
,
(
int
)
keypoints
.
size
());
printf
(
"ok
\n
"
);
TEST_DETECTOR
(
"AKAZE:MLDB"
,
akaze_mldb
);
TEST_DETECTOR
(
"AKAZE:MLDB_UPRIGHT"
,
akaze_mldb_upright
);
TEST_DETECTOR
(
"AKAZE:MLDB_256"
,
akaze_mldb_256
);
TEST_DETECTOR
(
"AKAZE:MLDB_UPRIGHT_256"
,
akaze_mldb_upright_256
);
TEST_DETECTOR
(
"AKAZE:KAZE"
,
akaze_kaze
);
TEST_DETECTOR
(
"AKAZE:KAZE_UPRIGHT"
,
akaze_kaze_upright
);
TEST_DETECTOR
(
"KAZE"
,
kaze
);
TEST_DETECTOR
(
"ORB"
,
orb
);
TEST_DETECTOR
(
"BRISK"
,
brisk
);
}
}
INSTANTIATE_TEST_CASE_P
(
Features2d
,
DescriptorImage
,
testing
::
Values
(
"shared/lena.png"
,
"shared/box*.png"
,
"shared/fruits*.png"
,
"shared/airplane.png"
,
"shared/graffiti.png"
,
"shared/1_itseez-0001*.png"
,
"shared/pic*.png"
,
"shared/templ.png"
)
);
This diff is collapsed.
Click to expand it.
modules/ts/misc/run_long.py
View file @
94dbc35d
...
...
@@ -8,7 +8,11 @@ from pprint import PrettyPrinter as PP
LONG_TESTS_DEBUG_VALGRIND
=
[
(
'calib3d'
,
'Calib3d_InitUndistortRectifyMap.accuracy'
,
2017.22
),
(
'dnn'
,
'Reproducibility*'
,
1000
),
# large DNN models
(
'features2d'
,
'Features2d_Feature2d.no_crash'
,
1235.68
),
(
'features2d'
,
'Features2d/DescriptorImage.no_crash/3'
,
1000
),
(
'features2d'
,
'Features2d/DescriptorImage.no_crash/4'
,
1000
),
(
'features2d'
,
'Features2d/DescriptorImage.no_crash/5'
,
1000
),
(
'features2d'
,
'Features2d/DescriptorImage.no_crash/6'
,
1000
),
(
'features2d'
,
'Features2d/DescriptorImage.no_crash/7'
,
1000
),
(
'imgcodecs'
,
'Imgcodecs_Png.write_big'
,
1000
),
# memory limit
(
'imgcodecs'
,
'Imgcodecs_Tiff.decode_tile16384x16384'
,
1000
),
# memory limit
(
'ml'
,
'ML_RTrees.regression'
,
1423.47
),
...
...
This diff is collapsed.
Click to expand it.
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