78 auto maxItr = std::max_element(startItr, stopItr);
80 float maxValue = *maxItr;
85 auto firstItr =
std::distance(startItr, maxItr) > 2 ? maxItr - 1 : startItr;
87 while (firstItr != startItr) {
92 if (*firstItr < *(firstItr + 1) && *firstItr <= *(firstItr - 1))
break;
100 findHitCandidates(startItr, firstItr + 1, roiStartTick, planeIdx, hitCandidateVec);
103 auto lastItr =
std::distance(maxItr, stopItr) > 2 ? maxItr + 1 : stopItr - 1;
105 while (lastItr != stopItr - 1) {
110 if (*lastItr <= *(lastItr + 1) && *lastItr < *(lastItr - 1))
break;
118 HitCandidate hitCandidate;
119 hitCandidate.startTick = roiStartTick + firstTime;
120 hitCandidate.stopTick = roiStartTick + lastTime;
121 hitCandidate.maxTick = roiStartTick + firstTime;
122 hitCandidate.minTick = roiStartTick + lastTime;
123 hitCandidate.maxDerivative = *(startItr + firstTime);
124 hitCandidate.minDerivative = *(startItr + lastTime);
125 hitCandidate.hitCenter = roiStartTick + maxTime;
126 hitCandidate.hitSigma =
std::max(2.,
float(lastTime - firstTime) / 6.);
127 hitCandidate.hitHeight = maxValue;
129 hitCandidateVec.push_back(hitCandidate);
double distance(double x1, double y1, double z1, double x2, double y2, double z2)
static int max(int a, int b)