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 @@
volume = "32",
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
* 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.
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.
Note: a complete example can be found under /samples/cpp/tutorial_code/xfeatures2D/latch_match.cpp
...
...
@@ -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)
CV_FeatureDetectorKeypointsTest
test
(
xfeatures2d
::
StarDetector
::
create
());
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