Skip to content

Commit 1dfd3df

Browse files
author
zouxiang
committed
Refactoring for Euclidean distance
1 parent 233b9c4 commit 1dfd3df

1 file changed

Lines changed: 34 additions & 18 deletions

File tree

src/Tracker/Ctracker.cpp

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class CTracker final : public BaseTracker
1414
CTracker(CTracker&&) = delete;
1515
CTracker& operator=(const CTracker&) = delete;
1616
CTracker& operator=(CTracker&&) = delete;
17-
17+
1818
~CTracker(void) = default;
1919

2020
void Update(const regions_t& regions, cv::UMat currFrame, float fps) override;
@@ -41,6 +41,8 @@ class CTracker final : public BaseTracker
4141
void CreateDistaceMatrix(const regions_t& regions, const std::vector<RegionEmbedding>& regionEmbeddings, distMatrix_t& costMatrix, track_t maxPossibleCost, track_t& maxCost);
4242
void UpdateTrackingState(const regions_t& regions, cv::UMat currFrame, float fps);
4343
void CalcEmbeddins(std::vector<RegionEmbedding>& regionEmbeddings, const regions_t& regions, cv::UMat currFrame) const;
44+
45+
track_t GetEllipseDist(const CTrack& trackRef, const CRegion& reg);
4446
};
4547
// ----------------------------------------------------------------------
4648

@@ -396,26 +398,12 @@ void CTracker::CreateDistaceMatrix(const regions_t& regions,
396398
{
397399
const auto& track = m_tracks[i];
398400

399-
// call kalman prediction fist
401+
// call kalman prediction fist
400402
if (track->GetFilterObjectSize())
401403
track->KalmanPredictRect();
402404
else
403405
track->KalmanPredictPoint();
404406

405-
// Calc predicted area for track
406-
cv::Size_<track_t> minRadius;
407-
if (m_settings.m_minAreaRadiusPix < 0)
408-
{
409-
minRadius.width = m_settings.m_minAreaRadiusK * track->LastRegion().m_rrect.size.width;
410-
minRadius.height = m_settings.m_minAreaRadiusK * track->LastRegion().m_rrect.size.height;
411-
}
412-
else
413-
{
414-
minRadius.width = m_settings.m_minAreaRadiusPix;
415-
minRadius.height = m_settings.m_minAreaRadiusPix;
416-
}
417-
cv::RotatedRect predictedArea = track->CalcPredictionEllipse(minRadius);
418-
419407
// Calc distance between track and regions
420408
for (size_t j = 0; j < regions.size(); ++j)
421409
{
@@ -426,11 +414,12 @@ void CTracker::CreateDistaceMatrix(const regions_t& regions,
426414
{
427415
dist = 0;
428416
size_t ind = 0;
417+
429418
// Euclidean distance between centers
430419
if (m_settings.m_distType[ind] > 0.0f && ind == tracking::DistCenters)
431420
{
432421
#if 1
433-
track_t ellipseDist = track->IsInsideArea(reg.m_rrect.center, predictedArea);
422+
track_t ellipseDist = GetEllipseDist(*track, reg);
434423
if (ellipseDist > 1)
435424
dist += m_settings.m_distType[ind];
436425
else
@@ -445,7 +434,7 @@ void CTracker::CreateDistaceMatrix(const regions_t& regions,
445434
if (m_settings.m_distType[ind] > 0.0f && ind == tracking::DistRects)
446435
{
447436
#if 1
448-
track_t ellipseDist = track->IsInsideArea(reg.m_rrect.center, predictedArea);
437+
track_t ellipseDist = GetEllipseDist(*track, reg);
449438
if (ellipseDist < 1)
450439
{
451440
track_t dw = track->WidthDist(reg);
@@ -571,6 +560,33 @@ void CTracker::CalcEmbeddins(std::vector<RegionEmbedding>& regionEmbeddings, con
571560
}
572561
}
573562

563+
///
564+
/// \brief CTracker::GetEllipseDist
565+
/// \param trackRef
566+
/// \param reg
567+
/// \return
568+
///
569+
track_t CTracker::GetEllipseDist(const CTrack& trackRef, const CRegion& reg)
570+
{
571+
cv::Size_<track_t> minRadius;
572+
573+
if (m_settings.m_minAreaRadiusPix < 0)
574+
{
575+
minRadius.width = m_settings.m_minAreaRadiusK * trackRef.LastRegion().m_rrect.size.width;
576+
minRadius.height = m_settings.m_minAreaRadiusK * trackRef.LastRegion().m_rrect.size.height;
577+
}
578+
else
579+
{
580+
minRadius.width = m_settings.m_minAreaRadiusPix;
581+
minRadius.height = m_settings.m_minAreaRadiusPix;
582+
}
583+
584+
// Calc predicted area for track
585+
cv::RotatedRect predictedArea = trackRef.CalcPredictionEllipse(minRadius);
586+
587+
return trackRef.IsInsideArea(reg.m_rrect.center, predictedArea);
588+
}
589+
574590
///
575591
/// BaseTracker::CreateTracker
576592
///

0 commit comments

Comments
 (0)