Enabled logging to 'C:/Program Files/xuvtools-1.8.0-beta3-r3506-win32/lsm700'.
current number of tiles: 1
current number of tiles: 2
current number of tiles: 3
current number of tiles: 4
Thumbnail calculation started.
done 25%
done 50%
done 75%
done 100%
Thumbnail calculation finished.
GridPositionsDialog, nTiles is 4
done 0%
Detected input type is 'unsigned char', using that for template worker.
done 0%
Started.
_xuvstitch() parameters:
movingWinRadius = (16,16,16)
fixedWinRadius = (32,16,16)
projectFileName =
importanceSamplingSteps = 20
phase_sampling_steps = 1
phase_sampling_abort_value = 0.7
smoothRawData = 0
verbose = 8
numThreads = 1
enabled tiles = tile0001, tile0002, tile0003, tile0004
done 0%
Stitcher started.
movingWindowRadius has been decreased from (16,16,16) to the minimum occurring radius (6,16,16)
fixedWindowRadius has been decreased from (32,16,16) to the maximum occurring radius (6,16,16)
movingWinRadius is >= fixedWinRadius, decreasing it further to '(5,15,15)'.
will parse sizes from configMap.
stack0001_size_um (11,320.087,320.087) = stackSize (11,512,512) * element_size_um (1,0.62517,0.62517)
stack0002_size_um (7,320.087,320.087) = stackSize (7,512,512) * element_size_um (1,0.62517,0.62517)
stack0003_size_um (8,320.087,320.087) = stackSize (8,512,512) * element_size_um (1,0.62517,0.62517)
stack0004_size_um (10,320.087,320.087) = stackSize (10,512,512) * element_size_um (1,0.62517,0.62517)
Found initial tile positions for all stacks.
parsed size attributes for all stacks.
inspecting sizes of all tiles / stacks.
tile tile0001 has um-size (11,320.087,320.087) / max_element_size (1,0.62517,0.62517) = normsize: (11,512,512)
tile tile0002 has um-size (7,320.087,320.087) / max_element_size (1,0.62517,0.62517) = normsize: (7,512,512)
tile tile0003 has um-size (8,320.087,320.087) / max_element_size (1,0.62517,0.62517) = normsize: (8,512,512)
tile tile0004 has um-size (10,320.087,320.087) / max_element_size (1,0.62517,0.62517) = normsize: (10,512,512)
XuvStitch found factor '0.829' to downscale the stacks for phase-only correlation.
The stacks will be scaled from (11,512,512) to (10,432,432).
finding max stack sizes recommends (10,432,432) for a maxNormSize of (11,512,512), scaleFac = (0.909091,0.84375,0.84375)
done 1%
sampledSizes[0]: (10,432,432)
sampledSizes[1]: (6,432,432)
sampledSizes[2]: (6,432,432)
sampledSizes[3]: (8,432,432)
Will now inspect your Computer. This can take some time.
starting (one-time) FFTW planning. This can take longer, but is done only the first time you use a new fft size. The result is saved to disk.
forward plan done
done 1%
backward plan done
Saved Wisdom
done 2%
done 5%
Will now inspect the list of enabled tiles, which ones need to be checked against each other.
new findNextTestTiles() start
findNextTestTiles() first time called, should use absolute positions, will construct a new set of test-pairs and re-set all positions to one long list.
find_overlapping_tiles: checking 0 vs 1 of 3: overlap size = 181983
find_overlapping_tiles: checking 0 vs 2 of 3: overlap size = 15662
find_overlapping_tiles: checking 0 vs 3 of 3: overlap size = 64600
find_overlapping_tiles: checking 1 vs 2 of 3: overlap size = 52733
find_overlapping_tiles: checking 1 vs 3 of 3: overlap size = 20487
find_overlapping_tiles: checking 2 vs 3 of 3: overlap size = 323676
find_overlapping_tiles recommends testing the following tuples:
(0, 1); (0, 2); (0, 3); (1, 2); (1, 3); (2, 3);
update_connected_components(): new connComp map is:
1, 1, 2, 3,
update_connected_components(): new connComps list is:
0:
1: 0, 1,
2: 2,
3: 3,
update_connected_components(): new connComp map is:
1, 1, 1, 3,
update_connected_components(): new connComps list is:
0:
1: 0, 1, 2,
2:
3: 3,
update_connected_components(): new connComp map is:
1, 1, 1, 1,
update_connected_components(): new connComps list is:
0:
1: 0, 1, 2, 3,
2:
3:
update_connected_components(): new connComp map is:
1, 1, 1, 1,
update_connected_components(): new connComps list is:
0:
1: 0, 1, 2, 3,
2:
3:
update_connected_components(): new connComp map is:
1, 1, 1, 1,
update_connected_components(): new connComps list is:
0:
1: 0, 1, 2, 3,
2:
3:
update_connected_components(): new connComp map is:
1, 1, 1, 1,
update_connected_components(): new connComps list is:
0:
1: 0, 1, 2, 3,
2:
3:
find_connected_components_from_overlap(): connected components-test found:
0 1 2 3
1 1 1 1
findNextTestTiles() first time init using absolute positions done.
findNextTestTiles() uses absolute positions, so it should not update the list of test-pairs. Will return now.
The next pair of tiles is (tile0001, tile0002).
took best phaseonly displacement
maxTest 0 between tiles tile0001 and tile0002 is: (0,-0.94723,-238.625) um)
moving in um: start (-5.5,-160.044,-160.044) size (11,320.087,320.087), fixed in um: start (-3.5,-159.096,78.5818) size (7,320.087,320.087)
The tiles overlap in um from (-3.5,-159.096,78.5818) to (3.5,160.044,160.044) and in movingArrPixels from (2,2,382) to (8,511,511), that is 3
[ 6 509 129 ] pixels.
The tiles tile0001 and tile0002 don't overlap enough.
stitcher set KeyValueMap::asString(tile0001_tile0002_displacement) = 0,-0.94723,-238.625
correlated (another) stack
new findNextTestTiles() start
findNextTestTiles() uses absolute positions, so it should not update the list of test-pairs. Will return now.
Inspecting the list of test-tiles if there are pairs where both stacks are loaded
Could not find an already loaded pair to correlate next.
done 21%
The next pair of tiles is (tile0001, tile0003).
took best phaseonly displacement
maxTest 0 between tiles tile0001 and tile0003 is: (0,295.459,-240.595) um)
moving in um: start (-5.5,-160.044,-160.044) size (11,320.087,320.087), fixed in um: start (-4,-455.502,80.5518) size (8,320.087,320.087)
The tiles overlap in um from (-4,-160.044,80.5518) to (4,-135.415,160.044) and in movingArrPixels from (2,0,385) to (9,38,511), that is 3
[ 7 38 126 ] pixels.
The tiles tile0001 and tile0003 don't overlap enough.
stitcher set KeyValueMap::asString(tile0001_tile0003_displacement) = 0,295.459,-240.595
correlated (another) stack
new findNextTestTiles() start
findNextTestTiles() uses absolute positions, so it should not update the list of test-pairs. Will return now.
Inspecting the list of test-tiles if there are pairs where both stacks are loaded
Could not find an already loaded pair to correlate next.
done 37%
The next pair of tiles is (tile0001, tile0004).
took best phaseonly displacement
maxTest 0 between tiles tile0001 and tile0004 is: (0,296.407,-47.2853) um)
moving in um: start (-5.5,-160.044,-160.044) size (11,320.087,320.087), fixed in um: start (-5,-456.45,-112.758) size (10,320.087,320.087)
The tiles overlap in um from (-5,-160.044,-112.758) to (5,-136.363,160.044) and in movingArrPixels from (1,0,76) to (10,37,511), that is 3
[ 9 37 435 ] pixels.
_xuvstitch_loadarray_genfft():
temp memory 'tmpLoadArrPtr' exists, has size (0,0,0)
temp memory 'tmpSmoothArrPtr' exists, has size (0,0,0)
temp memory 'tmpSampledArrPtr' exists, has size (0,0,0)
temp memory 'tmpPaddedArrPtr' exists, has size (0,0,0)
Will load and process stack '0-11,0' from file '//faimstore/faim/Testimages/XuvTools_Testimages/Test_stitch_LSM700/SteveB/test_stack.lsm'.
loaded stack 'stack0001'.
_xuvstitch_loadarray_genfft():
temp memory 'tmpLoadArrPtr' exists, has size (0,0,0)
temp memory 'tmpSmoothArrPtr' exists, has size (0,0,0)
temp memory 'tmpSampledArrPtr' exists, has size (0,0,0)
temp memory 'tmpPaddedArrPtr' exists, has size (0,0,0)
Will load and process stack '0-10,0' from file '//faimstore/faim/Testimages/XuvTools_Testimages/Test_stitch_LSM700/SteveB/test_stack_3.lsm'.
loaded stack 'stack0004'.
findCorrPosImportance() start
computed normalized correlation positions
normcrosscorr: next position
0: pos = (5,23,293) ((0,-145.665,70.4166)um) => movingPosition (6,23,369), fixedPosition (5,497,293)
CrossCorrelation::resize(): will resize fixedWin temporary memory
CrossCorrelation::resize(): resized temporary memory
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
1: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
2: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
3: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
4: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
5: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
6: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
7: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
8: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
9: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
10: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
11: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
12: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
13: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
14: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
15: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
16: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
17: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
18: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
normcrosscorr: next position
19: pos = (5,19,401) ((0,-148.165,137.935)um) => movingPosition (6,19,477), fixedPosition (5,493,401)
CrossCorrelation::normCorrelate(): no need to copy fixedWin.
CrossCorrelation::normCorrelate(): need to copy movingWin.
computed normalized cross-correlation
added coefficients to normCrossCorrSum
fineDisplacement for tiles 0, 3, phase-test 0 is ( 0, 0, 0) = ( 0.00, 0.00, 0.00) um with score 0.6792, total ( 0.00, 296.41, -47.29)
stitcher set KeyValueMap::asString(tile0001_tile0004_displacement) = 0,296.407,-47.2853
correlated (another) stack
new findNextTestTiles() start
findNextTestTiles() uses absolute positions, so it should not update the list of test-pairs. Will return now.
Tile tile0001 is not used in the future, will be purged from cache.
Inspecting the list of test-tiles if there are pairs where both stacks are loaded
Could not find an already loaded pair to correlate next.
done 53%
The next pair of tiles is (tile0002, tile0003).
took best phaseonly displacement
maxTest 0 between tiles tile0002 and tile0003 is: (0.00,296.41,-1.97) um)
moving in um: start (-3.50,-160.04,-160.04) size (7.00,320.09,320.09), fixed in um: start (-4.00,-456.45,-158.07) size (8.00,320.09,320.09)
The tiles overlap in um from (-3.50,-160.04,-158.07) to (3.50,-136.36,160.04) and in movingArrPixels from (0,0,3) to (6,37,511), that is 3
[ 6 37 508 ] pixels.
The tiles tile0002 and tile0003 don't overlap enough.
stitcher set KeyValueMap::asString(tile0002_tile0003_displacement) = 0,296.406,-1.97
correlated (another) stack
new findNextTestTiles() start
findNextTestTiles() uses absolute positions, so it should not update the list of test-pairs. Will return now.
Inspecting the list of test-tiles if there are pairs where both stacks are loaded
Could not find an already loaded pair to correlate next.
done 68%
The next pair of tiles is (tile0002, tile0004).
took best phaseonly displacement
maxTest 0 between tiles tile0002 and tile0004 is: (0.00,297.35,191.34) um)
moving in um: start (-3.50,-160.04,-160.04) size (7.00,320.09,320.09), fixed in um: start (-5.00,-457.40,-351.38) size (10.00,320.09,320.09)
The tiles overlap in um from (-3.50,-160.04,-160.04) to (3.50,-137.31,-31.30) and in movingArrPixels from (0,0,0) to (6,35,205), that is 3
[ 6 35 205 ] pixels.
The tiles tile0002 and tile0004 don't overlap enough.
stitcher set KeyValueMap::asString(tile0002_tile0004_displacement) = 0,297.354,191.34
correlated (another) stack
new findNextTestTiles() start
findNextTestTiles() uses absolute positions, so it should not update the list of test-pairs. Will return now.
Tile tile0002 is not used in the future, will be purged from cache.
Inspecting the list of test-tiles if there are pairs where both stacks are loaded
Could not find an already loaded pair to correlate next.
done 84%
The next pair of tiles is (tile0003, tile0004).
took best phaseonly displacement
maxTest 0 between tiles tile0003 and tile0004 is: (0.00,0.95,193.31) um)
moving in um: start (-4.00,-160.04,-160.04) size (8.00,320.09,320.09), fixed in um: start (-5.00,-160.99,-353.35) size (10.00,320.09,320.09)
The tiles overlap in um from (-4.00,-160.04,-160.04) to (4.00,159.10,-33.27) and in movingArrPixels from (0,0,0) to (7,509,202), that is 3
[ 7 509 202 ] pixels.
The tiles tile0003 and tile0004 don't overlap enough.
stitcher set KeyValueMap::asString(tile0003_tile0004_displacement) = 0,0.947998,193.31
correlated (another) stack
new findNextTestTiles() start
findNextTestTiles() uses absolute positions, so it should not update the list of test-pairs. Will return now.
Tile tile0003 is not used in the future, will be purged from cache.
Tile tile0004 is not used in the future, will be purged from cache.
Inspecting the list of test-tiles if there are pairs where both stacks are loaded
Could not find an already loaded pair to correlate next.
done 100%
starting detection of connected components for threshold 0.23.
pairwiseScore is (starting from 1, not 0):
0.000 -0.100 -0.100 0.679
0.000 0.000 -0.100 -0.100
0.000 0.000 0.000 -0.100
0.000 0.000 0.000 0.000
update_connected_components(): new connComp map is:
3, 1, 2, 3,
update_connected_components(): new connComps list is:
0:
1: 1,
2: 2,
3: 0, 3,
connected components-test found for thresh 0.23:
(0,3) x (0,3)
[ 0 -0.1 -0.1 0.679153
0 0 -0.1 -0.1
0 0 0 -0.1
0 0 0 0 ]
0 1 2 3
3 1 2 3
component is empty
component has single element 1, placing it at 0/0/0.
component has single element 2, placing it at 0/0/0.
Finding positions of (next) connected component, size 2, 1 equations.
starting singular value decomposition for 2 images, 1 equations
chiSquare = 0chiSquare = 0chiSquare = 0starting singular value decomposition for 2 images, 1 equations
stack[0]: (0,0,0)
stack[1]: (0,-296.407,47.2853)
computed svdPositions
_estimate_absolute_positions done, will call place_tiles_using_absolute_positions to write results to the map.
component 0 ( 0 elements):
component 1 ( 1 elements): (0,0,0),
component 2 ( 1 elements): (0,0,330.087),
component 3 ( 2 elements): (0,296.407,660.174), (0,0,707.459),
could not place all tiles in a single connected component.
Estimation of positions is finished.
freeing temporary memory.
automatic stitching finished.
~CrossCorrelation(): not freeing fftw, as you requested
done 100%
Stitcher finished.
done 0%