From 7acec7bb0ff9bafeacda41d7b36743511a5e035d Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Fri, 2 Dec 2022 09:10:41 +0100 Subject: [PATCH 1/9] flip the deskewed stack along Z for backwards compatibility --- pyclesperanto_prototype/_tier8/_deskew_x.py | 31 ++++++++++--------- pyclesperanto_prototype/_tier8/_deskew_y.py | 31 ++++++++++--------- .../_tier8/affine_transform_deskew_x_3d_x.cl | 2 +- .../_tier8/affine_transform_deskew_y_3d_x.cl | 3 +- 4 files changed, 36 insertions(+), 31 deletions(-) diff --git a/pyclesperanto_prototype/_tier8/_deskew_x.py b/pyclesperanto_prototype/_tier8/_deskew_x.py index 9a8f6ce7..25fb63e8 100644 --- a/pyclesperanto_prototype/_tier8/_deskew_x.py +++ b/pyclesperanto_prototype/_tier8/_deskew_x.py @@ -12,11 +12,10 @@ def deskew_x(input_image: Image, voxel_size_y: float = 1, voxel_size_z: float = 1, scale_factor: float = 1, - linear_interpolation: bool = None + linear_interpolation: bool = True ) -> Image: """ Deskew an image stack as acquired with oblique plane light-sheet microscopy, with skew in the X direction. - Uses orthogonal interpolation (Sapoznik et al. (2020) https://doi.org/10.7554/eLife.57681) Parameters ---------- @@ -35,16 +34,16 @@ def deskew_x(input_image: Image, default: 1 If the resulting image becomes too huge, it is possible to reduce output image size by this factor. The isotropic voxel size of the output image will then be voxel_size_x / scaling_factor. - linear_interpolation: obsolete + linear_interpolation: bool, optional + If True (default), uses orthogonal interpolation (Sapoznik et al. (2020) https://doi.org/10.7554/eLife.57681) + If False, nearest-neighbor interpolation wille be applied. Returns ------- output_image """ - if linear_interpolation is not None: - warnings.warn("In function deskew_ the linear_interpolation parameters is obsolete. Orthogonal interpolation will always be used. Please remove it from your code.", DeprecationWarning) - from ._AffineTransform3D import AffineTransform3D + from ._affine_transform import affine_transform from ._affine_transform_deskew_3d import affine_transform_deskew_3d, DeskewDirection # define affine transformation @@ -53,11 +52,15 @@ def deskew_x(input_image: Image, voxel_size_z=voxel_size_z, scale_factor=scale_factor) # apply transform - return affine_transform_deskew_3d(source=input_image, destination=output_image, - transform=transform, - deskewing_angle_in_degrees=angle_in_degrees, - voxel_size_x=voxel_size_x, - voxel_size_y=voxel_size_y, - voxel_size_z=voxel_size_z, - deskew_direction=DeskewDirection.X, - auto_size=True) + if linear_interpolation: + return affine_transform_deskew_3d(source=input_image, destination=output_image, + transform=transform, + deskewing_angle_in_degrees=angle_in_degrees, + voxel_size_x=voxel_size_x, + voxel_size_y=voxel_size_y, + voxel_size_z=voxel_size_z, + deskew_direction=DeskewDirection.X, + auto_size=True) + else: + return affine_transform(input_image, output_image, transform=transform, auto_size=True, + linear_interpolation=False) diff --git a/pyclesperanto_prototype/_tier8/_deskew_y.py b/pyclesperanto_prototype/_tier8/_deskew_y.py index 189a7f5e..813568f6 100644 --- a/pyclesperanto_prototype/_tier8/_deskew_y.py +++ b/pyclesperanto_prototype/_tier8/_deskew_y.py @@ -12,11 +12,10 @@ def deskew_y(input_image: Image, voxel_size_y: float = 1, voxel_size_z: float = 1, scale_factor: float = 1, - linear_interpolation: bool = None + linear_interpolation: bool = True ) -> Image: """ Deskew an image stack as acquired with oblique plane light-sheet microscopy with skew in the Y direction. - Uses orthogonal interpolation (Sapoznik et al. (2020) https://doi.org/10.7554/eLife.57681) Parameters ---------- @@ -35,16 +34,16 @@ def deskew_y(input_image: Image, default: 1 If the resulting image becomes too huge, it is possible to reduce output image size by this factor. The isotropic voxel size of the output image will then be voxel_size_y / scaling_factor. - linear_interpolation: obsolete + linear_interpolation: bool, optional + If True (default), uses orthogonal interpolation (Sapoznik et al. (2020) https://doi.org/10.7554/eLife.57681) + If False, nearest-neighbor interpolation wille be applied. Returns ------- output_image """ - if linear_interpolation is not None: - warnings.warn("In function deskew_ the linear_interpolation parameters is obsolete. Orthogonal interpolation will always be used. Please remove it from your code.", DeprecationWarning) - from ._AffineTransform3D import AffineTransform3D + from ._affine_transform import affine_transform from ._affine_transform_deskew_3d import affine_transform_deskew_3d, DeskewDirection # define affine transformation matrix @@ -53,11 +52,15 @@ def deskew_y(input_image: Image, voxel_size_z=voxel_size_z, scale_factor=scale_factor) # apply transform using special affine transform method for deskewing in the Y direction - return affine_transform_deskew_3d(source=input_image, destination=output_image, - transform=transform, - deskewing_angle_in_degrees=angle_in_degrees, - voxel_size_x=voxel_size_x, - voxel_size_y=voxel_size_y, - voxel_size_z=voxel_size_z, - deskew_direction=DeskewDirection.Y, - auto_size=True) + if linear_interpolation: + return affine_transform_deskew_3d(source=input_image, destination=output_image, + transform=transform, + deskewing_angle_in_degrees=angle_in_degrees, + voxel_size_x=voxel_size_x, + voxel_size_y=voxel_size_y, + voxel_size_z=voxel_size_z, + deskew_direction=DeskewDirection.Y, + auto_size=True) + else: + return affine_transform(input_image, output_image, transform=transform, auto_size=True, + linear_interpolation=False) diff --git a/pyclesperanto_prototype/_tier8/affine_transform_deskew_x_3d_x.cl b/pyclesperanto_prototype/_tier8/affine_transform_deskew_x_3d_x.cl index be6dbeb4..489f94a5 100644 --- a/pyclesperanto_prototype/_tier8/affine_transform_deskew_x_3d_x.cl +++ b/pyclesperanto_prototype/_tier8/affine_transform_deskew_x_3d_x.cl @@ -127,7 +127,7 @@ affine_transform_deskew_x_3d(IMAGE_input_TYPE input, IMAGE_output_TYPE output, } } - int4 pos = (int4){x, y, z, 0}; + int4 pos = (int4){x, y, (deskewed_Nz - 1 - z), 0}; WRITE_output_IMAGE(output, pos, CONVERT_output_PIXEL_TYPE(pix)); } diff --git a/pyclesperanto_prototype/_tier8/affine_transform_deskew_y_3d_x.cl b/pyclesperanto_prototype/_tier8/affine_transform_deskew_y_3d_x.cl index 533467a3..65d3a325 100644 --- a/pyclesperanto_prototype/_tier8/affine_transform_deskew_y_3d_x.cl +++ b/pyclesperanto_prototype/_tier8/affine_transform_deskew_y_3d_x.cl @@ -133,8 +133,7 @@ affine_transform_deskew_y_3d(IMAGE_input_TYPE input, IMAGE_output_TYPE output, } } - // if rotate coverslip, apply flipping on Z axis - int4 pos = (int4){x, y, z, 0}; + int4 pos = (int4){x, y, (deskewed_Nz - 1 - z), 0}; WRITE_output_IMAGE(output, pos, CONVERT_output_PIXEL_TYPE(pix)); } From d8df865ca86faf8de87e49598634d8acb43e96cb Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Fri, 2 Dec 2022 09:10:50 +0100 Subject: [PATCH 2/9] added demo notebook --- .../deskew_artifact_interpolation.ipynb | 356 ++++++++++++++++++ 1 file changed, 356 insertions(+) create mode 100644 demo/transforms/deskew_artifact_interpolation.ipynb diff --git a/demo/transforms/deskew_artifact_interpolation.ipynb b/demo/transforms/deskew_artifact_interpolation.ipynb new file mode 100644 index 00000000..56c5a8c1 --- /dev/null +++ b/demo/transforms/deskew_artifact_interpolation.ipynb @@ -0,0 +1,356 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7601903a", + "metadata": {}, + "source": [ + "# Deskewing artifacts when not using orthogonal interpolation\n", + "\n", + "In this notebook we demonstrate what happens if not using interpolation when deskewing an image stack: The result is produced faster and contains artifacts.\n", + "\n", + "For deskewing, we are using the orthogonal projection as proposed by Sapoznik et al.\n", + "* https://github.com/QI2lab/OPM/blob/master/reconstruction/image_post_processing.py#L34\n", + "* Sapoznik et al. (2020) A versatile oblique plane microscope for large-scale and high-resolution imaging of subcellular dynamics eLife 9:e57681. https://doi.org/10.7554/eLife.57681" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "698f7284", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from skimage.io import imread\n", + "import matplotlib.pyplot as plt\n", + "import pyclesperanto_prototype as cle\n", + "\n", + "cle.select_device(\"RTX\")" + ] + }, + { + "cell_type": "markdown", + "id": "c84b87f4-2a29-4c30-b251-757186be41ec", + "metadata": {}, + "source": [ + "## Loading example data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2c612b6b", + "metadata": {}, + "outputs": [], + "source": [ + "voxel_size_x_in_microns = 0.1449922\n", + "voxel_size_y_in_microns = 0.1449922\n", + "voxel_size_z_in_microns = 0.3\n", + "\n", + "deskewing_angle_in_degrees = 30" + ] + }, + { + "cell_type": "markdown", + "id": "00d9ea94", + "metadata": {}, + "source": [ + "The example image data shown below was kindly provided by \n", + "[Ms Cindy Evelyn](https://imaging.wehi.edu.au/about-us/niall-geoghegan) and [Dr Niall Geoghegan](https://imaging.wehi.edu.au/about-us/niall-geoghegan) from the [Centre for Dynamic Imaging, WEHI, Melbourne, Australia](https://imaging.wehi.edu.au/) who used lattice light sheet microscopy to capture red blood cells and study the [malaria parasite invasion process](https://www.nature.com/articles/s41467-021-23626-7). The data is acquired using a Zeiss lattice lightsheet microscope.\n", + "\n", + "In these so called raw data images taken with single-objective light sheet microscopes, the Z-plane is swept through the sample in a tilted way. This is not obvious when studying the Z-planes of the given stack:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "58d3e1ec-08c8-4bb0-8f34-f9794bf1b49f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(834, 118, 209)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "original_image = imread('../../data/RBC_tiny.tif')\n", + "original_image.shape" + ] + }, + { + "cell_type": "markdown", + "id": "d25635ac-62f1-441c-a302-13862af87fed", + "metadata": {}, + "source": [ + "To demonstrate the effect, we will now reduce the imaging data in Z; we remove planes and update the voxel size." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2abda853-0f86-4e7d-b0e2-483d4fbb8e12", + "metadata": {}, + "outputs": [], + "source": [ + "reduction_factor = 3\n", + "\n", + "original_image = original_image[::reduction_factor]\n", + "voxel_size_z_in_microns = voxel_size_z_in_microns * reduction_factor" + ] + }, + { + "cell_type": "markdown", + "id": "f45491a2", + "metadata": {}, + "source": [ + "When looking at this image stack from the side, one can see the tilt of the light sheet orientation." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5cad0cf2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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moxjw+bNm2379u329NNPm1nu42PBe9/7Xvvrv/5r++IXv2hbt24N3+e5fPyQ6mMPPy5zecUdUKrVql1yySV2zz339Hx/zz332OWXX36CavWjhWazaY8//rht3rzZTj/9dNu0aVNPf7daLbv33ntzf3+fWE6fXnLJJVapVHqu2bNnj33729/O/f594uDBg7Z7927bvHmzmeU+Xg663a695z3vsc985jP2hS98wU4//fSe3/Nc/sFxtD728GMzl0+Mbe4Phk996lPdSqXS/dM//dPud7/73e51113XHRwc7D7//PMnumorEu973/u6X/rSl7rPPvts92tf+1r3He94R3d4eDj05x/8wR90R0dHu5/5zGe63/rWt7q/9mu/1t28eXN3cnLyBNf85MWRI0e6jzzySPeRRx7pmln31ltv7T7yyCPdF154odvtLq9Pf+u3fqu7devW7t///d93H3744e5P//RPd1/zmtd02+32iWrWSYV+fXzkyJHu+973vu7999/ffe6557pf/OIXu294wxu6p5xySu7jY8C/+3f/rjs6Otr90pe+1N2zZ0/4NzMzE67Jc/kHw9H6+Md5Lq/IA0q32+1+5CMf6W7fvr1brVa7F198cY9LVsax4Vd+5Ve6mzdv7lYqle6WLVu6V199dfc73/lO+L3T6XQ/8IEPdDdt2tSt1Wrdn/qpn+p+61vfOoE1PvnxxS9+sWtm0b93vetd3W53eX06Ozvbfc973tNds2ZNd2BgoPuOd7yju2vXrhPQmpMT/fp4Zmame9VVV3XXr1/frVQq3VNPPbX7rne9K+q/3Mf94fWvmXU/9rGPhWvyXP7BcLQ+/nGey4Vut9v94fE1GRkZGRkZGRlHx4qzQcnIyMjIyMj40Uc+oGRkZGRkZGScdMgHlIyMjIyMjIyTDvmAkpGRkZGRkXHSIR9QMjIyMjIyMk465ANKRkZGRkZGxkmHfEDJyMjIyMjIOOmQDygZGRkZGRkZJx3yASUjIyMjIyPjpEM+oGRkZGRkZGScdMgHlIyMjIyMjIyTDv8/wHN2+dNA8z8AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cle.imshow(original_image[:,:,100].T)" + ] + }, + { + "cell_type": "markdown", + "id": "66af46e7", + "metadata": {}, + "source": [ + "## Deskewing with and without interpolation\n", + "We now deskew this dataset once with and once without orthogonal interpolation." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "29ebca2c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(59, 1828, 209)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "deskewed = cle.deskew_y(original_image, \n", + " angle_in_degrees=deskewing_angle_in_degrees, \n", + " voxel_size_x=voxel_size_x_in_microns, \n", + " voxel_size_y=voxel_size_y_in_microns, \n", + " voxel_size_z=voxel_size_z_in_microns)\n", + "\n", + "deskewed.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "743e561a-aeaa-4127-8d75-7e5f49c2208c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cle.imshow(deskewed[:,:250,100])" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a5a9c2dd-a6c0-4377-b790-fe1b15f1f6ee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(59, 1828, 209)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "deskewed_wo_interpolation = cle.deskew_y(original_image, \n", + " angle_in_degrees=deskewing_angle_in_degrees, \n", + " voxel_size_x=voxel_size_x_in_microns, \n", + " voxel_size_y=voxel_size_y_in_microns, \n", + " voxel_size_z=voxel_size_z_in_microns,\n", + " linear_interpolation=False)\n", + "\n", + "deskewed_wo_interpolation.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "60d922ad-dd90-4ff6-bde7-757640ed2d96", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAClCAYAAAD8k5/rAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAn1ElEQVR4nO2de3BV1fn+38glQEQEAzkJYAyWFCEUJdgIolAtaRloYagttlbRtlbKRVOdeil2gI4lwoyMY720MB2EigXbQr1RII4koCkzgFQBJWJBEpEYueQCCbmu7x/+9vnl7Fz2etY5a2cnPJ+ZzOSc8569115rr33W+6x3vStOKaWEEEIIIcQnLunoAhBCCCHk4oKDD0IIIYT4CgcfhBBCCPEVDj4IIYQQ4iscfBBCCCHEVzj4IIQQQoivcPBBCCGEEF/h4IMQQgghvsLBByGEEEJ8hYMPQgghhPiKtcHH888/L2lpadKrVy/JzMyUXbt22ToVIYQQQjoRVgYfGzdulJycHFm0aJHs379fbrrpJpk6daoUFxfbOB0hhBBCOhFxNjaWy8rKkrFjx8oLL7wQfu+aa66RmTNnSm5ubrvfbWpqks8//1z69u0rcXFxsS4aIYQQQiyglJKqqipJSUmRSy5pX9voHuuT19XVyb59++TRRx+NeD87O1sKCwtb2NfW1kptbW349YkTJ2TkyJGxLhYhhBBCfKCkpESGDBnSrk3MBx+nTp2SxsZGSUpKing/KSlJSktLW9jn5ubK0qVLY10MQrocAwYMgOy7d495946gR48ekH1zJwOhoaEBsq+rq4Ps6+vrIXsvj85NU1MTZG8C2tZomRobGyF79N5wQNVutFx+tV2vXr20bfv06QMdG63bmpoayB7tb81RSkl5ebn07dvX09ba08l9EymlWr2xHnvsMXnwwQfDrysrK2Xo0KG2ikVIpwV9cKL2KH6VB/1B6uz2JgTtGkyvOWjl8uM6bPcj1D4W96vOMWI++EhMTJRu3bq1UDnKyspaqCEiIvHx8RIfHx/rYhDS6Rk0aFBU3/fy2rp16xbV8XU9JOdBpOudu4/r5em5H65ez5Oqqiro+A5oeJxz3Tr1jKpC7rr0amtU3XFAf7h69uxpdB5d3NftdU+ZXreD7vW77drrG5dddlnEa6/7qnfv3lplcKioqIDsHZy2030utHbPIUpRzF2jnj17SmZmpuTl5UW8n5eXJxMmTIj16QghhBDSybAy7fLggw/KnXfeKePGjZPx48fLqlWrpLi4WObOnWvjdIR0CZKTk305DyqrovPe6Jy0O0bDq3xuT1G3fI43qqu0uhUSL9zX3Z5H6/aMvTxs97F0Yx2cMvmlLnt58dFOBepeNxr3g8bMtBZW0Bb9+vWDju0GjdnQVZ/cdelVt+46ak0hQZ4tVgYfs2fPltOnT8vvf/97OXnypGRkZMiWLVskNTXVxukIIYQQ0omwkucjGiorK6MeKRLSGWgtBkoHNFYjaPly/Fj9YXIeVOlA4wn8aAfbqzlMV1DZjh1BY2ZsB2OLiFx66aWQvc4KkeZEsypFB3QlkchX91NJSYlUVFS0iG1xw71dCCGEEOIrdhMBEEJaBYnvQOfrbXvYQVUuUG/21KlTEa91680Ri3VjW5D2MPE2o0G3zlDFA7V3X3esc6+YKjaoutC8r3pdg1sZ8DrXhQsXoLKgyosDqjo1X13ToatdCCGEEELag8oHIT4wePBgbVu39+A1n22aD+SLL76A7J18A6a5D7xwe79esS2mCs/58+dFRCQhIUHLHvXC3e3VXlidXzEXKO4ye4UGoiucUIWno67b6x5EyoWuZnPuUwfdrKlOv9CtY3c/9XreuMtx+eWXh/9vbGyUEydO6J1Xy4oQQgghJEZQ+SDEAojS4bUBU1s4npGuh+P20kKhULv2qHeKrsKprKyMeK2rlKBz0mhGU3e5vHDXa3sxOm6vUveag6YsmKpOzj2iez60XOiqF/SeNVkl46xiqa6u1rJ3YkF0V33aTp+O3EtQWnmoFIQQQgghUULlg5AY4M7ZoRMl78RQ6MZeDBs2LOK1V8wC6gX6lfLH8TZ18xqgSoRbJfCK+i8uLo54je6loUtDQwO02ykC2tamKyFsZ8dFMoeK4JlMTevfqV/d62m+ksVLOfBSIN0gqqqIaMdguHHqXlcdqq6uhlQSKh+EEEII8RVmOCUkClJSUiD7AQMGaNui0fFeGQXbAp33Rh8ZV1xxBWTvzr/hxblz5yB7h48//hiyR9UFxOtHFQLTxzaatwKNNYk2v4cXpnvURLu7rRdIH7ryyiuNzuFWPr1AY0GOHDkC2bemSDY2NspHH33EDKeEEEIICR5UPggBuOqqqyB7ZG59zJgxYGm+AlFTRPA9ZVBvVjeq38E0qycaC3L48GHI/n//+x9kj6zCaZ4VEsG2soDGdPTp0weyd0AVGLRc6M8aqvCgKpgIrnjccMMNkD2qMO7duxeyP3PmjKdNQ0OD7Ny5k8oHIYQQQoIHlQ9C2iE9PR2yN/EE0XOgygV6fNN59YEDB0L2paWlkD0aC1JeXg7Zv/7665C9AzK3bjv2AJ3nRz1+h5qaGsgevafQcqE7EvsB+jt22223QfapqamQ/fvvvw/ZOyCKYX19vWzfvp3KByGEEEKCB5UPQlph5MiRkD26YmT48OHatqiHk5WVBdk76O514oB6v+iKDvfeFl6YevErV66E7NHcEsh1ox686TWjMRS2M6yiP0OmGVbRcqGxHf3799e2veeee6BjO6DPg7Nnz0L2aCxI89goxnwQQgghJLBQ+SBEcG8CnVtHVqSMHz8eOrbDxIkTIfvExETI3na8AqqMOFy4cAGy37p1K2RfUFAA2aPKiIj5ih9dbO9hYnpvoPv02F69Y3tvGBGRqVOnQvYzZ86E7NGf9Pfeew+yz8vLa/OzhoYGKSwspPJBCCGEkOBB5YNclKArRlBPEM3HIIJ7OGjegLS0NMje1JtFFQx0hZBOvoHmoPlT0FUHDogCgz52/YqJQLG98zFqj6pOqPLigOQpQfvdz3/+c8gezfCLPvsc8vPzPW3q6upk7dq1VD4IIYQQEjyofJCLAt0dVN2gUf6I/ejRo6FjT5s2DbJHV6OYgnqPaHZLdB7+61//OmTvcP/990P2aLkQNQL14E1XvaAqFXoeVD1DdxRG7yVTUOUTed688cYbaHFERGTdunWQ/ZAhQyB7tO0OHjwodXV18tJLL1H5IIQQQkjwoPJBujSo4oHOMaNz3shOtc888wx0bIctW7ZA9mh8AOqV9+rVC7I3XfmBnufDDz+E7HXmvKPF9uPYduyIaayJqXJjC7Se0P2VRET+8Y9/QPYvvvgiZI/usfSd73wHsm+tn1ZXV8vPfvYzKh+EEEIICR5UPkiXAr130Llc0+6CeOV/+MMfoGPv2LHDWllE8DwaDqiCgXpqKPPnz4fsZ82aZXQe5B5BVSTb+TpQewc09gLZ7VkEj01B+6npyi4kK/APf/hD6NhoW5w4cQKyR/MCOdx+++1tflZVVSXp6elUPgghhBASPKh8kE6N6SoWFLSbIOrCddddBx0bXc1x8uRJyN4BVUjQOkL3nEC934yMDMjeYf369ZA9sh8LWkeoomD6ODfNd2Hr+LbzoDig9xSSvyczMxM69u9+9zvI3mHZsmWQ/bhx4yD7++67T9u2qqpKRo0aReWDEEIIIcEDUj5yc3Nl06ZNcvjwYendu7dMmDBBli9fHuGJKaVk6dKlsmrVKjl79qxkZWXJc889J6NGjdI6B5UP0h7oXLEptufWkb1kVqxYAR3bYePGjZA9qiJ9+eWXkD1aR6axJgMHDoTs3333Xcj+6NGjkL1JHIXtXWHR46MZe/1a9YLGatju12jWYRG8fz/33HOQ/bXXXgvZtxfT0RrNr7myslKSk5Njr3wUFBTI/PnzZffu3ZKXlycNDQ2SnZ0dsfX1ihUrZOXKlfLss8/Knj17JBQKyZQpU+CtogkhhBDSNYkq5uPLL7+UQYMGSUFBgdx8882ilJKUlBTJycmRRx55RES+ygKYlJQky5cv15o7ovJBWgPd/wMF9XBM58jj4+O1bf/6179Cx96+fTtkj2ZANb3m5s6JDqWlpZA9UqciIllZWZD9448/Dtk7IF42mi01YKF6YVBlAVU60LZG1TNTxQZRZCdPnmzt2CK4+vKLX/wCsndore2qqqokLS3NfsxHRUWFiPz/BCvHjh2T0tJSyc7ODtvEx8fLpEmTpLCwsNVj1NbWSmVlZcQfIYQQQrouxsqHUkpmzJghZ8+elV27domISGFhodx4441y4sQJSUlJCdv+8pe/lOPHj8u2bdtaHGfJkiWydOlSw+KTrortPACmHg76PUQtQD0i1GPZt28fZO8waNAgyB51II4fPw7Zo8rI0KFDIXuHVatWQfZIHAV6v6KYHh9Vt9Dz2FZGTEFjYBCldPjw4dCx//jHP0L2DocOHYLsf/CDH0D2OqETvqx2WbBggXzwwQfyt7/9rcVn7ge0UqrNh/Zjjz0mFRUV4b+SkhLTIhFCCCGkE4CFMP8/Fi5cKK+99prs3LkzYqe8UCgkIl95Js33sCgrK5OkpKRWjxUfHw/P45GuR2JiImR/7tw5o/OgnhoaC+K+l9vzqNx94uDBg+0eG90LwqGoqEhEREaMGKFlH+3+H177XLgdjGHDhrVr/9///jfitW78D7rqxV2/XvckmlHSZNWLqaJnqux5rR5BlQt3+XWvx1FgdPOcoNfrvg6v63L3Y6/ruOKKK8L/nzp1SqtMTz31lIiIfP7551r27tVpXrEe119/vdZxHVAl5dNPP4WyFEO9QSklCxYskE2bNsnbb78taWlpEZ+npaVJKBSSvLy88Ht1dXVSUFAgEyZMQE5FCCGEkC4KFPMxb948efnll+XVV1+NyO3Rr18/6d27t4iILF++XHJzc2XNmjUyfPhwWbZsmeTn50tRUZFWHgGudrk4MM0+ieZYCCpI9tCf/vSn0LEXLFgA2aO5Eky9ajQvyN69eyH7I0eOQPYff/wxZO/EttkErVvbmUBNVWk0hgKN7UAVGDSWBd1zxwHJh3LrrbdCx0bze6DX4FYYdSkoKAj/X1tbK08//bRWzAc07fLCCy+ISMvAuDVr1sjdd98tIiIPP/yw1NTUyLx588JJxrZv3+5bGmxCCCGEBBvu7UJ8ZcaMGZB9fn4+ZI/mSzBdFYBmfEQ8NXTvlpUrV0L2po4AGkOB1u3p06ch+zfeeAOyf//99yF7h9ZW6bUHmj8FAX1cowqB6XlQxcZm/4nme6gKiMTxDB48GDp2c0UBAVWd0F2x//3vf7f5WV1dnbzyyivc24UQQgghwYPKB7HKnDlzIPutW7dC9mj2TAdUIUHnjBGPKCEhATr2XXfdBdk7TJw4EbK/5pprIHtUGTFl9+7dkD2qkGzYsAGyLy8v17Y1jZexmYfCxD5gPxth0L6EKh1IDAyq7jjceeedkP1vf/tbyH7nzp2Q/Z///Gdt24aGBnnrrbeofBBCCCEkeFD5IDEFXZmBzjc6IN6mCO45ovEKJl4OsuJFRGTs2LGQ/Y9+9CPIfty4cZB98yzGCG3l/GkLNKPpo48+CtmjMR2mm2Qi+4zY3t3Vr72M0J8XtN/ZzoBq+vOIlAtNQ7F69WrIfv369ZC9w0svvQTZ19fXS2NjoxQVFVH5IIQQQkjwoPJBYsK9994L2b/66quQPeoRIZn2TI7vgHqQiEfk5M7R5bbbboPsTZWLb33rW5A9GuWPrsZZsmQJZI/GdDigigcSV4Q+htH7zjTWxDboahTTOApUIUFjwpDjo9mcH3jgAcje4bPPPoPs21vF0hqt9YempiYpLi6m8kEIIYSQ4EHlgxiB7qj6+uuvWyrJV5ju9YJmAUQ9NSQ6Hj02ulumA7qK5Wtf+xpkn56eDtl77UnRFhs3boTsW9sEsz1Q79c0FsQmtvN12LZ3QFVAVMm0ucswugLHAY0FSU1Nhew3bdoE2evEqDU2NsrRo0epfBBCCCEkeFD5IFrMmzcPsjdVOtC8HegqFnRVgB/7nqDz0eiccWZmJmR/+eWXQ/aDBg2C7B3QRw+qLLz55ptWj4/GFYng96vtvVvQ+9VkZ95ovqeLaSyILibKCLovTv/+/SF79zYnXpiuLETarqmpSY4dO0blgxBCCCHBg8oHaZWFCxcafe+1116D7CsqKiD7hoYGq/aoZ+qAejlIt7v00kuhY48aNQqyT05OhuwdUG8QrVu07d59913I3vTRh8YXIeqZzdiD5thWIoK6usZ27Ahyj6NKx7BhwyB7BzQnEqoANl+d1tjYKB9++CGVD0IIIYQEDyofJIKcnBzI/pVXXoHsUaUD9VRMV72goLEgyEoW9JqvuuoqyN4hLS0NskdX46DKhek+PYcOHYLs0V1n0bZGVlCZKm1+rTKxhWl50O/ZzoCKKEimZQmFQpC97Z1827u/m5qa5NNPP6XyQQghhJDgQeXjIuc3v/kNZP/Pf/4Tsi8rK4PsHWx72eho3w/QiH10F9kRI0ZA9ujeM2gbOKDz6p988glkj85hI3uwmBxfBI+58CsWRBdT5cJ0jxhdbK/eQe8NEZE+ffpA9mheELRObapOVD4IIYQQEliofFxkLF26FLJft26d0XnOnDkD2aNKBzpvj2YyNe0WiCeFel1oLAi6eywaA+JQWVlp9D1bxz99+jRkbxpr4tf+QTqYerOdPQOq6aod23u9IHgpBG5Mc5qgigqq8jQ2NkpTU5OUlZVR+SCEEEJI8LCbFo50OPfff3/Ea12vcOvWrSKir0gcPXoUKhcar+CeV/fykNzxB7rX4aw+0PXA3J6jl3eLzM+6vTrdOBVH8dC1Hzp0qIjoq0lojAOqOpmuAHEUDF2v1lFUdL3naFdStXeejhKgY70KBlUi3NetWw/Rxjl4ncf9/PC6LuS60RgQd5l0Y6vcuYe87l/0XmitDpH7mMoHIYQQQnyFMR9dlLlz50L227Ztg+zRVSxovIIDOu+Ijt7R2BF0vtVkBQjq1aEZUNG9W9BHhGk+AzQHDOplo7Ej6Dy/SUyH7b1eolUibIHeI2g9oRmHTWM6kOcNWib0WYMeH1UkHdq7p5qamuTMmTOM+SCEEEJI8GDMRxdhzpw5Ea+9PPr8/Hzo+O7VK7oeFTq/6Y5T8FIBTHYWbY6Xd2EaWe4oHibf9/Kg3XXqpa6483V4zf2a5mJwvEDTfB9e50WP6/ZmvTxDdA8ME9zKglc/ctt7edrRrnrR/T56HnQ1m7sPeJ3P3c9QFUpXiYkmRsarTOg1uPu1LYUSaTuk3ql8EEIIIcRXqHx0Uh544AHI/u9//7vRedB5cvdo3GuuFvVm3fOUXp6jaW4FZ7Sv602Yzp/q4PbYdc/lXINuHgun7XTjYNB4AnRO2nR1CdrmTlyRrkplc18fU9XIdsZUVMGLtjy63w9apljk+G6lTzeuxemnuvY2c5S44WoXQgghhAQWrnbpZNx1112Q/d69eyH7zz//HLJHPSJTbxaNjre9SgbFJBMjes22lQjUg0L3hjEFVZ1sqlQiZnlKbHvk6GMeLY9pplEU23s+mT4HkL6K1i3aj9D7D61Th7byfFRWVtpf7ZKbmytxcXER27ArpWTJkiWSkpIivXv3lsmTJ8NbXhNCCCGk62Ic87Fnzx5ZtWqVfOMb34h4f8WKFbJy5Up58cUXJT09XZ544gmZMmWKFBUVSd++faMu8MXGtGnTIl57ZSj94osvIl57rTYpKSmJeO3lDbtXl+iOsh3PSNfbds+re53H5jy8SPSeqc733Z6EaabPtnDXvddKIbfHpevdOW2hqz6hCgza1qZKB6r0mK6MEvFWDtB7wfR+dTx/W6teos2i6VUP7uPrKjKoMoTcs6bxLA5e96/7Ga97Hzr3N/oMjxVGRzt37pzccccdsnr1aunfv3/4faWUPP3007Jo0SKZNWuWZGRkyNq1a6W6ulpefvnlmBWaEEIIIZ0Xo6H6/PnzZdq0afLtb39bnnjiifD7x44dk9LSUsnOzg6/Fx8fL5MmTZLCwkK57777oi9xF2fy5MkRr71WKrhHxV65Ej755BOjcjlzp7rer9tr9PLEUI8F3bvFNOsmGjtic+7X1Jt1yqTr3TmeE6owoOVx8LoutA0cnHvK1Pv1mmt39z2v64hmx2Pd7zr9QlfZQ+8pVLlA+12095zuPe6+Dq/rcte/VywJolSZxpk4ioduXIv7PF4KCaoGNTY2Qt+BBx8bNmyQ9957T/bs2dPis9LSUhFpuZV3UlKSHD9+vNXj1dbWRvxQ2d6emxBCCCEdCzT4KCkpkQceeEC2b9/erlfQ2g6CbY3ucnNzZenSpUgxuhzXXXdd+H90fwtdnL1YdD0Rt0fk5Um5V7F4eWqmHg46f+8oQbrnQzMrukf6NtQC5xp0vVnUk4omVkEHtxeIxlLYWolkO/+BSQwP6m2idROt0oGWz9bKIrQc6IoRdz/WrTenL+koVdGuKPKqW9vxONF+D4r52Ldvn5SVlUlmZqZ0795dunfvLgUFBfLMM89I9+7dw4qHo4A4lJWVtVBDHB577DGpqKgI/7kDIAkhhBDStYBcnltvvVUOHDgQ8d4999wjI0aMkEceeUSGDRsmoVBI8vLywt58XV2dFBQUyPLly1s9Znx8PBzt3lVIT08XEb0MlOh6dXS31mi9QF1FxRmtoxHZDl7ev3sU7uVd+LVjazR4lRH1Tt32plk1Yw2qwKAqk1t5sJWbIppVSl5eJHps9zXqeql+5YrQJdp7A115pXs+d99pry+h9xtap6YqExoT5r6O5t+zFvPRt29fycjIiHgvISFBrrjiivD7OTk5smzZMhk+fLgMHz5cli1bJn369JGf/OQnyKkIIYQQ0kWJ+WTvww8/LDU1NTJv3jw5e/asZGVlyfbt25njQ0TS0tIiXrfnuaHzaG6FwGuUjdo7RJt7wks5cCs2XqN/U+/VNC+IjUyUtj0iB/Sa0WtFd8NF42VM7z2nfnXrOdpVSLGMUXGXWbftnbrU9UTR3XPRezbaOtFte+f5oqumI8oFCqrou9UZ3Wt2+p3pbtReIKoTonwwvbqPuAcf7RHt4CPW9g6xTnzlBp0u8nvwYQMOPvSIdvChi19LoHXw6/5G28LvwYcu6LSozSnHaAcfutgadDiggw/d9Orc1dYiqampEa+9HlImDzF0rxR0TtP2oMb9ULL1I+9+GHs9DG2vAGleHtSr07VHf4DcD+5Y/2ib/gBFG+eAgn7fxs7Kzo+i7ndRhSTaVV2m8QFeoIMgt73X88evPWji4+PhHbF1+wc6wIpWX9B9jsTFxXFXW0IIIYQEFyofMcStdOiCRCm7R/aox+LlGbg9Ji8Pyj1Nojt6ty0LR+st28pP4ChPOlKpuwxedYZmbfQjR4kIHk1ve0dV02kS9DyIpB/t/epVt6beb7RTSl7XFe30ja3pnGivu73pY/d0jJfK6i5LrOu0rfN4Ea06TOWDEEIIIb5C5SMGDB48WET0PR0kstxr59FYg16D7ugXDSR14+XhmObfQGNUop3Dbk9RiXa/CV1QLxut22gzK3pdl6kX73xPt97Q+kXuJTQY0TQw0mlr3TZx161XHfiVRdM2qBePqAR+xSA5ZdItG6p0uJ8DrfVDxnwQQgghJLBQ+TDg2muvhezLy8u1bd17u9iKgEZBrkGkZXm8ymfqETlKgm68AprPwOv7bhD1wq/Ie3Rlg00vUASPVzA9j/s6bHvdXmpG8/LrXoutOJy2CEoMhe1VMu7rROOpdLCtGKJxae7y2M5K6wWVD0IIIYT4CpUPDWbMmAHZHzx4MOK17gjT2XlWB/co1mtOGPU80Pwhbk9F12NDPRzbe06g5XFfp64H5mfSMq9rMlVgnGu1tdsuGufgLoetFSA2E9S528LLe7a9aswB7Xdu1QnNheL1vHLXqa34qGjUNq+6Ru9vVE02JZqYMMZ8EEIIISSwML16K+Tk5Bh9b9euXZD94cOHtW3RUS6acldnZ93WQD0v23EOpuvz0W6A1i+yEgKNuTBNO46qL6g9Wi6bacqbY3v3XGQlS7QZgW1huy3Q/mMa+2I71gRpD1OlAu1HHbmaTSkl1dXVWunVqXwQQgghxFeofDTjjjvugOzPnDkD2RcWFmrb2tzwqDm2N5Ty6zpse2ro8f3wiNBod9TbtF2npnEvtuN+bGJ7Y0YHtN+hiopfbWf7+eTHirOgbcKHKn9IjiallNTX11P5IIQQQkjwuKiVjylTpkD2jz/+OGQ/ffp0yF4E9yj8zgPghWl5bMdc2NqrxcHEW0GzXKJ161cMBarc2I4F8XPnUgSk/dBrRmNHTPfliHbX2ViD9jvTe8Pm8wbtP9HuVm2L+vp6Kh+EEEIICS4XlfJx8803Q/ZvvfWW0XkGDhwI2dvcJ8CvmAvbezxcuHABskc9FQe0O9hUnvzy6lBQrxy1RxUFU4KUM8YvBdN2LAiK7ZiOaL+ni597vehiu9+1ds8qpaS2tpbKByGEEEKCx0WhfFx99dWQ/ebNmyH7CRMmQPbIfKtprALq4ZjOAevi1+6X6GgfrSfUa/Er7gLBdp4LdI7ZtI5srxxBrwO5l0z7G/o8sK1cmLYdWi6/9xuyQbR7E8UaG7s2K6WkoaGBygchhBBCgkeXVD5CoRBk/+tf/xqyX758OWSPRqKLRL9joRe2Pf6gzs2it3tQM1Ai+DWvbjMXiol9tDud2jiPbVXIrzwithU92/FOQVQ6bKuqfjyTlVJSU1ND5YMQQgghwaNLKB+JiYmQPZrf4z//+Q9k73D69GnIHmkKv0a9ttf12/bsTDMx2o6ZQa47qBk9be5vI+KfihSknZWDmtnYtmKDlsf0Hg/SakHTn17beTui3cn3/PnzVD4IIYQQEjw6pfJx6aWXGh37xhtvhOyLioog+4qKCsgeyZlvCuohoLeDbYXA1POw7XnZ7DamKlUQ400QTOvUr5VUQcJ2bEdQ68h2uVBVwXbmZBH8eWA71qm9Z6tSShobG6l8EEIIISR42F1IHGPQWJDhw4dHvPaKwfjyyy+h46O72rq9FZ0RLer5284OabJypzm61+MoJLpKifu4fmURbAuT1QC2vbqgZky1nUcEVdtM73E/1YJYx/X4la8DBb3OaFfh2F4FaOOYqApmmv3ZOU975XOUDx2ofBBCCCHEVwId89G/f3/ou7169YLsUY/LdJ4VGY1XV1dDx7a94sDBdoZB27Egft3myHUHdV7ddmZFFL/UP7R/ox4q8rzx696w3U9t7wNkeq+ibWczs6xfK/Jsx0Y1NDSIUkqUUloxH8F6ykjkj4TtZZu2gxJNvmc78NGPa+gK9qYEbCxvRNCu4WK9x/0gaNfcVdraj2MH7X5yBh7O/14EbvBRVVUV/r+8vLzjCtJJ8CsvgO3oer929STe+JUl0xaoekj0Cdq9EbTymODXM9xPqqqqPGM0Azft0tTUJEVFRTJy5EgpKSnxlG6IfSorK2Xo0KFsjwDAtggObIvgwLYIBkopqaqqkpSUFM+prcApH5dccokMHjxYREQuu+wy3kgBgu0RHNgWwYFtERzYFh2P7qpUrnYhhBBCiK9w8EEIIYQQXwnk4CM+Pl4WL15sPWEW0YPtERzYFsGBbREc2Badj8AFnBJCCCGkaxNI5YMQQgghXRcOPgghhBDiKxx8EEIIIcRXOPgghBBCiK8EcvDx/PPPS1pamvTq1UsyMzNl165dHV2kLs+SJUskLi4u4i8UCoU/V0rJkiVLJCUlRXr37i2TJ0+WQ4cOdWCJuw47d+6U733ve5KSkiJxcXHyr3/9K+Jznbqvra2VhQsXSmJioiQkJMj3v/99+eyzz3y8iq6BV1vcfffdLfrJDTfcEGHDtogNubm5cv3110vfvn1l0KBBMnPmTCkqKoqwYd/ovARu8LFx40bJycmRRYsWyf79++Wmm26SqVOnSnFxcUcXrcszatQoOXnyZPjvwIED4c9WrFghK1eulGeffVb27NkjoVBIpkyZErEXDzHj/PnzMmbMGHn22Wdb/Vyn7nNycmTz5s2yYcMGeeedd+TcuXMyffr0LrH3hZ94tYWIyHe/+92IfrJly5aIz9kWsaGgoEDmz58vu3fvlry8PGloaJDs7Gw5f/582IZ9oxOjAsY3v/lNNXfu3Ij3RowYoR599NEOKtHFweLFi9WYMWNa/aypqUmFQiH15JNPht+7cOGC6tevn/rTn/7kUwkvDkREbd68Ofxap+7Ly8tVjx491IYNG8I2J06cUJdcconaunWrb2XvarjbQiml5syZo2bMmNHmd9gW9igrK1MiogoKCpRS7BudnUApH3V1dbJv3z7Jzs6OeD87O1sKCws7qFQXD0eOHJGUlBRJS0uT22+/XY4ePSoiIseOHZPS0tKIdomPj5dJkyaxXSyjU/f79u2T+vr6CJuUlBTJyMhg+1ggPz9fBg0aJOnp6XLvvfdKWVlZ+DO2hT0qKipERGTAgAEiwr7R2QnU4OPUqVPS2NgoSUlJEe8nJSVJaWlpB5Xq4iArK0vWrVsn27Ztk9WrV0tpaalMmDBBTp8+Ha57tov/6NR9aWmp9OzZU/r379+mDYkNU6dOlfXr18vbb78tTz31lOzZs0duueUWqa2tFRG2hS2UUvLggw/KxIkTJSMjQ0TYNzo7gdvVVkQkLi4u4rVSqsV7JLZMnTo1/P/o0aNl/PjxcvXVV8vatWvDAXVsl47DpO7ZPrFn9uzZ4f8zMjJk3LhxkpqaKm+++abMmjWrze+xLaJjwYIF8sEHH8g777zT4jP2jc5JoJSPxMRE6datW4sRaVlZWYvRLbFLQkKCjB49Wo4cORJe9cJ28R+dug+FQlJXVydnz55t04bYITk5WVJTU+XIkSMiwrawwcKFC+W1116THTt2yJAhQ8Lvs290bgI1+OjZs6dkZmZKXl5exPt5eXkyYcKEDirVxUltba189NFHkpycLGlpaRIKhSLapa6uTgoKCtgultGp+8zMTOnRo0eEzcmTJ+XgwYNsH8ucPn1aSkpKJDk5WUTYFrFEKSULFiyQTZs2ydtvvy1paWkRn7NvdHI6LNS1DTZs2KB69Oih/vKXv6gPP/xQ5eTkqISEBPXpp592dNG6NA899JDKz89XR48eVbt371bTp09Xffv2Ddf7k08+qfr166c2bdqkDhw4oH784x+r5ORkVVlZ2cEl7/xUVVWp/fv3q/379ysRUStXrlT79+9Xx48fV0rp1f3cuXPVkCFD1FtvvaXee+89dcstt6gxY8aohoaGjrqsTkl7bVFVVaUeeughVVhYqI4dO6Z27Nihxo8frwYPHsy2sMCvfvUr1a9fP5Wfn69OnjwZ/quurg7bsG90XgI3+FBKqeeee06lpqaqnj17qrFjx4aXVhF7zJ49WyUnJ6sePXqolJQUNWvWLHXo0KHw501NTWrx4sUqFAqp+Ph4dfPNN6sDBw50YIm7Djt27FAi0uJvzpw5Sim9uq+pqVELFixQAwYMUL1791bTp09XxcXFHXA1nZv22qK6ulplZ2ergQMHqh49eqgrr7xSzZkzp0U9sy1iQ2vtICJqzZo1YRv2jc5LnFJK+a22EEIIIeTiJVAxH4QQQgjp+nDwQQghhBBf4eCDEEIIIb7CwQchhBBCfIWDD0IIIYT4CgcfhBBCCPEVDj4IIYQQ4iscfBBCCCHEVzj4IIQQQoivcPBBCCGEEF/h4IMQQgghvsLBByGEEEJ85f8A9FV8Zz2+aEUAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cle.imshow(deskewed_wo_interpolation[:,:250,100])" + ] + }, + { + "cell_type": "markdown", + "id": "44bf3023-82be-405d-828f-bc0746cefbfd", + "metadata": {}, + "source": [ + "## Performance comparison" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "e5697ca2-5e66-405e-be5c-14fc21e7b84c", + "metadata": {}, + "outputs": [], + "source": [ + "def deskew_with_interpolation():\n", + " cle.deskew_y(original_image, \n", + " angle_in_degrees=deskewing_angle_in_degrees, \n", + " voxel_size_x=voxel_size_x_in_microns, \n", + " voxel_size_y=voxel_size_y_in_microns, \n", + " voxel_size_z=voxel_size_z_in_microns,\n", + " linear_interpolation=True)\n", + "\n", + "def deskew_without_interpolation():\n", + " cle.deskew_y(original_image, \n", + " angle_in_degrees=deskewing_angle_in_degrees, \n", + " voxel_size_x=voxel_size_x_in_microns, \n", + " voxel_size_y=voxel_size_y_in_microns, \n", + " voxel_size_z=voxel_size_z_in_microns,\n", + " linear_interpolation=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "fb5dbd25-a967-4fa3-b7dc-8441d511776f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "30.1 ms ± 1.42 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + ] + } + ], + "source": [ + "%timeit deskew_with_interpolation()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "08cd8402-61f6-4b34-a7b5-c4732fa05129", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "27.8 ms ± 1.12 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + ] + } + ], + "source": [ + "%timeit deskew_without_interpolation()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74707203-4114-4532-9255-966f1d6cb5a9", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + }, + "vscode": { + "interpreter": { + "hash": "c2b46194c6f53d1309ec6efbc337d4d86cf8be9dd82cf5e27a48142022d8f42e" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From ac0d15ff43116e0f909fff47d48b8760e439fc2b Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Fri, 2 Dec 2022 09:17:00 +0100 Subject: [PATCH 3/9] removed unnecessary kernel parameters --- .../deskew_artifact_interpolation.ipynb | 15 +++++++++++---- .../_tier8/_affine_transform_deskew_3d.py | 3 --- .../_tier8/affine_transform_deskew_x_3d_x.cl | 10 ++++------ .../_tier8/affine_transform_deskew_y_3d_x.cl | 10 ++++------ 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/demo/transforms/deskew_artifact_interpolation.ipynb b/demo/transforms/deskew_artifact_interpolation.ipynb index 56c5a8c1..601041ba 100644 --- a/demo/transforms/deskew_artifact_interpolation.ipynb +++ b/demo/transforms/deskew_artifact_interpolation.ipynb @@ -149,8 +149,7 @@ "id": "66af46e7", "metadata": {}, "source": [ - "## Deskewing with and without interpolation\n", - "We now deskew this dataset once with and once without orthogonal interpolation." + "## Deskewing with orthogonal interpolation" ] }, { @@ -201,6 +200,14 @@ "cle.imshow(deskewed[:,:250,100])" ] }, + { + "cell_type": "markdown", + "id": "879c0fbc-f535-4a20-a682-34df1c8c63bb", + "metadata": {}, + "source": [ + "## Deskewing without orthogonal interpolation" + ] + }, { "cell_type": "code", "execution_count": 8, @@ -292,7 +299,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "30.1 ms ± 1.42 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + "29.5 ms ± 757 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], @@ -310,7 +317,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "27.8 ms ± 1.12 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + "27.4 ms ± 726 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], diff --git a/pyclesperanto_prototype/_tier8/_affine_transform_deskew_3d.py b/pyclesperanto_prototype/_tier8/_affine_transform_deskew_3d.py index 4d608005..17890bfe 100644 --- a/pyclesperanto_prototype/_tier8/_affine_transform_deskew_3d.py +++ b/pyclesperanto_prototype/_tier8/_affine_transform_deskew_3d.py @@ -120,9 +120,6 @@ def affine_transform_deskew_3d(source: Image, destination: Image = None, "input": source, "output": destination, "mat": gpu_transform_matrix, - "deskewed_Nx": destination.shape[2], - "deskewed_Ny": destination.shape[1], - "deskewed_Nz": destination.shape[0], "pixel_step": pixel_step, "tantheta": tantheta, "costheta": costheta, diff --git a/pyclesperanto_prototype/_tier8/affine_transform_deskew_x_3d_x.cl b/pyclesperanto_prototype/_tier8/affine_transform_deskew_x_3d_x.cl index 489f94a5..be0af277 100644 --- a/pyclesperanto_prototype/_tier8/affine_transform_deskew_x_3d_x.cl +++ b/pyclesperanto_prototype/_tier8/affine_transform_deskew_x_3d_x.cl @@ -40,9 +40,7 @@ __kernel void affine_transform_deskew_x_3d(IMAGE_input_TYPE input, IMAGE_output_TYPE output, - IMAGE_mat_TYPE mat, - const int deskewed_Nx, const int deskewed_Ny, - const int deskewed_Nz, float pixel_step, + IMAGE_mat_TYPE mat, float pixel_step, float tantheta, float costheta, float sintheta) { const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | SAMPLER_ADDRESS; @@ -66,8 +64,8 @@ affine_transform_deskew_x_3d(IMAGE_input_TYPE input, IMAGE_output_TYPE output, // ensure within bounds of final image/deskewed image - if (x >= 0 && y >= 0 && z >= 0 && x < deskewed_Nx && y < deskewed_Ny && - z < deskewed_Nz) { + if (x >= 0 && y >= 0 && z >= 0 && x < GET_IMAGE_WIDTH(output) && y < GET_IMAGE_HEIGHT(output) && + z < GET_IMAGE_DEPTH(output)) { float virtual_plane = (x - z / tantheta); // get plane before @@ -127,7 +125,7 @@ affine_transform_deskew_x_3d(IMAGE_input_TYPE input, IMAGE_output_TYPE output, } } - int4 pos = (int4){x, y, (deskewed_Nz - 1 - z), 0}; + int4 pos = (int4){x, y, (GET_IMAGE_DEPTH(output) - 1 - z), 0}; WRITE_output_IMAGE(output, pos, CONVERT_output_PIXEL_TYPE(pix)); } diff --git a/pyclesperanto_prototype/_tier8/affine_transform_deskew_y_3d_x.cl b/pyclesperanto_prototype/_tier8/affine_transform_deskew_y_3d_x.cl index 65d3a325..a959d4a9 100644 --- a/pyclesperanto_prototype/_tier8/affine_transform_deskew_y_3d_x.cl +++ b/pyclesperanto_prototype/_tier8/affine_transform_deskew_y_3d_x.cl @@ -41,9 +41,7 @@ __kernel void affine_transform_deskew_y_3d(IMAGE_input_TYPE input, IMAGE_output_TYPE output, - IMAGE_mat_TYPE mat, - const int deskewed_Nx, const int deskewed_Ny, - const int deskewed_Nz, float pixel_step, + IMAGE_mat_TYPE mat, float pixel_step, float tantheta, float costheta, float sintheta) { const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | SAMPLER_ADDRESS; @@ -72,8 +70,8 @@ affine_transform_deskew_y_3d(IMAGE_input_TYPE input, IMAGE_output_TYPE output, // ensure within bounds of final image/deskewed image - if (x >= 0 && y >= 0 && z >= 0 && x < deskewed_Nx && y < deskewed_Ny && - z < deskewed_Nz) { + if (x >= 0 && y >= 0 && z >= 0 && x < GET_IMAGE_WIDTH(output) && y < GET_IMAGE_HEIGHT(output) && + z < GET_IMAGE_DEPTH(output)) { //printf("%d\n,%d\n,%d\n", z,y,x); float virtual_plane = (y - z / tantheta); // get plane before @@ -133,7 +131,7 @@ affine_transform_deskew_y_3d(IMAGE_input_TYPE input, IMAGE_output_TYPE output, } } - int4 pos = (int4){x, y, (deskewed_Nz - 1 - z), 0}; + int4 pos = (int4){x, y, (GET_IMAGE_DEPTH(output) - 1 - z), 0}; WRITE_output_IMAGE(output, pos, CONVERT_output_PIXEL_TYPE(pix)); } From a8f95ec097172c9740169646a4dd49bbc5af5254 Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Fri, 2 Dec 2022 09:24:30 +0100 Subject: [PATCH 4/9] removed unnecessary code paths to simplify maintenance --- .../deskew_artifact_interpolation.ipynb | 4 +- .../_tier8/_affine_transform_deskew_3d.py | 38 ++++--------------- pyclesperanto_prototype/_tier8/_deskew_x.py | 3 +- pyclesperanto_prototype/_tier8/_deskew_y.py | 3 +- 4 files changed, 11 insertions(+), 37 deletions(-) diff --git a/demo/transforms/deskew_artifact_interpolation.ipynb b/demo/transforms/deskew_artifact_interpolation.ipynb index 601041ba..3d9dbdf2 100644 --- a/demo/transforms/deskew_artifact_interpolation.ipynb +++ b/demo/transforms/deskew_artifact_interpolation.ipynb @@ -299,7 +299,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "29.5 ms ± 757 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + "30.2 ms ± 978 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], @@ -317,7 +317,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "27.4 ms ± 726 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + "26.9 ms ± 1.19 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], diff --git a/pyclesperanto_prototype/_tier8/_affine_transform_deskew_3d.py b/pyclesperanto_prototype/_tier8/_affine_transform_deskew_3d.py index 17890bfe..6eb5dbde 100644 --- a/pyclesperanto_prototype/_tier8/_affine_transform_deskew_3d.py +++ b/pyclesperanto_prototype/_tier8/_affine_transform_deskew_3d.py @@ -22,8 +22,7 @@ def affine_transform_deskew_3d(source: Image, destination: Image = None, voxel_size_x: float = 0.1449922, voxel_size_y: float = 0.1449922, voxel_size_z: float = 0.3, - deskew_direction: DeskewDirection = DeskewDirection.Y, - auto_size: bool = False) -> Image: + deskew_direction: DeskewDirection = DeskewDirection.Y) -> Image: """ Applies an affine transform to deskew an image. Uses orthogonal interpolation (Sapoznik et al. (2020) https://doi.org/10.7554/eLife.57681) @@ -34,7 +33,7 @@ def affine_transform_deskew_3d(source: Image, destination: Image = None, image to be transformed destination : Image, optional image where the transformed image should be written to - transform : 4x4 numpy array or AffineTransform3D object or skimage.transform.AffineTransform object or str, optional + transform : AffineTransform3D object, optional transform matrix or object or string describing the transformation deskewing_angle_in_degrees: float, optional Oblique plane or deskewing acquisition angle @@ -65,38 +64,15 @@ def affine_transform_deskew_3d(source: Image, destination: Image = None, from .._tier0 import execute from .._tier0 import create - assert len( - source.shape) == 3, f"Image needs to be 3D, got shape of {len(source.shape)}" + assert len(source.shape) == 3, f"Image needs to be 3D, got shape of {len(source.shape)}" # handle output creation - if auto_size and isinstance(transform, AffineTransform3D): - new_size, transform, _ = _determine_translation_and_bounding_box( - source, transform) + new_size, transform, _ = _determine_translation_and_bounding_box(source, transform) if destination is None: - if auto_size and isinstance(transform, AffineTransform3D): - # This modifies the given transform - destination = create(new_size) - else: - destination = create_like(source) - - if isinstance(transform, str): - transform = AffineTransform3D(transform, source) - + destination = create(new_size) + # we invert the transform because we go from the target image to the source image to read pixels - if isinstance(transform, AffineTransform3D): - transform_matrix = np.asarray(transform.copy().inverse()) - elif isinstance(transform, AffineTransform): - # Question: Don't we have to invert this one as well? haesleinhuepf - matrix = np.asarray(transform.params) - matrix = np.asarray([ - [matrix[0, 0], matrix[0, 1], 0, matrix[0, 2]], - [matrix[1, 0], matrix[1, 1], 0, matrix[1, 2]], - [0, 0, 1, 0], - [matrix[2, 0], matrix[2, 1], 0, matrix[2, 2]] - ]) - transform_matrix = np.linalg.inv(matrix) - else: - transform_matrix = np.linalg.inv(transform) + transform_matrix = np.asarray(transform.copy().inverse()) # precalculate these functions that are dependent on deskewing angle tantheta = np.float32(np.tan(deskewing_angle_in_degrees * np.pi/180)) diff --git a/pyclesperanto_prototype/_tier8/_deskew_x.py b/pyclesperanto_prototype/_tier8/_deskew_x.py index 25fb63e8..f1bbe545 100644 --- a/pyclesperanto_prototype/_tier8/_deskew_x.py +++ b/pyclesperanto_prototype/_tier8/_deskew_x.py @@ -59,8 +59,7 @@ def deskew_x(input_image: Image, voxel_size_x=voxel_size_x, voxel_size_y=voxel_size_y, voxel_size_z=voxel_size_z, - deskew_direction=DeskewDirection.X, - auto_size=True) + deskew_direction=DeskewDirection.X) else: return affine_transform(input_image, output_image, transform=transform, auto_size=True, linear_interpolation=False) diff --git a/pyclesperanto_prototype/_tier8/_deskew_y.py b/pyclesperanto_prototype/_tier8/_deskew_y.py index 813568f6..02727316 100644 --- a/pyclesperanto_prototype/_tier8/_deskew_y.py +++ b/pyclesperanto_prototype/_tier8/_deskew_y.py @@ -59,8 +59,7 @@ def deskew_y(input_image: Image, voxel_size_x=voxel_size_x, voxel_size_y=voxel_size_y, voxel_size_z=voxel_size_z, - deskew_direction=DeskewDirection.Y, - auto_size=True) + deskew_direction=DeskewDirection.Y) else: return affine_transform(input_image, output_image, transform=transform, auto_size=True, linear_interpolation=False) From c47578f999cae386a0782f9d6205deee4b00b13f Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Fri, 2 Dec 2022 09:29:10 +0100 Subject: [PATCH 5/9] document deskewing bug in 0.19.4 --- ...deskew_artifact_interpolation-0.19.4.ipynb | 362 ++++++++++++++++++ 1 file changed, 362 insertions(+) create mode 100644 demo/transforms/deskew_artifact_interpolation-0.19.4.ipynb diff --git a/demo/transforms/deskew_artifact_interpolation-0.19.4.ipynb b/demo/transforms/deskew_artifact_interpolation-0.19.4.ipynb new file mode 100644 index 00000000..f21cfcdf --- /dev/null +++ b/demo/transforms/deskew_artifact_interpolation-0.19.4.ipynb @@ -0,0 +1,362 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7601903a", + "metadata": {}, + "source": [ + "# Deskewing artifacts in pyclesperanto-prototype 0.19.4 when not using orthogonal interpolation\n", + "\n", + "In this notebook we demonstrate what happens if not using interpolation when deskewing an image stack: The result is produced faster and contains artifacts.\n", + "\n", + "The bug demonstrated here was fixed in pyclesperanto-prototype 0.19.5 and may not be reproducible anymore with the current release." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "698f7284", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from skimage.io import imread\n", + "import matplotlib.pyplot as plt\n", + "import pyclesperanto_prototype as cle\n", + "\n", + "cle.select_device(\"RTX\")" + ] + }, + { + "cell_type": "markdown", + "id": "c84b87f4-2a29-4c30-b251-757186be41ec", + "metadata": {}, + "source": [ + "## Loading example data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2c612b6b", + "metadata": {}, + "outputs": [], + "source": [ + "voxel_size_x_in_microns = 0.1449922\n", + "voxel_size_y_in_microns = 0.1449922\n", + "voxel_size_z_in_microns = 0.3\n", + "\n", + "deskewing_angle_in_degrees = 30" + ] + }, + { + "cell_type": "markdown", + "id": "00d9ea94", + "metadata": {}, + "source": [ + "The example image data shown below was kindly provided by \n", + "[Ms Cindy Evelyn](https://imaging.wehi.edu.au/about-us/niall-geoghegan) and [Dr Niall Geoghegan](https://imaging.wehi.edu.au/about-us/niall-geoghegan) from the [Centre for Dynamic Imaging, WEHI, Melbourne, Australia](https://imaging.wehi.edu.au/) who used lattice light sheet microscopy to capture red blood cells and study the [malaria parasite invasion process](https://www.nature.com/articles/s41467-021-23626-7). The data is acquired using a Zeiss lattice lightsheet microscope.\n", + "\n", + "In these so called raw data images taken with single-objective light sheet microscopes, the Z-plane is swept through the sample in a tilted way. This is not obvious when studying the Z-planes of the given stack:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "58d3e1ec-08c8-4bb0-8f34-f9794bf1b49f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(834, 118, 209)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "original_image = imread('../../data/RBC_tiny.tif')\n", + "original_image.shape" + ] + }, + { + "cell_type": "markdown", + "id": "d25635ac-62f1-441c-a302-13862af87fed", + "metadata": {}, + "source": [ + "To demonstrate the effect, we will now reduce the imaging data in Z; we remove planes and update the voxel size." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2abda853-0f86-4e7d-b0e2-483d4fbb8e12", + "metadata": {}, + "outputs": [], + "source": [ + "reduction_factor = 3\n", + "\n", + "original_image = original_image[::reduction_factor]\n", + "voxel_size_z_in_microns = voxel_size_z_in_microns * reduction_factor" + ] + }, + { + "cell_type": "markdown", + "id": "f45491a2", + "metadata": {}, + "source": [ + "When looking at this image stack from the side, one can see the tilt of the light sheet orientation." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5cad0cf2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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moxjw+bNm2379u329NNPm1nu42PBe9/7Xvvrv/5r++IXv2hbt24N3+e5fPyQ6mMPPy5zecUdUKrVql1yySV2zz339Hx/zz332OWXX36CavWjhWazaY8//rht3rzZTj/9dNu0aVNPf7daLbv33ntzf3+fWE6fXnLJJVapVHqu2bNnj33729/O/f594uDBg7Z7927bvHmzmeU+Xg663a695z3vsc985jP2hS98wU4//fSe3/Nc/sFxtD728GMzl0+Mbe4Phk996lPdSqXS/dM//dPud7/73e51113XHRwc7D7//PMnumorEu973/u6X/rSl7rPPvts92tf+1r3He94R3d4eDj05x/8wR90R0dHu5/5zGe63/rWt7q/9mu/1t28eXN3cnLyBNf85MWRI0e6jzzySPeRRx7pmln31ltv7T7yyCPdF154odvtLq9Pf+u3fqu7devW7t///d93H3744e5P//RPd1/zmtd02+32iWrWSYV+fXzkyJHu+973vu7999/ffe6557pf/OIXu294wxu6p5xySu7jY8C/+3f/rjs6Otr90pe+1N2zZ0/4NzMzE67Jc/kHw9H6+Md5Lq/IA0q32+1+5CMf6W7fvr1brVa7F198cY9LVsax4Vd+5Ve6mzdv7lYqle6WLVu6V199dfc73/lO+L3T6XQ/8IEPdDdt2tSt1Wrdn/qpn+p+61vfOoE1PvnxxS9+sWtm0b93vetd3W53eX06Ozvbfc973tNds2ZNd2BgoPuOd7yju2vXrhPQmpMT/fp4Zmame9VVV3XXr1/frVQq3VNPPbX7rne9K+q/3Mf94fWvmXU/9rGPhWvyXP7BcLQ+/nGey4Vut9v94fE1GRkZGRkZGRlHx4qzQcnIyMjIyMj40Uc+oGRkZGRkZGScdMgHlIyMjIyMjIyTDvmAkpGRkZGRkXHSIR9QMjIyMjIyMk465ANKRkZGRkZGxkmHfEDJyMjIyMjIOOmQDygZGRkZGRkZJx3yASUjIyMjIyPjpEM+oGRkZGRkZGScdMgHlIyMjIyMjIyTDv8/wHN2+dNA8z8AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cle.imshow(original_image[:,:,100].T)" + ] + }, + { + "cell_type": "markdown", + "id": "66af46e7", + "metadata": {}, + "source": [ + "## Deskewing with linear interpolation" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "29ebca2c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(59, 1828, 209)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "deskewed = cle.deskew_y(original_image, \n", + " angle_in_degrees=deskewing_angle_in_degrees, \n", + " voxel_size_x=voxel_size_x_in_microns, \n", + " voxel_size_y=voxel_size_y_in_microns, \n", + " voxel_size_z=voxel_size_z_in_microns,\n", + " linear_interpolation=True)\n", + "\n", + "deskewed.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "743e561a-aeaa-4127-8d75-7e5f49c2208c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cle.imshow(deskewed[:,:250,100])" + ] + }, + { + "cell_type": "markdown", + "id": "879c0fbc-f535-4a20-a682-34df1c8c63bb", + "metadata": {}, + "source": [ + "## Deskewing without linear interpolation" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a5a9c2dd-a6c0-4377-b790-fe1b15f1f6ee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(59, 1828, 209)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "deskewed_wo_interpolation = cle.deskew_y(original_image, \n", + " angle_in_degrees=deskewing_angle_in_degrees, \n", + " voxel_size_x=voxel_size_x_in_microns, \n", + " voxel_size_y=voxel_size_y_in_microns, \n", + " voxel_size_z=voxel_size_z_in_microns,\n", + " linear_interpolation=False)\n", + "\n", + "deskewed_wo_interpolation.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "60d922ad-dd90-4ff6-bde7-757640ed2d96", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cle.imshow(deskewed_wo_interpolation[:,:250,100])" + ] + }, + { + "cell_type": "markdown", + "id": "44bf3023-82be-405d-828f-bc0746cefbfd", + "metadata": {}, + "source": [ + "## Performance comparison" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "e5697ca2-5e66-405e-be5c-14fc21e7b84c", + "metadata": {}, + "outputs": [], + "source": [ + "def deskew_with_interpolation():\n", + " cle.deskew_y(original_image, \n", + " angle_in_degrees=deskewing_angle_in_degrees, \n", + " voxel_size_x=voxel_size_x_in_microns, \n", + " voxel_size_y=voxel_size_y_in_microns, \n", + " voxel_size_z=voxel_size_z_in_microns,\n", + " linear_interpolation=True)\n", + "\n", + "def deskew_without_interpolation():\n", + " cle.deskew_y(original_image, \n", + " angle_in_degrees=deskewing_angle_in_degrees, \n", + " voxel_size_x=voxel_size_x_in_microns, \n", + " voxel_size_y=voxel_size_y_in_microns, \n", + " voxel_size_z=voxel_size_z_in_microns,\n", + " linear_interpolation=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "fb5dbd25-a967-4fa3-b7dc-8441d511776f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "29.8 ms ± 1.09 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + ] + } + ], + "source": [ + "%timeit deskew_with_interpolation()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "08cd8402-61f6-4b34-a7b5-c4732fa05129", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "28.7 ms ± 868 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + ] + } + ], + "source": [ + "%timeit deskew_without_interpolation()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74707203-4114-4532-9255-966f1d6cb5a9", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + }, + "vscode": { + "interpreter": { + "hash": "c2b46194c6f53d1309ec6efbc337d4d86cf8be9dd82cf5e27a48142022d8f42e" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 09f9aef0594fa4428d02569d2e25472a01025c14 Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Fri, 2 Dec 2022 09:30:46 +0100 Subject: [PATCH 6/9] minor --- demo/transforms/deskew_artifact_interpolation-0.19.4.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/transforms/deskew_artifact_interpolation-0.19.4.ipynb b/demo/transforms/deskew_artifact_interpolation-0.19.4.ipynb index f21cfcdf..414b5171 100644 --- a/demo/transforms/deskew_artifact_interpolation-0.19.4.ipynb +++ b/demo/transforms/deskew_artifact_interpolation-0.19.4.ipynb @@ -9,7 +9,7 @@ "\n", "In this notebook we demonstrate what happens if not using interpolation when deskewing an image stack: The result is produced faster and contains artifacts.\n", "\n", - "The bug demonstrated here was fixed in pyclesperanto-prototype 0.19.5 and may not be reproducible anymore with the current release." + "The bug demonstrated here was fixed in pyclesperanto-prototype 0.20.0 and may not be reproducible anymore with the current release." ] }, { From 3e00f5a7836e21d1068741eb073a052a9e1ef91c Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Fri, 2 Dec 2022 09:38:53 +0100 Subject: [PATCH 7/9] demonstrate artifact in almost isotropic data --- .../deskew_artifact_interpolation.ipynb | 102 ++++++++++++++++-- 1 file changed, 96 insertions(+), 6 deletions(-) diff --git a/demo/transforms/deskew_artifact_interpolation.ipynb b/demo/transforms/deskew_artifact_interpolation.ipynb index 3d9dbdf2..5566c65f 100644 --- a/demo/transforms/deskew_artifact_interpolation.ipynb +++ b/demo/transforms/deskew_artifact_interpolation.ipynb @@ -174,7 +174,8 @@ " angle_in_degrees=deskewing_angle_in_degrees, \n", " voxel_size_x=voxel_size_x_in_microns, \n", " voxel_size_y=voxel_size_y_in_microns, \n", - " voxel_size_z=voxel_size_z_in_microns)\n", + " voxel_size_z=voxel_size_z_in_microns,\n", + " linear_interpolation=True)\n", "\n", "deskewed.shape" ] @@ -257,6 +258,95 @@ "cle.imshow(deskewed_wo_interpolation[:,:250,100])" ] }, + { + "cell_type": "markdown", + "id": "1d6bf8cb-bb34-4f73-ab3a-a3f6f09e9568", + "metadata": {}, + "source": [ + "## Deskewing well z-sampled data\n", + "The artifact is still present but harder to discover in case voxels were sampled almost isotropically." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "e1f9f6c9-a518-4a69-a8d0-3950d281c6e6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(834, 118, 209)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "voxel_size_z_in_microns = 0.3\n", + "\n", + "original_image = imread('../../data/RBC_tiny.tif')\n", + "original_image.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c0577d22-07c2-4d5c-87e3-3130e46f661b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "deskewed = cle.deskew_y(original_image, \n", + " angle_in_degrees=deskewing_angle_in_degrees, \n", + " voxel_size_x=voxel_size_x_in_microns, \n", + " voxel_size_y=voxel_size_y_in_microns, \n", + " voxel_size_z=voxel_size_z_in_microns,\n", + " linear_interpolation=True)\n", + "\n", + "cle.imshow(deskewed[:,:250,100])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "fffb92ba-89f1-4fdc-9d60-22e8dda1e4a3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "deskewed_wo_interpolation = cle.deskew_y(original_image, \n", + " angle_in_degrees=deskewing_angle_in_degrees, \n", + " voxel_size_x=voxel_size_x_in_microns, \n", + " voxel_size_y=voxel_size_y_in_microns, \n", + " voxel_size_z=voxel_size_z_in_microns,\n", + " linear_interpolation=False)\n", + "\n", + "cle.imshow(deskewed_wo_interpolation[:,:250,100])" + ] + }, { "cell_type": "markdown", "id": "44bf3023-82be-405d-828f-bc0746cefbfd", @@ -267,7 +357,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "id": "e5697ca2-5e66-405e-be5c-14fc21e7b84c", "metadata": {}, "outputs": [], @@ -291,7 +381,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "id": "fb5dbd25-a967-4fa3-b7dc-8441d511776f", "metadata": {}, "outputs": [ @@ -299,7 +389,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "30.2 ms ± 978 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + "64.1 ms ± 1.62 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], @@ -309,7 +399,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "id": "08cd8402-61f6-4b34-a7b5-c4732fa05129", "metadata": {}, "outputs": [ @@ -317,7 +407,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "26.9 ms ± 1.19 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + "66.3 ms ± 2.65 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], From f4b670d7bfe54f32f100e3ad6ca5d75096a60b96 Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Fri, 2 Dec 2022 09:45:03 +0100 Subject: [PATCH 8/9] added deprecation warning --- demo/transforms/deskew_artifact_interpolation.ipynb | 12 ++++++++++-- pyclesperanto_prototype/_tier8/_deskew_x.py | 3 +++ pyclesperanto_prototype/_tier8/_deskew_y.py | 3 +++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/demo/transforms/deskew_artifact_interpolation.ipynb b/demo/transforms/deskew_artifact_interpolation.ipynb index 5566c65f..778fae13 100644 --- a/demo/transforms/deskew_artifact_interpolation.ipynb +++ b/demo/transforms/deskew_artifact_interpolation.ipynb @@ -215,6 +215,14 @@ "id": "a5a9c2dd-a6c0-4377-b790-fe1b15f1f6ee", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\structure\\code\\pyclesperanto_prototype\\pyclesperanto_prototype\\_tier8\\_deskew_y.py:46: UserWarning: linear_interpolation = False is deprecated due to deskewing artifacts. The linear_interpolation parameter will be removed in a future version.\n", + " warnings.warn(\"linear_interpolation = False is deprecated due to deskewing artifacts. The linear_interpolation parameter will be removed in a future version.\")\n" + ] + }, { "data": { "text/plain": [ @@ -389,7 +397,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "64.1 ms ± 1.62 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + "64.5 ms ± 1.15 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], @@ -407,7 +415,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "66.3 ms ± 2.65 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" + "66.3 ms ± 2.3 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], diff --git a/pyclesperanto_prototype/_tier8/_deskew_x.py b/pyclesperanto_prototype/_tier8/_deskew_x.py index f1bbe545..ffe32a35 100644 --- a/pyclesperanto_prototype/_tier8/_deskew_x.py +++ b/pyclesperanto_prototype/_tier8/_deskew_x.py @@ -42,6 +42,9 @@ def deskew_x(input_image: Image, ------- output_image """ + if not linear_interpolation: + warnings.warn("linear_interpolation = False is deprecated due to deskewing artifacts. The linear_interpolation parameter will be removed in a future version.") + from ._AffineTransform3D import AffineTransform3D from ._affine_transform import affine_transform from ._affine_transform_deskew_3d import affine_transform_deskew_3d, DeskewDirection diff --git a/pyclesperanto_prototype/_tier8/_deskew_y.py b/pyclesperanto_prototype/_tier8/_deskew_y.py index 02727316..94f01bca 100644 --- a/pyclesperanto_prototype/_tier8/_deskew_y.py +++ b/pyclesperanto_prototype/_tier8/_deskew_y.py @@ -42,6 +42,9 @@ def deskew_y(input_image: Image, ------- output_image """ + if not linear_interpolation: + warnings.warn("linear_interpolation = False is deprecated due to deskewing artifacts. The linear_interpolation parameter will be removed in a future version.") + from ._AffineTransform3D import AffineTransform3D from ._affine_transform import affine_transform from ._affine_transform_deskew_3d import affine_transform_deskew_3d, DeskewDirection From 5e37e0fad27e09e388af67c4d964dd2b23838cba Mon Sep 17 00:00:00 2001 From: Robert Haase Date: Fri, 2 Dec 2022 10:24:02 +0100 Subject: [PATCH 9/9] corrected test result --- tests/test_deskew.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_deskew.py b/tests/test_deskew.py index 6a11f89b..a0d21640 100644 --- a/tests/test_deskew.py +++ b/tests/test_deskew.py @@ -8,7 +8,7 @@ reference = np.zeros((5, 19, 10),dtype=np.float32) #will this change with device used? -reference[1, 2, 1] = 0.16987294 +reference[3, 2, 1] = 0.16987294 def test_deskew_y():