Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 1fed9de

Browse files
committedOct 12, 2023
[sfm] code clarity
1 parent 0c17717 commit 1fed9de

File tree

1 file changed

+25
-21
lines changed

1 file changed

+25
-21
lines changed
 

‎src/aliceVision/track/TracksBuilder.cpp

+25-21
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ void mergeTracks(const feature::MapFeaturesPerView& featuresPerView, const MapIn
160160
// map of DuplicateFeatureId(x, y, scale) to
161161
// pair of (set<featureId>, node)
162162
HashMap<size_t, HashMap<feature::EImageDescriberType,
163-
HashMap<DuplicateFeatureId, std::pair<std::set<size_t>, const MapIndexToNode::mapped_type*>>>>
163+
HashMap<DuplicateFeatureId, std::pair<std::set<size_t>, MapIndexToNode::mapped_type>>>>
164164
duplicateFeaturesPerView;
165165

166166
// per viewId pair
@@ -191,38 +191,42 @@ void mergeTracks(const feature::MapFeaturesPerView& featuresPerView, const MapIn
191191
{
192192
{
193193
auto& featureI = featuresI[m._i];
194-
auto& [duplicateFeatureIdsI, duplicateFeatureNodeI] =
195-
duplicateFeaturesI[DuplicateFeatureId(featureI.x(), featureI.y(), featureI.scale())];
196194
IndexedFeaturePair pairI(I, KeypointId(descType, m._i));
197195
auto& nodeI = map_indexToNode.at(pairI);
196+
DuplicateFeatureId duplicateIdI(featureI.x(), featureI.y(), featureI.scale());
197+
auto& duplicateFeaturesI_it = duplicateFeaturesI.find(duplicateIdI);
198198
// if no duplicates yet found, add to map and update values
199-
if(duplicateFeatureNodeI == nullptr)
199+
if(duplicateFeaturesI_it == duplicateFeaturesI.end())
200+
duplicateFeaturesI[duplicateIdI] = std::make_pair(std::set<size_t>({m._i}), nodeI);
201+
else
200202
{
201-
duplicateFeatureIdsI.insert(m._i);
202-
duplicateFeatureNodeI = &nodeI;
203-
}
204-
// if not already in corresponding duplicates set, add to set and join nodes
205-
else if(duplicateFeatureIdsI.insert(m._i).second)
206-
{
207-
_d->tracksUF->join(nodeI, *duplicateFeatureNodeI);
203+
auto& duplicateFeatureIdsI = duplicateFeaturesI_it->second.first;
204+
auto& duplicateFeatureNodeI = duplicateFeaturesI_it->second.second;
205+
// if not already in corresponding duplicates set, add to set and join nodes
206+
if(duplicateFeatureIdsI.insert(m._i).second)
207+
{
208+
_d->tracksUF->join(nodeI, duplicateFeatureNodeI);
209+
}
208210
}
209211
}
210212
{
211213
auto& featureJ = featuresJ[m._j];
212-
auto& [duplicateFeatureIdsJ, duplicateFeatureNodeJ] =
213-
duplicateFeaturesJ[DuplicateFeatureId(featureJ.x(), featureJ.y(), featureJ.scale())];
214214
IndexedFeaturePair pairJ(J, KeypointId(descType, m._j));
215215
auto& nodeJ = map_indexToNode.at(pairJ);
216+
DuplicateFeatureId duplicateIdJ(featureJ.x(), featureJ.y(), featureJ.scale());
217+
auto& duplicateFeaturesJ_it = duplicateFeaturesJ.find(duplicateIdJ);
216218
// if no duplicates yet found, add to map and update values
217-
if(duplicateFeatureNodeJ == nullptr)
218-
{
219-
duplicateFeatureIdsJ.insert(m._j);
220-
duplicateFeatureNodeJ = &nodeJ;
221-
}
222-
// if not already in corresponding duplicates set, add to set and join nodes
223-
else if(duplicateFeatureIdsJ.insert(m._j).second)
219+
if(duplicateFeaturesJ_it == duplicateFeaturesJ.end())
220+
duplicateFeaturesJ[duplicateIdJ] = std::make_pair(std::set<size_t>({m._j}), nodeJ);
221+
else
224222
{
225-
_d->tracksUF->join(nodeJ, *duplicateFeatureNodeJ);
223+
auto& duplicateFeatureIdsJ = duplicateFeaturesJ_it->second.first;
224+
auto& duplicateFeatureNodeJ = duplicateFeaturesJ_it->second.second;
225+
// if not already in corresponding duplicates set, add to set and join nodes
226+
if(duplicateFeatureIdsJ.insert(m._j).second)
227+
{
228+
_d->tracksUF->join(nodeJ, duplicateFeatureNodeJ);
229+
}
226230
}
227231
}
228232
}

0 commit comments

Comments
 (0)