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
da1921b2
Commit
da1921b2
authored
Aug 24, 2012
by
Vincent Rabaud
Committed by
Vadim Pisarevsky
Aug 30, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add const correctness, replace __inline__ and remote a useless release()
parent
92da6d38
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
56 additions
and
57 deletions
+56
-57
brisk.cpp
modules/features2d/src/brisk.cpp
+56
-57
No files found.
modules/features2d/src/brisk.cpp
View file @
da1921b2
...
...
@@ -74,11 +74,11 @@ public:
// get scores - attention, this is in layer coordinates, not scale=1 coordinates!
inline
uint8_t
getAgastScore
(
int
x
,
int
y
,
uint8_t
threshold
);
getAgastScore
(
int
x
,
int
y
,
uint8_t
threshold
)
const
;
inline
uint8_t
getAgastScore_5_8
(
int
x
,
int
y
,
uint8_t
threshold
);
getAgastScore_5_8
(
int
x
,
int
y
,
uint8_t
threshold
)
const
;
inline
uint8_t
getAgastScore
(
float
xf
,
float
yf
,
uint8_t
threshold
,
float
scale
=
1.0
f
);
getAgastScore
(
float
xf
,
float
yf
,
uint8_t
threshold
,
float
scale
=
1.0
f
)
const
;
// accessors
inline
const
cv
::
Mat
&
...
...
@@ -111,8 +111,8 @@ public:
private
:
// access gray values (smoothed/interpolated)
__inline__
uint8_t
value
(
const
cv
::
Mat
&
mat
,
float
xf
,
float
yf
,
float
scale
);
inline
uint8_t
value
(
const
cv
::
Mat
&
mat
,
float
xf
,
float
yf
,
float
scale
)
const
;
// the image
cv
::
Mat
img_
;
// its Fast scores
...
...
@@ -139,40 +139,40 @@ public:
// get Keypoints
void
getKeypoints
(
const
uint8_t
_threshold
,
std
::
vector
<
cv
::
KeyPoint
>&
keypoints
);
getKeypoints
(
const
uint8_t
_threshold
,
std
::
vector
<
cv
::
KeyPoint
>&
keypoints
);
protected
:
// nonmax suppression:
__inline__
bool
inline
bool
isMax2D
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
);
// 1D (scale axis) refinement:
__inline__
float
refine1D
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
);
// around octave
__inline__
float
refine1D_1
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
);
// around intra
__inline__
float
refine1D_2
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
);
// around octave 0 only
inline
float
refine1D
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
)
const
;
// around octave
inline
float
refine1D_1
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
)
const
;
// around intra
inline
float
refine1D_2
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
)
const
;
// around octave 0 only
// 2D maximum refinement:
__inline__
float
inline
float
subpixel2D
(
const
int
s_0_0
,
const
int
s_0_1
,
const
int
s_0_2
,
const
int
s_1_0
,
const
int
s_1_1
,
const
int
s_1_2
,
const
int
s_2_0
,
const
int
s_2_1
,
const
int
s_2_2
,
float
&
delta_x
,
float
&
delta_y
);
const
int
s_2_0
,
const
int
s_2_1
,
const
int
s_2_2
,
float
&
delta_x
,
float
&
delta_y
)
const
;
// 3D maximum refinement centered around (x_layer,y_layer)
__inline__
float
refine3D
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
,
float
&
x
,
float
&
y
,
float
&
scale
,
bool
&
ismax
);
inline
float
refine3D
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
,
float
&
x
,
float
&
y
,
float
&
scale
,
bool
&
ismax
)
const
;
// interpolated score access with recalculation when needed:
__inline__
int
getScoreAbove
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
);
__inline__
int
getScoreBelow
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
);
inline
int
getScoreAbove
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
)
const
;
inline
int
getScoreBelow
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
)
const
;
// return the maximum of score patches above or below
__inline__
float
inline
float
getScoreMaxAbove
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
,
const
int
threshold
,
bool
&
ismax
,
float
&
dx
,
float
&
dy
);
__inline__
float
float
&
dx
,
float
&
dy
)
const
;
inline
float
getScoreMaxBelow
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
,
const
int
threshold
,
bool
&
ismax
,
float
&
dx
,
float
&
dy
);
float
&
dx
,
float
&
dy
)
const
;
// the image pyramids:
uint8_t
layers_
;
...
...
@@ -354,7 +354,7 @@ BRISK::generateKernel(std::vector<float> &radiusList, std::vector<int> &numberLi
}
// simple alternative:
__inline__
int
inline
int
BRISK
::
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
...
...
@@ -650,7 +650,6 @@ BRISK::operator()( InputArray _image, InputArray _mask, vector<KeyPoint>& keypoi
}
// clean-up
_integral
.
release
();
delete
[]
_values
;
}
...
...
@@ -946,11 +945,11 @@ BriskScaleSpace::getKeypoints(const uint8_t _threshold, std::vector<cv::KeyPoint
}
// interpolated score access with recalculation when needed:
__inline__
int
BriskScaleSpace
::
getScoreAbove
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
)
inline
int
BriskScaleSpace
::
getScoreAbove
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
)
const
{
assert
(
layer
<
layers_
-
1
);
BriskLayer
&
l
=
pyramid_
[
layer
+
1
];
const
BriskLayer
&
l
=
pyramid_
[
layer
+
1
];
if
(
layer
%
2
==
0
)
{
// octave
const
int
sixths_x
=
4
*
x_layer
-
1
;
...
...
@@ -989,11 +988,11 @@ BriskScaleSpace::getScoreAbove(const uint8_t layer, const int x_layer, const int
return
score
;
}
}
__inline__
int
BriskScaleSpace
::
getScoreBelow
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
)
inline
int
BriskScaleSpace
::
getScoreBelow
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
)
const
{
assert
(
layer
);
BriskLayer
&
l
=
pyramid_
[
layer
-
1
];
const
BriskLayer
&
l
=
pyramid_
[
layer
-
1
];
int
sixth_x
;
int
quarter_x
;
float
xf
;
...
...
@@ -1090,7 +1089,7 @@ BriskScaleSpace::getScoreBelow(const uint8_t layer, const int x_layer, const int
return
((
ret_val
+
scaling2
/
2
)
/
scaling2
);
}
__inline__
bool
inline
bool
BriskScaleSpace
::
isMax2D
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
)
{
const
cv
::
Mat
&
scores
=
pyramid_
[
layer
].
scores
();
...
...
@@ -1209,12 +1208,12 @@ BriskScaleSpace::isMax2D(const uint8_t layer, const int x_layer, const int y_lay
}
// 3D maximum refinement centered around (x_layer,y_layer)
__inline__
float
inline
float
BriskScaleSpace
::
refine3D
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
,
float
&
x
,
float
&
y
,
float
&
scale
,
bool
&
ismax
)
bool
&
ismax
)
const
{
ismax
=
true
;
BriskLayer
&
thisLayer
=
pyramid_
[
layer
];
const
BriskLayer
&
thisLayer
=
pyramid_
[
layer
];
const
int
center
=
thisLayer
.
getAgastScore
(
x_layer
,
y_layer
,
1
);
// check and get above maximum:
...
...
@@ -1235,7 +1234,7 @@ BriskScaleSpace::refine3D(const uint8_t layer, const int x_layer, const int y_la
if
(
layer
==
0
)
{
// guess the lower intra octave...
BriskLayer
&
l
=
pyramid_
[
0
];
const
BriskLayer
&
l
=
pyramid_
[
0
];
register
int
s_0_0
=
l
.
getAgastScore_5_8
(
x_layer
-
1
,
y_layer
-
1
,
1
);
max_below_uchar
=
s_0_0
;
register
int
s_1_0
=
l
.
getAgastScore_5_8
(
x_layer
,
y_layer
-
1
,
1
);
...
...
@@ -1375,9 +1374,9 @@ BriskScaleSpace::refine3D(const uint8_t layer, const int x_layer, const int y_la
}
// return the maximum of score patches above or below
__inline__
float
inline
float
BriskScaleSpace
::
getScoreMaxAbove
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
,
const
int
threshold
,
bool
&
ismax
,
float
&
dx
,
float
&
dy
)
bool
&
ismax
,
float
&
dx
,
float
&
dy
)
const
{
ismax
=
false
;
...
...
@@ -1389,7 +1388,7 @@ BriskScaleSpace::getScoreMaxAbove(const uint8_t layer, const int x_layer, const
// the layer above
assert
(
layer
+
1
<
layers_
);
BriskLayer
&
layerAbove
=
pyramid_
[
layer
+
1
];
const
BriskLayer
&
layerAbove
=
pyramid_
[
layer
+
1
];
if
(
layer
%
2
==
0
)
{
...
...
@@ -1555,9 +1554,9 @@ BriskScaleSpace::getScoreMaxAbove(const uint8_t layer, const int x_layer, const
return
max
;
}
__inline__
float
inline
float
BriskScaleSpace
::
getScoreMaxBelow
(
const
uint8_t
layer
,
const
int
x_layer
,
const
int
y_layer
,
const
int
threshold
,
bool
&
ismax
,
float
&
dx
,
float
&
dy
)
bool
&
ismax
,
float
&
dx
,
float
&
dy
)
const
{
ismax
=
false
;
...
...
@@ -1585,7 +1584,7 @@ BriskScaleSpace::getScoreMaxBelow(const uint8_t layer, const int x_layer, const
// the layer below
assert
(
layer
>
0
);
BriskLayer
&
layerBelow
=
pyramid_
[
layer
-
1
];
const
BriskLayer
&
layerBelow
=
pyramid_
[
layer
-
1
];
// check the first row
int
max_x
=
x_1
+
1
;
...
...
@@ -1754,8 +1753,8 @@ BriskScaleSpace::getScoreMaxBelow(const uint8_t layer, const int x_layer, const
return
max
;
}
__inline__
float
BriskScaleSpace
::
refine1D
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
)
inline
float
BriskScaleSpace
::
refine1D
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
)
const
{
int
i_05
=
int
(
1024.0
*
s_05
+
0.5
);
int
i0
=
int
(
1024.0
*
s0
+
0.5
);
...
...
@@ -1800,8 +1799,8 @@ BriskScaleSpace::refine1D(const float s_05, const float s0, const float s05, flo
return
ret_val
;
}
__inline__
float
BriskScaleSpace
::
refine1D_1
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
)
inline
float
BriskScaleSpace
::
refine1D_1
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
)
const
{
int
i_05
=
int
(
1024.0
*
s_05
+
0.5
);
int
i0
=
int
(
1024.0
*
s0
+
0.5
);
...
...
@@ -1846,8 +1845,8 @@ BriskScaleSpace::refine1D_1(const float s_05, const float s0, const float s05, f
return
ret_val
;
}
__inline__
float
BriskScaleSpace
::
refine1D_2
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
)
inline
float
BriskScaleSpace
::
refine1D_2
(
const
float
s_05
,
const
float
s0
,
const
float
s05
,
float
&
max
)
const
{
int
i_05
=
int
(
1024.0
*
s_05
+
0.5
);
int
i0
=
int
(
1024.0
*
s0
+
0.5
);
...
...
@@ -1892,10 +1891,10 @@ BriskScaleSpace::refine1D_2(const float s_05, const float s0, const float s05, f
return
ret_val
;
}
__inline__
float
inline
float
BriskScaleSpace
::
subpixel2D
(
const
int
s_0_0
,
const
int
s_0_1
,
const
int
s_0_2
,
const
int
s_1_0
,
const
int
s_1_1
,
const
int
s_1_2
,
const
int
s_2_0
,
const
int
s_2_1
,
const
int
s_2_2
,
float
&
delta_x
,
float
&
delta_y
)
float
&
delta_y
)
const
{
// the coefficients of the 2d quadratic function least-squares fit:
...
...
@@ -2086,7 +2085,7 @@ BriskLayer::getAgastPoints(uint8_t threshold, std::vector<KeyPoint>& keypoints)
scores_
(
keypoints
[
i
].
pt
.
y
,
keypoints
[
i
].
pt
.
x
)
=
keypoints
[
i
].
response
;
}
inline
uint8_t
BriskLayer
::
getAgastScore
(
int
x
,
int
y
,
uint8_t
threshold
)
BriskLayer
::
getAgastScore
(
int
x
,
int
y
,
uint8_t
threshold
)
const
{
if
(
x
<
3
||
y
<
3
)
return
0
;
...
...
@@ -2104,7 +2103,7 @@ BriskLayer::getAgastScore(int x, int y, uint8_t threshold)
}
inline
uint8_t
BriskLayer
::
getAgastScore_5_8
(
int
x
,
int
y
,
uint8_t
threshold
)
BriskLayer
::
getAgastScore_5_8
(
int
x
,
int
y
,
uint8_t
threshold
)
const
{
if
(
x
<
2
||
y
<
2
)
return
0
;
...
...
@@ -2117,7 +2116,7 @@ BriskLayer::getAgastScore_5_8(int x, int y, uint8_t threshold)
}
inline
uint8_t
BriskLayer
::
getAgastScore
(
float
xf
,
float
yf
,
uint8_t
threshold_in
,
float
scale_in
)
BriskLayer
::
getAgastScore
(
float
xf
,
float
yf
,
uint8_t
threshold_in
,
float
scale_in
)
const
{
if
(
scale_in
<=
1.0
f
)
{
...
...
@@ -2150,8 +2149,8 @@ BriskLayer::getAgastScore(float xf, float yf, uint8_t threshold_in, float scale_
}
// access gray values (smoothed/interpolated)
__inline__
uint8_t
BriskLayer
::
value
(
const
cv
::
Mat
&
mat
,
float
xf
,
float
yf
,
float
scale_in
)
inline
uint8_t
BriskLayer
::
value
(
const
cv
::
Mat
&
mat
,
float
xf
,
float
yf
,
float
scale_in
)
const
{
assert
(
!
mat
.
empty
());
// get the position
...
...
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