associate obstales by 2D information associated obstacles with tracking id should be filled, required, smoothed 2D&3D information can be filled, optional.
426 {
427
429 frame_buffer_.push_back(frame);
430
431 std::shared_ptr<CameraTrackingFrame> cur_frame_ptr = frame_buffer_.back();
432 for (auto frame_ptr : frame_buffer_) {
433 int pre_frame_id = frame_ptr->frame_id;
434 int cur_frame_id = cur_frame_ptr->frame_id;
435 similar_->Calc(frame_ptr.get(), cur_frame_ptr.get(),
436 similar_map_.
get(pre_frame_id, cur_frame_id).get());
437 }
438
439
440 for (auto &target : targets_) {
441 target.RemoveOld(frame_buffer_.front()->frame_id);
442 ++target.lost_age;
443 }
444
445 ClearTargets();
446
448
450 for (size_t i = 0; i < frame->detected_objects.size(); ++i) {
452 track_ptr->object = frame->detected_objects[i];
453 track_ptr->object->id = static_cast<int>(i);
454 track_ptr->timestamp = frame->timestamp;
455 track_ptr->indicator = PatchIndicator(frame->frame_id, static_cast<int>(i),
456 frame->data_provider->sensor_name());
457 track_ptr->object->camera_supplement.sensor_name =
458 frame->data_provider->sensor_name();
459 ProjectBox(frame->detected_objects[i]->camera_supplement.box,
460 frame->project_matrix, &(track_ptr->projected_box));
461 track_objects.push_back(track_ptr);
462 }
463
464 used_.clear();
465 used_.resize(frame->detected_objects.size(), false);
466
467
468 GenerateHypothesis(track_objects);
469
470
471 int new_count = CreateNewTarget(track_objects);
472 AINFO <<
"Create " << new_count <<
" new target";
473
474 for (auto &target : targets_) {
475
477 AINFO <<
"Target " << target.id <<
" is lost";
478 target.Clear();
479 } else {
480
481 target.UpdateType(frame.get());
482
483 target.Update2D(frame.get());
484 }
485 }
486
487
488 CombineDuplicateTargets();
489
490
491 Eigen::Matrix3d inverse_project = frame->project_matrix.inverse();
492 for (auto &target : targets_) {
493 if (!target.isLost()) {
494 ProjectBox(target[-1]->projected_box, inverse_project,
495 &(target[-1]->object->camera_supplement.box));
496 RefineBox(target[-1]->object->camera_supplement.box, width_, height_,
497 &(target[-1]->object->camera_supplement.box));
498 }
499 }
500 return true;
501}
void CorrectSize(CameraTrackingFrame *frame)
static bool set_device_id(int device_id)
std::vector< TrackObjectPtr > TrackObjectPtrs
std::shared_ptr< TrackObject > TrackObjectPtr
void ProjectBox(const base::BBox2DF &box_origin, const Eigen::Matrix3d &transform, base::BBox2DF *box_projected)
void RefineBox(const base::Rect< T > &box_in, const T width, const T height, base::Rect< T > *box_out)
optional int32 reserve_age
const std::shared_ptr< base::Blob< float > > get(int frame1, int frame2) const