Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
J
jfx_kalman_filter_src
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
oscar
jfx_kalman_filter_src
Commits
446376f6
Commit
446376f6
authored
Dec 22, 2021
by
oscar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交对iou算法的顺序的调整。
parent
e1b94301
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
55 additions
and
19 deletions
+55
-19
BaseTrack.h
BaseTracker/BaseTrack.h
+3
-0
BaseTracker.h
BaseTracker/BaseTracker.h
+7
-2
Track3D.cpp
BaseTracker/Track3D.cpp
+43
-16
Track3D.h
BaseTracker/Track3D.h
+2
-1
No files found.
BaseTracker/BaseTrack.h
View file @
446376f6
...
...
@@ -26,6 +26,9 @@ public:
virtual
bool
IsLost
();
virtual
int
GetMeasureData
(
std
::
vector
<
float
>&
data
);
virtual
int
GetIouDataOrder
(
std
::
vector
<
int
>&
order
)
=
0
;
virtual
int
GetKFDataOrder
(
std
::
vector
<
int
>&
order
)
=
0
;
virtual
double
CalculateIou
(
const
std
::
vector
<
float
>&
data
)
=
0
;
...
...
BaseTracker/BaseTracker.h
View file @
446376f6
...
...
@@ -208,6 +208,7 @@ void BaseTracker<T>::AssociateDetectionsToTrackers(const std::vector<std::vector
else
{
std
::
vector
<
std
::
vector
<
float
>
>
tracker_states
;
std
::
vector
<
int
>
iouOrder
;
for
(
auto
&
iter
:
tracks
)
{
std
::
vector
<
float
>
measure
;
...
...
@@ -219,6 +220,10 @@ void BaseTracker<T>::AssociateDetectionsToTrackers(const std::vector<std::vector
{
SDK_LOG
(
SDK_INFO
,
"GetMeasureData failed"
);
}
if
(
iouOrder
.
empty
())
{
iter
.
second
->
GetIouDataOrder
(
iouOrder
);
}
}
int
measure_size
=
detections
.
size
()
>
0
?
detections
[
0
].
size
()
:
0
;
int
tra_size
=
tracker_states
.
size
()
>
0
?
tracker_states
[
0
].
size
()
:
0
;
...
...
@@ -234,14 +239,14 @@ void BaseTracker<T>::AssociateDetectionsToTrackers(const std::vector<std::vector
{
for
(
int
j
=
0
;
j
<
measure_size
;
j
++
)
{
detect_ptr
.
get
()[
i
*
measure_size
+
j
]
=
detections
[
i
][
j
];
detect_ptr
.
get
()[
i
*
measure_size
+
j
]
=
detections
[
i
][
iouOrder
[
j
]
];
}
}
for
(
int
i
=
0
;
i
<
tracker_states
.
size
();
i
++
)
{
for
(
int
j
=
0
;
j
<
tra_size
;
j
++
)
{
tracker_ptr
.
get
()[
i
*
tra_size
+
j
]
=
tracker_states
[
i
][
j
];
tracker_ptr
.
get
()[
i
*
tra_size
+
j
]
=
tracker_states
[
i
][
iouOrder
[
j
]
];
}
}
//std::string dete_str = GetMatrixStr(detect_ptr.get(), measure_size, detections.size());
...
...
BaseTracker/Track3D.cpp
View file @
446376f6
...
...
@@ -170,21 +170,48 @@ double Track3D::CalculateIou(const std::vector<float>& data)
}
int
Track3D
::
GetMeasureData
(
std
::
vector
<
float
>&
data
)
//int Track3D::GetMeasureData(std::vector<float>& data)
//{
// std::vector<float> measure;
// if (BaseTrack::GetMeasureData(measure) == 0)
// {
// //获取的数据是外面的传入的顺序:x,y,z,theta,l,w,h
// //需要转为:x,y,z,l,w,h,thetha
// data.push_back(measure[0]);
// data.push_back(measure[1]);
// data.push_back(measure[2]);
// data.push_back(measure[4]);
// data.push_back(measure[5]);
// data.push_back(measure[6]);
// data.push_back(measure[3]);
// return 0;
// }
// return -1;
//}
int
Track3D
::
GetIouDataOrder
(
std
::
vector
<
int
>&
order
)
{
std
::
vector
<
float
>
measure
;
if
(
BaseTrack
::
GetMeasureData
(
measure
)
==
0
)
{
//获取的数据是外面的传入的顺序:x,y,z,theta,l,w,h
//需要转为:x,y,z,l,w,h,thetha
data
.
push_back
(
measure
[
0
]);
data
.
push_back
(
measure
[
1
]);
data
.
push_back
(
measure
[
2
]);
data
.
push_back
(
measure
[
4
]);
data
.
push_back
(
measure
[
5
]);
data
.
push_back
(
measure
[
6
]);
data
.
push_back
(
measure
[
3
]);
return
0
;
}
return
-
1
;
//获取的数据是外面的传入的顺序:x,y,z,theta,l,w,h
//计算iou需要转为:x,y,z,l,w,h,thetha
order
.
push_back
(
0
);
order
.
push_back
(
1
);
order
.
push_back
(
2
);
order
.
push_back
(
4
);
order
.
push_back
(
5
);
order
.
push_back
(
6
);
order
.
push_back
(
3
);
return
0
;
}
int
Track3D
::
GetKFDataOrder
(
std
::
vector
<
int
>&
order
)
{
//获取的数据是外面的传入的顺序:x,y,z,theta,l,w,h
//计算kf需要转为没有变化就返回-1
order
.
push_back
(
0
);
order
.
push_back
(
1
);
order
.
push_back
(
2
);
order
.
push_back
(
3
);
order
.
push_back
(
4
);
order
.
push_back
(
5
);
order
.
push_back
(
6
);
return
0
;
}
BaseTracker/Track3D.h
View file @
446376f6
...
...
@@ -21,7 +21,8 @@ public:
virtual
double
CalculateIou
(
const
std
::
vector
<
float
>&
data
);
virtual
int
GetMeasureData
(
std
::
vector
<
float
>&
data
);
virtual
int
GetIouDataOrder
(
std
::
vector
<
int
>&
order
);
virtual
int
GetKFDataOrder
(
std
::
vector
<
int
>&
order
);
trackOjbPtr
m_obj
=
nullptr
;
};
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