Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
c6a943b6
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c6a943b6
编写于
6月 11, 2010
作者:
V
Victor Erukhimov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
DescriptorMatching -> DMatch
上级
c6750a0f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
25 deletion
+25
-25
modules/features2d/include/opencv2/features2d/features2d.hpp
modules/features2d/include/opencv2/features2d/features2d.hpp
+16
-16
modules/features2d/src/descriptors.cpp
modules/features2d/src/descriptors.cpp
+4
-4
tests/cv/src/adetectordescriptor_evaluation.cpp
tests/cv/src/adetectordescriptor_evaluation.cpp
+5
-5
未找到文件。
modules/features2d/include/opencv2/features2d/features2d.hpp
浏览文件 @
c6a943b6
...
...
@@ -1508,18 +1508,18 @@ struct CV_EXPORTS L2
/****************************************************************************************\
* D
escriptorMatching
*
* D
Match
*
\****************************************************************************************/
/*
* Struct for matching: match index and distance between descriptors
*/
struct
D
escriptorMatching
struct
D
Match
{
int
index
;
float
distance
;
//less is better
bool
operator
<
(
const
D
escriptorMatching
&
m
)
const
bool
operator
<
(
const
D
Match
&
m
)
const
{
return
distance
<
m
.
distance
;
}
...
...
@@ -1573,7 +1573,7 @@ public:
* query The query set of descriptors
* matchings Matchings of the closest matches from the training set
*/
void
match
(
const
Mat
&
query
,
vector
<
D
escriptorMatching
>&
matchings
)
const
;
void
match
(
const
Mat
&
query
,
vector
<
D
Match
>&
matchings
)
const
;
/*
* Find the best matches between two descriptor sets, with constraints
...
...
@@ -1587,7 +1587,7 @@ public:
* matchings Matchings of the closest matches from the training set
*/
void
match
(
const
Mat
&
query
,
const
Mat
&
mask
,
vector
<
D
escriptorMatching
>&
matchings
)
const
;
vector
<
D
Match
>&
matchings
)
const
;
/*
* Find the best keypoint matches for small view changes.
...
...
@@ -1623,7 +1623,7 @@ protected:
* The mask may be empty.
*/
virtual
void
matchImpl
(
const
Mat
&
descriptors_1
,
const
Mat
&
descriptors_2
,
const
Mat
&
mask
,
vector
<
D
escriptorMatching
>&
matches
)
const
=
0
;
const
Mat
&
mask
,
vector
<
D
Match
>&
matches
)
const
=
0
;
static
bool
possibleMatch
(
const
Mat
&
mask
,
int
index_1
,
int
index_2
)
{
...
...
@@ -1660,14 +1660,14 @@ inline void DescriptorMatcher::match( const Mat& query, const Mat& mask,
matchImpl
(
query
,
train
,
mask
,
matches
);
}
inline
void
DescriptorMatcher
::
match
(
const
Mat
&
query
,
vector
<
D
escriptorMatching
>&
matches
)
const
inline
void
DescriptorMatcher
::
match
(
const
Mat
&
query
,
vector
<
D
Match
>&
matches
)
const
{
matchImpl
(
query
,
train
,
Mat
(),
matches
);
}
inline
void
DescriptorMatcher
::
match
(
const
Mat
&
query
,
const
Mat
&
mask
,
vector
<
D
escriptorMatching
>&
matches
)
const
vector
<
D
Match
>&
matches
)
const
{
matchImpl
(
query
,
train
,
mask
,
matches
);
}
...
...
@@ -1697,7 +1697,7 @@ protected:
const
Mat
&
mask
,
vector
<
int
>&
matches
)
const
;
virtual
void
matchImpl
(
const
Mat
&
descriptors_1
,
const
Mat
&
descriptors_2
,
const
Mat
&
mask
,
vector
<
D
escriptorMatching
>&
matches
)
const
;
const
Mat
&
mask
,
vector
<
D
Match
>&
matches
)
const
;
Distance
distance
;
};
...
...
@@ -1706,7 +1706,7 @@ template<class Distance>
void
BruteForceMatcher
<
Distance
>::
matchImpl
(
const
Mat
&
descriptors_1
,
const
Mat
&
descriptors_2
,
const
Mat
&
mask
,
vector
<
int
>&
matches
)
const
{
vector
<
D
escriptorMatching
>
matchings
;
vector
<
D
Match
>
matchings
;
matchImpl
(
descriptors_1
,
descriptors_2
,
mask
,
matchings
);
matches
.
resize
(
matchings
.
size
()
);
for
(
size_t
i
=
0
;
i
<
matchings
.
size
();
i
++
)
...
...
@@ -1717,7 +1717,7 @@ void BruteForceMatcher<Distance>::matchImpl( const Mat& descriptors_1, const Mat
template
<
class
Distance
>
void
BruteForceMatcher
<
Distance
>::
matchImpl
(
const
Mat
&
descriptors_1
,
const
Mat
&
descriptors_2
,
const
Mat
&
mask
,
vector
<
D
escriptorMatching
>&
matches
)
const
const
Mat
&
mask
,
vector
<
D
Match
>&
matches
)
const
{
typedef
typename
Distance
::
ValueType
ValueType
;
typedef
typename
Distance
::
ResultType
DistanceType
;
...
...
@@ -1753,7 +1753,7 @@ void BruteForceMatcher<Distance>::matchImpl( const Mat& descriptors_1, const Mat
if
(
matchIndex
!=
-
1
)
{
D
escriptorMatching
matching
;
D
Match
matching
;
matching
.
index
=
matchIndex
;
matching
.
distance
=
matchDistance
;
matches
[
i
]
=
matching
;
...
...
@@ -1830,7 +1830,7 @@ public:
// image The source image
// points Test keypoints from the source image
// matchings A vector to be filled with keypoint matchings
virtual
void
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
D
escriptorMatching
>&
matchings
)
{};
virtual
void
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
D
Match
>&
matchings
)
{};
// Clears keypoints storing in collection
virtual
void
clear
();
...
...
@@ -1906,7 +1906,7 @@ public:
// loaded with DescriptorOneWay::Initialize, kd tree is used for finding minimum distances.
virtual
void
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
int
>&
indices
);
virtual
void
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
D
escriptorMatching
>&
matchings
);
virtual
void
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
D
Match
>&
matchings
);
// Classify a set of keypoints. The same as match, but returns point classes rather than indices
virtual
void
classify
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
);
...
...
@@ -2036,7 +2036,7 @@ public:
virtual
void
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
keypoints
,
vector
<
int
>&
indices
);
virtual
void
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
D
escriptorMatching
>&
matchings
);
virtual
void
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
D
Match
>&
matchings
);
virtual
void
classify
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
keypoints
);
...
...
@@ -2094,7 +2094,7 @@ public:
matcher
.
match
(
descriptors
,
keypointIndices
);
};
virtual
void
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
D
escriptorMatching
>&
matchings
)
virtual
void
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
D
Match
>&
matchings
)
{
Mat
descriptors
;
extractor
.
compute
(
image
,
points
,
descriptors
);
...
...
modules/features2d/src/descriptors.cpp
浏览文件 @
c6a943b6
...
...
@@ -433,7 +433,7 @@ void OneWayDescriptorMatch::add( KeyPointCollection& keypoints )
void
OneWayDescriptorMatch
::
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
int
>&
indices
)
{
vector
<
D
escriptorMatching
>
matchings
(
points
.
size
()
);
vector
<
D
Match
>
matchings
(
points
.
size
()
);
indices
.
resize
(
points
.
size
());
match
(
image
,
points
,
matchings
);
...
...
@@ -442,7 +442,7 @@ void OneWayDescriptorMatch::match( const Mat& image, vector<KeyPoint>& points, v
indices
[
i
]
=
matchings
[
i
].
index
;
}
void
OneWayDescriptorMatch
::
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
D
escriptorMatching
>&
matchings
)
void
OneWayDescriptorMatch
::
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
points
,
vector
<
D
Match
>&
matchings
)
{
matchings
.
resize
(
points
.
size
()
);
IplImage
_image
=
image
;
...
...
@@ -450,7 +450,7 @@ void OneWayDescriptorMatch::match( const Mat& image, vector<KeyPoint>& points, v
{
int
poseIdx
=
-
1
;
D
escriptorMatching
matching
;
D
Match
matching
;
matching
.
index
=
-
1
;
base
->
FindDescriptor
(
&
_image
,
points
[
i
].
pt
,
matching
.
index
,
poseIdx
,
matching
.
distance
);
matchings
[
i
]
=
matching
;
...
...
@@ -744,7 +744,7 @@ void FernDescriptorMatch::match( const Mat& image, vector<KeyPoint>& keypoints,
}
}
void
FernDescriptorMatch
::
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
keypoints
,
vector
<
D
escriptorMatching
>&
matchings
)
void
FernDescriptorMatch
::
match
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
keypoints
,
vector
<
D
Match
>&
matchings
)
{
trainFernClassifier
();
...
...
tests/cv/src/adetectordescriptor_evaluation.cpp
浏览文件 @
c6a943b6
...
...
@@ -425,7 +425,7 @@ inline float precision( int correctMatchCount, int falseMatchCount )
}
void
evaluateDescriptors
(
const
vector
<
EllipticKeyPoint
>&
keypoints1
,
const
vector
<
EllipticKeyPoint
>&
keypoints2
,
vector
<
pair
<
D
escriptorMatching
,
int
>
>&
matches1to2
,
vector
<
pair
<
D
Match
,
int
>
>&
matches1to2
,
const
Mat
&
img1
,
const
Mat
&
img2
,
const
Mat
&
H1to2
,
int
&
correctMatchCount
,
int
&
falseMatchCount
,
vector
<
int
>
&
matchStatuses
,
int
&
correspondenceCount
)
{
...
...
@@ -1385,7 +1385,7 @@ void DescriptorQualityTest::runDatasetTest (const vector<Mat> &imgs, const vecto
transformToEllipticKeyPoints
(
keypoints1
,
ekeypoints1
);
int
progressCount
=
DATASETS_COUNT
*
TEST_CASE_COUNT
;
vector
<
pair
<
D
escriptorMatching
,
int
>
>
allMatchings
;
vector
<
pair
<
D
Match
,
int
>
>
allMatchings
;
vector
<
int
>
allMatchStatuses
;
size_t
matchingIndex
=
0
;
int
allCorrespCount
=
0
;
...
...
@@ -1405,11 +1405,11 @@ void DescriptorQualityTest::runDatasetTest (const vector<Mat> &imgs, const vecto
readKeypoints
(
keypontsFS
,
keypoints2
,
ci
+
1
);
transformToEllipticKeyPoints
(
keypoints2
,
ekeypoints2
);
descMatch
->
add
(
imgs
[
ci
+
1
],
keypoints2
);
vector
<
D
escriptorMatching
>
matchings1to2
;
vector
<
D
Match
>
matchings1to2
;
descMatch
->
match
(
imgs
[
0
],
keypoints1
,
matchings1to2
);
vector
<
pair
<
D
escriptorMatching
,
int
>
>
matchings
(
matchings1to2
.
size
());
vector
<
pair
<
D
Match
,
int
>
>
matchings
(
matchings1to2
.
size
());
for
(
size_t
i
=
0
;
i
<
matchings1to2
.
size
();
i
++
)
matchings
[
i
]
=
pair
<
D
escriptorMatching
,
int
>
(
matchings1to2
[
i
],
i
);
matchings
[
i
]
=
pair
<
D
Match
,
int
>
(
matchings1to2
[
i
],
i
);
// TODO if( commRunParams[di].matchFilter )
int
correspCount
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录