Skip to content

Metrics

nanodrr.metrics

DoubleGeodesicSE3

DoubleGeodesicSE3(sdd: float, eps: float = 1e-07)

Calculate the angular and translational geodesics between two SE(3) transformation matrices.

Source code in src/nanodrr/metrics/geo.py
def __init__(
    self,
    sdd: float,
    eps: float = 1e-7,
):
    super().__init__()
    self.sdr = sdd / 2
    self.eps = eps

GradientNormalizedCrossCorrelation2d

GradientNormalizedCrossCorrelation2d(
    patch_size: int | None = None, sigma: float = 1.0, **kwargs
)

Compute Normalized Cross Correlation between the image gradients of two batches of images.

Source code in src/nanodrr/metrics/ncc.py
def __init__(
    self,
    patch_size: int | None = None,
    sigma: float = 1.0,
    **kwargs,
):
    super().__init__(patch_size, **kwargs)
    self.sobel = _Sobel(sigma)

MultiscaleNormalizedCrossCorrelation2d

MultiscaleNormalizedCrossCorrelation2d(
    patch_sizes: list[int | None] = [None],
    patch_weights: list[float] = [1.0],
    eps: float = 0.0001,
)

Compute Normalized Cross Correlation between two batches of images at multiple scales.

Source code in src/nanodrr/metrics/ncc.py
def __init__(
    self,
    patch_sizes: list[int | None] = [None],
    patch_weights: list[float] = [1.0],
    eps: float = 1e-4,
):
    super().__init__()
    assert len(patch_sizes) == len(patch_weights), "Each scale must have a weight"
    self.nccs = torch.nn.ModuleList([NormalizedCrossCorrelation2d(patch_size, eps) for patch_size in patch_sizes])
    self.patch_weights = patch_weights

NormalizedCrossCorrelation2d

NormalizedCrossCorrelation2d(patch_size: int | None = None, eps: float = 1e-07)

Compute Normalized Cross Correlation between two batches of images.

Source code in src/nanodrr/metrics/ncc.py
def __init__(self, patch_size: int | None = None, eps: float = 1e-7):
    super().__init__()
    self.patch_size = patch_size
    self.eps = eps