Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv_contrib
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_contrib
Commits
070e89eb
Commit
070e89eb
authored
Dec 17, 2015
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #473 from mshabunin:add_msd_detector
parents
742d9c93
6960aacd
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
69 additions
and
1 deletion
+69
-1
xfeatures2d.bib
modules/xfeatures2d/doc/xfeatures2d.bib
+7
-0
xfeatures2d.hpp
modules/xfeatures2d/include/opencv2/xfeatures2d.hpp
+22
-1
perf_msd.cpp
modules/xfeatures2d/perf/perf_msd.cpp
+33
-0
msd.cpp
modules/xfeatures2d/src/msd.cpp
+0
-0
test_keypoints.cpp
modules/xfeatures2d/test/test_keypoints.cpp
+7
-0
No files found.
modules/xfeatures2d/doc/xfeatures2d.bib
View file @
070e89eb
...
@@ -64,3 +64,10 @@
...
@@ -64,3 +64,10 @@
volume = "32",
volume = "32",
number = "5"
number = "5"
}
}
@inproceedings{Tombari14,
title={Interest Points via Maximal Self-Dissimilarities},
author={Tombari, Federico and Di Stefano, Luigi},
booktitle={Asian Conference on Computer Vision -- ACCV 2014},
year={2014}
}
modules/xfeatures2d/include/opencv2/xfeatures2d.hpp
View file @
070e89eb
...
@@ -159,7 +159,7 @@ LATCH is a binary descriptor based on learned comparisons of triplets of image p
...
@@ -159,7 +159,7 @@ LATCH is a binary descriptor based on learned comparisons of triplets of image p
* half_ssd_size - the size of half of the mini-patches size. For example, if we would like to compare triplets of patches of size 7x7x
* half_ssd_size - the size of half of the mini-patches size. For example, if we would like to compare triplets of patches of size 7x7x
then the half_ssd_size should be (7-1)/2 = 3.
then the half_ssd_size should be (7-1)/2 = 3.
Note: the descriptor can be coupled with any keypoint extractor. The only demand is that if you use set rotationInvariance = True then
Note: the descriptor can be coupled with any keypoint extractor. The only demand is that if you use set rotationInvariance = True then
you will have to use an extractor which estimates the patch orientation (in degrees). Examples for such extractors are ORB and SIFT.
you will have to use an extractor which estimates the patch orientation (in degrees). Examples for such extractors are ORB and SIFT.
Note: a complete example can be found under /samples/cpp/tutorial_code/xfeatures2D/latch_match.cpp
Note: a complete example can be found under /samples/cpp/tutorial_code/xfeatures2D/latch_match.cpp
...
@@ -258,6 +258,27 @@ public:
...
@@ -258,6 +258,27 @@ public:
};
};
/** @brief Class implementing the MSD (*Maximal Self-Dissimilarity*) keypoint detector, described in @cite Tombari14.
The algorithm implements a novel interest point detector stemming from the intuition that image patches
which are highly dissimilar over a relatively large extent of their surroundings hold the property of
being repeatable and distinctive. This concept of "contextual self-dissimilarity" reverses the key
paradigm of recent successful techniques such as the Local Self-Similarity descriptor and the Non-Local
Means filter, which build upon the presence of similar - rather than dissimilar - patches. Moreover,
it extends to contextual information the local self-dissimilarity notion embedded in established
detectors of corner-like interest points, thereby achieving enhanced repeatability, distinctiveness and
localization accuracy.
*/
class
CV_EXPORTS_W
MSDDetector
:
public
Feature2D
{
public
:
static
Ptr
<
MSDDetector
>
create
(
int
m_patch_radius
=
3
,
int
m_search_area_radius
=
5
,
int
m_nms_radius
=
5
,
int
m_nms_scale_radius
=
0
,
float
m_th_saliency
=
250.0
f
,
int
m_kNN
=
4
,
float
m_scale_factor
=
1.25
f
,
int
m_n_scales
=
-
1
,
bool
m_compute_orientation
=
false
);
};
//! @}
//! @}
...
...
modules/xfeatures2d/perf/perf_msd.cpp
0 → 100644
View file @
070e89eb
#include "perf_precomp.hpp"
using
namespace
std
;
using
namespace
cv
;
using
namespace
xfeatures2d
;
using
namespace
perf
;
using
std
::
tr1
::
make_tuple
;
using
std
::
tr1
::
get
;
typedef
perf
::
TestBaseWithParam
<
std
::
string
>
msd
;
#define MSD_IMAGES \
"cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\
"stitching/a3.png"
PERF_TEST_P
(
msd
,
detect
,
testing
::
Values
(
MSD_IMAGES
))
{
string
filename
=
getDataPath
(
GetParam
());
Mat
frame
=
imread
(
filename
,
IMREAD_GRAYSCALE
);
if
(
frame
.
empty
())
FAIL
()
<<
"Unable to load source image "
<<
filename
;
Mat
mask
;
declare
.
in
(
frame
);
Ptr
<
MSDDetector
>
detector
=
MSDDetector
::
create
();
vector
<
KeyPoint
>
points
;
TEST_CYCLE
()
detector
->
detect
(
frame
,
points
,
mask
);
sort
(
points
.
begin
(),
points
.
end
(),
comparators
::
KeypointGreater
());
SANITY_CHECK_KEYPOINTS
(
points
,
1e-3
);
}
modules/xfeatures2d/src/msd.cpp
0 → 100644
View file @
070e89eb
This diff is collapsed.
Click to expand it.
modules/xfeatures2d/test/test_keypoints.cpp
View file @
070e89eb
...
@@ -135,3 +135,10 @@ TEST(Features2d_Detector_Keypoints_Star, validation)
...
@@ -135,3 +135,10 @@ TEST(Features2d_Detector_Keypoints_Star, validation)
CV_FeatureDetectorKeypointsTest
test
(
xfeatures2d
::
StarDetector
::
create
());
CV_FeatureDetectorKeypointsTest
test
(
xfeatures2d
::
StarDetector
::
create
());
test
.
safe_run
();
test
.
safe_run
();
}
}
TEST
(
Features2d_Detector_Keypoints_MSDDetector
,
validation
)
{
CV_FeatureDetectorKeypointsTest
test
(
xfeatures2d
::
MSDDetector
::
create
());
test
.
safe_run
();
}
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