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
d39fbb76
Commit
d39fbb76
authored
Jun 30, 2015
by
Vladimir
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixing Warnings #2
parent
17dbe91a
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
68 additions
and
88 deletions
+68
-88
tldDetector.cpp
modules/tracking/src/tldDetector.cpp
+56
-56
tldEnsembleClassifier.cpp
modules/tracking/src/tldEnsembleClassifier.cpp
+7
-8
tldEnsembleClassifier.hpp
modules/tracking/src/tldEnsembleClassifier.hpp
+0
-3
tldModel.cpp
modules/tracking/src/tldModel.cpp
+3
-11
tldModel.hpp
modules/tracking/src/tldModel.hpp
+1
-7
tldTracker.hpp
modules/tracking/src/tldTracker.hpp
+1
-3
No files found.
modules/tracking/src/tldDetector.cpp
View file @
d39fbb76
...
...
@@ -53,7 +53,7 @@ namespace cv
}
// Calculate posterior probability, that the patch belongs to the current EC model
double
TLDDetector
::
ensembleClassifierNum
(
const
uchar
*
data
)
double
TLDDetector
::
ensembleClassifierNum
(
const
uchar
*
data
)
{
double
p
=
0
;
for
(
int
k
=
0
;
k
<
(
int
)
classifiers
.
size
();
k
++
)
...
...
@@ -106,10 +106,10 @@ namespace cv
double
TLDDetector
::
ocl_Sr
(
const
Mat_
<
uchar
>&
patch
)
{
int64
e1
,
e2
,
e3
,
e4
;
double
t
;
e1
=
getTickCount
();
e3
=
getTickCount
();
//
int64 e1, e2, e3, e4;
//
double t;
//
e1 = getTickCount();
//
e3 = getTickCount();
double
splus
=
0.0
,
sminus
=
0.0
;
...
...
@@ -134,23 +134,23 @@ namespace cv
posNum
,
negNum
);
e4
=
getTickCount
();
t
=
(
e4
-
e3
)
/
getTickFrequency
()
*
1000.0
;
//
e4 = getTickCount();
//
t = (e4 - e3) / getTickFrequency()*1000.0;
//printf("Mem Cpy GPU: %f\n", t);
size_t
globSize
=
1000
;
size_t
localSize
=
128
;
e3
=
getTickCount
();
//
e3 = getTickCount();
if
(
!
k
.
run
(
1
,
&
globSize
,
&
localSize
,
true
))
printf
(
"Kernel Run Error!!!"
);
e4
=
getTickCount
();
t
=
(
e4
-
e3
)
/
getTickFrequency
()
*
1000.0
;
//
e4 = getTickCount();
//
t = (e4 - e3) / getTickFrequency()*1000.0;
//printf("Kernel Run GPU: %f\n", t);
e3
=
getTickCount
();
//
e3 = getTickCount();
Mat
resNCC
=
devNCC
.
getMat
(
ACCESS_READ
);
e4
=
getTickCount
();
t
=
(
e4
-
e3
)
/
getTickFrequency
()
*
1000.0
;
//
e4 = getTickCount();
//
t = (e4 - e3) / getTickFrequency()*1000.0;
//printf("Read Mem GPU: %f\n", t);
////Compare
...
...
@@ -174,8 +174,8 @@ namespace cv
for
(
int
i
=
0
;
i
<
*
negNum
;
i
++
)
sminus
=
std
::
max
(
sminus
,
0.5
*
(
resNCC
.
at
<
float
>
(
i
+
500
)
+
1.0
));
e2
=
getTickCount
();
t
=
(
e2
-
e1
)
/
getTickFrequency
()
*
1000.0
;
//
e2 = getTickCount();
//
t = (e2 - e1) / getTickFrequency()*1000.0;
//printf("Sr GPU: %f\n\n", t);
if
(
splus
+
sminus
==
0.0
)
...
...
@@ -185,10 +185,10 @@ namespace cv
void
TLDDetector
::
ocl_batchSrSc
(
const
Mat_
<
uchar
>&
patches
,
double
*
resultSr
,
double
*
resultSc
,
int
numOfPatches
)
{
int64
e1
,
e2
,
e3
,
e4
;
double
t
;
e1
=
getTickCount
();
e3
=
getTickCount
();
//
int64 e1, e2, e3, e4;
//
double t;
//
e1 = getTickCount();
//
e3 = getTickCount();
UMat
devPatches
=
patches
.
getUMat
(
ACCESS_READ
,
USAGE_ALLOCATE_DEVICE_MEMORY
);
UMat
devPositiveSamples
=
posExp
->
getUMat
(
ACCESS_READ
,
USAGE_ALLOCATE_DEVICE_MEMORY
);
...
...
@@ -213,25 +213,25 @@ namespace cv
negNum
,
numOfPatches
);
e4
=
getTickCount
();
t
=
(
e4
-
e3
)
/
getTickFrequency
()
*
1000.0
;
//
e4 = getTickCount();
//
t = (e4 - e3) / getTickFrequency()*1000.0;
//printf("Mem Cpy GPU: %f\n", t);
// 2 -> Pos&Neg
size_t
globSize
=
2
*
numOfPatches
*
MAX_EXAMPLES_IN_MODEL
;
size_t
localSize
=
1024
;
e3
=
getTickCount
();
//
e3 = getTickCount();
if
(
!
k
.
run
(
1
,
&
globSize
,
&
localSize
,
true
))
printf
(
"Kernel Run Error!!!"
);
e4
=
getTickCount
();
t
=
(
e4
-
e3
)
/
getTickFrequency
()
*
1000.0
;
//
e4 = getTickCount();
//
t = (e4 - e3) / getTickFrequency()*1000.0;
//printf("Kernel Run GPU: %f\n", t);
e3
=
getTickCount
();
//
e3 = getTickCount();
Mat
posNCC
=
devPosNCC
.
getMat
(
ACCESS_READ
);
Mat
negNCC
=
devNegNCC
.
getMat
(
ACCESS_READ
);
e4
=
getTickCount
();
t
=
(
e4
-
e3
)
/
getTickFrequency
()
*
1000.0
;
//
e4 = getTickCount();
//
t = (e4 - e3) / getTickFrequency()*1000.0;
//printf("Read Mem GPU: %f\n", t);
//Calculate Srs
...
...
@@ -281,8 +281,8 @@ namespace cv
e2
=
getTickCount
();
t
=
(
e2
-
e1
)
/
getTickFrequency
()
*
1000.0
;
//
e2 = getTickCount();
//
t = (e2 - e1) / getTickFrequency()*1000.0;
//printf("Sr GPU: %f\n\n", t);
}
...
...
@@ -312,9 +312,9 @@ namespace cv
return splus / (sminus + splus);
*/
int64
e1
,
e2
;
float
t
;
e1
=
getTickCount
();
//
int64 e1, e2;
//double
t;
//
e1 = getTickCount();
double
splus
=
0.0
,
sminus
=
0.0
;
Mat_
<
uchar
>
modelSample
(
STANDARD_PATCH_SIZE
,
STANDARD_PATCH_SIZE
);
int
med
=
getMedian
((
*
timeStampsPositive
));
...
...
@@ -331,8 +331,8 @@ namespace cv
modelSample
.
data
=
&
(
negExp
->
data
[
i
*
225
]);
sminus
=
std
::
max
(
sminus
,
0.5
*
(
NCC
(
modelSample
,
patch
)
+
1.0
));
}
e2
=
getTickCount
();
t
=
(
e2
-
e1
)
/
getTickFrequency
()
*
1000.0
;
//
e2 = getTickCount();
//
t = (e2 - e1) / getTickFrequency()*1000.0;
//printf("Sc: %f\n", t);
if
(
splus
+
sminus
==
0.0
)
return
0.0
;
...
...
@@ -473,10 +473,10 @@ namespace cv
std
::
vector
<
Mat
>
resized_imgs
,
blurred_imgs
;
std
::
vector
<
Point
>
varBuffer
,
ensBuffer
;
std
::
vector
<
double
>
varScaleIDs
,
ensScaleIDs
;
int64
e1
,
e2
;
double
t
;
//
int64 e1, e2;
//
double t;
e1
=
getTickCount
();
//
e1 = getTickCount();
//Detection part
//Generate windows and filter by variance
scaleID
=
0
;
...
...
@@ -505,12 +505,12 @@ namespace cv
GaussianBlur
(
resized_imgs
[
scaleID
],
tmp
,
GaussBlurKernelSize
,
0.0
f
);
blurred_imgs
.
push_back
(
tmp
);
}
while
(
size
.
width
>=
initSize
.
width
&&
size
.
height
>=
initSize
.
height
);
e2
=
getTickCount
();
t
=
(
e2
-
e1
)
/
getTickFrequency
()
*
1000.0
;
//
e2 = getTickCount();
//
t = (e2 - e1) / getTickFrequency()*1000.0;
//printf("Variance: %d\t%f\n", varBuffer.size(), t);
//Encsemble classification
e1
=
getTickCount
();
//
e1 = getTickCount();
for
(
int
i
=
0
;
i
<
(
int
)
varBuffer
.
size
();
i
++
)
{
prepareClassifiers
((
int
)
blurred_imgs
[
varScaleIDs
[
i
]].
step
[
0
]);
...
...
@@ -519,12 +519,12 @@ namespace cv
ensBuffer
.
push_back
(
varBuffer
[
i
]);
ensScaleIDs
.
push_back
(
varScaleIDs
[
i
]);
}
e2
=
getTickCount
();
t
=
(
e2
-
e1
)
/
getTickFrequency
()
*
1000.0
;
//
e2 = getTickCount();
//
t = (e2 - e1) / getTickFrequency()*1000.0;
//printf("Ensemble: %d\t%f\n", ensBuffer.size(), t);
//NN classification
e1
=
getTickCount
();
//
e1 = getTickCount();
for
(
int
i
=
0
;
i
<
(
int
)
ensBuffer
.
size
();
i
++
)
{
LabeledPatch
labPatch
;
...
...
@@ -558,8 +558,8 @@ namespace cv
maxScRect
=
labPatch
.
rect
;
}
}
e2
=
getTickCount
();
t
=
(
e2
-
e1
)
/
getTickFrequency
()
*
1000.0
;
//
e2 = getTickCount();
//
t = (e2 - e1) / getTickFrequency()*1000.0;
//printf("NN: %d\t%f\n", patches.size(), t);
if
(
maxSc
<
0
)
...
...
@@ -583,10 +583,10 @@ namespace cv
std
::
vector
<
Mat
>
resized_imgs
,
blurred_imgs
;
std
::
vector
<
Point
>
varBuffer
,
ensBuffer
;
std
::
vector
<
double
>
varScaleIDs
,
ensScaleIDs
;
int64
e1
,
e2
;
double
t
;
//
int64 e1, e2;
//
double t;
e1
=
getTickCount
();
//
e1 = getTickCount();
//Detection part
//Generate windows and filter by variance
scaleID
=
0
;
...
...
@@ -615,12 +615,12 @@ namespace cv
GaussianBlur
(
resized_imgs
[
scaleID
],
tmp
,
GaussBlurKernelSize
,
0.0
f
);
blurred_imgs
.
push_back
(
tmp
);
}
while
(
size
.
width
>=
initSize
.
width
&&
size
.
height
>=
initSize
.
height
);
e2
=
getTickCount
();
t
=
(
e2
-
e1
)
/
getTickFrequency
()
*
1000.0
;
//
e2 = getTickCount();
//
t = (e2 - e1) / getTickFrequency()*1000.0;
//printf("Variance: %d\t%f\n", varBuffer.size(), t);
//Encsemble classification
e1
=
getTickCount
();
//
e1 = getTickCount();
for
(
int
i
=
0
;
i
<
(
int
)
varBuffer
.
size
();
i
++
)
{
prepareClassifiers
((
int
)
blurred_imgs
[
varScaleIDs
[
i
]].
step
[
0
]);
...
...
@@ -629,12 +629,12 @@ namespace cv
ensBuffer
.
push_back
(
varBuffer
[
i
]);
ensScaleIDs
.
push_back
(
varScaleIDs
[
i
]);
}
e2
=
getTickCount
();
t
=
(
e2
-
e1
)
/
getTickFrequency
()
*
1000.0
;
//
e2 = getTickCount();
//
t = (e2 - e1) / getTickFrequency()*1000.0;
//printf("Ensemble: %d\t%f\n", ensBuffer.size(), t);
//NN classification
e1
=
getTickCount
();
//
e1 = getTickCount();
//Prepare batch of patches
int
numOfPatches
=
ensBuffer
.
size
();
Mat_
<
uchar
>
stdPatches
(
numOfPatches
,
225
);
...
...
@@ -690,8 +690,8 @@ namespace cv
maxScRect
=
labPatch
.
rect
;
}
}
e2
=
getTickCount
();
t
=
(
e2
-
e1
)
/
getTickFrequency
()
*
1000.0
;
//
e2 = getTickCount();
//
t = (e2 - e1) / getTickFrequency()*1000.0;
//printf("NN: %d\t%f\n", patches.size(), t);
if
(
maxSc
<
0
)
...
...
modules/tracking/src/tldEnsembleClassifier.cpp
View file @
d39fbb76
...
...
@@ -55,15 +55,14 @@ namespace cv
measurements
.
assign
(
meas
.
begin
()
+
beg
,
meas
.
begin
()
+
end
);
offset
.
assign
(
mpc
,
Point2i
(
0
,
0
));
}
// Calculate measure locations from 15x15 grid on minSize patches
// Calculate measure locations from 15x15 grid on minSize patches
void
TLDEnsembleClassifier
::
stepPrefSuff
(
std
::
vector
<
Vec4b
>&
arr
,
int
pos
,
int
len
,
int
gridSize
)
{
#if 0
#if 0
int step = len / (gridSize - 1), pref = (len - step * (gridSize - 1)) / 2;
for (int i = 0; i < (int)(sizeof(x1) / sizeof(x1[0])); i++)
arr[i] = pref + arr[i] * step;
#else
#else
int
total
=
len
-
gridSize
;
int
quo
=
total
/
(
gridSize
-
1
),
rem
=
total
%
(
gridSize
-
1
);
int
smallStep
=
quo
,
bigStep
=
quo
+
1
;
...
...
@@ -92,7 +91,7 @@ namespace cv
}
#endif
}
// Calculate offsets for classifier
void
TLDEnsembleClassifier
::
prepareClassifier
(
int
rowstep
)
{
...
...
@@ -106,7 +105,7 @@ namespace cv
}
}
}
// Integrate patch into the Ensemble Classifier model
void
TLDEnsembleClassifier
::
integrate
(
const
Mat_
<
uchar
>&
patch
,
bool
isPositive
)
{
...
...
@@ -137,7 +136,7 @@ namespace cv
return
posNum
/
(
posNum
+
negNum
);
}
// Calculate the 13-bit fern index
// Calculate the 13-bit fern index
int
TLDEnsembleClassifier
::
codeFast
(
const
uchar
*
data
)
const
{
int
position
=
0
;
...
...
@@ -188,7 +187,7 @@ namespace cv
stepPrefSuff
(
measurements
,
2
,
size
.
height
,
gridSize
);
stepPrefSuff
(
measurements
,
3
,
size
.
height
,
gridSize
);
//Compile fern classifiers
//Compile fern classifiers
for
(
int
i
=
0
,
howMany
=
(
int
)
measurements
.
size
()
/
measurePerClassifier
;
i
<
howMany
;
i
++
)
classifiers
.
push_back
(
TLDEnsembleClassifier
(
measurements
,
i
*
measurePerClassifier
,
(
i
+
1
)
*
measurePerClassifier
));
...
...
modules/tracking/src/tldEnsembleClassifier.hpp
View file @
d39fbb76
...
...
@@ -64,7 +64,5 @@ namespace cv
std
::
vector
<
Point2i
>
offset
;
int
lastStep_
;
};
}
}
\ No newline at end of file
modules/tracking/src/tldModel.cpp
View file @
d39fbb76
...
...
@@ -65,7 +65,7 @@ namespace cv
detector
->
posExp
=
&
posExp
;
detector
->
negExp
=
&
negExp
;
detector
->
positiveExamples
=
&
positiveExamples
;
detector
->
positiveExamples
=
&
positiveExamples
;
detector
->
negativeExamples
=
&
negativeExamples
;
detector
->
timeStampsPositive
=
&
timeStampsPositive
;
detector
->
timeStampsNegative
=
&
timeStampsNegative
;
...
...
@@ -73,21 +73,18 @@ namespace cv
//Calculate the variance in initial BB
originalVariance_
=
variance
(
image
(
boundingBox
));
//Find the scale
double
scale
=
scaleAndBlur
(
image
,
cvRound
(
log
(
1.0
*
boundingBox
.
width
/
(
minSize
.
width
))
/
log
(
SCALE_STEP
)),
scaledImg
,
blurredImg
,
GaussBlurKernelSize
,
SCALE_STEP
);
GaussianBlur
(
image
,
image_blurred
,
GaussBlurKernelSize
,
0.0
);
TLDDetector
::
generateScanGrid
(
image
.
rows
,
image
.
cols
,
minSize_
,
scanGrid
);
getClosestN
(
scanGrid
,
Rect2d
(
boundingBox
.
x
/
scale
,
boundingBox
.
y
/
scale
,
boundingBox
.
width
/
scale
,
boundingBox
.
height
/
scale
),
10
,
closest
);
getClosestN
(
scanGrid
,
Rect2d
(
boundingBox
.
x
/
scale
,
boundingBox
.
y
/
scale
,
boundingBox
.
width
/
scale
,
boundingBox
.
height
/
scale
),
10
,
closest
);
Mat_
<
uchar
>
blurredPatch
(
minSize
);
TLDEnsembleClassifier
::
makeClassifiers
(
minSize
,
MEASURES_PER_CLASSIFIER
,
GRIDSIZE
,
detector
->
classifiers
);
//Generate initial positive samples and put them to the model
positiveExamples
.
reserve
(
200
);
for
(
int
i
=
0
;
i
<
(
int
)
closest
.
size
();
i
++
)
{
for
(
int
j
=
0
;
j
<
20
;
j
++
)
...
...
@@ -297,9 +294,5 @@ namespace cv
dfprintf
((
port
,
"
\t
positiveExamples.size() = %d
\n
"
,
(
int
)
positiveExamples
.
size
()));
dfprintf
((
port
,
"
\t
negativeExamples.size() = %d
\n
"
,
(
int
)
negativeExamples
.
size
()));
}
}
}
\ No newline at end of file
modules/tracking/src/tldModel.hpp
View file @
d39fbb76
...
...
@@ -50,10 +50,6 @@ namespace cv
{
namespace
tld
{
class
TrackerTLDModel
:
public
TrackerModel
{
public
:
...
...
@@ -77,14 +73,12 @@ namespace cv
protected
:
Size
minSize_
;
TrackerTLD
::
Params
params_
;
void
pushIntoModel
(
const
Mat_
<
uchar
>&
example
,
bool
positive
);
void
modelEstimationImpl
(
const
std
::
vector
<
Mat
>&
/*responses*/
){}
void
modelUpdateImpl
(){}
Rect2d
boundingBox_
;
Rect2d
boundingBox_
;
RNG
rng
;
};
}
...
...
modules/tracking/src/tldTracker.hpp
View file @
d39fbb76
...
...
@@ -49,7 +49,7 @@
#include<algorithm>
#include<limits.h>
namespace
cv
namespace
cv
{
TrackerTLD
::
Params
::
Params
(){}
...
...
@@ -60,8 +60,6 @@ void TrackerTLD::Params::write(cv::FileStorage& /*fs*/) const {}
namespace
tld
{
class
TrackerProxy
{
public
:
...
...
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