Atlas-Download-Tools icon indicating copy to clipboard operation
Atlas-Download-Tools copied to clipboard

Determine `donwsample_img` automatically

Open jankrepl opened this issue 4 years ago • 0 comments
trafficstars

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.

jankrepl avatar Aug 17 '21 16:08 jankrepl