Structure from motion mushroom error

Can somebody help with mey error? I didnt understand what's the problem ERROR:root:Error during Graph execution Error on node "StructureFromMotion_1": Log: Program called with the fol...

I have the same issues.

Here is the log:

 - commandLine: aliceVision_incrementalSfM  --input "cache/cache/cache/cache/CameraInit/e8aec14c25db02bab43f371a3c9abc28eec32e6f/cameraInit.sfm" --featuresFolders "cache/cache/cache/cache/FeatureExtraction/7344a16d36e7fc0fbf79f8351b29c4c3b09cf39d" --matchesFolders "cache/cache/cache/cache/FeatureMatching/fd87a2abba5d7cdb94ee6704bc78b3e603930f94" --describerTypes sift --localizerEstimator acransac --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 --initialPairA "" --initialPairB "" --interFileExtension .abc --verboseLevel info --output "cache/cache/cache/cache/StructureFromMotion/0af12d223cec115fb1275dc6d551587783a2a651/sfm.abc" --outputViewsAndPoses "cache/cache/cache/cache/StructureFromMotion/0af12d223cec115fb1275dc6d551587783a2a651/cameras.sfm" --extraInfoFolder "cache/cache/cache/cache/StructureFromMotion/0af12d223cec115fb1275dc6d551587783a2a651" 
 - logFile: ./cache/cache/cache/cache/./cache/cache/cache/cache/StructureFromMotion/0af12d223cec115fb1275dc6d551587783a2a651/log
 - elapsed time: 0:00:01.139229
[2018-09-28 13:17:42,000][ERROR] Error on node computation: Error on node "StructureFromMotion_1":
Log:
Program called with the following parameters:
 * describerTypes = "sift"
 * extraInfoFolder = "cache/cache/cache/cache/StructureFromMotion/0af12d223cec115fb1275dc6d551587783a2a651"
 * featuresFolders =  = [cache/cache/cache/cache/FeatureExtraction/7344a16d36e7fc0fbf79f8351b29c4c3b09cf39d]
 * initialPairA = ""
 * initialPairB = ""
 * input = "cache/cache/cache/cache/CameraInit/e8aec14c25db02bab43f371a3c9abc28eec32e6f/cameraInit.sfm"
 * interFileExtension = ".abc"
 * localBAGraphDistance = 1
 * localizerEstimator = "acransac"
 * lockScenePreviouslyReconstructed = 0
 * matchesFolders =  = [cache/cache/cache/cache/FeatureMatching/fd87a2abba5d7cdb94ee6704bc78b3e603930f94]
 * maxAngleInitialPair = 40
 * maxNumberOfMatches = 0
 * maxReprojectionError = 4
 * minAngleForLandmark = 2
 * minAngleForTriangulation = 3
 * minAngleInitialPair = 5
 * minInputTrackLength = 2
 * minNumberOfObservationsForTriangulation = 2
 * output = "cache/cache/cache/cache/StructureFromMotion/0af12d223cec115fb1275dc6d551587783a2a651/sfm.abc"
 * outputViewsAndPoses = "cache/cache/cache/cache/StructureFromMotion/0af12d223cec115fb1275dc6d551587783a2a651/cameras.sfm"
 * refineIntrinsics = 1 (default)
 * useLocalBA = 1
 * useOnlyMatchesFromInputFolder = 0
 * useTrackFiltering = 1 (default)
 * verboseLevel = "info"

Loading features
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
[13:17:41.165173][info] Supported CUDA-Enabled GPU detected.
***************************************************
[13:17:41.212648][info] Fuse matches into tracks: 
	- # tracks: 3877
	- # images in tracks: 57
[13:17:41.212729][info] TrackLength, Occurrence
[13:17:41.212755][info] 	2	2658
[13:17:41.212766][info] 	3	582
[13:17:41.212773][info] 	4	249
[13:17:41.212780][info] 	5	152
[13:17:41.212786][info] 	6	106
[13:17:41.212792][info] 	7	61
[13:17:41.212799][info] 	8	26
[13:17:41.212805][info] 	9	27
[13:17:41.212812][info] 	10	13
[13:17:41.212819][info] 	11	2
[13:17:41.212826][info] 	12	1
Automatic selection of an initial pair:
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
******[13:17:41.212960][info] AutomaticInitialPairChoice, test I: 3428893, J: 467739138, nbCommonTracks: 53
[13:17:41.212979][info] AutomaticInitialPairChoice, test I: 3428893, J: 734796515, nbCommonTracks: 81
[13:17:41.212995][info] AutomaticInitialPairChoice, test I: 22306852, J: 24234808, nbCommonTracks: 69
[13:17:41.213017][info] AutomaticInitialPairChoice, test I: 22306852, J: 734796515, nbCommonTracks: 93
[13:17:41.213021][info] AutomaticInitialPairChoice, test I: 22306852, J: 269133861, nbCommonTracks: 75
[13:17:41.213055][info] AutomaticInitialPairChoice, test I: 22306852, J: 1444820303, nbCommonTracks: 202
[13:17:41.213059][info] AutomaticInitialPairChoice, test I: 22306852, J: 850726783, nbCommonTracks: 182
[13:17:41.213063][info] AutomaticInitialPairChoice, test I: 22306852, J: 1381303897, nbCommonTracks: 207
[13:17:41.221562][info] AutomaticInitialPairChoice, test I: 22306852, J: 1550435502, nbCommonTracks: 250
*[13:17:41.222007][info] AutomaticInitialPairChoice, test I: 22306852, J: 1611637874, nbCommonTracks: 82
[13:17:41.222972][info] AutomaticInitialPairChoice, test I: 22306852, J: 1772777439, nbCommonTracks: 214
*[13:17:41.223261][info] AutomaticInitialPairChoice, test I: 24234808, J: 850726783, nbCommonTracks: 87
[13:17:41.223829][info] AutomaticInitialPairChoice, test I: 24234808, J: 2004139730, nbCommonTracks: 57
*[13:17:41.226298][info] AutomaticInitialPairChoice, test I: 28372008, J: 1716423146, nbCommonTracks: 59
*[13:17:41.227709][info] AutomaticInitialPairChoice, test I: 101613049, J: 483529918, nbCommonTracks: 325
[13:17:41.228319][info] AutomaticInitialPairChoice, test I: 101613049, J: 1309055266, nbCommonTracks: 63
*[13:17:41.232796][info] AutomaticInitialPairChoice, test I: 101613049, J: 1964208076, nbCommonTracks: 136
[13:17:41.234129][info] AutomaticInitialPairChoice, test I: 101613049, J: 1979165897, nbCommonTracks: 274
*[13:17:41.235430][info] AutomaticInitialPairChoice, test I: 202229099, J: 522804020, nbCommonTracks: 52
[13:17:41.235948][info] AutomaticInitialPairChoice, test I: 241586055, J: 612472186, nbCommonTracks: 276
*[13:17:41.237493][info] AutomaticInitialPairChoice, test I: 241586055, J: 739355435, nbCommonTracks: 132
*[13:17:41.238293][info] AutomaticInitialPairChoice, test I: 241586055, J: 1309055266, nbCommonTracks: 123
[13:17:41.239312][info] AutomaticInitialPairChoice, test I: 241586055, J: 2024308882, nbCommonTracks: 56
*[13:17:41.243574][info] AutomaticInitialPairChoice, test I: 269133861, J: 467739138, nbCommonTracks: 121
[13:17:41.244426][info] AutomaticInitialPairChoice, test I: 269133861, J: 1381303897, nbCommonTracks: 86
*[13:17:41.246900][info] AutomaticInitialPairChoice, test I: 269133861, J: 1550435502, nbCommonTracks: 65
[13:17:41.247993][info] AutomaticInitialPairChoice, test I: 269133861, J: 1611637874, nbCommonTracks: 133
*[13:17:41.248698][info] AutomaticInitialPairChoice, test I: 271753040, J: 1417968613, nbCommonTracks: 246
*[13:17:41.249021][info] AutomaticInitialPairChoice, test I: 271753040, J: 1448473450, nbCommonTracks: 87
[13:17:41.250375][info] AutomaticInitialPairChoice, test I: 271753040, J: 2020359922, nbCommonTracks: 76
*[13:17:41.254063][info] AutomaticInitialPairChoice, test I: 349536301, J: 1093767916, nbCommonTracks: 80
[13:17:41.254413][info] AutomaticInitialPairChoice, test I: 412397934, J: 1633149959, nbCommonTracks: 54
*[13:17:41.256024][info] AutomaticInitialPairChoice, test I: 467739138, J: 1611637874, nbCommonTracks: 95
[13:17:41.256213][info] AutomaticInitialPairChoice, test I: 467739138, J: 1851633457, nbCommonTracks: 95
*[13:17:41.258835][info] AutomaticInitialPairChoice, test I: 483529918, J: 530639247, nbCommonTracks: 76
*[13:17:41.258982][info] AutomaticInitialPairChoice, test I: 483529918, J: 1964208076, nbCommonTracks: 183
[13:17:41.260275][info] AutomaticInitialPairChoice, test I: 483529918, J: 1979165897, nbCommonTracks: 207
*[13:17:41.263009][info] AutomaticInitialPairChoice, test I: 530639247, J: 1891749448, nbCommonTracks: 73
[13:17:41.263952][info] AutomaticInitialPairChoice, test I: 530639247, J: 1964208076, nbCommonTracks: 123
*[13:17:41.265946][info] AutomaticInitialPairChoice, test I: 583386785, J: 886063614, nbCommonTracks: 63
[13:17:41.266512][info] AutomaticInitialPairChoice, test I: 583386785, J: 1105021015, nbCommonTracks: 80
*[13:17:41.268039][info] AutomaticInitialPairChoice, test I: 583386785, J: 1442620960, nbCommonTracks: 55
[13:17:41.270098][info] AutomaticInitialPairChoice, test I: 583386785, J: 1645771870, nbCommonTracks: 134
*[13:17:41.272055][info] AutomaticInitialPairChoice, test I: 583386785, J: 1968066196, nbCommonTracks: 62
*[13:17:41.272862][info] AutomaticInitialPairChoice, test I: 612472186, J: 739355435, nbCommonTracks: 90
[13:17:41.275037][info] AutomaticInitialPairChoice, test I: 612472186, J: 1309055266, nbCommonTracks: 84
*[13:17:41.275383][info] AutomaticInitialPairChoice, test I: 633256926, J: 886063614, nbCommonTracks: 50
[13:17:41.275587][info] AutomaticInitialPairChoice, test I: 633256926, J: 928901616, nbCommonTracks: 89
*[13:17:41.277252][info] AutomaticInitialPairChoice, test I: 664399704, J: 1281752708, nbCommonTracks: 61
[13:17:41.277554][info] AutomaticInitialPairChoice, test I: 734796515, J: 1381303897, nbCommonTracks: 81
*[13:17:41.281838][info] AutomaticInitialPairChoice, test I: 734796515, J: 1444820303, nbCommonTracks: 79
*[13:17:41.282455][info] AutomaticInitialPairChoice, test I: 734796515, J: 1550435502, nbCommonTracks: 87
[13:17:41.284453][info] AutomaticInitialPairChoice, test I: 734796515, J: 1772777439, nbCommonTracks: 89
*[13:17:41.284808][info] AutomaticInitialPairChoice, test I: 739355435, J: 1309055266, nbCommonTracks: 70
[13:17:41.286648][info] AutomaticInitialPairChoice, test I: 762361131, J: 1309055266, nbCommonTracks: 93
*[13:17:41.287071][info] AutomaticInitialPairChoice, test I: 762361131, J: 1979165897, nbCommonTracks: 116
[13:17:41.287358][info] AutomaticInitialPairChoice, test I: 762361131, J: 2020359922, nbCommonTracks: 59
*[13:17:41.288239][info] AutomaticInitialPairChoice, test I: 762361131, J: 2024308882, nbCommonTracks: 145
*[13:17:41.292002][info] AutomaticInitialPairChoice, test I: 834681592, J: 1292399561, nbCommonTracks: 73
[13:17:41.293052][info] AutomaticInitialPairChoice, test I: 834681592, J: 1448473450, nbCommonTracks: 139
*[13:17:41.294144][info] AutomaticInitialPairChoice, test I: 850726783, J: 1381303897, nbCommonTracks: 118
[13:17:41.294838][info] AutomaticInitialPairChoice, test I: 850726783, J: 1444820303, nbCommonTracks: 144
*[13:17:41.296072][info] AutomaticInitialPairChoice, test I: 850726783, J: 1550435502, nbCommonTracks: 185
[13:17:41.296239][info] AutomaticInitialPairChoice, test I: 850726783, J: 1772777439, nbCommonTracks: 183
*[13:17:41.298227][info] AutomaticInitialPairChoice, test I: 886063614, J: 1627104198, nbCommonTracks: 55
*[13:17:41.300045][info] AutomaticInitialPairChoice, test I: 886063614, J: 1645771870, nbCommonTracks: 65
[13:17:41.301175][info] AutomaticInitialPairChoice, test I: 886063614, J: 1968066196, nbCommonTracks: 64
*[13:17:41.304365][info] AutomaticInitialPairChoice, test I: 929119496, J: 979414985, nbCommonTracks: 55
[13:17:41.305038][info] AutomaticInitialPairChoice, test I: 979414985, J: 1292399561, nbCommonTracks: 61
*[13:17:41.308122][info] AutomaticInitialPairChoice, test I: 1105021015, J: 1645771870, nbCommonTracks: 105
[13:17:41.308301][info] AutomaticInitialPairChoice, test I: 1170976665, J: 1442620960, nbCommonTracks: 82
*[13:17:41.310326][info] AutomaticInitialPairChoice, test I: 1309055266, J: 1979165897, nbCommonTracks: 87
*[13:17:41.310448][info] AutomaticInitialPairChoice, test I: 1309055266, J: 2024308882, nbCommonTracks: 123
[13:17:41.310964][info] AutomaticInitialPairChoice, test I: 1381303897, J: 1444820303, nbCommonTracks: 125
*[13:17:41.312325][info] AutomaticInitialPairChoice, test I: 1381303897, J: 1550435502, nbCommonTracks: 186
[13:17:41.313076][info] AutomaticInitialPairChoice, test I: 1381303897, J: 1611637874, nbCommonTracks: 104
*[13:17:41.313902][info] AutomaticInitialPairChoice, test I: 1381303897, J: 1772777439, nbCommonTracks: 161
[13:17:41.319199][info] AutomaticInitialPairChoice, test I: 1417968613, J: 2020359922, nbCommonTracks: 84
*[13:17:41.319723][info] AutomaticInitialPairChoice, test I: 1433524306, J: 1444820303, nbCommonTracks: 52
*[13:17:41.320400][info] AutomaticInitialPairChoice, test I: 1444820303, J: 1550435502, nbCommonTracks: 160
[13:17:41.322037][info] AutomaticInitialPairChoice, test I: 1444820303, J: 1772777439, nbCommonTracks: 161
*[13:17:41.323218][info] AutomaticInitialPairChoice, test I: 1448473450, J: 2020359922, nbCommonTracks: 58
*[13:17:41.326821][info] AutomaticInitialPairChoice, test I: 1550435502, J: 1611637874, nbCommonTracks: 70
[13:17:41.326905][info] AutomaticInitialPairChoice, test I: 1550435502, J: 1772777439, nbCommonTracks: 217
[13:17:41.327166][info] AutomaticInitialPairChoice, test I: 1645771870, J: 1968066196, nbCommonTracks: 66
*[13:17:41.328996][info] AutomaticInitialPairChoice, test I: 1645843344, J: 1704106311, nbCommonTracks: 62
[13:17:41.329806][info] AutomaticInitialPairChoice, test I: 1891749448, J: 1964208076, nbCommonTracks: 70
*
[13:17:41.332279][info] AutomaticInitialPairChoice, test I: 1964208076, J: 1979165897, nbCommonTracks: 125
[13:17:41.343023][info] Initial pair is:
  A - view id: 1381303897 - filepath: helmets/IMG_0637.JPG
  B - view id: 1772777439 - filepath: helmets/IMG_0639.JPG
