Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
13ded36e
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
13ded36e
编写于
8月 23, 2012
作者:
V
Vincent Rabaud
提交者:
Vadim Pisarevsky
8月 30, 2012
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
initial addition of BRISK with some tests
上级
228070a7
变更
6
展开全部
隐藏空白更改
内联
并排
Showing
6 changed file
with
2478 addition
and
0 deletion
+2478
-0
modules/features2d/include/opencv2/features2d/features2d.hpp
modules/features2d/include/opencv2/features2d/features2d.hpp
+86
-0
modules/features2d/src/brisk.cpp
modules/features2d/src/brisk.cpp
+2277
-0
modules/features2d/src/features2d_init.cpp
modules/features2d/src/features2d_init.cpp
+7
-0
modules/features2d/test/test_brisk.cpp
modules/features2d/test/test_brisk.cpp
+95
-0
modules/features2d/test/test_descriptors_regression.cpp
modules/features2d/test/test_descriptors_regression.cpp
+7
-0
modules/features2d/test/test_detectors_regression.cpp
modules/features2d/test/test_detectors_regression.cpp
+6
-0
未找到文件。
modules/features2d/include/opencv2/features2d/features2d.hpp
浏览文件 @
13ded36e
...
...
@@ -267,6 +267,92 @@ public:
static
Ptr
<
Feature2D
>
create
(
const
string
&
name
);
};
/*!
BRISK implementation
*/
class
CV_EXPORTS_W
BRISK
:
public
Feature2D
{
public:
CV_WRAP
explicit
BRISK
(
int
thresh
=
30
,
int
octaves
=
3
,
float
patternScale
=
1.0
f
);
virtual
~
BRISK
();
// returns the descriptor size in bytes
int
descriptorSize
()
const
;
// returns the descriptor type
int
descriptorType
()
const
;
// Compute the BRISK features on an image
void
operator
()(
InputArray
image
,
InputArray
mask
,
vector
<
KeyPoint
>&
keypoints
)
const
;
// Compute the BRISK features and descriptors on an image
void
operator
()(
InputArray
image
,
InputArray
mask
,
vector
<
KeyPoint
>&
keypoints
,
OutputArray
descriptors
,
bool
useProvidedKeypoints
=
false
)
const
;
AlgorithmInfo
*
info
()
const
;
// custom setup
CV_WRAP
explicit
BRISK
(
std
::
vector
<
float
>
&
radiusList
,
std
::
vector
<
int
>
&
numberList
,
float
dMax
=
5.85
f
,
float
dMin
=
8.2
f
,
std
::
vector
<
int
>
indexChange
=
std
::
vector
<
int
>
());
// call this to generate the kernel:
// circle of radius r (pixels), with n points;
// short pairings with dMax, long pairings with dMin
CV_WRAP
void
generateKernel
(
std
::
vector
<
float
>
&
radiusList
,
std
::
vector
<
int
>
&
numberList
,
float
dMax
=
5.85
f
,
float
dMin
=
8.2
f
,
std
::
vector
<
int
>
indexChange
=
std
::
vector
<
int
>
());
protected:
void
computeImpl
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
keypoints
,
Mat
&
descriptors
)
const
;
void
detectImpl
(
const
Mat
&
image
,
vector
<
KeyPoint
>&
keypoints
,
const
Mat
&
mask
=
Mat
()
)
const
;
// Feature parameters
CV_PROP_RW
int
threshold
;
CV_PROP_RW
int
octaves
;
// some helper structures for the Brisk pattern representation
struct
BriskPatternPoint
{
float
x
;
// x coordinate relative to center
float
y
;
// x coordinate relative to center
float
sigma
;
// Gaussian smoothing sigma
};
struct
BriskShortPair
{
unsigned
int
i
;
// index of the first pattern point
unsigned
int
j
;
// index of other pattern point
};
struct
BriskLongPair
{
unsigned
int
i
;
// index of the first pattern point
unsigned
int
j
;
// index of other pattern point
int
weighted_dx
;
// 1024.0/dx
int
weighted_dy
;
// 1024.0/dy
};
inline
int
smoothedIntensity
(
const
cv
::
Mat
&
image
,
const
cv
::
Mat
&
integral
,
const
float
key_x
,
const
float
key_y
,
const
unsigned
int
scale
,
const
unsigned
int
rot
,
const
unsigned
int
point
)
const
;
// pattern properties
BriskPatternPoint
*
patternPoints_
;
//[i][rotation][scale]
unsigned
int
points_
;
// total number of collocation points
float
*
scaleList_
;
// lists the scaling per scale index [scale]
unsigned
int
*
sizeList_
;
// lists the total pattern size per scale index [scale]
static
const
unsigned
int
scales_
;
// scales discretization
static
const
float
scalerange_
;
// span of sizes 40->4 Octaves - else, this needs to be adjusted...
static
const
unsigned
int
n_rot_
;
// discretization of the rotation look-up
// pairs
int
strings_
;
// number of uchars the descriptor consists of
float
dMax_
;
// short pair maximum distance
float
dMin_
;
// long pair maximum distance
BriskShortPair
*
shortPairs_
;
// d<_dMax
BriskLongPair
*
longPairs_
;
// d>_dMin
unsigned
int
noShortPairs_
;
// number of shortParis
unsigned
int
noLongPairs_
;
// number of longParis
// general
static
const
float
basicSize_
;
};
/*!
ORB implementation.
...
...
modules/features2d/src/brisk.cpp
0 → 100755
浏览文件 @
13ded36e
此差异已折叠。
点击以展开。
modules/features2d/src/features2d_init.cpp
浏览文件 @
13ded36e
...
...
@@ -51,6 +51,12 @@ using namespace cv;
Otherwise, linker may throw away some seemingly unused stuff.
*/
CV_INIT_ALGORITHM
(
BRISK
,
"Feature2D.BRISK"
,
obj
.
info
()
->
addParam
(
obj
,
"thres"
,
obj
.
threshold
);
obj
.
info
()
->
addParam
(
obj
,
"octaves"
,
obj
.
octaves
));
///////////////////////////////////////////////////////////////////////////////////////////////////////////
CV_INIT_ALGORITHM
(
BriefDescriptorExtractor
,
"Feature2D.BRIEF"
,
obj
.
info
()
->
addParam
(
obj
,
"bytes"
,
obj
.
bytes_
));
...
...
@@ -154,6 +160,7 @@ bool cv::initModule_features2d(void)
{
bool
all
=
true
;
all
&=
!
BriefDescriptorExtractor_info_auto
.
name
().
empty
();
all
&=
!
BRISK_info_auto
.
name
().
empty
();
all
&=
!
FastFeatureDetector_info_auto
.
name
().
empty
();
all
&=
!
StarDetector_info_auto
.
name
().
empty
();
all
&=
!
MSER_info_auto
.
name
().
empty
();
...
...
modules/features2d/test/test_brisk.cpp
0 → 100644
浏览文件 @
13ded36e
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of the copyright holders may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/
#include "test_precomp.hpp"
using
namespace
cv
;
class
CV_BRISKTest
:
public
cvtest
::
BaseTest
{
public:
CV_BRISKTest
();
~
CV_BRISKTest
();
protected:
void
run
(
int
);
};
CV_BRISKTest
::
CV_BRISKTest
()
{}
CV_BRISKTest
::~
CV_BRISKTest
()
{}
void
CV_BRISKTest
::
run
(
int
)
{
Mat
image1
=
imread
(
string
(
ts
->
get_data_path
())
+
"inpaint/orig.jpg"
);
Mat
image2
=
imread
(
string
(
ts
->
get_data_path
())
+
"cameracalibration/chess9.jpg"
);
if
(
image1
.
empty
()
||
image2
.
empty
())
{
ts
->
set_failed_test_info
(
cvtest
::
TS
::
FAIL_INVALID_TEST_DATA
);
return
;
}
Mat
gray1
,
gray2
;
cvtColor
(
image1
,
gray1
,
CV_BGR2GRAY
);
cvtColor
(
image2
,
gray2
,
CV_BGR2GRAY
);
Ptr
<
FeatureDetector
>
detector
=
Algorithm
::
create
<
FeatureDetector
>
(
"Feature2D.BRISK"
);
vector
<
KeyPoint
>
keypoints1
;
vector
<
KeyPoint
>
keypoints2
;
detector
->
detect
(
image1
,
keypoints1
);
detector
->
detect
(
image2
,
keypoints2
);
for
(
size_t
i
=
0
;
i
<
keypoints1
.
size
();
++
i
)
{
const
KeyPoint
&
kp
=
keypoints1
[
i
];
ASSERT_NE
(
kp
.
angle
,
-
1
);
}
for
(
size_t
i
=
0
;
i
<
keypoints2
.
size
();
++
i
)
{
const
KeyPoint
&
kp
=
keypoints2
[
i
];
ASSERT_NE
(
kp
.
angle
,
-
1
);
}
}
TEST
(
Features2d_BRISK
,
regression
)
{
CV_BRISKTest
test
;
test
.
safe_run
();
}
modules/features2d/test/test_descriptors_regression.cpp
浏览文件 @
13ded36e
...
...
@@ -301,6 +301,13 @@ private:
* Tests registrations *
\****************************************************************************************/
TEST
(
Features2d_DescriptorExtractor_BRISK
,
regression
)
{
CV_DescriptorExtractorTest
<
Hamming
>
test
(
"descriptor-brisk"
,
(
CV_DescriptorExtractorTest
<
Hamming
>::
DistanceType
)
2.
f
,
DescriptorExtractor
::
create
(
"BRISK"
)
);
test
.
safe_run
();
}
TEST
(
Features2d_DescriptorExtractor_ORB
,
regression
)
{
// TODO adjust the parameters below
...
...
modules/features2d/test/test_detectors_regression.cpp
浏览文件 @
13ded36e
...
...
@@ -247,6 +247,12 @@ void CV_FeatureDetectorTest::run( int /*start_from*/ )
* Tests registrations *
\****************************************************************************************/
TEST
(
Features2d_Detector_BRISK
,
regression
)
{
CV_FeatureDetectorTest
test
(
"detector-brisk"
,
FeatureDetector
::
create
(
"BRISK"
)
);
test
.
safe_run
();
}
TEST
(
Features2d_Detector_FAST
,
regression
)
{
CV_FeatureDetectorTest
test
(
"detector-fast"
,
FeatureDetector
::
create
(
"FAST"
)
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录