21 #ifndef _GROUP_RECTANGLES_H
22 #define _GROUP_RECTANGLES_H
37 #define gr_verbose false
41 void groupRectanglesOverlapped(std::vector<Candidate>::iterator first, std::vector<Candidate>::iterator last,
float m_groupThreshold )
43 for(std::vector<Candidate>::iterator i1=first; i1!=last; ++i1)
46 std::vector<float> overlapped;
47 overlapped.reserve((std::distance(first, last)*(std::distance(first, last)-1))/2);
50 for(std::vector<Candidate>::iterator i1=first; i1!=last; ++i1)
51 for(std::vector<Candidate>::iterator i2=i1; ++i2!=last; ) {
53 double rect1_area = i1->box.width()*i1->box.height();
54 double rect2_area = i2->box.width()*i2->box.height();
56 if( std::min(rect1_area, rect2_area) > 0.3 * std::max(rect1_area, rect2_area) )
57 overlapped.push_back(
boxoverlap(i1->box, i2->box, Overlap_On_Min ) );
59 overlapped.push_back(
boxoverlap(i1->box, i2->box, Overlap_On_Max ) );
65 std::vector<float>::iterator area = overlapped.begin();
66 for(std::vector<Candidate>::iterator i1=first; i1!=last; ++i1)
67 for(std::vector<Candidate>::iterator i2=i1; ++i2!=last; ++area)
68 if(*area > m_groupThreshold && (!i1->grouped || !i2->grouped))
70 if(i1->response < i2->response)
Types involved in boosting.
double boxoverlap(rect a, rect b, OverlapCriterion criterion=Overlap_On_Union)
get overlapped area
void groupRectanglesOverlapped(std::vector< Candidate >::iterator first, std::vector< Candidate >::iterator last, float m_groupThreshold)
metodo per segnare come non-candidati i rettangoli sovrapposti piu' di una determinata soglia ...
Definition: GroupRectangles.h:41