[13:17:41.343181][info] 161 matches in the image pair for the initial pose estimation.
block_sparse_matrix.cc:81 Allocating values array with 42912 bytes.
detect_structure.cc:113 Schur complement static structure <2,3,6>.
detect_structure.cc:113 Schur complement static structure <2,3,6>.
[13:17:41.394729][info] Remove outliers: 
	- # outliers residual error: 2
	- # outliers angular error: 0
block_sparse_matrix.cc:81 Allocating values array with 42624 bytes.
detect_structure.cc:113 Schur complement static structure <2,3,6>.
detect_structure.cc:113 Schur complement static structure <2,3,6>.
[13:17:41.397359][info] Remove outliers: 
	- # outliers residual error: 0
	- # outliers angular error: 0
[13:17:41.420592][info] Initial pair is: 1381303897, 1772777439
[13:17:41.420613][info] Begin Incremental Reconstruction:
	- mode: SfM augmentation
	- # images in input: 60
	- # images in resection: 58
	- # landmarks in input: 148
	- # cameras already calibrated: 2
[13:17:41.420833][info] Update Reconstruction:
	- resection id: 0
	- # images in the resection group: 1
	- # images remaining: 58
[13:17:41.420896][info] Robust Resection of view: 22306852
[13:17:41.438519][info] Robust Resection information:
	- resection status: true
	- threshold (error max): 9.77288
	- # points used for resection: 119
	- # points validated by robust resection: 113
block_sparse_matrix.cc:81 Allocating values array with 10848 bytes.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
block_sparse_matrix.cc:81 Allocating values array with 176128 bytes.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
[13:17:41.516787][info] Remove outliers: 
	- # outliers residual error: 9
	- # outliers angular error: 95
block_sparse_matrix.cc:81 Allocating values array with 124928 bytes.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
[13:17:41.530648][info] Remove outliers: 
	- # outliers residual error: 1
	- # outliers angular error: 0
[13:17:41.530673][info] Update Reconstruction complete: 
	- # cameras calibrated: 3
	- # landmarks: 188
[13:17:41.530887][info] Update Reconstruction:
	- resection id: 1
	- # images in the resection group: 1
	- # images remaining: 57
[13:17:41.530949][info] Robust Resection of view: 1444820303
[13:17:41.547245][info] Robust Resection information:
	- resection status: true
	- threshold (error max): 9.08969
	- # points used for resection: 107
	- # points validated by robust resection: 104
block_sparse_matrix.cc:81 Allocating values array with 9984 bytes.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
block_sparse_matrix.cc:81 Allocating values array with 58624 bytes.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
[13:17:41.570649][info] Remove outliers: 
	- # outliers residual error: 0
	- # outliers angular error: 41
[13:17:41.570677][info] Poses removed from the reconstruction: {1444820303}
[13:17:41.570683][info] Update Reconstruction complete: 
	- # cameras calibrated: 3
	- # landmarks: 44
[13:17:41.570736][info] Update Reconstruction:
	- resection id: 2
	- # images in the resection group: 1
	- # images remaining: 56
[13:17:41.570761][info] Robust Resection of view: 1550435502
[13:17:41.576456][info] Robust Resection information:
	- resection status: true
	- threshold (error max): 2.98395
	- # points used for resection: 25
	- # points validated by robust resection: 25
block_sparse_matrix.cc:81 Allocating values array with 2400 bytes.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
block_sparse_matrix.cc:81 Allocating values array with 11008 bytes.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
[13:17:41.582019][info] Remove outliers: 
	- # outliers residual error: 0
	- # outliers angular error: 9
[13:17:41.582042][info] Poses removed from the reconstruction: {22306852, 1381303897, 1550435502, 1772777439}
[13:17:41.582049][info] Update Reconstruction complete: 
	- # cameras calibrated: 0
	- # landmarks: 0
[13:17:41.582060][info] Structure from Motion statistics:
	- # input images: 60
	- # cameras calibrated: 0
	- # landmarks: 0
	- elapsed time: 0.161
	- residual RMSE: -nan
[13:17:41.582069][info] Histogram of residuals:

0	|	0
0.1	|	0
0.2	|	0
0.3	|	0
0.4	|	0
0.5	|	0
0.6	|	0
0.7	|	0
0.8	|	0
0.9	|	0
1

[13:17:41.582082][info] Histogram of tracks length:

0	|	0
0.1	|	0
0.2	|	0
0.3	|	0
0.4	|	0
0.5	|	0
0.6	|	0
0.7	|	0
0.8	|	0
0.9	|	0
1


WARNING: downgrade status on node "PrepareDenseScene_1" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "CameraConnection_1" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(0)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(1)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(2)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(3)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(4)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(5)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(6)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(7)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(8)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(9)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(10)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(11)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(12)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(13)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(14)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(15)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(16)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(17)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(18)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMap_1(19)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMapFilter_1(0)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMapFilter_1(1)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMapFilter_1(2)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMapFilter_1(3)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMapFilter_1(4)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "DepthMapFilter_1(5)" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "Meshing_1" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "MeshFiltering_1" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "Texturing_1" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "Publish_1" from Status.SUBMITTED to Status.NONE
Traceback (most recent call last):
  File "bin/meshroom_photogrammetry", line 64, in <module>
    meshroom.core.graph.executeGraph(graph, toNodes=toNodes, forceCompute=args.forceCompute, forceStatus=args.forceStatus)
  File "/home/nvidia/nico/meshroom/meshroom/core/graph.py", line 1124, in executeGraph
    chunk.process(forceCompute)
  File "/home/nvidia/nico/meshroom/meshroom/core/node.py", line 271, in process
    self.node.nodeDesc.processChunk(self)
  File "/home/nvidia/nico/meshroom/meshroom/core/desc.py", line 407, in processChunk
    raise RuntimeError('Error on node "{}":nLog:n{}'.format(chunk.name, logContent))
RuntimeError: Error on node "StructureFromMotion_1":
Log:
Program called with the following parameters:
 * describerTypes = "sift"
 * extraInfoFolder = "cache/cache/cache/cache/StructureFromMotion/0af12d223cec115fb1275dc6d551587783a2a651"
 * featuresFolders =  = [cache/cache/cache/cache/FeatureExtraction/7344a16d36e7fc0fbf79f8351b29c4c3b09cf39d]
 * initialPairA = ""
 * initialPairB = ""
 * input = "cache/cache/cache/cache/CameraInit/e8aec14c25db02bab43f371a3c9abc28eec32e6f/cameraInit.sfm"
 * interFileExtension = ".abc"
 * localBAGraphDistance = 1
 * localizerEstimator = "acransac"
 * lockScenePreviouslyReconstructed = 0
 * matchesFolders =  = [cache/cache/cache/cache/FeatureMatching/fd87a2abba5d7cdb94ee6704bc78b3e603930f94]
 * maxAngleInitialPair = 40
 * maxNumberOfMatches = 0
 * maxReprojectionError = 4
 * minAngleForLandmark = 2
 * minAngleForTriangulation = 3
 * minAngleInitialPair = 5
 * minInputTrackLength = 2
 * minNumberOfObservationsForTriangulation = 2
 * output = "cache/cache/cache/cache/StructureFromMotion/0af12d223cec115fb1275dc6d551587783a2a651/sfm.abc"
 * outputViewsAndPoses = "cache/cache/cache/cache/StructureFromMotion/0af12d223cec115fb1275dc6d551587783a2a651/cameras.sfm"
 * refineIntrinsics = 1 (default)
 * useLocalBA = 1
 * useOnlyMatchesFromInputFolder = 0
 * useTrackFiltering = 1 (default)
 * verboseLevel = "info"

Loading features
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
[13:17:41.165173][info] Supported CUDA-Enabled GPU detected.
***************************************************
[13:17:41.212648][info] Fuse matches into tracks: 
	- # tracks: 3877
	- # images in tracks: 57
[13:17:41.212729][info] TrackLength, Occurrence
[13:17:41.212755][info] 	2	2658
[13:17:41.212766][info] 	3	582
[13:17:41.212773][info] 	4	249
[13:17:41.212780][info] 	5	152
[13:17:41.212786][info] 	6	106
[13:17:41.212792][info] 	7	61
[13:17:41.212799][info] 	8	26
[13:17:41.212805][info] 	9	27
[13:17:41.212812][info] 	10	13
[13:17:41.212819][info] 	11	2
[13:17:41.212826][info] 	12	1
Automatic selection of an initial pair:
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
******[13:17:41.212960][info] AutomaticInitialPairChoice, test I: 3428893, J: 467739138, nbCommonTracks: 53
[13:17:41.212979][info] AutomaticInitialPairChoice, test I: 3428893, J: 734796515, nbCommonTracks: 81
[13:17:41.212995][info] AutomaticInitialPairChoice, test I: 22306852, J: 24234808, nbCommonTracks: 69
[13:17:41.213017][info] AutomaticInitialPairChoice, test I: 22306852, J: 734796515, nbCommonTracks: 93
[13:17:41.213021][info] AutomaticInitialPairChoice, test I: 22306852, J: 269133861, nbCommonTracks: 75
[13:17:41.213055][info] AutomaticInitialPairChoice, test I: 22306852, J: 1444820303, nbCommonTracks: 202
[13:17:41.213059][info] AutomaticInitialPairChoice, test I: 22306852, J: 850726783, nbCommonTracks: 182
[13:17:41.213063][info] AutomaticInitialPairChoice, test I: 22306852, J: 1381303897, nbCommonTracks: 207
[13:17:41.221562][info] AutomaticInitialPairChoice, test I: 22306852, J: 1550435502, nbCommonTracks: 250
*[13:17:41.222007][info] AutomaticInitialPairChoice, test I: 22306852, J: 1611637874, nbCommonTracks: 82
[13:17:41.222972][info] AutomaticInitialPairChoice, test I: 22306852, J: 1772777439, nbCommonTracks: 214
*[13:17:41.223261][info] AutomaticInitialPairChoice, test I: 24234808, J: 850726783, nbCommonTracks: 87
[13:17:41.223829][info] AutomaticInitialPairChoice, test I: 24234808, J: 2004139730, nbCommonTracks: 57
*[13:17:41.226298][info] AutomaticInitialPairChoice, test I: 28372008, J: 1716423146, nbCommonTracks: 59
*[13:17:41.227709][info] AutomaticInitialPairChoice, test I: 101613049, J: 483529918, nbCommonTracks: 325
[13:17:41.228319][info] AutomaticInitialPairChoice, test I: 101613049, J: 1309055266, nbCommonTracks: 63
*[13:17:41.232796][info] AutomaticInitialPairChoice, test I: 101613049, J: 1964208076, nbCommonTracks: 136
[13:17:41.234129][info] AutomaticInitialPairChoice, test I: 101613049, J: 1979165897, nbCommonTracks: 274
*[13:17:41.235430][info] AutomaticInitialPairChoice, test I: 202229099, J: 522804020, nbCommonTracks: 52
[13:17:41.235948][info] AutomaticInitialPairChoice, test I: 241586055, J: 612472186, nbCommonTracks: 276
*[13:17:41.237493][info] AutomaticInitialPairChoice, test I: 241586055, J: 739355435, nbCommonTracks: 132
*[13:17:41.238293][info] AutomaticInitialPairChoice, test I: 241586055, J: 1309055266, nbCommonTracks: 123
[13:17:41.239312][info] AutomaticInitialPairChoice, test I: 241586055, J: 2024308882, nbCommonTracks: 56
*[13:17:41.243574][info] AutomaticInitialPairChoice, test I: 269133861, J: 467739138, nbCommonTracks: 121
[13:17:41.244426][info] AutomaticInitialPairChoice, test I: 269133861, J: 1381303897, nbCommonTracks: 86
*[13:17:41.246900][info] AutomaticInitialPairChoice, test I: 269133861, J: 1550435502, nbCommonTracks: 65
[13:17:41.247993][info] AutomaticInitialPairChoice, test I: 269133861, J: 1611637874, nbCommonTracks: 133
*[13:17:41.248698][info] AutomaticInitialPairChoice, test I: 271753040, J: 1417968613, nbCommonTracks: 246
*[13:17:41.249021][info] AutomaticInitialPairChoice, test I: 271753040, J: 1448473450, nbCommonTracks: 87
[13:17:41.250375][info] AutomaticInitialPairChoice, test I: 271753040, J: 2020359922, nbCommonTracks: 76
*[13:17:41.254063][info] AutomaticInitialPairChoice, test I: 349536301, J: 1093767916, nbCommonTracks: 80
[13:17:41.254413][info] AutomaticInitialPairChoice, test I: 412397934, J: 1633149959, nbCommonTracks: 54
*[13:17:41.256024][info] AutomaticInitialPairChoice, test I: 467739138, J: 1611637874, nbCommonTracks: 95
[13:17:41.256213][info] AutomaticInitialPairChoice, test I: 467739138, J: 1851633457, nbCommonTracks: 95
*[13:17:41.258835][info] AutomaticInitialPairChoice, test I: 483529918, J: 530639247, nbCommonTracks: 76
*[13:17:41.258982][info] AutomaticInitialPairChoice, test I: 483529918, J: 1964208076, nbCommonTracks: 183
[13:17:41.260275][info] AutomaticInitialPairChoice, test I: 483529918, J: 1979165897, nbCommonTracks: 207
*[13:17:41.263009][info] AutomaticInitialPairChoice, test I: 530639247, J: 1891749448, nbCommonTracks: 73
[13:17:41.263952][info] AutomaticInitialPairChoice, test I: 530639247, J: 1964208076, nbCommonTracks: 123
*[13:17:41.265946][info] AutomaticInitialPairChoice, test I: 583386785, J: 886063614, nbCommonTracks: 63
[13:17:41.266512][info] AutomaticInitialPairChoice, test I: 583386785, J: 1105021015, nbCommonTracks: 80
*[13:17:41.268039][info] AutomaticInitialPairChoice, test I: 583386785, J: 1442620960, nbCommonTracks: 55
[13:17:41.270098][info] AutomaticInitialPairChoice, test I: 583386785, J: 1645771870, nbCommonTracks: 134
*[13:17:41.272055][info] AutomaticInitialPairChoice, test I: 583386785, J: 1968066196, nbCommonTracks: 62
*[13:17:41.272862][info] AutomaticInitialPairChoice, test I: 612472186, J: 739355435, nbCommonTracks: 90
[13:17:41.275037][info] AutomaticInitialPairChoice, test I: 612472186, J: 1309055266, nbCommonTracks: 84
*[13:17:41.275383][info] AutomaticInitialPairChoice, test I: 633256926, J: 886063614, nbCommonTracks: 50
[13:17:41.275587][info] AutomaticInitialPairChoice, test I: 633256926, J: 928901616, nbCommonTracks: 89
*[13:17:41.277252][info] AutomaticInitialPairChoice, test I: 664399704, J: 1281752708, nbCommonTracks: 61
[13:17:41.277554][info] AutomaticInitialPairChoice, test I: 734796515, J: 1381303897, nbCommonTracks: 81
*[13:17:41.281838][info] AutomaticInitialPairChoice, test I: 734796515, J: 1444820303, nbCommonTracks: 79
*[13:17:41.282455][info] AutomaticInitialPairChoice, test I: 734796515, J: 1550435502, nbCommonTracks: 87
[13:17:41.284453][info] AutomaticInitialPairChoice, test I: 734796515, J: 1772777439, nbCommonTracks: 89
*[13:17:41.284808][info] AutomaticInitialPairChoice, test I: 739355435, J: 1309055266, nbCommonTracks: 70
[13:17:41.286648][info] AutomaticInitialPairChoice, test I: 762361131, J: 1309055266, nbCommonTracks: 93
*[13:17:41.287071][info] AutomaticInitialPairChoice, test I: 762361131, J: 1979165897, nbCommonTracks: 116
[13:17:41.287358][info] AutomaticInitialPairChoice, test I: 762361131, J: 2020359922, nbCommonTracks: 59
*[13:17:41.288239][info] AutomaticInitialPairChoice, test I: 762361131, J: 2024308882, nbCommonTracks: 145
*[13:17:41.292002][info] AutomaticInitialPairChoice, test I: 834681592, J: 1292399561, nbCommonTracks: 73
[13:17:41.293052][info] AutomaticInitialPairChoice, test I: 834681592, J: 1448473450, nbCommonTracks: 139
*[13:17:41.294144][info] AutomaticInitialPairChoice, test I: 850726783, J: 1381303897, nbCommonTracks: 118
[13:17:41.294838][info] AutomaticInitialPairChoice, test I: 850726783, J: 1444820303, nbCommonTracks: 144
*[13:17:41.296072][info] AutomaticInitialPairChoice, test I: 850726783, J: 1550435502, nbCommonTracks: 185
[13:17:41.296239][info] AutomaticInitialPairChoice, test I: 850726783, J: 1772777439, nbCommonTracks: 183
*[13:17:41.298227][info] AutomaticInitialPairChoice, test I: 886063614, J: 1627104198, nbCommonTracks: 55
*[13:17:41.300045][info] AutomaticInitialPairChoice, test I: 886063614, J: 1645771870, nbCommonTracks: 65
[13:17:41.301175][info] AutomaticInitialPairChoice, test I: 886063614, J: 1968066196, nbCommonTracks: 64
*[13:17:41.304365][info] AutomaticInitialPairChoice, test I: 929119496, J: 979414985, nbCommonTracks: 55
[13:17:41.305038][info] AutomaticInitialPairChoice, test I: 979414985, J: 1292399561, nbCommonTracks: 61
*[13:17:41.308122][info] AutomaticInitialPairChoice, test I: 1105021015, J: 1645771870, nbCommonTracks: 105
[13:17:41.308301][info] AutomaticInitialPairChoice, test I: 1170976665, J: 1442620960, nbCommonTracks: 82
*[13:17:41.310326][info] AutomaticInitialPairChoice, test I: 1309055266, J: 1979165897, nbCommonTracks: 87
*[13:17:41.310448][info] AutomaticInitialPairChoice, test I: 1309055266, J: 2024308882, nbCommonTracks: 123
[13:17:41.310964][info] AutomaticInitialPairChoice, test I: 1381303897, J: 1444820303, nbCommonTracks: 125
*[13:17:41.312325][info] AutomaticInitialPairChoice, test I: 1381303897, J: 1550435502, nbCommonTracks: 186
[13:17:41.313076][info] AutomaticInitialPairChoice, test I: 1381303897, J: 1611637874, nbCommonTracks: 104
*[13:17:41.313902][info] AutomaticInitialPairChoice, test I: 1381303897, J: 1772777439, nbCommonTracks: 161
[13:17:41.319199][info] AutomaticInitialPairChoice, test I: 1417968613, J: 2020359922, nbCommonTracks: 84
*[13:17:41.319723][info] AutomaticInitialPairChoice, test I: 1433524306, J: 1444820303, nbCommonTracks: 52
*[13:17:41.320400][info] AutomaticInitialPairChoice, test I: 1444820303, J: 1550435502, nbCommonTracks: 160
[13:17:41.322037][info] AutomaticInitialPairChoice, test I: 1444820303, J: 1772777439, nbCommonTracks: 161
*[13:17:41.323218][info] AutomaticInitialPairChoice, test I: 1448473450, J: 2020359922, nbCommonTracks: 58
*[13:17:41.326821][info] AutomaticInitialPairChoice, test I: 1550435502, J: 1611637874, nbCommonTracks: 70
[13:17:41.326905][info] AutomaticInitialPairChoice, test I: 1550435502, J: 1772777439, nbCommonTracks: 217
[13:17:41.327166][info] AutomaticInitialPairChoice, test I: 1645771870, J: 1968066196, nbCommonTracks: 66
*[13:17:41.328996][info] AutomaticInitialPairChoice, test I: 1645843344, J: 1704106311, nbCommonTracks: 62
[13:17:41.329806][info] AutomaticInitialPairChoice, test I: 1891749448, J: 1964208076, nbCommonTracks: 70
*
[13:17:41.332279][info] AutomaticInitialPairChoice, test I: 1964208076, J: 1979165897, nbCommonTracks: 125
[13:17:41.343023][info] Initial pair is:
  A - view id: 1381303897 - filepath: helmets/IMG_0637.JPG
  B - view id: 1772777439 - filepath: helmets/IMG_0639.JPG
