| 217 | } |
| 218 | |
| 219 | std::vector<std::map<int, int>> Model::ComputeSharedPoints() const { |
| 220 | std::vector<std::map<int, int>> shared_points(images.size()); |
| 221 | for (const auto& point : points) { |
| 222 | for (size_t i = 0; i < point.track.size(); ++i) { |
| 223 | const int image_idx1 = point.track[i]; |
| 224 | for (size_t j = 0; j < i; ++j) { |
| 225 | const int image_idx2 = point.track[j]; |
| 226 | if (image_idx1 != image_idx2) { |
| 227 | shared_points.at(image_idx1)[image_idx2] += 1; |
| 228 | shared_points.at(image_idx2)[image_idx1] += 1; |
| 229 | } |
| 230 | } |
| 231 | } |
| 232 | } |
| 233 | return shared_points; |
| 234 | } |
| 235 | |
| 236 | std::vector<std::map<int, float>> Model::ComputeTriangulationAngles( |
| 237 | const float percentile) const { |