<commit_before>
// Copyright (c) 2015 <NAME>.

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

#pragma once

#include "openMVG/numeric/numeric.h"
#include "openMVG/sfm/sfm_data.hpp"
#include "openMVG/sfm/pipelines/sfm_regions_provider.hpp"

namespace openMVG {
namespace sfm {

struct Image_Localizer_Match_Data
{
  Mat34 projection_matrix;
  Mat pt3D;
  Mat pt2D;
  std::vector<size_t> vec_inliers;
  // Upper bound pixel(s) tolerance for residual errors
  double error_max = std::numeric_limits<double>::infinity();
  size_t max_iteration = 4096;
};

class SfM_Localizer
{
public:
  virtual ~SfM_Localizer() {}

  /**<commit_msg>[Localization] Comment attributes in Image_Localizer_Match_Data structure.<commit_after>
// Copyright (c) 2015 <NAME>.

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

#pragma once

#include "openMVG/numeric/numeric.h"
#include "openMVG/sfm/sfm_data.hpp"
#include "openMVG/sfm/pipelines/sfm_regions_provider.hpp"

namespace openMVG {
namespace sfm {

struct Image_Localizer_Match_Data
{
  Mat34 projection_matrix; // 3x4 matrix represented the estimated camera pose.
  
  Mat pt3D; // 3xN matrix storing all the 3D points whose images have been found
            // in the query view through the feature matching procedure.
  
  Mat pt2D; // 2xN matrix storing all 2D points associated to 3D points (pt3D)
            // found through the feature matching procedure.
  
  // pt2D and pt3D have the same number of columns.
            
  std::vector<size_t> vec_inliers; // Index mask for both pt3D and pt2D whose elements
                                   // represent the column indices of inliers in  pt2D 
                                   // and pt3D.   
  
  // Upper bound pixel(s) tolerance for residual errors
  double error_max = std::numeric_limits<double>::infinity();
  size_t max_iteration = 4096;
};

class SfM_Localizer
{
public:
  virtual ~SfM_Localizer() {}

  /**
{'fraction_non_alphanumeric': 0.09262589928057553, 'fraction_numerical': 0.02068345323741007, 'mean_word_length': 3.1356877323420074, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5933132', 'n_tokens_mistral': 757, 'n_tokens_neox': 699, 'n_words': 236}