[13:17:41.343181][info] 161 matches in the image pair for the initial pose estimation.
block_sparse_matrix.cc:81 Allocating values array with 42912 bytes.
detect_structure.cc:113 Schur complement static structure <2,3,6>.
detect_structure.cc:113 Schur complement static structure <2,3,6>.
[13:17:41.394729][info] Remove outliers: 
	- # outliers residual error: 2
	- # outliers angular error: 0
block_sparse_matrix.cc:81 Allocating values array with 42624 bytes.
detect_structure.cc:113 Schur complement static structure <2,3,6>.
detect_structure.cc:113 Schur complement static structure <2,3,6>.
[13:17:41.397359][info] Remove outliers: 
	- # outliers residual error: 0
	- # outliers angular error: 0
[13:17:41.420592][info] Initial pair is: 1381303897, 1772777439
[13:17:41.420613][info] Begin Incremental Reconstruction:
	- mode: SfM augmentation
	- # images in input: 60
	- # images in resection: 58
	- # landmarks in input: 148
	- # cameras already calibrated: 2
[13:17:41.420833][info] Update Reconstruction:
	- resection id: 0
	- # images in the resection group: 1
	- # images remaining: 58
[13:17:41.420896][info] Robust Resection of view: 22306852
[13:17:41.438519][info] Robust Resection information:
	- resection status: true
	- threshold (error max): 9.77288
	- # points used for resection: 119
	- # points validated by robust resection: 113
block_sparse_matrix.cc:81 Allocating values array with 10848 bytes.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
block_sparse_matrix.cc:81 Allocating values array with 176128 bytes.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
[13:17:41.516787][info] Remove outliers: 
	- # outliers residual error: 9
	- # outliers angular error: 95
block_sparse_matrix.cc:81 Allocating values array with 124928 bytes.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
[13:17:41.530648][info] Remove outliers: 
	- # outliers residual error: 1
	- # outliers angular error: 0
[13:17:41.530673][info] Update Reconstruction complete: 
	- # cameras calibrated: 3
	- # landmarks: 188
[13:17:41.530887][info] Update Reconstruction:
	- resection id: 1
	- # images in the resection group: 1
	- # images remaining: 57
[13:17:41.530949][info] Robust Resection of view: 1444820303
[13:17:41.547245][info] Robust Resection information:
	- resection status: true
	- threshold (error max): 9.08969
	- # points used for resection: 107
	- # points validated by robust resection: 104
block_sparse_matrix.cc:81 Allocating values array with 9984 bytes.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
block_sparse_matrix.cc:81 Allocating values array with 58624 bytes.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
[13:17:41.570649][info] Remove outliers: 
	- # outliers residual error: 0
	- # outliers angular error: 41
[13:17:41.570677][info] Poses removed from the reconstruction: {1444820303}
[13:17:41.570683][info] Update Reconstruction complete: 
	- # cameras calibrated: 3
	- # landmarks: 44
[13:17:41.570736][info] Update Reconstruction:
	- resection id: 2
	- # images in the resection group: 1
	- # images remaining: 56
[13:17:41.570761][info] Robust Resection of view: 1550435502
[13:17:41.576456][info] Robust Resection information:
	- resection status: true
	- threshold (error max): 2.98395
	- # points used for resection: 25
	- # points validated by robust resection: 25
block_sparse_matrix.cc:81 Allocating values array with 2400 bytes.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
detect_structure.cc:113 Schur complement static structure <2,6,0>.
block_sparse_matrix.cc:81 Allocating values array with 11008 bytes.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
detect_structure.cc:95 Dynamic f block size because the block size changed from 6 to 7
detect_structure.cc:113 Schur complement static structure <2,3,-1>.
[13:17:41.582019][info] Remove outliers: 
	- # outliers residual error: 0
	- # outliers angular error: 9
[13:17:41.582042][info] Poses removed from the reconstruction: {22306852, 1381303897, 1550435502, 1772777439}
[13:17:41.582049][info] Update Reconstruction complete: 
	- # cameras calibrated: 0
	- # landmarks: 0
[13:17:41.582060][info] Structure from Motion statistics:
	- # input images: 60
	- # cameras calibrated: 0
	- # landmarks: 0
	- elapsed time: 0.161
	- residual RMSE: -nan
[13:17:41.582069][info] Histogram of residuals:

0	|	0
0.1	|	0
0.2	|	0
0.3	|	0
0.4	|	0
0.5	|	0
0.6	|	0
0.7	|	0
0.8	|	0
0.9	|	0
1

[13:17:41.582082][info] Histogram of tracks length:

0	|	0
0.1	|	0
0.2	|	0
0.3	|	0
0.4	|	0
0.5	|	0
0.6	|	0
0.7	|	0
0.8	|	0
0.9	|	0
1

Do you have an idea @fabiencastan , @fcastan ?

I’m running it Ubuntu 16.04 with python3.

Содержание

  1. [documentation] Structure from Motion result not visible #667
  2. Comments
  3. Structure from motion error (SFM) #501
  4. Comments

[documentation] Structure from Motion result not visible #667

Describe the bug
The Structure from Motion reconstruction result is not shown in a custom build of the Meshroom 2019.2 release using the 2019.2 prebuild dependencies (alicevision and qtplugins).
The problem is similar to #596, but the solution there did not solve my problem.

The red rectangle in the image below shows the area, where the SfM result is missing.

To Reproduce (under Linux)

  1. Install Miniconda for Linux
  2. Download the Meshroom 2019.2 Release (Prebuild) and extract it to
  3. Download the Meshroom 2019.2 Source Code and extract it to
  4. Set the alicevision paths (enter the following in the terminal)
  • PATH=$PATH: /aliceVision/bin
  • LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /aliceVision/lib
  • ALICEVISION_SENSOR_DB= /aliceVision/share/aliceVision/cameraSensors.db
  • ALICEVISION_VOCTREE= /aliceVision/share/aliceVision/vlfeat_K80L3.SIFT.tree
  1. Set the plugin paths (enter the following in the terminal)
  • QT_PLUGIN_PATH= /qtPlugins
  • QML2_IMPORT_PATH= /qtPlugins/qml
  1. cd to
  2. execute PYTHONPATH=$PWD /home/ /miniconda3/bin/python meshroom/ui
  3. examine the right toolbar

Desktop:

  • OS: Win 10 and Ubuntu 18.04
  • Python version: 3.7
  • PySide2 version: 5.13
  • Meshroom version: Custom build using Meshroom 2019.2 source code and Meshroom 2019.2 prebuild dependencies.

Additional context
I experienced this problem under Windows 10 and Ubuntu 18.04 with the latest Meshroom version and Meshroom 2019.2. In both cases I used the Meshroom 2019.2 prebuild dependencies.
Also double clicking on the Structure from Motion node does not show the reconstruction result.

Can I verify somehow that the QmlAlembic plugin is correctly loaded?

The text was updated successfully, but these errors were encountered:

Источник

Structure from motion error (SFM) #501

I do not know why this problem is happening.

Aborted (core dumped)

