38 setWindowTitle(
"Match matrix");
50 std::sort(images.begin(), images.end(),
52 return image1.Name() < image2.Name();
57 match_matrix.
Allocate(images.size(), images.size(),
true);
61 std::unordered_map<image_t, size_t> image_id_to_idx;
62 for (
size_t idx = 0; idx < images.size(); ++idx) {
63 image_id_to_idx.emplace(images[idx].ImageId(), idx);
66 std::vector<std::pair<image_t, image_t>> image_pairs;
67 std::vector<int> num_inliers;
71 if (!num_inliers.empty()) {
72 const double max_value =
73 std::log1p(*std::max_element(num_inliers.begin(), num_inliers.end()));
74 for (
size_t i = 0; i < image_pairs.size(); ++i) {
75 const double value = std::log1p(num_inliers[i]) / max_value;
76 const size_t idx1 = image_id_to_idx.at(image_pairs[i].first);
77 const size_t idx2 = image_id_to_idx.at(image_pairs[i].second);
bool SetPixel(const int x, const int y, const BitmapColor< uint8_t > &color)
void Fill(const BitmapColor< uint8_t > &color)
bool Allocate(const int width, const int height, const bool as_rgb)
void ReadTwoViewGeometryNumInliers(std::vector< std::pair< image_t, image_t >> *image_pairs, std::vector< int > *num_inliers) const
std::vector< Image > ReadAllImages() const
static float Red(const float gray)
static float Blue(const float gray)
static float Green(const float gray)
std::shared_ptr< std::string > database_path