mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-04-28 17:57:16 +02:00
Merge pull request #2582 from alicevision/dev/sfmFilter
New MultiView Photometric Stereo pipeline and new sfmFilter node
This commit is contained in:
commit
0aa163d603
3 changed files with 340 additions and 5 deletions
57
meshroom/nodes/aliceVision/SfMFilter.py
Normal file
57
meshroom/nodes/aliceVision/SfMFilter.py
Normal file
|
@ -0,0 +1,57 @@
|
|||
__version__ = "1.0"
|
||||
|
||||
from meshroom.core import desc
|
||||
from meshroom.core.utils import VERBOSE_LEVEL
|
||||
|
||||
|
||||
class SfMFilter(desc.CommandLineNode):
|
||||
commandLine = 'aliceVision_sfmFilter {allParams}'
|
||||
category = 'Utils'
|
||||
documentation = '''
|
||||
This node allows select views from sfmData file using a regular expresion.
|
||||
'''
|
||||
|
||||
inputs = [
|
||||
desc.File(
|
||||
name="inputFile",
|
||||
label="inputFile",
|
||||
description="SfMData file.",
|
||||
value="",
|
||||
),
|
||||
desc.StringParam(
|
||||
name="fileMatchingPattern",
|
||||
label="File Matching Pattern",
|
||||
description="Matching regular expression.\n"
|
||||
"You should capture specific parts of the filepath with parentheses to define matching elements.\n"
|
||||
"Some examples of patterns:\n"
|
||||
" - Match the filename without extension (default value): "
|
||||
r'".*\/(.*?)\.\w{3}"' + "\n"
|
||||
" - Match the filename suffix after \"_\": "
|
||||
r'".*\/.*(_.*?\.\w{3})"' + "\n"
|
||||
" - Match the filename prefix before \"_\": "
|
||||
r'".*\/(.*?)_.*\.\w{3}"',
|
||||
value=r'.*\/(.*?)\.\w{3}',
|
||||
),
|
||||
desc.ChoiceParam(
|
||||
name="verboseLevel",
|
||||
label="Verbose Level",
|
||||
description="Verbosity level (fatal, error, warning, info, debug, trace).",
|
||||
values=VERBOSE_LEVEL,
|
||||
value="info",
|
||||
),
|
||||
]
|
||||
|
||||
outputs = [
|
||||
desc.File(
|
||||
name="outputSfMData_selected",
|
||||
label="SfMData_selected",
|
||||
description="Output SfMData file containing selected views.",
|
||||
value=desc.Node.internalFolder + "/selectedSfmData.sfm",
|
||||
),
|
||||
desc.File(
|
||||
name="outputSfMData_unselected",
|
||||
label="SfMData_unselected",
|
||||
description="Output SfMData file containing remaining views.",
|
||||
value=desc.Node.internalFolder + "/unselectedSfmData.sfm",
|
||||
),
|
||||
]
|
|
@ -32,12 +32,13 @@ This node allows to transfer poses and/or intrinsics form one SfM scene onto ano
|
|||
name="method",
|
||||
label="Matching Method",
|
||||
description="Matching Method:\n"
|
||||
" - from_viewid: Align cameras with same view ID.\n"
|
||||
" - from_filepath: Align cameras with a filepath matching, using 'fileMatchingPattern'.\n"
|
||||
" - from_metadata: Align cameras with matching metadata, using 'metadataMatchingList'.\n"
|
||||
" - from_intrinsicid: Copy intrinsics parameters.\n",
|
||||
" - from_viewid: Match cameras based on viewId.\n"
|
||||
" - from_filepath: Match cameras with a filepath matching, using 'fileMatchingPattern'.\n"
|
||||
" - from_metadata: Match cameras with matching metadata, using 'metadataMatchingList'.\n"
|
||||
" - from_poseid: Match cameras based on poseId.\n"
|
||||
" - from_intrinsicid: Match cameras based on intrinsicId.\n",
|
||||
value="from_viewid",
|
||||
values=["from_viewid", "from_filepath", "from_metadata", "from_intrinsicid"],
|
||||
values=["from_viewid", "from_filepath", "from_metadata", "from_poseid", "from_intrinsicid"],
|
||||
),
|
||||
desc.StringParam(
|
||||
name="fileMatchingPattern",
|
||||
|
|
277
meshroom/pipelines/multi-viewPhotometricStereo.mg
Normal file
277
meshroom/pipelines/multi-viewPhotometricStereo.mg
Normal file
|
@ -0,0 +1,277 @@
|
|||
{
|
||||
"header": {
|
||||
"pipelineVersion": "2.2",
|
||||
"releaseVersion": "2024.1.0-develop",
|
||||
"fileVersion": "2.0",
|
||||
"template": true,
|
||||
"nodesVersions": {
|
||||
"CameraInit": "11.0",
|
||||
"DepthMap": "5.0",
|
||||
"DepthMapFilter": "4.0",
|
||||
"FeatureExtraction": "1.3",
|
||||
"FeatureMatching": "2.0",
|
||||
"ImageMatching": "2.0",
|
||||
"LightingCalibration": "1.0",
|
||||
"MeshFiltering": "3.0",
|
||||
"Meshing": "7.0",
|
||||
"PhotometricStereo": "1.0",
|
||||
"PrepareDenseScene": "3.1",
|
||||
"SfMFilter": "1.0",
|
||||
"SfMTransfer": "2.1",
|
||||
"SphereDetection": "1.0",
|
||||
"StructureFromMotion": "3.3",
|
||||
"Texturing": "6.0"
|
||||
}
|
||||
},
|
||||
"graph": {
|
||||
"CameraInit_1": {
|
||||
"nodeType": "CameraInit",
|
||||
"position": [
|
||||
-400,
|
||||
200
|
||||
],
|
||||
"inputs": {
|
||||
"rawColorInterpretation": "LibRawWhiteBalancing"
|
||||
}
|
||||
},
|
||||
"DepthMapFilter_1": {
|
||||
"nodeType": "DepthMapFilter",
|
||||
"position": [
|
||||
1200,
|
||||
0
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{DepthMap_1.input}",
|
||||
"depthMapsFolder": "{DepthMap_1.output}"
|
||||
}
|
||||
},
|
||||
"DepthMap_1": {
|
||||
"nodeType": "DepthMap",
|
||||
"position": [
|
||||
1000,
|
||||
0
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{PrepareDenseScene_1.input}",
|
||||
"imagesFolder": "{PrepareDenseScene_1.output}"
|
||||
}
|
||||
},
|
||||
"FeatureExtraction_1": {
|
||||
"nodeType": "FeatureExtraction",
|
||||
"position": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{SfMFilter_1.outputSfMData_selected}"
|
||||
}
|
||||
},
|
||||
"FeatureMatching_1": {
|
||||
"nodeType": "FeatureMatching",
|
||||
"position": [
|
||||
400,
|
||||
0
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{ImageMatching_1.input}",
|
||||
"featuresFolders": "{ImageMatching_1.featuresFolders}",
|
||||
"imagePairsList": "{ImageMatching_1.output}",
|
||||
"describerTypes": "{FeatureExtraction_1.describerTypes}",
|
||||
"maxIteration": 2048
|
||||
}
|
||||
},
|
||||
"ImageMatching_1": {
|
||||
"nodeType": "ImageMatching",
|
||||
"position": [
|
||||
200,
|
||||
0
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{FeatureExtraction_1.input}",
|
||||
"featuresFolders": [
|
||||
"{FeatureExtraction_1.output}"
|
||||
]
|
||||
}
|
||||
},
|
||||
"LightingCalibration_1": {
|
||||
"nodeType": "LightingCalibration",
|
||||
"position": [
|
||||
1200,
|
||||
200
|
||||
],
|
||||
"inputs": {
|
||||
"inputPath": "{SphereDetection_1.input}",
|
||||
"inputDetection": "{SphereDetection_1.output}"
|
||||
}
|
||||
},
|
||||
"MeshFiltering_1": {
|
||||
"nodeType": "MeshFiltering",
|
||||
"position": [
|
||||
1600,
|
||||
0
|
||||
],
|
||||
"inputs": {
|
||||
"inputMesh": "{Meshing_1.outputMesh}"
|
||||
}
|
||||
},
|
||||
"Meshing_1": {
|
||||
"nodeType": "Meshing",
|
||||
"position": [
|
||||
1400,
|
||||
0
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{DepthMapFilter_1.input}",
|
||||
"depthMapsFolder": "{DepthMapFilter_1.output}"
|
||||
}
|
||||
},
|
||||
"PhotometricStereo_1": {
|
||||
"nodeType": "PhotometricStereo",
|
||||
"position": [
|
||||
1400,
|
||||
200
|
||||
],
|
||||
"inputs": {
|
||||
"inputPath": "{LightingCalibration_1.inputPath}",
|
||||
"pathToJSONLightFile": "{LightingCalibration_1.outputFile}"
|
||||
}
|
||||
},
|
||||
"PrepareDenseScene_1": {
|
||||
"nodeType": "PrepareDenseScene",
|
||||
"position": [
|
||||
800,
|
||||
0
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{StructureFromMotion_1.output}"
|
||||
}
|
||||
},
|
||||
"PrepareDenseScene_2": {
|
||||
"nodeType": "PrepareDenseScene",
|
||||
"position": [
|
||||
2200,
|
||||
200
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{PhotometricStereo_1.outputSfmDataAlbedo}"
|
||||
}
|
||||
},
|
||||
"PrepareDenseScene_3": {
|
||||
"nodeType": "PrepareDenseScene",
|
||||
"position": [
|
||||
2200,
|
||||
400
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{PhotometricStereo_1.outputSfmDataNormal}"
|
||||
}
|
||||
},
|
||||
"PrepareDenseScene_4": {
|
||||
"nodeType": "PrepareDenseScene",
|
||||
"position": [
|
||||
2200,
|
||||
600
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{PhotometricStereo_1.outputSfmDataNormalPNG}"
|
||||
}
|
||||
},
|
||||
"SfMFilter_1": {
|
||||
"nodeType": "SfMFilter",
|
||||
"position": [
|
||||
-200,
|
||||
200
|
||||
],
|
||||
"inputs": {
|
||||
"inputFile": "{CameraInit_1.output}",
|
||||
"fileMatchingPattern": ".*/.*ambiant.*"
|
||||
}
|
||||
},
|
||||
"SfMTransfer_1": {
|
||||
"nodeType": "SfMTransfer",
|
||||
"position": [
|
||||
800,
|
||||
200
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{SfMFilter_1.outputSfMData_unselected}",
|
||||
"reference": "{StructureFromMotion_1.output}",
|
||||
"method": "from_poseid"
|
||||
}
|
||||
},
|
||||
"SphereDetection_1": {
|
||||
"nodeType": "SphereDetection",
|
||||
"position": [
|
||||
1000,
|
||||
200
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{SfMTransfer_1.output}"
|
||||
}
|
||||
},
|
||||
"StructureFromMotion_1": {
|
||||
"nodeType": "StructureFromMotion",
|
||||
"position": [
|
||||
600,
|
||||
0
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{FeatureMatching_1.input}",
|
||||
"featuresFolders": "{FeatureMatching_1.featuresFolders}",
|
||||
"matchesFolders": [
|
||||
"{FeatureMatching_1.output}"
|
||||
],
|
||||
"describerTypes": "{FeatureMatching_1.describerTypes}",
|
||||
"localizerEstimatorMaxIterations": 4096
|
||||
}
|
||||
},
|
||||
"Texturing_1": {
|
||||
"nodeType": "Texturing",
|
||||
"position": [
|
||||
1800,
|
||||
0
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{Meshing_1.output}",
|
||||
"imagesFolder": "{DepthMap_1.imagesFolder}",
|
||||
"inputMesh": "{MeshFiltering_1.outputMesh}"
|
||||
}
|
||||
},
|
||||
"Texturing_2": {
|
||||
"nodeType": "Texturing",
|
||||
"position": [
|
||||
2400,
|
||||
200
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{Meshing_1.output}",
|
||||
"imagesFolder": "{PrepareDenseScene_2.output}",
|
||||
"inputMesh": "{MeshFiltering_1.outputMesh}"
|
||||
}
|
||||
},
|
||||
"Texturing_3": {
|
||||
"nodeType": "Texturing",
|
||||
"position": [
|
||||
2400,
|
||||
400
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{Meshing_1.output}",
|
||||
"imagesFolder": "{PrepareDenseScene_3.output}",
|
||||
"inputMesh": "{MeshFiltering_1.outputMesh}"
|
||||
}
|
||||
},
|
||||
"Texturing_4": {
|
||||
"nodeType": "Texturing",
|
||||
"position": [
|
||||
2400,
|
||||
600
|
||||
],
|
||||
"inputs": {
|
||||
"input": "{Meshing_1.output}",
|
||||
"imagesFolder": "{PrepareDenseScene_4.output}",
|
||||
"inputMesh": "{MeshFiltering_1.outputMesh}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue