From a58f3f33f945e6e962b8fb9066bee733de47e396 Mon Sep 17 00:00:00 2001 From: Andrey Aristov <aaristov@pasteur.fr> Date: Mon, 9 Nov 2020 16:04:17 +0100 Subject: [PATCH] registration routines --- droplet_growth/register.py | 43 ++++++++++++++++++++++++++++++++++++++ requirements.txt | 1 + setup.py | 3 ++- 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 droplet_growth/register.py diff --git a/droplet_growth/register.py b/droplet_growth/register.py new file mode 100644 index 0000000..b336e56 --- /dev/null +++ b/droplet_growth/register.py @@ -0,0 +1,43 @@ +from tifffile import imread, imwrite +import matplotlib.pyplot as plt +import imreg_dft as reg +import numpy as np +import scipy.ndimage as ndi + + +def calculate_padding(image, template): + shi = np.array(image.shape) + sht = np.array(template.shape) + dif = shi - sht + mid = dif // 2 + rest = dif - mid + return (tuple((mid[0], rest[0])), tuple((mid[1],rest[1]))) + + +def pad_template(image, template, padding=None): + if padding is None: + padding = calculate_padding(image, template) + padded_template = np.pad(template, padding, 'median') + return padded_template + + +def unpad_image(image, template=None, padding=None): + if padding is None: + padding = calculate_padding(image, template) + return image[padding[0][0]:-padding[0][1], padding[1][0]:-padding[1][1]] + + +def scale_tvec(tvec, scale=8): + tvec_8x = tvec.copy() + tvec_8x['tvec'] = tvec['tvec'] * scale + try: + tvec_8x['timg'] = None + except KeyError: + pass + finally: + return tvec_8x + + +def transform(image, tvec): + fluo = reg.transform_img_dict(image, tvec) + return fluo.astype('uint') \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 787d9f8..c5eac49 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,3 +12,4 @@ seaborn statannot jupyterlab czifile +imreg-dft diff --git a/setup.py b/setup.py index 6506773..58ce40c 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,8 @@ setup( "pandas", "seaborn", "statannot", - "click" + "click", + "imreg-dft" ], python_requires=">=3.8", packages=find_packages(), -- GitLab