Atlas-Download-Tools
Atlas-Download-Tools copied to clipboard
Determine `donwsample_img` automatically
In download_parallel_dataset one can specify both the downsample_ref and downsample_img manually. However,
it might be very useful to imply a reasonable downsample_img from the selected downsample_ref and the resolution of a given image (can be found in the API metadata).
Intuitively, the following should be true to avoid artifacts in the synchronized image
img_shape / (2 ** downsample_img) > refspace_shape / downsample_ref
At the same time, we want the downsample_img to be as large as possible to make the download fast + avoid wasting disk space.
So specifically let's take a section image id = 101349501. It comes from a coronal dataset and has a shape of (4344, 5096). As usually, we set downsample_ref to 25.
Therefore
refspace_shape = (8000, 11400)
downsample_ref = 25
img_shape = (4344, 5096)
downsample_img = x # we want to solve for this and it must be an integer
Just using the above unequality one proposition could be
downsample_img < log_2((min(img_shape) * downsample_ref) / max(refspace_shape)))
So the below formula could work?
int(np.log2((min(img_shape) * downsample_ref) / max(refspace_shape)))
3
I checked the synchronized image and there seem to be no artifacts.
Finally, we should be also careful about downsample_img being too high because the image download API does not support high values.