Skip to content

Commit 3c8ae2b

Browse files
committed
Merge branch '240-lk-optical-flow' into 'master'
Update missing frame computation Closes #240 See merge request ped-dyn-emp/petrack!177
2 parents f6eaf14 + afb6b3b commit 3c8ae2b

File tree

5 files changed

+2017
-1779
lines changed

5 files changed

+2017
-1779
lines changed

include/helper.h

+19
Original file line numberDiff line numberDiff line change
@@ -285,4 +285,23 @@ inline clock_t getElapsedTime()
285285
return diffTime;
286286
}
287287

288+
/**
289+
* Computes the median of the values in a given vector.
290+
* @tparam T any sortable type
291+
* @param data vector for which the median should be computed
292+
* @return median of all values in data
293+
*/
294+
template <typename T>
295+
T computeMedian(std::vector<T> data)
296+
{
297+
if((data.size() % 2) != 0U)
298+
{
299+
std::nth_element(data.begin(), data.begin() + data.size() / 2, data.end());
300+
return data[data.size() / 2];
301+
}
302+
303+
std::nth_element(data.begin(), data.begin() + data.size() / 2, data.end());
304+
std::nth_element(data.begin(), data.begin() + (data.size() - 1) / 2, data.end());
305+
return 0.5 * (data[data.size() / 2] + data[(data.size() - 1) / 2]);
306+
}
288307
#endif

include/trackerReal.h

+23-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@
3030

3131
class PersonStorage;
3232

33+
struct MissingFrame
34+
{
35+
size_t mNumber; //< frame number, where mCount of frames are missing
36+
int mCount; //< count of frames missing between frame mNumber and mNumber+1
37+
};
38+
3339
// point in x/y in cm
3440
class TrackPointReal : public Vec3F
3541
{
@@ -139,6 +145,7 @@ class TrackerReal : public QList<TrackPersonReal>
139145
// mControlWidget->getColorPlot()
140146
// petrack...mImageItem
141147
int calculate(
148+
Petrack *petrack,
142149
Tracker *tracker,
143150
ImageItem *imageItem,
144151
ColorPlot *colorPlot,
@@ -171,8 +178,22 @@ class TrackerReal : public QList<TrackPersonReal>
171178
bool exportAngleOfView,
172179
bool exportUseM,
173180
bool exportMarkerID);
174-
void exportDat(QTextStream &out, bool alternateHeight, bool useTrackpoints); // fuer gnuplot
175-
void exportXml(QTextStream &outXml, bool alternateHeight, bool useTrackpoints);
181+
void exportDat(QTextStream &out, bool alternateHeight, bool useTrackpoints); // fuer gnuplot
182+
void exportXml(QTextStream &outXml, bool alternateHeight, bool useTrackpoints);
183+
std::vector<MissingFrame> computeDroppedFrames(Petrack *petrack);
176184
};
177185

186+
namespace utils
187+
{
188+
std::vector<MissingFrame>
189+
detectMissingFrames(const std::vector<std::unordered_map<int, double>> &displacementsPerFrame);
190+
191+
std::vector<std::unordered_map<int, double>> computeDisplacement(
192+
int minFrameNum,
193+
int maxFrameNum,
194+
Petrack *petrack,
195+
const std::vector<std::vector<cv::Point2f>> &personsInFrame,
196+
const std::vector<std::vector<int>> &idsInFrame);
197+
} // namespace utils
198+
178199
#endif

src/petrack.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -2919,6 +2919,7 @@ int Petrack::calculateRealTracker()
29192919
mMultiColorMarkerWidget->autoCorrect->isChecked() &&
29202920
mMultiColorMarkerWidget->autoCorrectOnlyExport->isChecked();
29212921
int anz = mTrackerReal->calculate(
2922+
this,
29222923
mTracker,
29232924
mImageItem,
29242925
mControlWidget->getColorPlot(),
@@ -3101,6 +3102,7 @@ void Petrack::exportTracker(QString dest) // default = ""
31013102
tstart = clock();
31023103
#endif
31033104
mTrackerReal->calculate(
3105+
this,
31043106
mTracker,
31053107
mImageItem,
31063108
mControlWidget->getColorPlot(),
@@ -3221,6 +3223,7 @@ void Petrack::exportTracker(QString dest) // default = ""
32213223
mPersonStorage.recalcHeight(mControlWidget->coordAltitude->value());
32223224
}
32233225
mTrackerReal->calculate(
3226+
this,
32243227
mTracker,
32253228
mImageItem,
32263229
mControlWidget->getColorPlot(),
@@ -3279,6 +3282,7 @@ void Petrack::exportTracker(QString dest) // default = ""
32793282
}
32803283

32813284
mTrackerReal->calculate(
3285+
this,
32823286
mTracker,
32833287
mImageItem,
32843288
mControlWidget->getColorPlot(),

0 commit comments

Comments
 (0)