//TODO must use x,y,x1,y1, to not depends on SIOPointFeature class
 IndMatchDecorator(const std::vector<IndMatch> & vec_matches,
   const std::vector<SIOPointFeature> & rightFeat,
   const std::vector<SIOPointFeature> & leftFeat)
   :_vec_matches(vec_matches)
 {
   for (size_t i = 0; i < vec_matches.size(); ++i) {
     const size_t I = vec_matches[i]._i;
     const size_t J = vec_matches[i]._j;
     _vecDecoredMatches.push_back(
       IndMatchDecoratorStruct(rightFeat[I].x(),rightFeat[I].y(),
       leftFeat[J].x(), leftFeat[J].y(), vec_matches[i]));
   }
 }
 IndMatchDecorator(const std::vector<IndMatch> & vec_matches,
   const Mat & leftFeat,
   const Mat & rightFeat)
   :_vec_matches(vec_matches)
 {
   for (size_t i = 0; i < vec_matches.size(); ++i) {
     const size_t I = vec_matches[i]._i;
     const size_t J = vec_matches[i]._j;
     _vecDecoredMatches.push_back(
       IndMatchDecoratorStruct(leftFeat.col(I)(0),leftFeat.col(I)(1),
       rightFeat.col(J)(0), rightFeat.col(J)(1), vec_matches[i]));
   }
 }
 IndMatchDecorator
 (
   const std::vector<IndMatch> & vec_matches,
   const std::vector<features::PointFeature> & leftFeat,
   const std::vector<features::PointFeature> & rightFeat
 )
 :vec_matches_(vec_matches)
 {
   for (size_t i = 0; i < vec_matches.size(); ++i) {
     const size_t I = vec_matches[i].i_;
     const size_t J = vec_matches[i].j_;
     vecDecoredMatches_.push_back(
       IndMatchDecoratorStruct(leftFeat[I].x(),leftFeat[I].y(),
       rightFeat[J].x(), rightFeat[J].y(), vec_matches[i]));
   }
 }
 IndMatchDecorator
 (
   const std::vector<IndMatch> & vec_matches,
   const std::vector<features::PointFeature> & leftFeat,
   const std::vector<features::PointFeature> & rightFeat
 )
 :vec_matches_(vec_matches)
 {
   for ( const auto & cur_vec_match : vec_matches )
   {
     const size_t I = cur_vec_match.i_;
     const size_t J = cur_vec_match.j_;
     vecDecoredMatches_.push_back(
       IndMatchDecoratorStruct(leftFeat[I].x(),leftFeat[I].y(),
       rightFeat[J].x(), rightFeat[J].y(), cur_vec_match));
   }
 }
 IndMatchDecorator
 (
   const std::vector<IndMatch> & vec_matches,
   const Mat & leftFeat,
   const Mat & rightFeat
 )
 :vec_matches_(vec_matches)
 {
   for ( const auto & cur_vec_match : vec_matches )
   {
     const size_t I = cur_vec_match.i_;
     const size_t J = cur_vec_match.j_;
     vecDecoredMatches_.push_back(
       IndMatchDecoratorStruct(leftFeat.col(I)(0),leftFeat.col(I)(1),
       rightFeat.col(J)(0), rightFeat.col(J)(1), cur_vec_match));
   }
 }