Skip to main content

Lightweight image registration library using PyTorch

Project description

torchreg

torchreg is a tiny (~100 lines) PyTorch-based library for 2D and 3D image registration.

Usage

Affine Registration of two image tensors is done via:

from torchreg import AffineRegistration

# Load images as torch Tensors
small_alice = ...  # Tensor with shape [1, 3 (color channel), 1024 (pixel), 1024 (pixel)]
big_alice = ...    # Tensor with shape [1, 3 (color channel), 1024 (pixel), 1024 (pixel)]
# Intialize AffineRegistration
reg = AffineRegistration(is_3d=False)
# Run it!
moved_alice = reg(small_alice, big_alice)

Features

Multiresolution approach to save compute (per default 1/4 + 1/2 of original resolution for 500 + 100 iterations)

reg = AffineRegistration(scales=(4, 2), iterations=(500, 100))

Choosing which operations (translation, rotation, zoom, shear) to optimize

reg = AffineRegistration(with_zoom=False, with_shear=False)

Custom initial parameters

reg = AffineRegistration(zoom=torch.Tensor([[1.5, 2.]]))

Custom dissimilarity functions and optimizers

def dice_loss(x1, x2):
    dim = [2, 3, 4] if len(x2.shape) == 5 else [2, 3]
    inter = torch.sum(x1 * x2, dim=dim)
    union = torch.sum(x1 + x2, dim=dim)
    return 1 - (2. * inter / union).mean()

reg = AffineRegistration(dissimilairity_function=dice_loss, optimizer=torch.optim.Adam)

CUDA support (NVIDIA GPU)

moved_alice = reg(moving=big_alice.cuda(), static=small_alice.cuda())

MPS support (Apple M1 or M2)

moved_alice = reg(moving=big_alice.to('mps'), static=small_alice.to('mps'))

After the registration is run, you can apply it to new images (coregistration)

another_moved_alice = reg.transform(another_alice, shape=(256, 256))

with desired output shape.

You can access the affine

affine = reg.get_affine()

and the four parameters (translation, rotation, zoom, shear)

translation = reg.parameters[0]
rotation = reg.parameters[1]
zoom = reg.parameters[2]
shear = reg.parameters[3]

Installation

pip install torchreg

Examples/Tutorials

There are three example notebooks:

Background

If you want to know how the core of this package works, read the blog post!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torchreg-0.0.1.tar.gz (4.6 kB view hashes)

Uploaded Source

Built Distribution

torchreg-0.0.1-py3-none-any.whl (5.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page