Closed xzhub closed 4 years ago
You can use the SfMTransform and select FromSingleCamera to use the orientation from one camera as origin, including orientation. You need to specify the filename for the image.
You can use a graph.mg file (--save) for the new computation graph (--pipeline) https://github.com/alicevision/AliceVision/wiki/CLI-Parameters https://github.com/alicevision/meshroom/issues/683#issuecomment-545801680
Thanks for the answer, so happy to know that the solution could be super straight forward!
After reading the document, I believe this is an option for the latest 2020 version only, am I right? Can I use it with version 2019.2? https://meshroom-manual.readthedocs.io/en/latest/node-reference/nodes/SfMTransform.html
Is there anywhere I can download a preview version of the binary file of v2020? I guess I should just try the develop branch, right?
In the Meshroom (2019.2) folder there is a file named meshroom_photogrammetry
that can be run from the cli. It has the following options:
[-h]
[--input FOLDER_OR_SFM]
[--inputImages [IMAGES [IMAGES ...]]]
[--pipeline MESHROOM_FILE]
[--overrides SETTINGS]
[--output FOLDER]
[--cache FOLDER]
[--save FILE]
[--scale {-1,1,2,4,8,16}]
[--toNode [NODE [NODE ...]]]
[--forceStatus]
[--forceCompute]
I got the saved file from meshroom v2019.2, however, there is no such section of SfMTransform, and if I check the 2019.2 version of user guide, there is no such description yet. (It's in the latest document)
Here is an example of the saved file of mushroom v2019.2. Did I miss something?
{
"header": {
"pipelineVersion": "2.2",
"releaseVersion": "2019.2.0",
"fileVersion": "1.1",
"nodesVersions": {
"MeshFiltering": "2.0",
"PrepareDenseScene": "3.0",
"ImageMatching": "1.0",
"CameraInit": "2.0",
"Publish": "1.1",
"Texturing": "5.0",
"FeatureExtraction": "1.1",
"StructureFromMotion": "2.0",
"DepthMap": "2.0",
"Meshing": "3.0",
"FeatureMatching": "2.0",
"DepthMapFilter": "3.0"
}
},
"graph": {
"CameraInit_1": {
"nodeType": "CameraInit",
"position": [
0,
0
],
"parallelization": {
"blockSize": 0,
"size": 3,
"split": 1
},
"uids": {
"0": "2b3beecae6929077fe87db44e9ec81fddd857a5e"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"viewpoints": [
{
"viewId": 1269914993,
"poseId": 1269914993,
"path": "20200611031915-b2017827-d62c-40a9-a547-a298c9c864b0_img/1efe9ce8-2a48-4d26-b44c-2bfcda734ba3.JPG",
"intrinsicId": 3294762099,
"rigId": -1,
"subPoseId": -1,
"metadata": "{\"AliceVision:SensorWidth\": \"4.890000\", \"DateTime\": \"2019:01:21 12:34:43\", \"Exif:ApertureValue\": \"1.69599\", \"Exif:BrightnessValue\": \"11.1489\", \"Exif:ColorSpace\": \"65535\", \"Exif:DateTimeDigitized\": \"2019:01:21 12:34:43\", \"Exif:DateTimeOriginal\": \"2019:01:21 12:34:43\", \"Exif:ExifVersion\": \"0221\", \"Exif:ExposureBiasValue\": \"0\", \"Exif:ExposureMode\": \"0\", \"Exif:ExposureProgram\": \"2\", \"Exif:Flash\": \"16\", \"Exif:FlashPixVersion\": \"0100\", \"Exif:FocalLength\": \"4\", \"Exif:FocalLengthIn35mmFilm\": \"28\", \"Exif:LensMake\": \"Apple\", \"Exif:LensModel\": \"iPhone X back dual camera 4mm f/1.8\", \"Exif:LensSpecification\": \"4, 6, 1.8, 2.4\", \"Exif:MeteringMode\": \"5\", \"Exif:PhotographicSensitivity\": \"20\", \"Exif:PixelXDimension\": \"4032\", \"Exif:PixelYDimension\": \"3024\", \"Exif:SceneCaptureType\": \"0\", \"Exif:SensingMethod\": \"2\", \"Exif:ShutterSpeedValue\": \"11.5522\", \"Exif:SubsecTimeDigitized\": \"187\", \"Exif:SubsecTimeOriginal\": \"187\", \"Exif:WhiteBalance\": \"0\", \"Exif:YCbCrPositioning\": \"1\", \"ExposureTime\": \"0.000333\", \"FNumber\": \"1.8\", \"GPS:Altitude\": \"52.3303\", \"GPS:AltitudeRef\": \"0\", \"GPS:DateStamp\": \"2019:01:21\", \"GPS:DestBearing\": \"60.2922\", \"GPS:DestBearingRef\": \"T\", \"GPS:HPositioningError\": \"5\", \"GPS:ImgDirection\": \"60.2922\", \"GPS:ImgDirectionRef\": \"T\", \"GPS:Latitude\": \"33, 7, 41.41\", \"GPS:LatitudeRef\": \"N\", \"GPS:Longitude\": \"117, 18, 43.08\", \"GPS:LongitudeRef\": \"W\", \"GPS:Speed\": \"0.49\", \"GPS:SpeedRef\": \"K\", \"GPS:TimeStamp\": \"20, 34, 42.04\", \"ICCProfile\": \"0, 0, 2, 36, 97, 112, 112, 108, 4, 0, 0, 0, 109, 110, 116, 114, 82, 71, 66, 32, 88, 89, 90, 32, 7, 225, 0, 7, 0, 7, 0, 13, 0, 22, 0, 32, 97, 99, 115, 112, 65, 80, 80, 76, 0, 0, 0, 0, 65, 80, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... [548 x uint8]\", \"Make\": \"Apple\", \"Model\": \"iPhone X\", \"Orientation\": \"1\", \"ResolutionUnit\": \"none\", \"Software\": \"12.1.2\", \"XResolution\": \"72\", \"YResolution\": \"72\", \"apple-fi:AngleInfoRoll\": \"0\", \"apple-fi:AngleInfoYaw\": \"315\", \"apple-fi:ConfidenceLevel\": \"99\", \"apple-fi:FaceID\": \"2\", \"apple-fi:Timestamp\": \"8896170324899\", \"jpeg:subsampling\": \"4:2:0\", \"mwg-rs:Type\": \"Face\", \"oiio:ColorSpace\": \"sRGB\", \"rdf:parseType\": \"Resource\", \"stArea:h\": \"0.16299999999999998\", \"stArea:unit\": \"normalized\", \"stArea:w\": \"0.122\", \"stArea:x\": \"0.53600000000000003\", \"stArea:y\": \"0.41249999999999998\", \"stDim:h\": \"3024\", \"stDim:unit\": \"pixel\", \"stDim:w\": \"4032\"}"
},
{
"viewId": 1610555793,
"poseId": 1610555793,
"path": "20200611031915-b2017827-d62c-40a9-a547-a298c9c864b0_img/00bbdbb9-6957-41a3-8827-2c36e87963e0.JPG",
"intrinsicId": 3294762099,
"rigId": -1,
"subPoseId": -1,
"metadata": "{\"AliceVision:SensorWidth\": \"4.890000\", \"DateTime\": \"2019:01:21 12:34:45\", \"Exif:ApertureValue\": \"1.69599\", \"Exif:BrightnessValue\": \"11.3963\", \"Exif:ColorSpace\": \"65535\", \"Exif:DateTimeDigitized\": \"2019:01:21 12:34:45\", \"Exif:DateTimeOriginal\": \"2019:01:21 12:34:45\", \"Exif:ExifVersion\": \"0221\", \"Exif:ExposureBiasValue\": \"0\", \"Exif:ExposureMode\": \"0\", \"Exif:ExposureProgram\": \"2\", \"Exif:Flash\": \"16\", \"Exif:FlashPixVersion\": \"0100\", \"Exif:FocalLength\": \"4\", \"Exif:FocalLengthIn35mmFilm\": \"28\", \"Exif:LensMake\": \"Apple\", \"Exif:LensModel\": \"iPhone X back dual camera 4mm f/1.8\", \"Exif:LensSpecification\": \"4, 6, 1.8, 2.4\", \"Exif:MeteringMode\": \"5\", \"Exif:PhotographicSensitivity\": \"20\", \"Exif:PixelXDimension\": \"4032\", \"Exif:PixelYDimension\": \"3024\", \"Exif:SceneCaptureType\": \"0\", \"Exif:SensingMethod\": \"2\", \"Exif:ShutterSpeedValue\": \"11.8494\", \"Exif:SubsecTimeDigitized\": \"985\", \"Exif:SubsecTimeOriginal\": \"985\", \"Exif:WhiteBalance\": \"0\", \"Exif:YCbCrPositioning\": \"1\", \"ExposureTime\": \"0.000271003\", \"FNumber\": \"1.8\", \"GPS:Altitude\": \"51.1845\", \"GPS:AltitudeRef\": \"0\", \"GPS:DateStamp\": \"2019:01:21\", \"GPS:DestBearing\": \"61.3194\", \"GPS:DestBearingRef\": \"T\", \"GPS:HPositioningError\": \"5\", \"GPS:ImgDirection\": \"61.3194\", \"GPS:ImgDirectionRef\": \"T\", \"GPS:Latitude\": \"33, 7, 41.38\", \"GPS:LatitudeRef\": \"N\", \"GPS:Longitude\": \"117, 18, 42.99\", \"GPS:LongitudeRef\": \"W\", \"GPS:Speed\": \"0.19\", \"GPS:SpeedRef\": \"K\", \"GPS:TimeStamp\": \"20, 34, 45.05\", \"ICCProfile\": \"0, 0, 2, 36, 97, 112, 112, 108, 4, 0, 0, 0, 109, 110, 116, 114, 82, 71, 66, 32, 88, 89, 90, 32, 7, 225, 0, 7, 0, 7, 0, 13, 0, 22, 0, 32, 97, 99, 115, 112, 65, 80, 80, 76, 0, 0, 0, 0, 65, 80, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... [548 x uint8]\", \"Make\": \"Apple\", \"Model\": \"iPhone X\", \"Orientation\": \"1\", \"ResolutionUnit\": \"none\", \"Software\": \"12.1.2\", \"XResolution\": \"72\", \"YResolution\": \"72\", \"apple-fi:AngleInfoRoll\": \"0\", \"apple-fi:AngleInfoYaw\": \"0\", \"apple-fi:ConfidenceLevel\": \"364\", \"apple-fi:FaceID\": \"2\", \"apple-fi:Timestamp\": \"8896237509774\", \"jpeg:subsampling\": \"4:2:0\", \"mwg-rs:Type\": \"Face\", \"oiio:ColorSpace\": \"sRGB\", \"rdf:parseType\": \"Resource\", \"stArea:h\": \"0.17499999999999999\", \"stArea:unit\": \"normalized\", \"stArea:w\": \"0.13100000000000001\", \"stArea:x\": \"0.44450000000000001\", \"stArea:y\": \"0.40349999999999997\", \"stDim:h\": \"3024\", \"stDim:unit\": \"pixel\", \"stDim:w\": \"4032\"}"
},
{
"viewId": 2064852012,
"poseId": 2064852012,
"path": "20200611031915-b2017827-d62c-40a9-a547-a298c9c864b0_img/e80d70c0-0a50-4534-a159-06d16320e8d9.JPG",
"intrinsicId": 3294762099,
"rigId": -1,
"subPoseId": -1,
"metadata": "{\"AliceVision:SensorWidth\": \"4.890000\", \"DateTime\": \"2019:01:21 12:34:44\", \"Exif:ApertureValue\": \"1.69599\", \"Exif:BrightnessValue\": \"11.3021\", \"Exif:ColorSpace\": \"65535\", \"Exif:DateTimeDigitized\": \"2019:01:21 12:34:44\", \"Exif:DateTimeOriginal\": \"2019:01:21 12:34:44\", \"Exif:ExifVersion\": \"0221\", \"Exif:ExposureBiasValue\": \"0\", \"Exif:ExposureMode\": \"0\", \"Exif:ExposureProgram\": \"2\", \"Exif:Flash\": \"16\", \"Exif:FlashPixVersion\": \"0100\", \"Exif:FocalLength\": \"4\", \"Exif:FocalLengthIn35mmFilm\": \"28\", \"Exif:LensMake\": \"Apple\", \"Exif:LensModel\": \"iPhone X back dual camera 4mm f/1.8\", \"Exif:LensSpecification\": \"4, 6, 1.8, 2.4\", \"Exif:MeteringMode\": \"5\", \"Exif:PhotographicSensitivity\": \"25\", \"Exif:PixelXDimension\": \"4032\", \"Exif:PixelYDimension\": \"3024\", \"Exif:SceneCaptureType\": \"0\", \"Exif:SensingMethod\": \"2\", \"Exif:ShutterSpeedValue\": \"11.7467\", \"Exif:SubsecTimeDigitized\": \"666\", \"Exif:SubsecTimeOriginal\": \"666\", \"Exif:WhiteBalance\": \"0\", \"Exif:YCbCrPositioning\": \"1\", \"ExposureTime\": \"0.000291036\", \"FNumber\": \"1.8\", \"GPS:Altitude\": \"51.9253\", \"GPS:AltitudeRef\": \"0\", \"GPS:DateStamp\": \"2019:01:21\", \"GPS:DestBearing\": \"63.8505\", \"GPS:DestBearingRef\": \"T\", \"GPS:HPositioningError\": \"5\", \"GPS:ImgDirection\": \"63.8505\", \"GPS:ImgDirectionRef\": \"T\", \"GPS:Latitude\": \"33, 7, 41.4\", \"GPS:LatitudeRef\": \"N\", \"GPS:Longitude\": \"117, 18, 42.99\", \"GPS:LongitudeRef\": \"W\", \"GPS:Speed\": \"0.49\", \"GPS:SpeedRef\": \"K\", \"GPS:TimeStamp\": \"20, 34, 44.04\", \"ICCProfile\": \"0, 0, 2, 36, 97, 112, 112, 108, 4, 0, 0, 0, 109, 110, 116, 114, 82, 71, 66, 32, 88, 89, 90, 32, 7, 225, 0, 7, 0, 7, 0, 13, 0, 22, 0, 32, 97, 99, 115, 112, 65, 80, 80, 76, 0, 0, 0, 0, 65, 80, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... [548 x uint8]\", \"Make\": \"Apple\", \"Model\": \"iPhone X\", \"Orientation\": \"1\", \"ResolutionUnit\": \"none\", \"Software\": \"12.1.2\", \"XResolution\": \"72\", \"YResolution\": \"72\", \"apple-fi:AngleInfoRoll\": \"0\", \"apple-fi:AngleInfoYaw\": \"0\", \"apple-fi:ConfidenceLevel\": \"466\", \"apple-fi:FaceID\": \"2\", \"apple-fi:Timestamp\": \"8896206316794\", \"jpeg:subsampling\": \"4:2:0\", \"mwg-rs:Type\": \"Face\", \"oiio:ColorSpace\": \"sRGB\", \"rdf:parseType\": \"Resource\", \"stArea:h\": \"0.17499999999999999\", \"stArea:unit\": \"normalized\", \"stArea:w\": \"0.13100000000000006\", \"stArea:x\": \"0.48650000000000004\", \"stArea:y\": \"0.41249999999999998\", \"stDim:h\": \"3024\", \"stDim:unit\": \"pixel\", \"stDim:w\": \"4032\"}"
}
],
"intrinsics": [
{
"intrinsicId": 3294762099,
"pxInitialFocalLength": 3298.159509202454,
"pxFocalLength": 3298.159509202454,
"type": "radial3",
"width": 4032,
"height": 3024,
"serialNumber": "20200611031915-b2017827-d62c-40a9-a547-a298c9c864b0_img_Apple_iPhone X",
"principalPoint": {
"x": 2016.0,
"y": 1512.0
},
"initializationMode": "estimated",
"distortionParams": [
0.0,
0.0,
0.0
],
"locked": false
}
],
"sensorDatabase": "/tmp/bin/Meshroom-2019.2.0/aliceVision/share/aliceVision/cameraSensors.db",
"defaultFieldOfView": 45.0,
"groupCameraFallback": "folder",
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/cameraInit.sfm"
}
},
"FeatureExtraction_1": {
"nodeType": "FeatureExtraction",
"position": [
0,
0
],
"parallelization": {
"blockSize": 40,
"size": 3,
"split": 1
},
"uids": {
"0": "a06a47b90d331ca271a9780fa004a00dec3a2981"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{CameraInit_1.output}",
"describerTypes": [
"sift"
],
"describerPreset": "normal",
"forceCpuExtraction": true,
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/"
}
},
"ImageMatching_1": {
"nodeType": "ImageMatching",
"position": [
0,
0
],
"parallelization": {
"blockSize": 0,
"size": 3,
"split": 1
},
"uids": {
"0": "e25a5d115b41b46601bb7bb259e8fb1236cb2d5d"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{FeatureExtraction_1.input}",
"featuresFolders": [
"{FeatureExtraction_1.output}"
],
"tree": "/tmp/bin/Meshroom-2019.2.0/aliceVision/share/aliceVision/vlfeat_K80L3.SIFT.tree",
"weights": "",
"minNbImages": 200,
"maxDescriptors": 500,
"nbMatches": 50,
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/imageMatches.txt"
}
},
"FeatureMatching_1": {
"nodeType": "FeatureMatching",
"position": [
0,
0
],
"parallelization": {
"blockSize": 20,
"size": 3,
"split": 1
},
"uids": {
"0": "5b119b8d74c864b46ef54e44b08d21eaed557c97"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{ImageMatching_1.input}",
"featuresFolders": "{ImageMatching_1.featuresFolders}",
"imagePairsList": "{ImageMatching_1.output}",
"describerTypes": [
"sift"
],
"photometricMatchingMethod": "ANN_L2",
"geometricEstimator": "acransac",
"geometricFilterType": "fundamental_matrix",
"distanceRatio": 0.8,
"maxIteration": 2048,
"geometricError": 0.0,
"maxMatches": 0,
"savePutativeMatches": false,
"guidedMatching": false,
"exportDebugFiles": false,
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/"
}
},
"StructureFromMotion_1": {
"nodeType": "StructureFromMotion",
"position": [
0,
0
],
"parallelization": {
"blockSize": 0,
"size": 3,
"split": 1
},
"uids": {
"0": "167b132b1aed55edccbd6ffef3428c13a1340a4b"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{FeatureMatching_1.input}",
"featuresFolders": "{FeatureMatching_1.featuresFolders}",
"matchesFolders": [
"{FeatureMatching_1.output}"
],
"describerTypes": [
"sift"
],
"localizerEstimator": "acransac",
"localizerEstimatorMaxIterations": 4096,
"localizerEstimatorError": 0.0,
"lockScenePreviouslyReconstructed": false,
"useLocalBA": true,
"localBAGraphDistance": 1,
"maxNumberOfMatches": 0,
"minInputTrackLength": 2,
"minNumberOfObservationsForTriangulation": 2,
"minAngleForTriangulation": 3.0,
"minAngleForLandmark": 2.0,
"maxReprojectionError": 4.0,
"minAngleInitialPair": 5.0,
"maxAngleInitialPair": 40.0,
"useOnlyMatchesFromInputFolder": false,
"useRigConstraint": true,
"lockAllIntrinsics": false,
"initialPairA": "",
"initialPairB": "",
"interFileExtension": ".abc",
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/sfm.abc",
"outputViewsAndPoses": "{cache}/{nodeType}/{uid0}/cameras.sfm",
"extraInfoFolder": "{cache}/{nodeType}/{uid0}/"
}
},
"PrepareDenseScene_1": {
"nodeType": "PrepareDenseScene",
"position": [
0,
0
],
"parallelization": {
"blockSize": 40,
"size": 3,
"split": 1
},
"uids": {
"0": "77223adfe46751bf3f542f0eb7891fcdd4f195ea"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{StructureFromMotion_1.output}",
"imagesFolders": [],
"outputFileType": "exr",
"saveMetadata": true,
"saveMatricesTxtFiles": false,
"evCorrection": false,
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/",
"outputUndistorted": "{cache}/{nodeType}/{uid0}/*.{outputFileTypeValue}"
}
},
"DepthMap_1": {
"nodeType": "DepthMap",
"position": [
0,
0
],
"parallelization": {
"blockSize": 3,
"size": 3,
"split": 1
},
"uids": {
"0": "c049f30b2ef912a10acbd2cfb7d4262c70490e5c"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{PrepareDenseScene_1.input}",
"imagesFolder": "{PrepareDenseScene_1.output}",
"downscale": 2,
"minViewAngle": 2.0,
"maxViewAngle": 70.0,
"sgmMaxTCams": 10,
"sgmWSH": 4,
"sgmGammaC": 5.5,
"sgmGammaP": 8.0,
"refineMaxTCams": 6,
"refineNSamplesHalf": 150,
"refineNDepthsToRefine": 31,
"refineNiters": 100,
"refineWSH": 3,
"refineSigma": 15,
"refineGammaC": 15.5,
"refineGammaP": 8.0,
"refineUseTcOrRcPixSize": false,
"exportIntermediateResults": false,
"nbGPUs": 0,
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/"
}
},
"DepthMapFilter_1": {
"nodeType": "DepthMapFilter",
"position": [
0,
0
],
"parallelization": {
"blockSize": 10,
"size": 3,
"split": 1
},
"uids": {
"0": "1ba983caa6a4afa97c84a3d5b651e02828e0182c"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{DepthMap_1.input}",
"depthMapsFolder": "{DepthMap_1.output}",
"minViewAngle": 2.0,
"maxViewAngle": 70.0,
"nNearestCams": 10,
"minNumOfConsistentCams": 3,
"minNumOfConsistentCamsWithLowSimilarity": 4,
"pixSizeBall": 0,
"pixSizeBallWithLowSimilarity": 0,
"computeNormalMaps": false,
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/"
}
},
"Meshing_1": {
"nodeType": "Meshing",
"position": [
0,
0
],
"parallelization": {
"blockSize": 0,
"size": 1,
"split": 1
},
"uids": {
"0": "344cd24579316c95822cbbbd5fdf6cbf665eb84a"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{DepthMapFilter_1.input}",
"depthMapsFolder": "{DepthMapFilter_1.depthMapsFolder}",
"depthMapsFilterFolder": "{DepthMapFilter_1.output}",
"estimateSpaceFromSfM": true,
"estimateSpaceMinObservations": 3,
"estimateSpaceMinObservationAngle": 10,
"maxInputPoints": 50000000,
"maxPoints": 5000000,
"maxPointsPerVoxel": 1000000,
"minStep": 2,
"partitioning": "singleBlock",
"repartition": "multiResolution",
"angleFactor": 15.0,
"simFactor": 15.0,
"pixSizeMarginInitCoef": 2.0,
"pixSizeMarginFinalCoef": 4.0,
"voteMarginFactor": 4.0,
"contributeMarginFactor": 2.0,
"simGaussianSizeInit": 10.0,
"simGaussianSize": 10.0,
"minAngleThreshold": 1.0,
"refineFuse": true,
"addLandmarksToTheDensePointCloud": false,
"colorizeOutput": false,
"saveRawDensePointCloud": false,
"verboseLevel": "info"
},
"outputs": {
"outputMesh": "{cache}/{nodeType}/{uid0}/mesh.obj",
"output": "{cache}/{nodeType}/{uid0}/densePointCloud.abc"
}
},
"MeshFiltering_1": {
"nodeType": "MeshFiltering",
"position": [
0,
0
],
"parallelization": {
"blockSize": 0,
"size": 1,
"split": 1
},
"uids": {
"0": "c4380decd9dbe8090afbfb1f8150c43b403a7c4f"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"inputMesh": "{Meshing_1.outputMesh}",
"removeLargeTrianglesFactor": 60.0,
"keepLargestMeshOnly": false,
"iterations": 5,
"lambda": 1.0,
"verboseLevel": "info"
},
"outputs": {
"outputMesh": "{cache}/{nodeType}/{uid0}/mesh.obj"
}
},
"Texturing_1": {
"nodeType": "Texturing",
"position": [
0,
0
],
"parallelization": {
"blockSize": 0,
"size": 1,
"split": 1
},
"uids": {
"0": "e572dee556509780ff07f071d03785af82bdfd56"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{Meshing_1.output}",
"imagesFolder": "{DepthMap_1.imagesFolder}",
"inputMesh": "{MeshFiltering_1.outputMesh}",
"textureSide": 8192,
"downscale": 1,
"outputTextureFileType": "png",
"unwrapMethod": "Basic",
"useUDIM": true,
"fillHoles": false,
"padding": 5,
"correctEV": false,
"useScore": true,
"processColorspace": "sRGB",
"multiBandDownscale": 4,
"multiBandNbContrib": {
"high": 1,
"midHigh": 5,
"midLow": 10,
"low": 0
},
"bestScoreThreshold": 0.1,
"angleHardThreshold": 90.0,
"forceVisibleByAllVertices": false,
"flipNormals": false,
"visibilityRemappingMethod": "PullPush",
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/",
"outputMesh": "{cache}/{nodeType}/{uid0}/texturedMesh.obj",
"outputMaterial": "{cache}/{nodeType}/{uid0}/texturedMesh.mtl",
"outputTextures": "{cache}/{nodeType}/{uid0}/texture_*.{outputTextureFileTypeValue}"
}
},
"Publish_1": {
"nodeType": "Publish",
"position": [
0,
0
],
"parallelization": {
"blockSize": 0,
"size": 3,
"split": 1
},
"uids": {
"0": "97efdbfe884727c601f7a38f31ccf9d2cfa113c9"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"inputFiles": [
"{Texturing_1.outputMesh}",
"{Texturing_1.outputMaterial}",
"{Texturing_1.outputTextures}"
],
"output": "output"
},
"outputs": {}
}
}
}
When opening the Meshroom GUI, you need to add SfM transform to the graph (place it between StructureFromMotion node and PrepareDenseScene node). It is not included in the default graph.
I managed to generate the graph file with SfM transform, and try to insert a similar section for the command line version. It's something like:
meshroom_photogrammetry --input IMG \
--output OUT --save meshfile_old.txt
python modify.py meshfile_old.txt meshfile_new.txt
meshroom_photogrammetry --input IMG \
--output OUT --save meshfile_old.txt --pipeline meshfile_new.txt
However, I am getting error:
Traceback (most recent call last):
File "/opt/rh/rh-python36/root/usr/lib64/python3.6/site-packages/cx_Freeze/initscripts/__startup__.py", line 14, in run
File "/opt/Meshroom/setupInitScriptUnix.py", line 39, in run
File "bin/meshroom_photogrammetry", line 90, in <module>
File "/opt/Meshroom/meshroom/core/graph.py", line 1080, in loadGraph
File "/opt/Meshroom/meshroom/common/core.py", line 122, in func_wrapper
File "/opt/Meshroom/meshroom/core/graph.py", line 262, in load
KeyError: 'nodeType'
Plugins loaded: CameraCalibration, CameraInit, CameraLocalization, CameraRigCalibration, CameraRigLocalization, ConvertSfMFormat, DepthMap, DepthMapFilter, ExportAnimatedCamera, ExportColoredPointCloud, ExportMaya, FeatureExtraction, FeatureMatching, ImageMatching, ImageMatchingMultiSfM, KeyframeSelection, LDRToHDR, MeshDecimate, MeshDenoising, MeshFiltering, MeshResampling, Meshing, PrepareDenseScene, Publish, SfMAlignment, SfMTransform, StructureFromMotion, Texturing
0.14user 0.02system 0:00.17elapsed 99%CPU (0avgtext+0avgdata 19424maxresident)k
0inputs+16outputs (0major+5709minor)pagefaults 0swaps
Is there anything wrong with this file? could you please take a look? Thanks very much! the pipeline file meshfile_old.txt meshfile_new.txt are attached. meshfile_old.txt meshfile_new.txt
Create the new graph (without images) in the Meshroom gui and save it. Then edit the sfm file and replace absolute paths with relative paths.
Use --paramOverrides NODE.param=value to override specific settings and for setting the image to be used in the sfmtransformation node
https://github.com/alicevision/AliceVision/wiki/CLI-Parameters
I found the issue in the meshfile_new.txt, turns out that there was a bug in my code inserting the sfm section. The inserted sfm was nested inside another sfm section!
Here is the wrong one:
"SfMTransform_1": {
"SfMTransform_1": {
"nodeType": "SfMTransform",
"position": [
775,
0
],
"parallelization": {
"blockSize": 0,
"size": 3,
"split": 1
},
"uids": {
"0": "cf53d44c3a8f8cfb4b119e3289bbce7d2fee7ee8"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{StructureFromMotion_1.output}",
"method": "from_single_camera",
"transformation": "d72dd0c2-ca8d-4ce9-b9d9-26f9e5f22cac.JPG",
"landmarksDescriberTypes": [
"sift",
"akaze"
],
"scale": 10.0,
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/transformedSfM.abc"
}
}
}
And this is the correct one:
"SfMTransform_1": {
"nodeType": "SfMTransform",
"position": [
775,
0
],
"parallelization": {
"blockSize": 0,
"size": 3,
"split": 1
},
"uids": {
"0": "cf53d44c3a8f8cfb4b119e3289bbce7d2fee7ee8"
},
"internalFolder": "{cache}/{nodeType}/{uid0}/",
"inputs": {
"input": "{StructureFromMotion_1.output}",
"method": "from_single_camera",
"transformation": "96465562-9540-4692-a623-c38350e7f30c.JPG",
"landmarksDescriberTypes": [
"sift",
"akaze"
],
"scale": 10.0,
"verboseLevel": "info"
},
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/transformedSfM.abc"
}
}
Compare the 3d model generated by the new method(left) and the default pipeline(right), the result is much satisfying. Thank you natowi for the help!
Hi natowi, I'd like to reopen this question, because the current model's origin is still not ideal... I am wondering if meshroom can set the origin to the Mass(or Geometry) center of the model? And ideally the default view point should be consistent with the camera, not upside down (see the above picture, the left side one is better).
Currently we have resolved the second issue, after using the first image's camera as the origin, the model is not upside down anymore, but when I rotate it, it is circling around the camera, while what I'd like to see is that it can circle around itself.
I am wondering if meshroom can set the origin to the Mass(or Geometry) centre of the model?
Short answer: no. At the moment we don´t have tools in the 3d viewer that would allow modifying the model (selecting area, bounding box, centre point, origin, size, selection removal,...), this needs to be done in Meshlab for now.
I see... I'll explore some other command line tools to do this work. UI version software is not very convenient for large amount of model files. Please let me know if you have any recommendations.
Last, I'd like to know if SfMTransform could be added in the latter position of the graph? So that I can change it and re-run the analysis without redoing too much calculations. (most of the time I will change 'scale':1.0 and "method": "from_single_camera")
SfMTransform can only be used with sfm files. To avoid recomputing the DepthMap node, you can add the node like this:
Thank you natowi! Could you please attach the exported graph file for me? There are some lines covered by the node block so I can't really see the connections.
Remove the connection from DepthMapFilter Input and insert the SfMTransform node. From DepthMap Input -> Input SfMTransform Output-> DepthMapFilter
Look at the screenshot you shared, the SfMTransform is named SfMTransform2. Does this mean there is another SfMTransform(SfMTransform1) in between StructureFromMotion node and PrepareDenseScene?
No, I was just testing a few things in the same graph.
When opening the Meshroom GUI, you need to add SfM transform to the graph (place it between StructureFromMotion node and PrepareDenseScene node). It is not included in the default graph.
Is this still the correct usage in 2021 version Meshroom, that place SfMTransform in between StructureFromMotion node and PrepareDenseScene node? I think this SfMTransform is not working properly now. The new version SfMtransform has different output files:
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/sfm.abc",
"outputViewsAndPoses": "{cache}/{nodeType}/{uid0}/cameras.sfm"
}
comparing to the v2019:
"outputs": {
"output": "{cache}/{nodeType}/{uid0}/transformedSfM.abc"
}
Describe the problem I am using meshroom command line pipeline to build 3d model from a folder of images. Just like this(all default parameters):
The model is good, but the default view point is always wired, I have to drag my mouse a long time to find a good view position.
I'd like to know if there is a way, to tell mushroom use the first image's camera position as the default camera position in the output 3d model file?
Desktop (please complete the following and other pertinent information):