[16:41:23.750140][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:23.750155][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:23.750163][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:23.750240][info] Initial pair is:
— [A] view id: 1940125380, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121635.jpg
— [B] view id: 1982242761, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121148.jpg
[16:41:23.750392][info] 165 matches in the image pair for the initial pose estimation.
[16:41:23.791428][info] Bundle adjustment start.
[16:41:23.791480][info] Start bundle adjustment iteration: 0
block_sparse_matrix.cc:81 Allocating values array with 288 bytes.
detect_structure.cc:113 Schur complement static structure .
detect_structure.cc:113 Schur complement static structure .
[16:41:23.791783][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 0.000187345 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 2
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 4
— # successful iterations: 3
— # unsuccessful iterations: 0
— initial RMSE: 1.61433
— final RMSE: 8.29304e-09
[16:41:23.791805][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:23.791823][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:23.791830][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:23.791913][info] Initial pair is:
— [A] view id: 698926261, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121412.jpg
— [B] view id: 1982242761, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121148.jpg
[16:41:23.792100][info] 211 matches in the image pair for the initial pose estimation.
[16:41:23.838724][info] Bundle adjustment start.
[16:41:23.838767][info] Start bundle adjustment iteration: 0
[16:41:23.838866][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.1783e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:23.838894][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:23.838910][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:23.838918][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:23.839000][info] Initial pair is:
— [A] view id: 1500024992, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121531.jpg
— [B] view id: 1886919004, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121339.jpg
[16:41:23.839152][info] 172 matches in the image pair for the initial pose estimation.
[16:41:23.880461][info] Bundle adjustment start.
[16:41:23.880507][info] Start bundle adjustment iteration: 0
[16:41:23.880611][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.2845e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:23.880630][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:23.880646][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:23.880654][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:23.880734][info] Initial pair is:
— [A] view id: 657235584, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121230.jpg
— [B] view id: 1940125380, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121635.jpg
[16:41:23.880862][info] 139 matches in the image pair for the initial pose estimation.
[16:41:23.918820][info] Bundle adjustment start.
[16:41:23.918861][info] Start bundle adjustment iteration: 0
[16:41:23.918961][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.1985e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:23.918981][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:23.918996][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:23.919004][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:23.919084][info] Initial pair is:
— [A] view id: 458974780, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121306.jpg
— [B] view id: 2047488158, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121509.jpg
[16:41:23.919203][info] 117 matches in the image pair for the initial pose estimation.
[16:41:23.954226][info] Bundle adjustment start.
[16:41:23.954264][info] Start bundle adjustment iteration: 0
[16:41:23.954363][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.1679e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:23.954382][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:23.954397][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:23.954405][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:23.954496][info] Initial pair is:
— [A] view id: 698926261, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121412.jpg
— [B] view id: 1886919004, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121339.jpg
[16:41:23.954658][info] 174 matches in the image pair for the initial pose estimation.
[16:41:23.995617][info] Bundle adjustment start.
[16:41:23.995658][info] Start bundle adjustment iteration: 0
[16:41:23.995754][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.1714e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:23.995772][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:23.995787][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:23.995795][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:23.995874][info] Initial pair is:
— [A] view id: 1886919004, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121339.jpg
— [B] view id: 2047488158, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121509.jpg
[16:41:23.996004][info] 147 matches in the image pair for the initial pose estimation.
[16:41:24.034368][info] Bundle adjustment start.
[16:41:24.034404][info] Start bundle adjustment iteration: 0
[16:41:24.034497][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.1087e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:24.034516][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:24.034531][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:24.034539][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:24.034618][info] Initial pair is:
— [A] view id: 657235584, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121230.jpg
— [B] view id: 1982242761, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121148.jpg
[16:41:24.034764][info] 170 matches in the image pair for the initial pose estimation.
[16:41:24.075227][info] Bundle adjustment start.
[16:41:24.075267][info] Start bundle adjustment iteration: 0
[16:41:24.075372][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.2265e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:24.075391][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:24.075407][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:24.075415][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:24.075497][info] Initial pair is:
— [A] view id: 931499951, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121604.jpg
— [B] view id: 1500024992, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121531.jpg
[16:41:24.075671][info] 207 matches in the image pair for the initial pose estimation.
[16:41:24.121893][info] Bundle adjustment start.
[16:41:24.121938][info] Start bundle adjustment iteration: 0
block_sparse_matrix.cc:81 Allocating values array with 1440 bytes.
detect_structure.cc:113 Schur complement static structure .
detect_structure.cc:113 Schur complement static structure .
[16:41:24.125030][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 0.00295581 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 10
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 20
— # successful iterations: 48
— # unsuccessful iterations: 3
— initial RMSE: 1.15536
— final RMSE: 0.512205
[16:41:24.125058][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:24.125075][info] Bundle adjustment iteration: 0 took 3 msec.
[16:41:24.125083][info] Bundle adjustment with 1 iterations took 3 msec.
[16:41:24.125171][info] Initial pair is:
— [A] view id: 458974780, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121306.jpg
— [B] view id: 931499951, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121604.jpg
[16:41:24.125308][info] 147 matches in the image pair for the initial pose estimation.
[16:41:24.163663][info] Bundle adjustment start.
[16:41:24.163704][info] Start bundle adjustment iteration: 0
[16:41:24.163810][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.1917e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:24.163829][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:24.163845][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:24.163853][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:24.163934][info] Initial pair is:
— [A] view id: 458974780, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121306.jpg
— [B] view id: 1886919004, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121339.jpg
[16:41:24.164071][info] 152 matches in the image pair for the initial pose estimation.
[16:41:24.202841][info] Bundle adjustment start.
[16:41:24.202880][info] Start bundle adjustment iteration: 0
[16:41:24.202979][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.2356e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:24.202998][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:24.203014][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:24.203022][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:24.203105][info] Initial pair is:
— [A] view id: 1886919004, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121339.jpg
— [B] view id: 1940125380, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121635.jpg
[16:41:24.203234][info] 140 matches in the image pair for the initial pose estimation.
[16:41:24.240227][info] Bundle adjustment start.
[16:41:24.240264][info] Start bundle adjustment iteration: 0
[16:41:24.240361][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.206e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:24.240391][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:24.240406][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:24.240414][info] Bundle adjustment with 1 iterations took 0 msec.
[16:41:24.240496][info] Initial pair is:
— [A] view id: 1940125380, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121635.jpg
— [B] view id: 2047488158, filepath: /home/nube7/Imágenes/Robot/IMG_20190610_121509.jpg
[16:41:24.240640][info] 163 matches in the image pair for the initial pose estimation.
[16:41:24.280400][info] Bundle adjustment start.
[16:41:24.280438][info] Start bundle adjustment iteration: 0
[16:41:24.280535][info] Bundle Adjustment Statistics:
— local strategy enabled: no
— adjustment duration: 1.1726e-05 s
— poses:
— # refined: 2
— # constant: 0
— # ignored: 0
— landmarks:
— # refined: 0
— # constant: 0
— # ignored: 0
— intrinsics:
— # refined: 0
— # constant: 1
— # ignored: 1
— # residual blocks: 0
— # successful iterations: 18446744073709551615
— # unsuccessful iterations: 18446744073709551615
— initial RMSE: -nan
— final RMSE: -nan
[16:41:24.280554][info] Remove outliers:
— # outliers residual error: 0
— # outliers angular error: 0
[16:41:24.280569][info] Bundle adjustment iteration: 0 took 0 msec.
[16:41:24.280576][info] Bundle adjustment with 1 iterations took 0 msec.
terminate called after throwing an instance of ‘std::runtime_error’
what(): Initialization failed after trying all possible initial image pairs.
Aborted (core dumped)

The text was updated successfully, but these errors were encountered:

Источник

Время прочтения
10 мин

Просмотры 16K


Если посмотреть на последовательность кадров, в которых движется камера, то мозг легко воспринимает геометрическую структуру содержимого. Однако, в компьютерном зрении это не тривиальная проблема. В этой статье я постараюсь описать возможное решение этой задачи.

Перед прочтением этой статьи не помешает внимательно прочитать статью «Основы стереозрения».

Итак, перед нами стоит задача превращения последовательности двумерных изображений в трехмерную структуру. Задача это не простая, и нужно ее упрощать.
Во-первых, предположим, что кадра у нас только два. Обозначим их как A и B.
Во-вторых, будем работать с конечным множеством точек, соответствующих друг другу на кадрах A и B. Точки на изображении обозначим как . Тогда точки на кадрах A и B будут и . Каждая пара точек соответствует точке в трехмерном пространстве .

Теперь необходимо определиться как искать и . Для этого на первом кадре выберем точки, с наибольшей контрастностью — «особенные» точки (features). Для этого можно использовать surf, fast или что-нибудь другое. Эти точки и будут . Затем необходимо найти соответствия этим точкам на втором кадре при помощи того же алгоритма surf или оптического потока. А это уже точки .

А теперь мы подошли к центральному вопросу этой статьи: как из точек и (точек-соответствий, point correspondences) получить координаты точек и положение камеры в пространстве? Сначала необходимо разобраться с тем, как же точка она попадает на изображение. Нужно построить математическую модель камеры.

Модель проективной камеры

Так как вы, вероятно, уже прочитали статью «Основы стереозрения», эта формула должна быть знакома:
.
Или если описать более полно:
.
Здесь X — это трехмерная точка в пространстве.
x — это координата точки на изображении в однородных координатах, и , т. е. перевод в обычные координаты изображения будет таким: .
Процесс перевода точки в пространстве в координаты изображения можно разбить на два этапа, реализуемыми двумя матрицами в формуле:

  1. [R|t] — R и t представляют собой положение камеры в пространстве. На этом этапе координаты точек переводятся в локальные координаты камеры. R — матрица поворота размером 3×3, t — трехмерный вектор смещения — вместе они составляют матрицу перехода [R|t] (размером 3×4), она определяет положение камеры в кадре. [R|t] — эта то же, что и видовая матрица в трехмерной графике (если не брать в расчет, что она имеет размер не 4×4).
    — это матрица поворота камеры, — трехмерные координаты точки расположения камеры в пространстве. R и t называют внешними параметрами камеры.
  2. K — матрица камеры. Локальные координаты точек переводятся в однородные координаты изображения. fx, fy — фокальное расстояние в пикселях, cx, cy — оптический центр камеры (обычно это координаты центра изображения). Эти параметры называют внутренними параметрами камеры.

Важным свойством этой модели является то, что точки лежащие на одной прямой в пространстве будут также лежать на одной прямой на изображении.
На самом деле, описываемая модель может быть очень неточной. В реальных камерах вступают в игру линзовые искажения, из-за которых прямые линии становятся кривыми. Это искажение называются дисторсией. Существуют разные модели, исправляющие эти искажения. Здесь есть некоторые их реализации. Параметры этой модели также входит в понятие внутренних параметров камеры.
С учетом дисторсии наша формула усложняется:
, где D(X) — функция, принимающая однородные координаты точек изображения и возвращающая обычные координаты на изображении. Также позже нам понадобится обратная функция — InvD(ix).
Внутренние параметры камеры должны быть известны заранее. Выяснение этих параметров — это отдельная тема, будем считать, что они уже есть.

Искажения дисторсии не зависит от глубины видимых точек, а только координат на изображении. А значит «исправить» изображение (получив прямые линии там, где они и должны быть) можно не зная внешних параметров камеры и координат точек в пространстве. Дальше тогда можно использовать модель камеры без функции D.

Изображение с дисторсией слева, и справа — «исправленное» от линзовых искажений изображение. Видно, что линии стали прямыми.

Нормализация точек

Мы договорились, что внутренние параметры нам известны, известны и координаты точек на изображении, а значит, остается найти [R|t] и Xi (положения камеры и точек в пространстве).
Наша формула выходит уже немного сложной, надо ее упрощать. Для начала сделаем так:

Выражение остается справедливым. Продолжим:

Обозначим (а если без дисторсии, то ). Так как все параметры известны, nxi можно посчитать заранее. Вспомнив как выглядит матрица K, можно понять, что nxz = 1. Это поможет при дальнейших расчетах. В результате формула становится проще:

nxi — это нормализованные точки изображения.

Фундаментальная и сущностная матрицы

Итак, предположим, у нас есть два изображения, полученные от одной камеры. Нам неизвестны положения камер и координаты точек в пространстве. Договоримся ввести расчеты относительно первого кадра. Так получается, что RA = I (I — единичная матрица), tA = (0, 0, 0). Положение камеры в кадре B обозначим просто как R и t (т. е. RB = R, tB = t). [R|t] — это матрица координат второго кадра, и оно же — матрица смещения положения камеры от кадра A к кадру B. В итоге имеем получаем такую систему (без учета дисторсии!):

Используя фундаментальную матрицу F (fubdamental matrix), получим такое уравнение:

Также заметим, что F имеет размер 3х3 и должна иметь ранг равный 2.
Из фундаментальной матрицы F уже можно получить необходимые нам R и t. Однако дисторсия все портит, с ее учетом зависимость точек между кадрами будет нелинейная, и это уже не будет работать.
Но перейдем к нормализованным точкам и используем сущностную матрицу E (essential matrix). Все будет почти тем же, но проще:
— система уравнений для сущностной матрицы;
— уравнение для нее же.
А тут мы можем спокойно брать в расчет дисторсию.
Фундаментальная и сущностная матрицы связаны таким образом:

Теперь перед нами встала задача нахождения либо фундаментальной матрицы F, либо сущностной матрицы E, из которой позже сможем получить на R и t.

Вычисление сущностной матрицы (8-ми точечный алгоритм)

Вернемся к уравнению:

Эту же формулу можно переписать в таком виде (вспоминаем, что и ):
, здесь опущен параметр i ради удобства, но имеем ввиду что это справедливо для каждой точки.
Введем вектор e и матрицу M:


Тогда всю систему уравнений можно представить в виде:

Получаем однородную систему уравнений, решив которую, получим E из е. Очевидным решением здесь является нулевой вектор, но нас явно интересует не он. Для решения необходимо минимум 8 точек.

Решение систем однородных уравнений при помощи сингулярного разложения

Сингулярное разложение — это декомпозиция матрицы, приводящее ее к такому виду:
, где U, V — ортогональные матрицы, W — диагональная матрица. При этом диагональные элементы матрицы W принято располагать в порядке убывания. Также ранг матрицы W — это и ранг матрицы M. А так как W — диагональная матрица, то ее ранг — это количество ненулевых диагональных элементов.

Итак, было дано уравнение вида:
, где M — известная нам матрица, e — вектор, который на необходимо найти.

Строки VT, которым соответствует нулевой диагональный элемент W на этой же строке, являются нуль-пространствами матрицы M, т. е. в данном случае являются линейно-независимыми решениями нашей системы. А так как элементы W располагаются в порядке убывания, то смотреть нужно последний элемент матрицы W. И решением будет последняя строка .
При расчете сущностной матрицы, используя 8 точек, последний элемент матрицы W должен быть равен нулю — W99=0, но на практике, в следствии ошибок, там будет какое-то ненулевое значение, и по величине этого значения можно оценить величину этой ошибки. При этом мы получим лучшее решение.
Тем не менее, найденное нами решение — не единственное, более того, решений будет бесконечно много. Если умножить найденное решение на какой-либо коэффициент, оно все-равно останется решением. Таким образом в уравнении спрятался коэффициент s (который может быть любым):
.
Правда, все эти решения будут линейно зависимыми, а интересовать нас будет только одно из них.
Отсюда и матрица E может также масштабироваться. Вот только расчеты ведутся в однородном пространстве и, как следствие, от масштабирования (т. е. от коэффициента s) не зависят.
Наверное, стоит масштабировать получившуюся матрицу E так, чтобы E33 = 1.

Вычисление сущностной матрицы (7-ми точечный алгоритм)

Можно обойтись и 7-ю точками.
Если мы возьмем только 7 точек, то M будет матрицей размером 7×9.
Вернемся к выражению:

W — будет также матрицей размером 9×9, как и раньше, но теперь не только W99 будет равно нулю (ну опять же без учета ошибок вычислений), но и W88. Это значит, что имеем два линейно-независимых решения уравнения . Из них получим две матрицы E1 и E2. Решением будет выражение .
Сущностная матрица, как и фундаментальная, должна иметь ранг равный двум, а так как она имеем размер 3×3, то значит определитель матрицы равен 0 — . Следовательно . Если расписать это уравнение, то получим кубическое уравнение, имеющее 1 или 3 решения . А значит получим одну или три матрицы E.
Расписывать решение этого уравнения я не буду (оно объемное, ну и считайте это домашним заданием). В крайнем случае можете просто посмотреть сразу реализацию в opencv.

Уточнение сущностной (фундаментальной) матрицы

Так как все в этом мире несовершенно, то мы будем постоянно получать ошибки, с которыми нам необходимо бороться. Так сущностная матрица должна иметь ранг равный 2 и следовательно . На практике, однако, это будет нет так.
Чтобы увидеть в чем это выражается, возьмем фундаментальную матрицу. Сущностная матрица / фундаментальная матрица — разница лишь в том, с какими точками мы работаем (нормализованными или точками на изображении).
Луч, выпущенный из точки кадра A, ляжет в кадр B как прямая линия (или не совсем из-за дисторсии, но забудем про нее). Допустим матрица F — это фундаментальная матрица кадров A и B ().
Тогда если выпустить луч из точки , то в получим прямую l на кадре B — . Эта прямая называется эпиполярной линией, т. е. , где ix, iy — координаты точки на изображении. И то же условие для точки на изображении с однородными координатами — . Точка будет лежать на этой прямой, поэтому . Отсюда и выходит общая формула — .

На картинке изображен пример эпиполярных линий, полученных из правильной фундаментальной матрицы (ранг которой равен 2, картинка справа) и неправильной (слева).
Чтобы получить правильную фундаментальную матрицу, воспользуемся свойством сингулярного разложения — приближать матрицу к заданному рангу:
. В идеале W33 (последний элемент диагонали) должен быть равен нулю. Введем новую матрицу W’, которая равна W, только у которой элемент W’33 = 0.
Тогда исправленный вариант: .
Ровно тот же принцип работает и для сущностной матрицы.

Нормализованная версия алгоритма

Чтобы уменьшить ошибку, получаемую при расчетах, точки трансформируют к определенному ввиду. Выбираются такие матрицы TA и TB, которые (каждый независимо и на своем кадре) смещают среднюю координату точек в точку (0, 0) и масштабируют так, чтобы средняя дистанция дистанция до центра была равна :

А матрицы TA, B имеют вид: , где c — средняя координата точек кадров, s — коэффициент масштаба.
После этого вычисляем сущностную матрицу как обычно. После необходимо ее уточнить, как было описано выше. Обозначим полученную матрицу как Et.
Итоговая сущностная матрица — .
В итоге:
Опять же, если необходимо найти фундаментальную матрицу, все принципы сохраняются.

Получение положения камеры из сущностной матрицы

Введем матрицу H:
Используем сингулярное разложение на сущностной матрице:
Тогда получаем такие решения:



, где , — координаты положения камеры.
Нам же необходимо положение камеры в локальных координатах самой камеры: .
Выходит четыре решения: .
В случае 8-ми точечного алгоритма, выбираем из 4-ёх решений. В случае 7-ми точечного алгоритма, выйдет три сущностные матрицы, из которых получится 12 решений. Выбрать нужно только одно, то, которое будет давать меньше ошибок.

Вырожденные случаи

Снова вернемся к вычислению сущностной матрицы. У нас было уравнение:

Далее мы его решали при помощи сингулярного разложения:

Решения данного уравнения зависит от ранга матрицы W, ну или от количества нулей в диагонали этой матрицы (мы же помним, что это отражает ранг матрицы). Вот только с учетом погрешности, считаем нулем в данном случае число, достаточно близкое к нулю.
Имеем такие варианты:

  • Нулей нет. Нет решений, вероятно ошибка вышла слишком большой.
  • Один нуль. Одно решение, случай при котором число точек больше, либо равно восьми.
  • Два нуля. Одно или три решения. Использовалось семь или более точек.
  • Три нуля. Тогда должно быть верно условие . Такое возможно, если камера не смещалась от кадра к кадру, был только поворот, т. е. t = (0, 0, 0). Либо все точки лежат на одной плоскости. Во втором случае еще есть возможность найти координаты этих точек и положение камеры, но уже другими способами.

Вычисление координат точек в пространстве

Допустим сейчас у нас есть больше, чем два кадра — A, B, C, …
— положение камер кадров A, B, C,…
— нормализованные точки
Необходимо найти точку

Представим эту систему так:


В матричном виде:


С помощью сингулярного разложения находим вектор , который (способом, описанном выше). Тогда , где s — какой-то неизвестный коэффициент. Выходит .

Оценочная функция

Оценочные функции (cost functions) необходимы, чтобы получив какие-то результаты, оценить насколько достоверными они являются, или сравнить их с другими.
Возьмем нашу модель:
— предполагаемый результат.
— реальное значение точки.
Отсюда квадрат ошибки для i-ой точки будет: .
На практике одни точки будут давать более достоверные результаты, чем другие. А некоторые вообще явно будут давать неправильные. В результате возникает необходимость выбрать из общего массива точек только те точки, которым можно доверять, а остальные просто выбросить из расчетов.
Самый простой способ выбрать “достоверные” точки — выбрать какой-то лимит (допустим, 5 пикселей), и брать только те точки, которые дают ошибку меньше этого лимита (). Тут же следует отметить, что необходимо учитывать, что точка должна лежать перед камерой в обоих кадрах, иначе ее явно необходимо отбросить.
Таким образом, можно ввести оценочную функцию — количество достоверных точек. И при сравнении, выбирать тот результат, который дает большее количество “достоверных” точек.
А можно воспользоваться другим, более “тонкой” функцией:
, где limit — это выбранный нами лимит (в 5 пикселей).
Лучшим будет тот вариант, который будет давать меньшее значение. Понятно, что и здесь следует убирать “недостоверные” точки для будущих расчетов.

Метод RANSAC

  1. При вычислении сущностной матрицы необходимо отбрасывать “недостоверные” точки, так как они приводят в существенным ошибкам в расчетах. Определить набор подходящих точек можно при помощи алгоритма RANSAC.
    Повторяем цикл заданное количество раз (например, 100, 400):

    • Выбираем случайным образом минимальный набор точек для расчетов (у нас это 7);
    • Вычисляем сущностные матрицы из этого набора (напоминаю, может получится либо одна матрица, либо три)
    • Оценочной функцией вычисляем достоверность каждой матрицы
  2. Из предыдущего цикла выбираем сущностную матрицу, которая дает лучший результат;
  3. Выбираем точки для расчетов, которые дают ошибку при полученной сущностной матрице ошибку меньше заданного порога;
  4. Из полученного набора точек вычисляем итоговую сущностную матрицу.

Общий алгоритм

  1. Находим «особенные» точки на первом кадре
  2. Определяем точки-соответствия между двумя изображениями.
  3. Находим сущностную (или все-же фундаментальную) матрицу, соответствующую этим двум изображениям при помощи RANSAC.
  4. У нас будет одно или три решения, из которых получим 4 или 12 возможных матриц [R|t]. Имея положение камер в обоих кадрах, рассчитываем координаты точек в пространстве для каждой возможной матрицы. Из них выбираем лучшую, используя оценочную функцию.

Что дальше?

Изначально мы исходили из предположения, что кадра у нас было всего два.
Чтобы работать с последовательностью кадров, нужно просто разбить последовательность на последовательные пары кадров. Обрабатывая пары кадров, мы получаем смещение камеры от одного кадра к другому. Из этого можно получить координаты положения камеры в остальных кадрах.

Получив главное — положения камер, можно действовать по-разному:

  • По точкам-соответствиям получить трехмерные координаты точек в пространстве, выйдет облако точек, которое можно превратить в трехмерную модель
  • Использовать фундаментальную матрицу для расчета карты глубины.
  • При помощи двух кадров инициализировать карту для SLAM, используя рассчитанные координаты точек в пространстве, можно проще и быстрее получить координаты положения в следующих кадрах.
  • ну и другое

В общем, действовать можно по-разному, применяя разные методы, в том числе и те алгоритмы, которые были описаны — не единственные.

Литература

Fundamental matrix, Essential matrix, Eight-point algorithm — больше информации в википедии
Hartley, Zisserman — Multiple View Geometry in Computer Vision — спонсор этой статьи

Meshroom: Ошибка PrepareDenseScene

в моем реальном проекте ячеистой сети у меня проблема, не знаю, как исправить. Он всегда останавливается на PrepareDenseScene с ошибкой. Самое безумное в том, что если раньше я не был в безопасности, он работает идеально. Удалял кеш, перезагрузка .
Но когда я его сохраняю, он останавливается на ошибке в том же месте.
Программа вызывается со следующими параметрами:

  • input = «D: / Photogrametrie / 3D Scans / 609er / 609er außen / MeshroomCache / StructureFromMotion / a3aa525f03aa662cecda8b17531a7b52a3f53b85 / sfm.abc»
  • output = «D: / Photogrametrie / 3D Scans / 609er / 609er außen / MeshroomCache / PrepareDenseScene / 1b844eef8f1e27a3c408a5ecb7d35a037414cf34»
  • outputFileType = «exr»
  • rangeSize = 26
  • rangeStart = 0
  • saveMatricesTxtFiles = 0
  • saveMetadata = 1
  • verboseLevel = «информация»

Экспорт неискаженных изображений сцены
0% 10 20 30 40 50 60 70 80 90100%
| —- | —- | —- | —- | —- | —- | —- | —- | —- | —- |

Все 3 Комментарий

Проблема все еще возникает, если вы удалите пробел в «609er außen»? О, и у вас есть еще один в «3D-сканировании»

Также ß может вызвать проблемы

Когда я это прочитал, я понял, что вы правы. Точно было название папки. В 3D-сканировании есть еще несколько. Так что с пространством это работает, но «ß» было слишком много.

Источник

Prepare DenseScene Fails #396

Comments

Thorngage commented Feb 12, 2019

Hi, I managed to import the images and start the process, but it stops and fails at the Prepare Dense Scene Node

  • commandLine: aliceVision_prepareDenseScene —input «C:/Users/miche/Documents/Università/Scienza della Rappresentazione 3/Fotogrammetria/MeshroomCache/StructureFromMotion/197f30e80b9377e706ef632436e6379768d4684a/sfm.abc» —verboseLevel info —output «C:/Users/miche/Documents/Università/Scienza della Rappresentazione 3/Fotogrammetria/MeshroomCache/PrepareDenseScene/712d09931794378c58abeeeb122107caa29f26e9»
  • logFile: C:/Users/miche/Documents/Università/Scienza della Rappresentazione 3/Fotogrammetria/MeshroomCache/PrepareDenseScene/712d09931794378c58abeeeb122107caa29f26e9/log
  • elapsed time: 0:00:11.818315
    ERROR:root:Error on node computation: Error on node «PrepareDenseScene_1»:
    Log:
    Program called with the following parameters:
  • input = «C:/Users/miche/Documents/Università/Scienza della Rappresentazione 3/Fotogrammetria/MeshroomCache/StructureFromMotion/197f30e80b9377e706ef632436e6379768d4684a/sfm.abc»
  • output = «C:/Users/miche/Documents/Università/Scienza della Rappresentazione 3/Fotogrammetria/MeshroomCache/PrepareDenseScene/712d09931794378c58abeeeb122107caa29f26e9»
  • verboseLevel = «info»

ERROR:root:Error during Graph execution Error on node «PrepareDenseScene_1»:

Also, if I double click the Structure from motion node, the point cloud does not appear, not sure if it’s related

The text was updated successfully, but these errors were encountered:

fabiencastan commented Feb 13, 2019

Could you provide the log of the StructureFromMotion?

Thorngage commented Feb 13, 2019

log.txt
This is the whole log, I believe

MacMachin commented Feb 22, 2019

I have a similar problem, PrepareDenseScene fail with the following status:
<
«status»: «ERROR»,
«execMode»: «LOCAL»,
«nodeName»: «PrepareDenseScene_1»,
«nodeType»: «PrepareDenseScene»,
«packageName»: «aliceVision»,
«packageVersion»: null,
«graph»: «»,
«commandLine»: «aliceVision_prepareDenseScene —input «D:/Work/Dessin-Peinture/3D/Ru00e9fu00e9rences/CC/MeshroomCache/StructureFromMotion/fe599f901558abb877b2e8a766ab4141707d8d0a/sfm.abc» —verboseLevel trace —output «D:/Work/Dessin-Peinture/3D/Ru00e9fu00e9rences/CC/MeshroomCache/PrepareDenseScene/a5e0b24f4baeb04af781fa9377c9ebf9248e4faf» «,
«env»: null,
«startDateTime»: «2019-02-22 11:45:27.488309»,
«endDateTime»: «»,
«elapsedTime»: 0,
«hostname»: «MAISON»,
«sessionUid»: «7159a146-368e-11e9-a395-001583f5e6f8»,
«returnCode»: 3221226505,
«elapsedTimeStr»: «0:00:00»
>

The output of the previous node is attached in a zip file
SFM.zip

BTeaJoe commented Mar 8, 2019

On my computer (GTX 960, Intel i5-6400, 16GB memory, Win10) the program crashes for a set of images almost immediately after I start PrepareDenseScene. Two days ago, my computer still had 8GB and Win7, but the upgrade did not change anything. However, the computation of this set of images worked just fine on a different computer.

ulfgroote commented Aug 6, 2019 •

I have the same problem – but I suspect it comes from StructureFromMotion: that node gets green (and Meshroom crashes on the next node, PrepareDenseScene), but this is the log from StructureFromMotion:

  • commandLine: aliceVision_incrementalSfM —input «O:/Spielereien/Photogrammetrie/Fußabdruck/MeshroomCache/CameraInit/bb43b7d26dfee971482dbab12db561c47d883d45/cameraInit.sfm» —featuresFolders «O:/Spielereien/Photogrammetrie/Fußabdruck/MeshroomCache/FeatureExtraction/e519d4d14c9b10164eb9fad0f17948ce215ac976» —matchesFolders «O:/Spielereien/Photogrammetrie/Fußabdruck/MeshroomCache/FeatureMatching/4ae203ddcf3e33a2c9ce59e5645c5d584fa980e7» —describerTypes sift —localizerEstimator acransac —localizerEstimatorMaxIterations 4096 —localizerEstimatorError 0.0 —lockScenePreviouslyReconstructed False —useLocalBA True —localBAGraphDistance 1 —maxNumberOfMatches 0 —minInputTrackLength 3 —minNumberOfObservationsForTriangulation 2 —minAngleForTriangulation 3.0 —minAngleForLandmark 2.0 —maxReprojectionError 4.0 —minAngleInitialPair 5.0 —maxAngleInitialPair 40.0 —useOnlyMatchesFromInputFolder False —useRigConstraint True —lockAllIntrinsics True —initialPairA «» —initialPairB «» —interFileExtension .abc —verboseLevel warning —output «O:/Spielereien/Photogrammetrie/Fußabdruck/MeshroomCache/StructureFromMotion/c72059613522267ad618e0e1e944f584af2f69c6/sfm.abc» —outputViewsAndPoses «O:/Spielereien/Photogrammetrie/Fußabdruck/MeshroomCache/StructureFromMotion/c72059613522267ad618e0e1e944f584af2f69c6/cameras.sfm» —extraInfoFolder «O:/Spielereien/Photogrammetrie/Fußabdruck/MeshroomCache/StructureFromMotion/c72059613522267ad618e0e1e944f584af2f69c6»
  • logFile: O:/Spielereien/Photogrammetrie/Fußabdruck/MeshroomCache/StructureFromMotion/c72059613522267ad618e0e1e944f584af2f69c6/log
  • elapsed time: 0:00:39.657431
    HDF5-DIAG: Error detected in HDF5 (1.10.1) thread 0:
    #000: C:GitHubvcpkgbuildtreeshdf5srcCMake-hdf5-1.10.1hdf5-1.10.1srcH5F.c line 408 in H5Fis_hdf5(): unable open file
    major: File accessibilty
    minor: Not an HDF5 file

3D viewer #1 : C:GitHubvcpkgbuildtreeshdf5srcCMake-hdf5-1.10.1hdf5-1.10.1srcH5Fint.c line 532 in H5F__is_hdf5(): unable to open file
major: Low-level I/O
minor: Unable to initialize object

Open the output directory #2 : C:GitHubvcpkgbuildtreeshdf5srcCMake-hdf5-1.10.1hdf5-1.10.1srcH5FD.c line 809 in H5FD_open(): open failed
major: Virtual File Layer
minor: Unable to initialize object

Standalone version #3 : C:GitHubvcpkgbuildtreeshdf5srcCMake-hdf5-1.10.1hdf5-1.10.1srcH5FDsec2.c line 346 in H5FD_sec2_open(): unable to open file: name = ‘O:/Spielereien/Photogrammetrie/Fu├ƒabdruck/MeshroomCache/StructureFromMotion/c72059613522267ad618e0e1e944f584af2f69c6/sfm.abc’, errno = 2, error message = ‘No such file or directory’, flags = 0, o_flags = 0
major: File accessibilty
minor: Unable to open file

EDIT:
And when I remove the special character from the path (replacing the ß),
StructureFromMotion does now throw an «BundleAdjustment failed, the solution is not usable» error …

Источник

Prepare dense scene #530

Comments

jonbragado commented Jun 30, 2019

Configuration
Version 2019.1.0
Windows 10
Python 3.6.6

Going through every stage the node called PrepareDenseScene fails to compute. Goes red with no signal in the log of being wrong at any stage.
I need the dense scene computation, and for some reason the camera export fails too; the baked .abc file lack any cached attributes as keyframes on the camera (unless it is the same case as in maya where the .abc have to be baked first?)

The text was updated successfully, but these errors were encountered:

fabiencastan commented Jun 30, 2019

Could you show the log of the SfM node?

jonbragado commented Jun 30, 2019

fabiencastan commented Jun 30, 2019

It may be due to the non ascii character in the path A�reo .

jonbragado commented Jun 30, 2019

How come then the other nodes are able to write to the respective folders properly without any issues of that non-ascii character? Im giving it a try now, just asking.
Also, we have a workflow in Spanish of all the 3D software we use and run, even our windows in Spanish. Any chance we can get full on UTF-8 native support for future releases?

fabiencastan commented Jun 30, 2019

In the PrepareDenseScene we write images using the oiio library and the problem could be there. But first, we need to validate if the problem comes from that 😉

jonbragado commented Jun 30, 2019

Internationalization is also something it would be great to have, Meshroom in Spanish. We can help on that as a proofreader for a first machine translation pass.
Already doing it for another open source project called DJV. It would be great to have the interface in Spanish.

natowi commented Jun 30, 2019 •

@fabiencastan this could indeed be an oiio related issue which should be fixed with the latest release from what I read on OpenImageIO/oiio#1454. Alicevision might has been using an outdated oiio version for the last build. Edit: Hmm. For Alicevision oiio Release-2.0.3. is being used, which should include utf8 support.

Источник

Prepare Dense Scene Error #1015

Comments

miquelrosell99 commented Aug 2, 2020

Hello,
I’m getting an error when trying to compute the Prepare Dense Scene node. It’s strange, because it usually works without any problems:

These are the logs i get:
<
«status»: «ERROR»,
«execMode»: «LOCAL»,
«nodeName»: «PrepareDenseScene_1»,
«nodeType»: «PrepareDenseScene»,
«packageName»: «aliceVision»,
«packageVersion»: null,
«graph»: «»,
«commandLine»: «aliceVision_prepareDenseScene —input «F:/Documentos/Universitat/GEM/Quart/TFG/Projectes Meshroom/Excursiu00f3 Pirineus/MeshroomCache/StructureFromMotion/0096df343e4b80c2fa3e9eadcbb056167847f231/sfm.abc» —outputFileType exr —saveMetadata True —saveMatricesTxtFiles False —evCorrection False —verboseLevel info —output «F:/Documentos/Universitat/GEM/Quart/TFG/Projectes Meshroom/Excursiu00f3 Pirineus/MeshroomCache/PrepareDenseScene/52532b163b1736f5eab5d7ee5826748d6fd6bc1f» —rangeStart 0 —rangeSize 40″,
«env»: null,
«startDateTime»: «2020-08-02 07:52:57.937947»,
«endDateTime»: «»,
«elapsedTime»: 0,
«hostname»: «Baymax»,
«sessionUid»: «32b5829c-d483-11ea-b305-d0c0bfb5a3ae»,
«returnCode»: 3221226505,
«elapsedTimeStr»: «0:00:00»
>

Any help will be appreciated. Thanks!

The text was updated successfully, but these errors were encountered:

Источник

meshroom don’t calculate prepare dense scene #456

Comments

AlejandroHerreraJ commented Apr 28, 2019

I´m trying to make a project on Meshroom, but when meshroom were calculating it stops on PrepareDenseScene

6/11 PrepareDenseScene
HDF5-DIAG: Error detected in HDF5 (1.10.1) thread 0:
#000: C:GitHubvcpkgbuildtreeshdf5srcCMake-hdf5-1.10.1hdf5-1.10.1srcH5F.c line 408 in H5Fis_hdf5(): unable open file
major: File accessibilty
minor: Not an HDF5 file
#1: C:GitHubvcpkgbuildtreeshdf5srcCMake-hdf5-1.10.1hdf5-1.10.1srcH5Fint.c line 532 in H5F__is_hdf5(): unable to open file
major: Low-level I/O
minor: Unable to initialize object
#2: C:GitHubvcpkgbuildtreeshdf5srcCMake-hdf5-1.10.1hdf5-1.10.1srcH5FD.c line 809 in H5FD_open(): open failed
major: Virtual File Layer
minor: Unable to initialize object
#3: C:GitHubvcpkgbuildtreeshdf5srcCMake-hdf5-1.10.1hdf5-1.10.1srcH5FDsec2.c line 346 in H5FD_sec2_open(): unable to open file: name = ‘C:/Users/aleja/OneDrive — Universidad de los andes/Escritorio/Universidad/Dise├▒o Grafico/Inventor/Proyecto 2/MeshroomCache/StructureFromMotion/3b02f27ac03ad0842d9412800084ccab34c7569c/sfm.abc’, errno = 2, error message = ‘No such file or directory’, flags = 0, o_flags = 0
major: File accessibilty
minor: Unable to open file

  • commandLine: aliceVision_prepareDenseScene —input «C:/Users/aleja/OneDrive — Universidad de los andes/Escritorio/Universidad/Diseño Grafico/Inventor/Proyecto 2/MeshroomCache/StructureFromMotion/3b02f27ac03ad0842d9412800084ccab34c7569c/sfm.abc» —outputFileType exr —saveMetadata True —saveMatricesTxtFiles False —verboseLevel info —output «C:/Users/aleja/OneDrive — Universidad de los andes/Escritorio/Universidad/Diseño Grafico/Inventor/Proyecto 2/MeshroomCache/PrepareDenseScene/c4c01d67d6f577b80b31307dbd1a3a773abd4a0d» —rangeStart 0 —rangeSize 40
  • logFile: C:/Users/aleja/OneDrive — Universidad de los andes/Escritorio/Universidad/Diseño Grafico/Inventor/Proyecto 2/MeshroomCache/PrepareDenseScene/c4c01d67d6f577b80b31307dbd1a3a773abd4a0d/0.log
  • elapsed time: 0:00:07.485765
    ERROR:root:Error on node computation: Error on node «PrepareDenseScene_1(0)»:
    Log:
    Program called with the following parameters:
  • input = «C:/Users/aleja/OneDrive — Universidad de los andes/Escritorio/Universidad/Diseño Grafico/Inventor/Proyecto 2/MeshroomCache/StructureFromMotion/3b02f27ac03ad0842d9412800084ccab34c7569c/sfm.abc»
  • output = «C:/Users/aleja/OneDrive — Universidad de los andes/Escritorio/Universidad/Diseño Grafico/Inventor/Proyecto 2/MeshroomCache/PrepareDenseScene/c4c01d67d6f577b80b31307dbd1a3a773abd4a0d»
  • outputFileType = «exr»
  • rangeSize = 40
  • rangeStart = 0
  • saveMatricesTxtFiles = 0
  • saveMetadata = 1
  • verboseLevel = «info»

The text was updated successfully, but these errors were encountered:

Источник

василичъ

Идет загрузка
Загрузка

07.05.2020

1655

 Всем добра.

 Хотел установить себе meshroom. Скачал, распаковал всё как полагается, но при запуске выдаёт ошибку. 

meshroom ругается

 Что ему надо?

Ответы на вопросы

Популярные вопросы

Недоэкструзия

Столкнулся с проблей в cura. Знечание потока поставил 200% и скорость втягивания 190mm/s. И пластика недостаточно. Что делать?

перестал работать обдув хотэнда

привет ребят. на днях сломал вентилятор ( обдув хотэнда) купил новый, 24в. Все четко подсоеденил, а он не раотает, в плату не лазил. Уже не знаю что д…

Вопрос по датчику Auto-leveling Sensor и g code

cinema4d

Идет загрузка
Загрузка

20.02.2019

8357

Всем добрый вечер!, купил датчик авто уровня , и теперь есть пару вопросов у тех кто таким пользовал, скажите его на горячую не льзя использовать я та…

Читайте в блогах

Structure from Motion is like the holy grail of multiple view geometry. It is a process of estimating camera pose and retrieving a sparse reconstruction simultaneously. In this tutorial, I’ll discuss every step of this technique and provide detailed implementation using open3DCV. The source code can be found here.

Table of Content

  1. Test images
  2. Image IO
  3. Feature detection
  4. Descriptor extraction
  5. Feature matching
    • class DMatch
    • class Pair
  6. Relative pose estimation
    • Known intrinsic parameters
      • Essential matrix estimation
      • Fundamental matrix estimation
      • Rigid pose from Essential matrix
    • Unknown intrinsic parameters
      • Homography estimation
      • focal length from Homography
  7. N-view triangulation
    • class Graph
  8. Bundle adjustment
  9. Two-view SfM
  10. N-view SfM
  11. Output
  12. Results

0. Test images

I used the bust images from Jianxiong Xiao’s SfM tutorial, and templeRing dataset from Middlebury mview datasets. The directory of the test images is

string idir = "/Users/BlacKay/Documents/Projects/Images/test/bust/";
string idir = "/Users/BlacKay/Documents/Projects/Images/test/templeRing/";

1. Image IO

The image naming convention follows that of PMVS. For instance, the first image is named as 00000000.jpg, the second is named as 00000001.jpg, and so on.

const int nimages = 10;
char iname[100];
vector<Image> images(nimages);
for (int i = 0; i < nimages; ++i)
{
    sprintf(iname, "%s/%08d.jpg", idir.c_str(), i);
    images[i].read(iname);
}

2. Feature detection

The currently implemented feature detector is SIFT detector, and more feature detectors are under development. The configuration class SiftParam needs eight parameters to configure both SIFT detector and descriptor, the first five is responsible for the detector while the last three is responsible for the descriptor. The datatype Keypoint is used to hold the detected keypoint.

SiftParams sift_param(3, 3, 0, 10.0f / 255.0, 1, -INFINITY, 3, 2);
Sift sift(sift_param);
vector<vector<Keypoint> > keys(nimages, vector<Keypoint>());
vector<vector<Vecf> > descs(nimages, vector<Vecf>());
for (int i = 0; i < nimages; ++i)
{
    sift.detect_keypoints(images[i], keys[i]);
    sift.extract_descriptors(images[i], keys[i], descs[i]);
    sift.clear(); // don't forget this
}




Results of feature detection.

Feature descriptor is extracted per keypoint, though theoretically, more than one descriptor is possible (at most 4). Currently, only SIFT descriptor is implemented, but more descriptors are under developments. The last three parameters of the SiftParam class is responsible for the configuration of the SIFT descriptor. Each descriptor is a 128 vector which is hold by a type Vec or Vecf. See the code above.

4. Feature matching

Once features have been detected and descriptors extracted in each image, the system matches features between each pair of images in the input image set. The number of image pairs is (binom{N}{2}), where (N) is the size of the image set. Let ({f_I}) denote the set of features detected in image (I) and (d(f_I^m)) descriptor of feature (f_I^m). For each pair of images (I) and (J), the system considers each feature (f_I^min {f_I}) and finds its nearest neighbor (f_J^nin {f_J}):

[f_J^n = argmin_{f_J^pin {f_J}} dist(d(f_I^m), d(f_J^p))]

where (dist(cdot, cdot)) is a user-specified distance metric. This brute-force approach can be replaced by using an approximate nearest neighbour library, such as FLANN, ANN, Nanoflann, and so on. To make the matching results more robust, a bi-directional verification is performed, which requires that (f_I^m) and (f_J^n) need to be among the top (K) matching points of one another. The information of a pair of matching keypoints is stored in a type DMatch, which is discussed below.

class DMatch

The datatype DMatch holds the information of a pair of correspondening features, and is defined as follows:

  • std::pair<int, int> ind_key_ holds the indexes of the matching keypoints;
  • std::pair<Vec2f, Vec2f> point_ holds the 2D positions of the matching keypoints.
class DMatch
{
public:
    DMatch () {};
    DMatch (const int r_ikey1, const int r_ikey2, const float dist) :
        ind_key_(r_ikey1, r_ikey2), dist_(dist) {};
    DMatch (const int r_ikey1, const int r_ikey2, const Vec2f r_pt1, const Vec2f r_pt2, const float dist) :
        ind_key_(r_ikey1, r_ikey2), point_(r_pt1, r_pt2), dist_(dist) {};
    DMatch (const DMatch& match) :
        ind_key_(match.ind_key_), point_(match.point_), dist_(match.dist_) {};
    
    const float& dist() const;
    
    std::pair<int, int> ind_key_;
    std::pair<Vec2f, Vec2f> point_;
    float dist_;
};

class Pair

Before heading to the next section of estimating the relative pose of an image pair, we first define the most fundmental data structure used in pairwise image matching, which is named Pair. It stores everything regaring the two-view geometry, including matching features, fundamental matrix, essential matrix, relative rotation and translation, and so on. A brief summary of the class Pair and the declaration is as follows:

  • camera indexes: ind_cam_;
  • matching features: matches_;
  • fundamental and essential matrix: F_, E_;
  • intrinsics and extrinsics of the corresponding cameras: intrinsics_mat_, extrinsics_mat_.
class Pair
{
public:
    Pair();
    Pair(const int cam1, const int cam2);
    Pair(const int cam1, const int cam2, const std::vector<std::pair<Vec2f, Vec2f> >& matches);
    Pair(const int cam1, const int cam2, const std::vector<DMatch>& matches);
    ~Pair();
    
    void init(const int ind_cam1, const int ind_cam2);
    void update_matches(const int* vote_inlier);
    void update_intrinsics(const float f, const int w, const int h);
    bool operator<(const Pair& rhs) const;
    float baseline_angle() const;
    
    std::vector<int> cams_;
    std::vector<DMatch> matches_;
    Mat3f F_;
    Mat3f E_;
    std::vector<Mat3f> intrinsics_mat_;
    std::vector<Mat34f> extrinsics_mat_;
    
};

See below some of the matching results:



Results of feature matching.

vector<Pair> pairs;
Matcher_Param matcher_param(0.6*0.6, 50);
Matcher_Flann matcher(matcher_param);
vector<vector<vector<DMatch> > > matches_pairwise(nimages-1, vector<vector<DMatch> >());
for (int i = 0; i < nimages-1; ++i)
{
  matches_pairwise[i].resize(nimages-(i+1));
  for (int j = i+1; j < nimages; ++j)
  {
    vector<DMatch>& matches = matches_pairwise[i][j-(i+1)];
    matcher.match(descs[i], descs[j], matches);
    matcher.matching_keys(keys[i], keys[j], matches);
    pairs.push_back(Pair(i, j, matches));
    string fname = odir+"matching"+to_string(i+1)+"_"+to_string(j+1)+".txt";
    write_matches(fname, matches);
    if ((false))
    {
      draw_matches(images[i], keys[i], images[j], keys[j], matches, odir+"matching"+to_string(i+1)+"_"+to_string(j+1));
    }
    cout << "Image (" << i+1 << ", " << j+1 << "): matches number: " << matches.size() << endl;
  }
}

5. Relative pose estimation

For each pair of images with sufficient number of matches/correspondences, a relative pose estimation is performed, which is followed by a triangulation step, a bundle adjustment step, and then various verification steps to check if this pair of images holds enough information for subsequent steps, or if the estimated relative pose is accurate enough. This step is a crucial part of two-view SfM, and is generally divided into two groups, one with calibrated cameras, or known focal length, and one with uncalibrated cameras, or unknown focal length.

Known intrinsic parameters

SfM using calibrated cameras is the most common case in practice since the camera intrinsics remain fixed unless manually changed. This is the case where euclidean (metric) reconstruction is possible, whereas in the uncalibrated case, only projective reconstruction is possible.

Estimate essential matrix

Essential matrix can be estimated using the 5-point algorithm + RANSAC. This approach is still under development since currently the Essential Matrix is computed from the estimated Fundamental Matrix, the underlying theory is as follows:

[E = K_2^top F K_1]

Estimate fundamental matrix

The Fundamental matrix can be estimated using the 7-point algorithm + RANSAC. I choose 7-point algorithm over 8-point algorithm because it requires less data thus less iterations are needed to achieve the same probability of inliers. The theory and implementation of the estimation of Fundamental matrix, RANSAC, and robust estimation of fundamental matrix using RANSAC are discussed in depth in the corresponding blog posts. The estimated matrices regarding the epipolar geometry are stored in the data structure Pair as mention previously. The source code of estimating fundamental matrix is as follows:

for (int i = 0; i < pairs.size(); ++i)
{
    // ------ image pair ------
    Pair& pair = pairs[i];
    int nmatches = static_cast<int>(pair.matches_.size());
    const int& ind1 = pair.cams_[0];
    const int& ind2 = pair.cams_[1];
    cout << "*******************************" << endl;
    cout << " 2-View SfM of image " << ind1+1 << " and " << ind2+1 << endl;
    cout << "*******************************" << endl;

    // ------ estimate Fundamental matrix ------
    vector<float> params(9);
    int *vote_inlier = new int[nmatches];
    Param_Estimator<DMatch, float>* fund_esti = new open3DCV::Fundamental_Estimator(1e-8);
    float ratio_inlier = Ransac<DMatch, float>::estimate(fund_esti, pair.matches_, params, 0.99, vote_inlier);
    std::cout << "ratio of matching inliers: " << ratio_inlier << std::endl;
    if (ratio_inlier < thresh_inlier_ratio)
    {
        delete [] vote_inlier;
        continue;
    }
    pair.F_ << params[0], params[3], params[6],
               params[1], params[4], params[7],
               params[2], params[5], params[8];

    // ------ other more code ------
}



Results of fundamental matrix.

Rigid pose estimation from Essential matrix

We can estimate the relative position and orientation of two cameras from Essential matrix, the theory and implementation are discussed in depth in this post. The source code of estimating the rigid pose is as follows:

// ------ estimate relative pose ------
const float f = 1520.4;
const int w = 302.32*2, h = 246.87*2;
pair.update_intrinsics(f, w, h);
pair.E_ = pair.intrinsics_mat_[1].transpose() * pair.F_ * pair.intrinsics_mat_[0];
Rt_from_E(pair);

Unknown intrinsic parameters

This is the case where uncalibrated cameras are used, and the scene is reconstructed up to a projective projection. This section is still under development.

Estimate homography

[TBD]

Estimate focal length from homography

The detail of estimation of focal length from homography can be found here.

6. N-view triangulation

From calibrated cameras and correspondences, the positions of the 3D points can be estimated using N-view triangulation techniques. The theory and implementation of various triangulation techniques are discussed in depth in this post. Recall that we defined a data structure Pair for two-view case, a new data structure named Graph is defined for the N-view case.

class Graph

The class Graph is heavily used hereafter, it is a data structure that stores information of multiple cameras with sufficient amount of matching features, the corresponding camera poses/orientations, and a sparse 3D reconstruction, the detailed definition is as follows:

  • number of cameras: ncams_;
  • indexes of cameras: ind_cam_;
  • intrinsics and extrinsics of cameras: intrinsics_mat_, extrinsics_mat_;
  • point tracks: tracks_. Each set of matching pixels across multiple images forms one track, which also corresponds to a single 3D point, i.e., each individual pixel in a track should be the projection of the same 3D point. It’s the N-view counterpart of DMatch.
  • structure points: structure_points_, a data structure holds information of the estimated 3D point.
class Graph
{
public:
    Graph();
    Graph(const Pair& pair);
    ~Graph();
    
    void init(const Pair& pair);
    int index(int icam) const;
    int size() const;
    static std::vector<int> intersect(const std::vector<Track>& tracks1, const std::vector<Track>& tracks2);
    
    int ncams_;
    std::vector<int> ind_cam_;
    std::vector<Mat3f> intrinsics_mat_;
    std::vector<Mat34f> extrinsics_mat_;
    std::vector<Track> tracks_;
    std::vector<Structure_Point> structure_points_;
};

The triangulation method, such as triangulate_nonlinear(Graph& graph) takes a Graph object as input and compute the structure_points_ from feature tracks tracks_ and corresponding camera parameters intrinsics_mat_ and extrinsics_mat_.

triangulate_nonlinear(graph[i]);
// compute reprojection error
float error = reprojection_error(graph[i]);
std::cout << "reprojection error (before bundle adjustment): " << error << std::endl;

7. Bundle adjustment

After successfully estimating the camera extrinsics as well as the 3D point positions, we proceed to optimize a reprojection error with respect to all estimated parameters. This process is known as bundle adjustment, which is ubiquitously used as the last step in most feature-based estimation problems. The implementation of bundle adjustment of SfM using Ceres solver is discussed in this post.

// ------ bundle adjustment ------
cout << "------ start bundle adjustment ------" << endl;
Open3DCVBundleAdjustment(graph, BUNDLE_NO_INTRINSICS);
if (update_focal)
    Open3DCVBundleAdjustment(graph, BUNDLE_FOCAL_LENGTH);
else if (update_intrinsic)
    Open3DCVBundleAdjustment(graph, BUNDLE_INTRINSICS);
cout << "------ end bundle adjustment ------" << endl;
error = reprojection_error(graph);
std::cout << "reprojection error (after bundle adjustment): " << error << std::endl;

8. Two-view SfM

Two-view SfM is performed on each pair of images with sufficient amount of matches. The pseudocode of two-view SfM is as follows:

Require: internal camera calibration (possibly from EXIF data)
Require: pairwise geometry consistent point correspondences
Ensure: 3D point cloud
Ensure: camera poses
for pair in pairs
  pick pair p in pairs
  * robustly estimate fundamental/essential matrix from images of p
  * robustly estimate pose and orientation
  triangulate matching points in two views
  perform bundle adjustment
  verify baseline angle, reprojection error, and so on. if successful, go to next step, if not, continue to next loop
  construct a graph g from pair p
end for

A demonstrative example of the results of two-view SfM is as follows:

*******************************
 2-View SfM of image 0 and 1
*******************************
ratio of matching inliers: 0.988506
number of matches: 172
reprojection error (before bundle adjustment): 3.87837
reprojection error (after bundle adjustment): 0.43175
*******************************
 2-View SfM of image 1 and 2
*******************************
ratio of matching inliers: 0.916667
number of matches: 110
reprojection error (before bundle adjustment): 2.25564
reprojection error (after bundle adjustment): 0.381238
*******************************
 2-View SfM of image 2 and 3
*******************************
ratio of matching inliers: 0.967742
number of matches: 120
reprojection error (before bundle adjustment): 2.01501
reprojection error (after bundle adjustment): 0.238207
*******************************
 2-View SfM of image 3 and 4
*******************************
ratio of matching inliers: 0.840426
number of matches: 79
reprojection error (before bundle adjustment): 1.19674
reprojection error (after bundle adjustment): 0.178282

9. N-view SfM

After two-view SfM, an iterative step that merges multiple graphs into a global graph is performed, the pseudocode of this process is as follows:

Require: internal camera calibration (possibly from EXIF data)
Require: point tracks from multiple views
Require: a global graph contains all currently merged images
Ensure: 3D point cloud
Ensure: camera poses
for graph in graphs
  pick graph g in graphs having maximum number of common tracks with the global graph
  merge tracks of global graph with those of graph g
  triangulate tracks
  perform bundle adjustment
  remove track outliers based on baseline angle and reprojection error
  perform bundle adjustment
end for

The source code for N-view triangulation and N-view bundle adjustment are exactly the same as those of the 2-view counterparts. The source code of this N-view SfM is as follows:

Graph global_graph(graph[0]);
for (int i = 1; i < nimages - 1; ++i)
{
    cout << "*******************************" << endl;
    cout << " N-View SfM: merging graph 0-" << i << endl;
    cout << "*******************************" << endl;
    // ------ merge graphs ------
    Graph::merge_graph(global_graph, graph[i]);
    
    // ------ N-view triangulation ------
    triangulate_nonlinear(global_graph);
    float error = reprojection_error(global_graph);
    std::cout << "reprojection error (before bundle adjustment): " << error << std::endl;
    
    // ------ N-view bundle adjustment ------
    cout << "------ start bundle adjustment ------" << endl;
    Open3DCVBundleAdjustment(global_graph, BUNDLE_PRINCIPAL_POINT);
    cout << "------ end bundle adjustment ------" << endl;
    error = reprojection_error(global_graph);
    std::cout << "reprojection error (after bundle adjustment): " << error << std::endl;
}

Merge graphs

As we can see, the main challenge of this step is to merge multiple graphs into a global graph containing all camera parameters, feature tracks, and 3D structure points. This source code of this process is as follows:

void Graph::merge_graph(Graph &graph1, Graph &graph2)
{
    vector<int>::iterator iter;
    
    // find overlapping cameras
    vector<int> cams_common(std::max(graph1.ncams_, graph2.ncams_));
    iter = std::set_intersection(graph1.cams_.begin(), graph1.cams_.end(), graph2.cams_.begin(), graph2.cams_.end(), cams_common.begin());
    cams_common.resize(iter - cams_common.begin());
    
    // find distinct cameras
    vector<int> cams_diff(std::max(graph1.ncams_, graph2.ncams_));
    iter = std::set_difference(graph2.cams_.begin(), graph2.cams_.end(), graph1.cams_.begin(), graph1.cams_.end(), cams_diff.begin());
    cams_diff.resize(iter - cams_diff.begin());
    
    if (cams_common.empty())
        return;
    
    // merge the camera intrinsic and extrinsic parameters
    int ind_cam1 = graph1.index(cams_common[0]);
    int ind_cam2 = graph2.index(cams_common[0]);
    Mat34f Rt1 = graph1.extrinsics_mat_[ind_cam1];
    Mat34f Rt2 = graph2.extrinsics_mat_[ind_cam2];
    Mat34f Rt21 = concat_Rt(inv_Rt(Rt1), Rt2);
    for (int i = 0; i < graph2.structure_points_.size(); ++i)
    {
        Vec3f& pt3d = graph2.structure_points_[i].coords();
        pt3d = Rt21 * pt3d.homogeneous();
    }
    Mat34f Rt21t = inv_Rt(Rt21);
    for (int i = 0; i < cams_diff.size(); ++i)
    {
        graph1.cams_.push_back(cams_diff[i]);
        graph1.intrinsics_mat_.push_back(graph2.intrinsics_mat_[graph2.index(cams_diff[i])]);
        graph1.extrinsics_mat_.push_back(concat_Rt(graph2.extrinsics_mat_[graph2.index(cams_diff[i])], Rt21t));
    }
    graph1.ncams_ = static_cast<int>(graph1.cams_.size());
    vector<size_t> indexes;
    sort<int>(graph1.cams_, graph1.cams_, indexes);
    reorder<Mat3f>(graph1.intrinsics_mat_, indexes, graph1.intrinsics_mat_);
    reorder<Mat34f>(graph1.extrinsics_mat_, indexes, graph1.extrinsics_mat_);
    
    const int ntracks = static_cast<int>(graph1.tracks_.size());
    for (int j = 0; j < graph2.tracks_.size(); ++j)
    {
        Track& track2 = graph2.tracks_[j];
        bool is_track_connected = false;
        for (int i = 0; i < ntracks; ++i)
        {
            Track& track1 = graph1.tracks_[i];
            vector<pair<int, int> > feats_common;
            Track::find_overlapping_keypoints(track1, track2, feats_common);
            // find overlapping feature tracks from common cameras
            if (!feats_common.empty())
            {
                Graph::merge_tracks(track1, track2, feats_common);
                is_track_connected = true;
                break;
            }
        }
        // find non-overlapping feature tracks from common cameras
        if (!is_track_connected)
        {
            graph1.add_track(track2);
            graph1.add_struct_pt(graph2.structure_points_[j]);
        }
    }

    // find new features from non-overlapping cameras, this part is not needed for now
}

A demonstrative results of this N-view SfM is as follows:

*******************************
 N-View SfM: merging graph 0-1
*******************************
reprojection error (before bundle adjustment): 1.76187
reprojection error (after bundle adjustment): 0.340547
*******************************
 N-View SfM: merging graph 0-2
*******************************
reprojection error (before bundle adjustment): 3.91939
reprojection error (after bundle adjustment): 0.328052
*******************************
 N-View SfM: merging graph 0-3
*******************************
reprojection error (before bundle adjustment): 4.75183
reprojection error (after bundle adjustment): 0.321569

10. Output

For now, the camera parameters are written to PMVS-compatible files.

11. Results

The lack of detail in the first dataset could be due to the lack of surface texture.




Estimated camera position and orientation, and the dense reconstruction result using PMVS

Эй, ребята,
У меня такая же проблема :

Программа вызывается со следующими параметрами:

  • angleFactor = 15
  • giveMarginFactor = 2
  • depthMapFilterFolder = «C: / Users / henri / 3D-объекты / плато 2 / MeshroomCache / DepthMapFilter / 9ac2bcd2ca8fdbf1b183ee1ea6938bdd10ee6701»
  • depthMapFolder = «C: / Users / henri / 3D-объекты / плато 2 / MeshroomCache / DepthMap / a51782665925232ed03086213a95d327f041a21e»
  • ini = «C: / Users / henri / 3D Objects / plateau 2 / MeshroomCache / PrepareDenseScene / 37c3e70e216d9c3e9b0aec4fb3d4e27c4c239fbc / mvs.ini»
  • maxInputPoints = 55647000
  • maxPoints = 1330000
  • maxPointsPerVoxel = 1711000
  • minAngleThreshold = 1
  • minStep = 2
  • output = «C: / Users / henri / 3D Objects / plateau 2 / MeshroomCache / Meshing / 1c53a445e6afdcb503a1be78472b1a1460a1ff02 / mesh.obj»
  • partitioning = Неизвестный тип «enum EPartitioningMode»
  • pixSizeMarginFinalCoef = 4
  • pixSizeMarginInitCoef = 2
  • RefinFuse = 1
  • repartition = Неизвестный тип «enum ERepartitionMode»
  • simFactor = 15
  • simGaussianSize = 10
  • simGaussianSizeInit = 10
  • verboseLevel = «информация»
  • voteMarginFactor = 4

[22: 31: 56.074699] [информация] Найдено 1 размер (а) изображения:
[22: 31: 56.080684] [информация] — [2448×3264]
[22: 31: 56.124560] [info] Максимальный общий размер: [1224×1632]
[22: 31: 56.125557] [предупреждение] repartitionMode: 1
[22: 31: 56.125557] [предупреждение] partitioningMode: 2

То же самое

АППАРАТНОЕ ОБЕСПЕЧЕНИЕ

  • Процессор Intel (R) Core (TM) i7-7700 @ 3,60 ГГц
  • NVIDIA GeForce GTX 1050 Ti (GP107-400) [768 CUDA-ядер]
  • 16 ГБ Crucial DDR4-2400

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

  • Windows 10 Pro 1803 64-разрядная.
  • Meshroom 2018.1.0 (09.08.2018)
  • Драйвер NVIDIA 399.07
  • NVIDIA CUDA 9.2.217

БРЕВНО

[10/12] Meshing
 - commandLine: aliceVision_meshing  --ini "C:/Users/pwab/Desktop/schluessel/MeshroomCache/PrepareDenseScene/fe709afcee752880f360f8ef985f4e9f102887f8/mvs.ini" --depthMapFolder "C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMap/7a545cb312fb203153d908913eb55d6fec28041d" --depthMapFilterFolder "C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75" --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 --verboseLevel trace --output "C:/Users/pwab/Desktop/schluessel/MeshroomCache/Meshing/1aaa527e9d806face18de45de175750bb368d50a/mesh.obj"
 - logFile: C:/Users/pwab/Desktop/schluessel/MeshroomCache/Meshing/1aaa527e9d806face18de45de175750bb368d50a/log
 - elapsed time: 0:00:01.801734
ERROR:root:Error on node computation: Error on node "Meshing_1":
Log:
Program called with the following parameters:
 * angleFactor = 15
 * contributeMarginFactor = 2
 * depthMapFilterFolder = "C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75"
 * depthMapFolder = "C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMap/7a545cb312fb203153d908913eb55d6fec28041d"
 * ini = "C:/Users/pwab/Desktop/schluessel/MeshroomCache/PrepareDenseScene/fe709afcee752880f360f8ef985f4e9f102887f8/mvs.ini"
 * maxInputPoints = 50000000
 * maxPoints = 5000000
 * maxPointsPerVoxel = 1000000
 * minAngleThreshold = 1
 * minStep = 2
 * output = "C:/Users/pwab/Desktop/schluessel/MeshroomCache/Meshing/1aaa527e9d806face18de45de175750bb368d50a/mesh.obj"
 * partitioning =  Unknown Type "enum EPartitioningMode"
 * pixSizeMarginFinalCoef = 4
 * pixSizeMarginInitCoef = 2
 * refineFuse = 1
 * repartition =  Unknown Type "enum ERepartitionMode"
 * simFactor = 15
 * simGaussianSize = 10
 * simGaussianSizeInit = 10
 * verboseLevel = "trace"
 * voteMarginFactor = 4

[10:57:20.980565][info] Found 2 image dimension(s):
[10:57:20.981539][info]  - [1944x2592]
[10:57:20.981539][info]  - [2592x1944]
[10:57:20.981539][debug] [IO] Read Image Metadata: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMap/7a545cb312fb203153d908913eb55d6fec28041d/812854499_depthMap.exr
[10:57:20.983532][debug] [IO] Read Image Metadata: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMap/7a545cb312fb203153d908913eb55d6fec28041d/1261943489_depthMap.exr
[10:57:20.984554][info] Overall maximum dimension: [1296x1296]
[10:57:20.984554][warning] repartitionMode: 1
[10:57:20.985551][warning] partitioningMode: 1
[10:57:20.985551][info] Meshing mode: multi-resolution, partitioning: single block.
[10:57:20.985551][info] Estimate space.
[10:57:20.986531][debug] [IO] Read Image Metadata: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75/812854499_depthMap.exr
[10:57:20.986531][debug] [IO] Read Image Metadata: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75/1261943489_depthMap.exr
[10:57:20.988519][debug] [IO] Read Image: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75/812854499_depthMap.exr
[10:57:21.012455][debug] [IO] Read Image: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75/1261943489_depthMap.exr

WARNING: downgrade status on node "MeshFiltering_1" from Status.SUBMITTED to Status.NONE
WARNING: downgrade status on node "Texturing_1" from Status.SUBMITTED to Status.NONE
ERROR:root:Error during Graph execution Error on node "Meshing_1":
Log:
Program called with the following parameters:
 * angleFactor = 15
 * contributeMarginFactor = 2
 * depthMapFilterFolder = "C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75"
 * depthMapFolder = "C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMap/7a545cb312fb203153d908913eb55d6fec28041d"
 * ini = "C:/Users/pwab/Desktop/schluessel/MeshroomCache/PrepareDenseScene/fe709afcee752880f360f8ef985f4e9f102887f8/mvs.ini"
 * maxInputPoints = 50000000
 * maxPoints = 5000000
 * maxPointsPerVoxel = 1000000
 * minAngleThreshold = 1
 * minStep = 2
 * output = "C:/Users/pwab/Desktop/schluessel/MeshroomCache/Meshing/1aaa527e9d806face18de45de175750bb368d50a/mesh.obj"
 * partitioning =  Unknown Type "enum EPartitioningMode"
 * pixSizeMarginFinalCoef = 4
 * pixSizeMarginInitCoef = 2
 * refineFuse = 1
 * repartition =  Unknown Type "enum ERepartitionMode"
 * simFactor = 15
 * simGaussianSize = 10
 * simGaussianSizeInit = 10
 * verboseLevel = "trace"
 * voteMarginFactor = 4

[10:57:20.980565][info] Found 2 image dimension(s):
[10:57:20.981539][info]  - [1944x2592]
[10:57:20.981539][info]  - [2592x1944]
[10:57:20.981539][debug] [IO] Read Image Metadata: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMap/7a545cb312fb203153d908913eb55d6fec28041d/812854499_depthMap.exr
[10:57:20.983532][debug] [IO] Read Image Metadata: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMap/7a545cb312fb203153d908913eb55d6fec28041d/1261943489_depthMap.exr
[10:57:20.984554][info] Overall maximum dimension: [1296x1296]
[10:57:20.984554][warning] repartitionMode: 1
[10:57:20.985551][warning] partitioningMode: 1
[10:57:20.985551][info] Meshing mode: multi-resolution, partitioning: single block.
[10:57:20.985551][info] Estimate space.
[10:57:20.986531][debug] [IO] Read Image Metadata: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75/812854499_depthMap.exr
[10:57:20.986531][debug] [IO] Read Image Metadata: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75/1261943489_depthMap.exr
[10:57:20.988519][debug] [IO] Read Image: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75/812854499_depthMap.exr
[10:57:21.012455][debug] [IO] Read Image: C:/Users/pwab/Desktop/schluessel/MeshroomCache/DepthMapFilter/fb1cf62dd9d7d199fad8ea5fdaaf399433218a75/1261943489_depthMap.exr

Впервые за сегодня я застрял на сетке. Никогда не было проблем. B4 модель немного сложнее с 214 изображениями.

Я также застрял на узле сетки для этой модели. Все изображения приняты, и SFM в 3D-виде выглядит нормально, но не завершает построение сетки. Я добился успеха с несколькими другими моделями Meshroom, просто не знаю, почему он зависает на этой. Я заметил в конце журнала, что «Общий максимальный размер:» равен «1368 x 1368», тогда как размер моего изображения — 2736 x 2736. Не уверен, имеет ли это какое-либо отношение, но это показалось странным, когда мое изображение больше по размеру. Кроме того, Meshroom отлично работал до того, как использовал тот же размер изображения, камеру и настройки (если я случайно не изменил настройку по умолчанию на каком-то этапе в настройках Meshroom и сохранил, не осознавая этого).

Вот мой лог-файл.

Плагины загружены: CameraCalibration, CameraConnection, CameraInit, CameraLocalization, CameraRigCalibration, CameraRigLocalization, ConvertAnimatedCamera, ConvertSfMFormat, карты глубины, DepthMapFilter, ExportAnimatedCamera, ExportMaya, ExportUndistortedImages, FeatureExtraction, FeatureMatching, ImageMatching, ImageMatchingMultiSfM, KeyframeSelection, MeshDecimate, MeshDenoising, MeshFiltering, MeshResampling, раскатывания, PrepareDenseScene , Опубликовать, SfMAlignment, SfMTransform, StructureFromMotion, Текстурирование
[QtOIIO] Плагин инициализирован
[DepthMapEntity] DepthMapEntity
Не удалось загрузить сцену в QUrl («»)
Узлы для выполнения: [‘Meshing_1’]
ВНИМАНИЕ: понизьте статус узла «Meshing_1» с Status.ERROR до Status.SUBMITTED

[1/1] Создание сетки

  • commandLine: aliceVision_meshing —ini «C: / Users /…../ MeshroomCache / PrepareDenseScene / 61c4f02547ec2c49ec920d480c2c166a0baa7318 / mvs.ini» —depthMapFolder «C: / Users / Steven / ствол / Documents / 3DProjects / карты глубины / 9db3b9c42b7eaebdcb2515dd5f9482106b2040af»—depthMapFilterFolder «C: / Users / Steven / Документы / 3DProjects / 3DTrees / Illawarra Flame багажник / MeshroomCache / DepthMapFilter / de97a40f6dbb036e00ff4b0ff4a4ea7f24d63e1e» —maxInputPoints 50000000 —maxPoints 5000000 —maxPointsPerVoxel +1000000 —minStep 2 — автоматическое разбиение на разделы —repartition multiResolution —angleFactor 15.0 —simFactor 15.0 —pixSizeMarginInitCoef 2.0 —pixSizeMarginFinalCoef 4.0 —voteMarginFactor 4.0 —contributeMarginFactor 2.0 —simGaussianSizeInit 10.0 —simGaussianSizeSize 10.0 —minAngAng —output «C: / Users / Steven / Documents / 3DProjects / 3DTrees / Illawarra Flame trunk / MeshroomCache / Meshing / 79d6fdbd49f1152dbfd93532840c9392e179ff4e / mesh.obj»
  • logFile: C: / Users /……/ MeshroomCache / Meshing / 79d6fdbd49f1152dbfd93532840c9392e179ff4e / log
  • прошедшее время: 0: 00: 04.679559
    ОШИБКА: корень : Ошибка при вычислении узла: Ошибка на узле «Meshing_1»:
    Бревно:
    Программа вызывается со следующими параметрами:
  • angleFactor = 15
  • giveMarginFactor = 2
  • depthMapFilterFolder = «C: / Users /……/ MeshroomCache / DepthMapFilter / de97a40f6dbb036e00ff4b0ff4a4ea7f24d63e1e»
  • depthMapFolder = «C: / Users /……/ MeshroomCache / DepthMap / 9db3b9c42b7eaebdcb2515dd5f9482106b2040af»
  • ini = «C: / Users /……/ MeshroomCache / PrepareDenseScene / 61c4f02547ec2c49ec920d480c2c166a0baa7318 / mvs.ini»
  • maxInputPoints = 50000000
  • maxPoints = 5000000
  • maxPointsPerVoxel = 1000000
  • minAngleThreshold = 1
  • minStep = 2
  • output = «C: / Users /……/ MeshroomCache / Meshing / 79d6fdbd49f1152dbfd93532840c9392e179ff4e / mesh.obj»
  • partitioning = Неизвестный тип «enum EPartitioningMode»
  • pixSizeMarginFinalCoef = 4
  • pixSizeMarginInitCoef = 2
  • RefinFuse = 1
  • repartition = Неизвестный тип «enum ERepartitionMode»
  • simFactor = 15
  • simGaussianSize = 10
  • simGaussianSizeInit = 10
  • verboseLevel = «информация»
  • voteMarginFactor = 4

[15: 37: 09.160977] [info] Найдено 1 размер (а) изображения:
[15: 37: 09.165975] [информация] — [2736×2736]
[15: 37: 09.367901] [info] Максимальный общий размер: [1368×1368]
[15: 37: 09.369897] [предупреждение] repartitionMode: 1
[15: 37: 09.370896] [предупреждение] partitioningMode: 2

ОШИБКА: корень : Ошибка при выполнении графика Ошибка на узле «Meshing_1»:
Бревно:
Программа вызывается со следующими параметрами:

  • angleFactor = 15
  • giveMarginFactor = 2
  • depthMapFilterFolder = «C: / Users /……/ MeshroomCache / DepthMapFilter / de97a40f6dbb036e00ff4b0ff4a4ea7f24d63e1e»
  • depthMapFolder = «C: / Users /…../ MeshroomCache / DepthMap / 9db3b9c42b7eaebdcb2515dd5f9482106b2040af»
  • ini = «C: / Users /……/ MeshroomCache / PrepareDenseScene / 61c4f02547ec2c49ec920d480c2c166a0baa7318 / mvs.ini»
  • maxInputPoints = 50000000
  • maxPoints = 5000000
  • maxPointsPerVoxel = 1000000
  • minAngleThreshold = 1
  • minStep = 2
  • output = «C: / Users /……/ MeshroomCache / Meshing / 79d6fdbd49f1152dbfd93532840c9392e179ff4e / mesh.obj»
  • partitioning = Неизвестный тип «enum EPartitioningMode»
  • pixSizeMarginFinalCoef = 4
  • pixSizeMarginInitCoef = 2
  • RefinFuse = 1
  • repartition = Неизвестный тип «enum ERepartitionMode»
  • simFactor = 15
  • simGaussianSize = 10
  • simGaussianSizeInit = 10
  • verboseLevel = «информация»
  • voteMarginFactor = 4

[15: 37: 09.160977] [info] Найдено 1 размер (а) изображения:
[15: 37: 09.165975] [информация] — [2736×2736]
[15: 37: 09.367901] [info] Максимальный общий размер: [1368×1368]
[15: 37: 09.369897] [предупреждение] repartitionMode: 1
[15: 37: 09.370896] [предупреждение] partitioningMode: 2

Не могли бы вы попытаться уменьшить значение maxPoints на узле Meshing, чтобы избежать использования слишком большого количества RAM и SWAP?

Привет, @fabiencastan, спасибо, что предложили maxPoints как узкое место. Для моей модели все заработало, как и ожидалось!
Может быть, можно добавить предупреждение или информационное окно, если maxPoints установлены слишком высокими по сравнению с RAM и SWAP используемой системы?

@fabiencastan :
Не могли бы вы помочь, как я могу изменить maxPoints на узле сетки с помощью командной строки?

С теми же изображениями (61) у меня сначала вылетает «Meshing», а во-вторых, «Depth Map Filter».
Я вижу ваши рекомендации по уменьшению maxPoints, но:

  • сейчас 5000000, сколько посоветуете сократить?
  • для чего нужны maxPoints? разрешение будет уменьшено?

@ basic4 да, 5M звучит хорошо, но это зависит от того, сколько оперативной памяти доступно на вашем компьютере.
maxPoint — максимальное количество точек, используемых для тетраэдрической обработки.
Да, уменьшение maxPoints уменьшит окончательное количество вершин за счет объединения большего количества точек. Так что да, вы можете рассматривать это как более низкое разрешение. Более низкое разрешение на выходе также означает лучшую надежность.

Спасибо за работу, парень. Для большинства людей этот вопрос кажется решенным. Кажется, у меня та же проблема, но я не могу внести необходимые изменения в программу. Не могли бы вы дать абсолютному новичку какие-нибудь подсказки, как уменьшить maxpoints? Любая помощь очень ценится.

@ daboy1
maxpoints

Была ли эта страница полезной?

0 / 5 — 0 рейтинги

Понравилась статья? Поделить с друзьями:
  • Struct error required argument is not an integer
  • Struct error python
  • Struct error i format requires 2147483648 number 2147483647
  • Struct error argument out of range
  • Strtrail txt ошибка виндовс 10