diff --git a/pyproject.toml b/pyproject.toml index c045fdf1..e833c274 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ dependencies = [ "sangaboard", "camera-stage-mapping ~= 0.1.10", "opencv-python ~= 4.11.0", - "openflexure-stitching[libvips]==0.1.0", + "openflexure-stitching[libvips]==0.2.0", "pillow ~= 10.4", "anyio ~= 4.0", "numpy ~= 2.2", diff --git a/src/openflexure_microscope_server/stitching.py b/src/openflexure_microscope_server/stitching.py index b88c4036..9ef7561f 100644 --- a/src/openflexure_microscope_server/stitching.py +++ b/src/openflexure_microscope_server/stitching.py @@ -19,6 +19,7 @@ from openflexure_microscope_server.utilities import make_path_safe STITCHING_CMD = "openflexure-stitch" STITCHING_RESOLUTION = (820, 616) +STITCH_TILE_SIZE = 8192 DEFAULT_OVERLAP = 0.1 DEFAULT_RESIZE = 0.5 @@ -207,7 +208,12 @@ class FinalStitcher(BaseStitcher): self._mode = "all" tiff_arg = "--stitch_tiff" if stitch_tiff else "--no-stitch_tiff" - self._extra_args = ["--stitch_dzi", tiff_arg] + self._extra_args = [ + "--stitch_dzi", + tiff_arg, + "--tile_size", + str(STITCH_TILE_SIZE), + ] def _process_inputs( self, diff --git a/tests/test_stitching.py b/tests/test_stitching.py index ef248b82..d4908340 100644 --- a/tests/test_stitching.py +++ b/tests/test_stitching.py @@ -78,6 +78,8 @@ FINAL_EXPECTED_COMMAND = [ "all", "--stitch_dzi", "--no-stitch_tiff", + "--tile_size", + "8192", "--minimum_overlap", "0.09", "--resize", @@ -117,8 +119,8 @@ def test_final_stitcher_command_set_val_directly(): """Check that values are set as expected when directly input.""" # Modify defaults expected_command = copy(FINAL_EXPECTED_COMMAND) - expected_command[6] = "0.36" - expected_command[8] = "0.25" + expected_command[8] = "0.36" + expected_command[10] = "0.25" # Test with no data dictionary, irrelevant data, and also the wrong data # When wrong data is submitted, it should take the directly input data. dict_vals = [ @@ -141,8 +143,8 @@ def test_final_stitcher_command_set_with_dict(): """Check that values are set as expected when set from a ScanData dictionary.""" # Modify defaults expected_command = copy(FINAL_EXPECTED_COMMAND) - expected_command[6] = "0.36" - expected_command[8] = "0.25" + expected_command[8] = "0.36" + expected_command[10] = "0.25" # Check same thing works with a dictionary, resize is calculated from the saved image # resolution. Make 4x bigger than STITCHING_RESOLUTION to get 0.25 resolution = [dim * 4 for dim in STITCHING_RESOLUTION]