MCPcopy Create free account
hub / github.com/Smorodov/Multitarget-tracker / CalcEmbeddins

Method CalcEmbeddins

src/Tracker/Ctracker.cpp:622–674  ·  view source on GitHub ↗

\brief CTracker::CalcEmbeddins \param regionEmbeddings \param regions \param currFrame

Source from the content-addressed store, hash-verified

620/// \param currFrame
621///
622void CTracker::CalcEmbeddins(std::vector<RegionEmbedding>& regionEmbeddings, const regions_t& regions, cv::UMat currFrame) const
623{
624 if (!regions.empty())
625 {
626 regionEmbeddings.resize(regions.size());
627 // Bhatacharia distance between histograms
628 if (m_settings.m_distType[tracking::DistHist] > 0.0f)
629 {
630 for (size_t j = 0; j < regions.size(); ++j)
631 {
632 int bins = 64;
633 std::vector<int> histSize;
634 std::vector<float> ranges;
635 std::vector<int> channels;
636
637 for (int i = 0, stop = currFrame.channels(); i < stop; ++i)
638 {
639 histSize.push_back(bins);
640 ranges.push_back(0);
641 ranges.push_back(255);
642 channels.push_back(i);
643 }
644
645 std::vector<cv::UMat> regROI = { currFrame(regions[j].m_brect) };
646 cv::calcHist(regROI, channels, cv::Mat(), regionEmbeddings[j].m_hist, histSize, ranges, false);
647 cv::normalize(regionEmbeddings[j].m_hist, regionEmbeddings[j].m_hist, 0, 1, cv::NORM_MINMAX, -1, cv::Mat());
648 }
649 }
650
651 // Cosine distance between embeddings
652 if (m_settings.m_distType[tracking::DistFeatureCos] > 0.0f)
653 {
654 for (size_t j = 0; j < regions.size(); ++j)
655 {
656 if (regionEmbeddings[j].m_embedding.empty())
657 {
658 // std::cout << "Search embCalc for " << TypeConverter::Type2Str(regions[j].m_type) << ": ";
659 auto embCalc = m_embCalculators.find(regions[j].m_type);
660 if (embCalc != std::end(m_embCalculators))
661 {
662 embCalc->second->Calc(currFrame, regions[j].m_brect, regionEmbeddings[j].m_embedding);
663
664 //std::cout << "Founded! m_embedding = " << regionEmbeddings[j].m_embedding.size() << std::endl;
665 }
666 else
667 {
668 //std::cout << "Not found" << std::endl;
669 }
670 }
671 }
672 }
673 }
674}
675
676///
677/// \brief CTracker::GetEllipseDist

Callers

nothing calls this directly

Calls 6

resizeMethod · 0.80
CalcMethod · 0.80
endFunction · 0.50
emptyMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected