| 199 | } |
| 200 | |
| 201 | void |
| 202 | SkeletonTracker::createDistanceMatrix() |
| 203 | { |
| 204 | distance_matrix_ = cv::Mat_<double>(tracks_.size(), detections_.size()); |
| 205 | int track = 0; |
| 206 | for(std::list<SkeletonTrack*>::const_iterator it = tracks_.begin(), |
| 207 | end = tracks_.end(); it != end; it++) |
| 208 | { |
| 209 | SkeletonTrack* t = *it; |
| 210 | int measure = 0; |
| 211 | for(std::vector<open_ptrack::detection::SkeletonDetection>::iterator |
| 212 | dit = detections_.begin(), dend = detections_.end(); dit != dend; dit++) |
| 213 | { |
| 214 | double detector_likelihood; |
| 215 | |
| 216 | // Compute detector likelihood: |
| 217 | if (detector_likelihood_) |
| 218 | { |
| 219 | detector_likelihood = dit->getConfidence(); |
| 220 | // detector_likelihood = log((dit->getConfidence() + 3) / 6); |
| 221 | } |
| 222 | else |
| 223 | { |
| 224 | detector_likelihood = 0; |
| 225 | } |
| 226 | |
| 227 | // Compute motion likelihood: |
| 228 | double motion_likelihood = t->getMahalanobisDistance( |
| 229 | dit->getWorldCentroid()(0), |
| 230 | dit->getWorldCentroid()(1), |
| 231 | dit->getSource()->getTime()); |
| 232 | |
| 233 | // Compute joint likelihood and put it in the distance matrix: |
| 234 | |
| 235 | distance_matrix_(track, measure++) = |
| 236 | likelihood_weights_[0] * detector_likelihood + |
| 237 | likelihood_weights_[1] * motion_likelihood; |
| 238 | |
| 239 | // Remove NaN and inf: |
| 240 | if (std::isnan(distance_matrix_(track, measure-1)) |
| 241 | or (not std::isfinite(distance_matrix_(track, measure-1)))) |
| 242 | distance_matrix_(track, measure-1) = 2*gate_distance_; |
| 243 | } |
| 244 | track++; |
| 245 | } |
| 246 | } |
| 247 | |
| 248 | void |
| 249 | SkeletonTracker::updateDetectedTracks() |
nothing calls this directly
no test coverage detected