20 setWindowTitle(
"Match matrix");
32 std::sort(images.begin(), images.end(),
34 return image1.Name() < image2.Name();
39 match_matrix.
Allocate(images.size(), images.size(),
true);
43 std::unordered_map<image_t, size_t> image_id_to_idx;
44 for (
size_t idx = 0; idx < images.size(); ++idx) {
45 image_id_to_idx.emplace(images[idx].ImageId(), idx);
48 std::vector<std::pair<image_t, image_t>> image_pairs;
49 std::vector<int> num_inliers;
53 if (!num_inliers.empty()) {
54 const double max_value = std::log1p(
55 *std::max_element(num_inliers.begin(), num_inliers.end()));
56 for (
size_t i = 0; i < image_pairs.size(); ++i) {
57 const double value = std::log1p(num_inliers[i]) / max_value;
58 const size_t idx1 = image_id_to_idx.at(image_pairs[i].first);
59 const size_t idx2 = image_id_to_idx.at(image_pairs[i].second);
The Image class stores image with customizable width, height, num of channels and bytes per channel.
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
Generic file read and write utility for python interface.