mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-08-03 00:38:41 +02:00
[reconstruction] use multiview.sfmAugmentation
use centralized 'sfmAugmentation' method + create MVS pipeline when augmenting the reconstruction
This commit is contained in:
parent
d4c0d4cb36
commit
5740a0a9b2
1 changed files with 8 additions and 26 deletions
|
@ -245,7 +245,7 @@ class Reconstruction(UIGraph):
|
|||
sfmNodes = self._graph.nodesFromNode(self._cameraInits[0], 'StructureFromMotion')[0]
|
||||
return sfmNodes[-1] if sfmNodes else None
|
||||
|
||||
def addSfmAugmentation(self):
|
||||
def addSfmAugmentation(self, withMVS=False):
|
||||
"""
|
||||
Create a new augmentation step connected to the last SfM node of this Reconstruction and
|
||||
return the created CameraInit and SfM nodes.
|
||||
|
@ -253,6 +253,9 @@ class Reconstruction(UIGraph):
|
|||
If the Reconstruction is not initialized (empty initial CameraInit), this method won't
|
||||
create anything and return initial CameraInit and SfM nodes.
|
||||
|
||||
Args:
|
||||
withMVS (bool): whether to create the MVS pipeline after the augmentation
|
||||
|
||||
Returns:
|
||||
Node, Node: CameraInit, StructureFromMotion
|
||||
"""
|
||||
|
@ -267,31 +270,10 @@ class Reconstruction(UIGraph):
|
|||
return self._cameraInit, sfm
|
||||
|
||||
with self.groupedGraphModification("SfM Augmentation"):
|
||||
# instantiate sfm augmentation chain
|
||||
cameraInit = self.addNode('CameraInit')
|
||||
featureExtraction = self.addNode('FeatureExtraction')
|
||||
imageMatching = self.addNode('ImageMatchingMultiSfM')
|
||||
featureMatching = self.addNode('FeatureMatching')
|
||||
structureFromMotion = self.addNode('StructureFromMotion')
|
||||
sfm, mvs = multiview.sfmAugmentation(self, self.lastSfmNode(), withMVS=withMVS)
|
||||
|
||||
edges = (
|
||||
(cameraInit.output, featureExtraction.input),
|
||||
(featureExtraction.input, imageMatching.input),
|
||||
(featureExtraction.output, imageMatching.featuresFolder),
|
||||
(imageMatching.featuresFolder, featureMatching.featuresFolder),
|
||||
(imageMatching.outputCombinedSfM, featureMatching.input),
|
||||
(imageMatching.output, featureMatching.imagePairsList),
|
||||
(featureMatching.input, structureFromMotion.input),
|
||||
(featureMatching.featuresFolder, structureFromMotion.featuresFolder),
|
||||
(featureMatching.output, structureFromMotion.matchesFolder),
|
||||
)
|
||||
for src, dst in edges:
|
||||
self.addEdge(src, dst)
|
||||
|
||||
# connect last SfM node to ImageMatchingMultiSfm
|
||||
self.addEdge(sfm.output, imageMatching.inputB)
|
||||
self.sfmAugmented.emit(cameraInit, structureFromMotion)
|
||||
return cameraInit, structureFromMotion
|
||||
self.sfmAugmented.emit(sfm[0], mvs[-1])
|
||||
return sfm[0], sfm[-1]
|
||||
|
||||
def allImagePaths(self):
|
||||
""" Get all image paths in the reconstruction. """
|
||||
|
@ -387,7 +369,7 @@ class Reconstruction(UIGraph):
|
|||
# are updated after "addSfmAugmentation" (useful for auto layout)
|
||||
with self.groupedGraphModification(commandTitle, disableUpdates=False):
|
||||
if augmentSfM:
|
||||
cameraInit, self.sfm = self.addSfmAugmentation()
|
||||
cameraInit, self.sfm = self.addSfmAugmentation(withMVS=True)
|
||||
with self.groupedGraphModification("Set Views and Intrinsics"):
|
||||
self.setAttribute(cameraInit.viewpoints, views)
|
||||
self.setAttribute(cameraInit.intrinsics, intrinsics)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue