vroc (Varreg on Crack) is a GPU-accelerated variational registration library.
To install the package, run:
pip install -r requirements.txt
pip install .Here is a basic example of how to use vroc for image registration:
import logging
import time
import numpy as np
from vroc.logger import init_fancy_logging
from vroc.loss import ncc_loss
from vroc.registration import VrocRegistration
# Initialize logging
init_fancy_logging()
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logging.getLogger("vroc").setLevel(logging.DEBUG)
# Define registration parameters
params = {
"iterations": 800,
"tau": 2.00,
"tau_level_decay": 0.0,
"tau_iteration_decay": 0.0,
"sigma_x": 1.25,
"sigma_y": 1.25,
"sigma_z": 1.25,
"sigma_level_decay": 0.0,
"sigma_iteration_decay": 0.0,
"n_levels": 3,
"largest_scale_factor": 1,
}
# Initialize registration object
registration = VrocRegistration(device="cuda:0")
# Create dummy data
moving_image = np.random.random((128, 128, 128)).astype(np.float32)
fixed_image = np.random.random((128, 128, 128)).astype(np.float32)
moving_mask = np.ones_like(moving_image, dtype=bool)
fixed_mask = np.ones_like(fixed_image, dtype=bool)
# Perform registration
reg_result = registration.register(
moving_image=moving_image,
fixed_image=fixed_image,
moving_mask=moving_mask,
fixed_mask=fixed_mask,
image_spacing=(1.0, 1.0, 1.0),
register_affine=False,
affine_loss_function=ncc_loss,
force_type="demons",
gradient_type="dual",
valid_value_range=(-1024, 3071),
early_stopping_delta=0.00,
early_stopping_window=100,
default_parameters=params,
mode="standard",
affine_enable_rotation=True,
affine_enable_scaling=True,
affine_enable_shearing=True,
affine_enable_translation=True,
)This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License - see the LICENSE file for details.