diff --git a/qim3d/io/_ome_zarr.py b/qim3d/io/_ome_zarr.py index 6573831a1e29bbb02607fab777145f2838c8b6d0..022e16cdd195a76c56cb7f4e5ec5eed25ae41454 100644 --- a/qim3d/io/_ome_zarr.py +++ b/qim3d/io/_ome_zarr.py @@ -178,6 +178,20 @@ class OMEScaler( log.info(f"- Scale {i+1}: {rv[-1].shape}") return list(rv) + + def scaleZYXmean(self, base): + """ Downsample using the mean of the pixels in each block + + Args: + base (dask): The 3D array (volume) to be downsampled. Must be a Dask array for chunked processing. + + Returns: + list: A list of downsampled volumes of increasingly lower resolution. + """ + mip = [base] + for _ in range(self.max_layer): + mip.append(da.coarsen(da.mean, mip[-1], {0:self.downscale, 1:self.downscale, 2:self.downscale}, trim_excess=True)) + return mip def export_ome_zarr(