Module qute.transforms
Custom transforms.
Sub-modules
- qute.transforms.debug
- 
Debugging transforms. 
- qute.transforms.geom
- 
Geometric transforms. 
- qute.transforms.io
- 
Input/output transforms. 
- qute.transforms.norm
- 
Normalization and scaling transforms. 
- qute.transforms.objects
- 
Object-related transforms. 
- qute.transforms.util
- 
Utility functions for transforms. 
Classes
- class AddFFT2 (mean_real: Optional[float] = None, std_real: Optional[float] = None, mean_imag: Optional[float] = None, std_imag: Optional[float] = None, in_place: bool = True)
- 
Calculates the Fourier transform of the selected single-channel image and adds its z-normalized real and imaginary parts as two additional planes. Constructor Expand source codeclass AddFFT2(Transform): """Calculates the Fourier transform of the selected single-channel image and adds its z-normalized real and imaginary parts as two additional planes.""" def __init__( self, mean_real: Optional[float] = None, std_real: Optional[float] = None, mean_imag: Optional[float] = None, std_imag: Optional[float] = None, in_place: bool = True, ) -> None: """Constructor""" super().__init__() self.mean_real = mean_real self.std_real = std_real self.mean_imag = mean_imag self.std_imag = std_imag self.in_place = in_place def __call__(self, data: torch.Tensor) -> torch.Tensor: """ Apply the transform to the "image" tensor in the data dictionary. Returns ------- data: torch.Tensor Image with added normalized power spectrum as second plane. """ # Make sure that the dimensions of the data are correct if not (data.dim() == 3 and data.shape[0] == 1): raise ValueError( "The image tensor must be of dimensions (1 x height x width)!" ) # Calculate the Fourier transform of the image f = torch.fft.fftshift(torch.fft.fft2(data)) # Normalize if self.mean_real is not None and self.std_real is not None: f.real = (f.real - self.mean_real) / self.std_real else: f.real = (f.real - f.real.mean()) / f.real.std() if self.mean_imag is not None and self.std_imag is not None: f.imag = (f.imag - self.mean_imag) / self.std_imag else: f.imag = (f.imag - f.imag.mean()) / f.imag.std() # Do we modify the input Tensor in place? if not self.in_place: data = data.clone() # Add it as a new plane data = torch.cat((data, f.real, f.imag), dim=0) # Return the updated tensor return dataAncestors- monai.transforms.transform.Transform
- abc.ABC
 
- class AddFFT2d (image_key: str = 'image', mean_real: Optional[float] = None, std_real: Optional[float] = None, mean_imag: Optional[float] = None, std_imag: Optional[float] = None)
- 
Calculates the Fourier transform of the selected single-channel image and adds its z-normalized real and imaginary parts as two additional planes. Constructor Parameters- image_key:- str
- Key for the image in the data dictionary.
 Expand source codeclass AddFFT2d(MapTransform): """Calculates the Fourier transform of the selected single-channel image and adds its z-normalized real and imaginary parts as two additional planes.""" def __init__( self, image_key: str = "image", mean_real: Optional[float] = None, std_real: Optional[float] = None, mean_imag: Optional[float] = None, std_imag: Optional[float] = None, ) -> None: """Constructor Parameters ---------- image_key: str Key for the image in the data dictionary. """ super().__init__(keys=[image_key]) self.image_key = image_key self.mean_real = mean_real self.std_real = std_real self.mean_imag = mean_imag self.std_imag = std_imag def __call__(self, data: dict) -> dict: """ Calculates the power spectrum of the selected single-channel image and adds it as a second plane. Returns ------- data: dict Updated dictionary with modified "image" tensor. """ # Make sure that the dimensions of the data are correct if not (data[self.image_key].dim() == 3 and data[self.image_key].shape[0] == 1): raise ValueError( "The image tensor must be of dimensions (1 x height x width)!" ) # Calculate the Fourier transform of the image f = torch.fft.fftshift(torch.fft.fft2(data[self.image_key])) # Normalize if self.mean_real is not None and self.std_real is not None: f.real = (f.real - self.mean_real) / self.std_real else: f.real = (f.real - f.real.mean()) / f.real.std() if self.mean_imag is not None and self.std_imag is not None: f.imag = (f.imag - self.mean_imag) / self.std_imag else: f.imag = (f.imag - f.imag.mean()) / f.imag.std() # Make a copy of the original dictionary d = dict(data) # Add it as a new plane d[self.image_key] = torch.cat((d[self.image_key], f.real, f.imag), dim=0) # Return the updated data dictionary return dAncestors- monai.transforms.transform.MapTransform
- monai.transforms.transform.Transform
- abc.ABC
 
- class ToPyTorchLightningOutputd (image_key: str = 'image', image_dtype: torch.dtype = torch.float32, label_key: str = 'label', label_dtype: torch.dtype = torch.int32)
- 
Simple converter to pass from the dictionary output of Monai transforms to the expected (image, label) tuple used by PyTorch Lightning. Expand source codeclass ToPyTorchLightningOutputd(MapTransform): """ Simple converter to pass from the dictionary output of Monai transforms to the expected (image, label) tuple used by PyTorch Lightning. """ def __init__( self, image_key: str = "image", image_dtype: torch.dtype = torch.float32, label_key: str = "label", label_dtype: torch.dtype = torch.int32, ): super().__init__(keys=[image_key, label_key]) self.image_key = image_key self.label_key = label_key self.image_dtype = image_dtype self.label_dtype = label_dtype def __call__(self, data: dict) -> tuple: """Unwrap the dictionary.""" # Work on a copy of the input dictionary data d = dict(data) return d[self.image_key].type(self.image_dtype), d[self.label_key].type( self.label_dtype )Ancestors- monai.transforms.transform.MapTransform
- monai.transforms.transform.Transform
- abc.ABC