imfusion.data#

Submodule for Data and Data-derived types.

class imfusion.data.Data#

Bases: pybind11_object

class Kind(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)#

Bases: Enum

IMAGE = 1#
IMAGE_SET = 3#
IMAGE_STREAM = 5#
POINT_SET = 7#
STEREOIMAGESET = 14#
SURFACE = 8#
TRACKING_DATA = 10#
TRACKING_STREAM = 9#
UNKNOWN = 0#
VOLUME = 2#
VOLUME_SET = 4#
VOLUME_STREAM = 6#
class Modality(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)#

Bases: Enum

CT = 2#
LABEL = 8#
MRI = 3#
NA = 0#
NM = 6#
OCT = 7#
ULTRASOUND = 4#
VIDEO = 5#
XRAY = 1#
matrix_from_world(self: Data) → Annotated[numpy.typing.NDArray[numpy.float64], '[4, 4]']#
matrix_to_world(self: Data) → Annotated[numpy.typing.NDArray[numpy.float64], '[4, 4]']#
set_matrix_from_world(self: Data, arg0: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]']) → None#
set_matrix_to_world(self: Data, arg0: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]']) → None#
property components#
Type:

DataComponentList

property kind#
Type:

Kind

property name#
Type:

str

class imfusion.data.DataGroup#

Bases: Data

__iter__(self: DataGroup) → Iterator#
children_recursive(self: DataGroup) → list[Data]#
property children#
Type:

list[Data]

property proxy_child#
Type:

Data

class imfusion.data.Mesh(*args, **kwargs)#

Bases: Data

Function overload documentation:

__init__(self: Mesh, mesh: Mesh) → None
__init__(self: Mesh, name: str = '') → None
class Primitive(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)#

Bases: Enum

Enumeration of supported mesh primitives.

CONE = 5#
CUBE = 3#
CYLINDER = 1#
GRID = 6#
ICOSAHEDRON_SPHERE = 4#
PYRAMID = 2#
SPHERE = 0#
add_face(self: Mesh, index: Annotated[numpy.typing.ArrayLike, numpy.int32, '[3, 1]'], force: bool) → int#
add_vertex(self: Mesh, position: Annotated[numpy.typing.ArrayLike, numpy.float64, '[3, 1]']) → int#
static create(shape: Primitive) → Mesh#

Create a mesh primitive.

Args:

shape: The shape of the primitive to create.

face_normal(self: Mesh, index: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.float64], '[3, 1]']#
face_vertices(self: Mesh, index: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.int32], '[3, 1]']#
halfedge_color(self: Mesh, vertex_index: SupportsInt | SupportsIndex, face_index: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.float32], '[4, 1]']#
halfedge_normal(self: Mesh, vertex_index: SupportsInt | SupportsIndex, face_index: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.float64], '[3, 1]']#
halfedge_vertices(self: Mesh, vertex_index: SupportsInt | SupportsIndex, face_index: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.int32], '[2, 1]']#
is_closed(self: Mesh) → bool#
is_manifold(self: Mesh) → bool#
is_self_intersecting(self: Mesh) → bool#
is_vertex_manifold(self: Mesh, index: SupportsInt | SupportsIndex) → bool#
is_watertight(self: Mesh, check_self_intersection: bool) → bool#
remove_face(self: Mesh, index: SupportsInt | SupportsIndex, remove_isolated_vertices: bool) → bool#
remove_faces(self: Mesh, indices: Sequence[SupportsInt | SupportsIndex], remove_isolated_vertices: bool) → None#
remove_halfedge_colors(self: Mesh) → None#
remove_halfedge_normals(self: Mesh) → None#
remove_vertex_colors(self: Mesh) → None#
remove_vertex_normals(self: Mesh) → None#
remove_vertices(self: Mesh, indices: Sequence[SupportsInt | SupportsIndex], remove_isolated_vertices: bool) → None#
set_halfedge_color(self: Mesh, vertex_index: SupportsInt | SupportsIndex, face_index: SupportsInt | SupportsIndex, color: Annotated[numpy.typing.ArrayLike, numpy.float32, '[4, 1]']) → None#
set_halfedge_color(self: Mesh, vertex_index: SupportsInt | SupportsIndex, face_index: SupportsInt | SupportsIndex, color: Annotated[numpy.typing.ArrayLike, numpy.float32, '[3, 1]'], alpha: SupportsFloat | SupportsIndex) → None

Function overload documentation:

set_halfedge_color(self: Mesh, vertex_index: SupportsInt | SupportsIndex, face_index: SupportsInt | SupportsIndex, color: Annotated[numpy.typing.ArrayLike, numpy.float32, '[4, 1]']) → None
set_halfedge_color(self: Mesh, vertex_index: SupportsInt | SupportsIndex, face_index: SupportsInt | SupportsIndex, color: Annotated[numpy.typing.ArrayLike, numpy.float32, '[3, 1]'], alpha: SupportsFloat | SupportsIndex) → None
set_halfedge_normal(self: Mesh, vertex_index: SupportsInt | SupportsIndex, face_index: SupportsInt | SupportsIndex, normal: Annotated[numpy.typing.ArrayLike, numpy.float64, '[3, 1]']) → None#
set_vertex(self: Mesh, index: SupportsInt | SupportsIndex, vertex: Annotated[numpy.typing.ArrayLike, numpy.float64, '[3, 1]']) → None#
set_vertex_color(self: Mesh, index: SupportsInt | SupportsIndex, color: Annotated[numpy.typing.ArrayLike, numpy.float32, '[4, 1]']) → None#
set_vertex_color(self: Mesh, index: SupportsInt | SupportsIndex, color: Annotated[numpy.typing.ArrayLike, numpy.float32, '[3, 1]'], alpha: SupportsFloat | SupportsIndex) → None

Function overload documentation:

set_vertex_color(self: Mesh, index: SupportsInt | SupportsIndex, color: Annotated[numpy.typing.ArrayLike, numpy.float32, '[4, 1]']) → None
set_vertex_color(self: Mesh, index: SupportsInt | SupportsIndex, color: Annotated[numpy.typing.ArrayLike, numpy.float32, '[3, 1]'], alpha: SupportsFloat | SupportsIndex) → None
set_vertex_normal(self: Mesh, index: SupportsInt | SupportsIndex, normal: Annotated[numpy.typing.ArrayLike, numpy.float64, '[3, 1]']) → None#
vertex(self: Mesh, index: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.float64], '[3, 1]']#
vertex_color(self: Mesh, index: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.float32], '[4, 1]']#
vertex_normal(self: Mesh, index: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.float64], '[3, 1]']#
property center#
Type:

Annotated[numpy.typing.NDArray[numpy.float64], ”[3, 1]”]

property extent#
Type:

Annotated[numpy.typing.NDArray[numpy.float64], ”[3, 1]”]

property filename#
Type:

str

property has_halfedge_colors#
Type:

bool

property has_halfedge_normals#
Type:

bool

property has_vertex_colors#
Type:

bool

property has_vertex_normals#
Type:

bool

property number_of_faces#
Type:

int

property number_of_vertices#
Type:

int

class imfusion.data.PointCloud(self: PointCloud, points: Sequence[Annotated[numpy.typing.ArrayLike, numpy.float64, '[3, 1]']] = [], *, normals: Sequence[Annotated[numpy.typing.ArrayLike, numpy.float64, '[3, 1]']] = [], colors: Sequence[Annotated[numpy.typing.ArrayLike, numpy.float64, '[3, 1]']] = [])#

Bases: Data

Data structure representing a point cloud in 3d space. Each point can have an associated color and normal vector.

Constructs a point cloud with the specified points, normals and colors. If the number of colors / normals does not match the number of points, they will be ignored with a warning.

Parameters:
  • points – Vertices of the point cloud.

  • normals – Normals of the point cloud. If the length does not match points, normals will be dropped with a warning.

  • colors – Colors (RGB) of the point cloud. If the length does not match points, colors will be dropped with a warning.

clone(self: PointCloud) → PointCloud#

Create a new point cloud by deep copying an all data from this instance.

transform_point_cloud(self: PointCloud, transformation: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]']) → None#
property colors#
Type:

list[Annotated[numpy.typing.NDArray[numpy.float64], ”[3, 1]”]]

property has_normals#
Type:

bool

property is_dense#
Type:

bool

property normals#
Type:

list[Annotated[numpy.typing.NDArray[numpy.float64], ”[3, 1]”]]

property points#
Type:

list[Annotated[numpy.typing.NDArray[numpy.float64], ”[3, 1]”]]

property weights#
Type:

list[float]

class imfusion.data.SharedImageSet(*args, **kwargs)#

Bases: Data

Set of images independent of their storage location.

This class is the main high-level container for image data consisting of one or multiple images or volumes, and should be used both in algorithms and visualization classes. Both a single focus and multiple selection is featured, as well as providing transformation matrices for each image.

The focus image of a SharedImageSet can be directly converted from and to a numpy array:

>>> img = imfusion.SharedImageSet(np.ones([1, 10, 10, 10, 1], dtype='uint8'))
>>> arr = np.array(img)

See MemImage for details.

Function overload documentation:

__init__(self: SharedImageSet) → None

Creates an empty SharedImageSet.

__init__(self: SharedImageSet, mem_image: MemImage) → None
__init__(self: SharedImageSet, shared_image: SharedImage) → None
__init__(self: SharedImageSet, array: Annotated[numpy.typing.ArrayLike, numpy.int8], greyscale: bool = False) → None
__init__(self: SharedImageSet, array: Annotated[numpy.typing.ArrayLike, numpy.uint8], greyscale: bool = False) → None
__init__(self: SharedImageSet, array: Annotated[numpy.typing.ArrayLike, numpy.int16], greyscale: bool = False) → None
__init__(self: SharedImageSet, array: Annotated[numpy.typing.ArrayLike, numpy.uint16], greyscale: bool = False) → None
__init__(self: SharedImageSet, array: Annotated[numpy.typing.ArrayLike, numpy.int32], greyscale: bool = False) → None
__init__(self: SharedImageSet, array: Annotated[numpy.typing.ArrayLike, numpy.uint32], greyscale: bool = False) → None
__init__(self: SharedImageSet, array: Annotated[numpy.typing.ArrayLike, numpy.float32], greyscale: bool = False) → None
__init__(self: SharedImageSet, array: Annotated[numpy.typing.ArrayLike, numpy.float64], greyscale: bool = False) → None
__getitem__(self: SharedImageSet, index: SupportsInt | SupportsIndex) → SharedImage#
__iter__(self: SharedImageSet) → Iterator[SharedImage]#
add(self: SharedImageSet, shared_image: SharedImage) → None#
add(self: SharedImageSet, mem_image: MemImage) → None

Function overload documentation:

add(self: SharedImageSet, shared_image: SharedImage) → None
add(self: SharedImageSet, mem_image: MemImage) → None
all(self: SharedImageSet) → bool#

Returns True if all pixels / voxels is non-zero

any(self: SharedImageSet) → bool#

Returns True if at least one pixel / voxel is non-zero

apply_shift_and_scale(arr)#

Return a copy of the array with storage values converted to original values.

Parameters:
  • self – instance of a SharedImageSet which provides shift and scale

  • arr – array to be converted from storage values into original values

Returns:

numpy.ndarray

argmax(self: SharedImageSet) → list[Annotated[numpy.typing.NDArray[numpy.int32], '[4, 1]']]#

Return a list of the indices of maximum values, channel-wise. The indices are represented as (x, y, z, image index).

Returns:

List of indices (x, y, z, image index) returned as a list of numpy arrays.

argmin(self: SharedImageSet) → list[Annotated[numpy.typing.NDArray[numpy.int32], '[4, 1]']]#

Return a list of the indices of minimum values, channel-wise. The indices are represented as (x, y, z, image index).

Returns:

List of indices (x, y, z, image index) returned as a list of numpy arrays.

assign_array(arr)#

Copies the contents of arr to the MemImage. Automatically calls setDirtyMem.

astype(self: SharedImageSet, pixel_type: object) → SharedImageSet#

Returns a new SharedImageSet formed by new SharedImage instances obtained by converting the original ones into the requested PixelType.

This function accepts either: - a PixelType (e.g. imfusion.PixelType.UInt); - most of the numpy’s dtypes (e.g. np.uint); - python’s float or int types.

If the requested type already matches the input type, the returned SharedImageSet will contain clones of the original images.

channel_swizzle(self: SharedImageSet, indices: Sequence[SupportsInt | SupportsIndex]) → SharedImageSet#

Reorders the channels of an image based on the input indices, e.g. indices[0] will correspond to the first channel of the output image.

Parameters:

indices – List of channel indices to swizzle the channels of the input.

Returns:

SharedImageSet instance with reordered channels.

clear(self: SharedImageSet) → None#
clone(self: SharedImageSet, with_data: bool = True) → SharedImageSet#
deformation(self: SharedImageSet, which: SupportsInt | SupportsIndex = -1) → Deformation#
descriptor(self: SharedImageSet, which: SupportsInt | SupportsIndex = -1) → BoundImageDescriptor#

Return a read-only descriptor view for a specific or selected image.

elementwise_components(self: SharedImageSet, which: SupportsInt | SupportsIndex = -1) → DataComponentList#
static from_images(path: str) → SharedImageSet#
static from_images(path: Sequence[str]) → SharedImageSet

Function overload documentation:

from_images(path: str) → SharedImageSet

Load different images as a single SharedImageSet.

Currently supported image formats are: [bmp, pgm, png, ppm, jpg, jpeg, tif, tiff, jp2].

Parameters:

folder_path – The directory where all images are located to be loaded as a SharedImageSet.

Raises:

IOError if the file cannot be opened or if the extensions is not supported. –

from_images(path: Sequence[str]) → SharedImageSet

Load different images as a single SharedImageSet.

Currently supported image formats are: [bmp, pgm, png, ppm, jpg, jpeg, tif, tiff, jp2].

Parameters:

file_paths – paths to image files to be loaded as a SharedImageSet.

Raises:

IOError if the file cannot be opened or if the extensions is not supported. –

classmethod from_torch(tensor: Tensor, get_metadata_from: SharedImageSet | None = None) → SharedImageSet#

Create a SharedImageSet from a torch Tensor. If you want to copy metadata from an existing SharedImageSet you can pass it as the get_metadata_from argument. If you are using this, make sure that the size of the tensor’s batch dimension and the number of images in the SIS are equal. If get_metadata_from is provided, properties will be copied from the SIS and world_to_image_matrix, spacing and modality from the contained SharedImages.

Parameters:
  • cls – Instance of type i.e. SharedImageSet (this function is bound as a classmethod to SharedImageSet)

  • tensor (Tensor) – Instance of torch.Tensor

  • get_metadata_from (SharedImageSet | None) – Instance of SharedImageSet from which metadata should be copied.

Returns:

New instance of SharedImageSet

Return type:

SharedImageSet

get(self: SharedImageSet, which: SupportsInt | SupportsIndex = -1) → SharedImage#
mask(self: SharedImageSet, which: SupportsInt | SupportsIndex = -1) → Mask#
matrix(self: SharedImageSet, which: SupportsInt | SupportsIndex = -1) → Annotated[numpy.typing.NDArray[numpy.float64], '[4, 4]']#
matrix_from_world(self: SharedImageSet, which: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.float64], '[4, 4]']#
matrix_to_world(self: SharedImageSet, which: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.float64], '[4, 4]']#
max(self: SharedImageSet) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']#

Return the list of the maximum elements of images, channel-wise.

Returns:

Channel-wise values returned as a numpy array.

mean(self: SharedImageSet) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']#

Return a list of channel-wise average of image elements.

Returns:

Channel-wise values returned as a numpy array.

mem(self: SharedImageSet, which: SupportsInt | SupportsIndex = -1) → MemImage#
min(self: SharedImageSet) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']#

Return the list of the minimum elements of images, channel-wise.

Returns:

Channel-wise values returned as a numpy array.

norm(self: SharedImageSet, order: SupportsInt | SupportsIndex | SupportsFloat | SupportsIndex | str = 2) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']#

Returns the norm of an image instance, channel-wise.

Parameters:

order – Order of the norm. Use a number (e.g., 1 or 2) or ‘inf’. The default is the L2 norm.

Returns:

Norm values per channel returned as a numpy array.

numpy()#

Convenience method for reading a SharedImageSet as original values, with shift and scale already applied.

Parameters:

self – instance of a SharedImageSet

Returns:

numpy.ndarray

prod(self: SharedImageSet) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']#

Return a list of channel-wise production of image elements.

Returns:

Channel-wise values returned as a numpy array.

remove(self: SharedImageSet, shared_image: SharedImage) → None#

Removes and deletes the SharedImage from the set.

selected_images(self: SharedImageSet, arg0: NonePolicy) → list[SharedImage]#
set_deformation(self: SharedImageSet, deformation: Deformation, which: SupportsInt | SupportsIndex = -1) → None#
set_dirty_mem(self: SharedImageSet) → None#
set_mask(self: SharedImageSet, mask: Mask, which: SupportsInt | SupportsIndex = -1) → None#
set_matrix(self: SharedImageSet, matrix: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]'], which: SupportsInt | SupportsIndex = -1, update_all: bool = False) → None#
set_matrix_from_world(self: SharedImageSet, matrix: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]'], which: SupportsInt | SupportsIndex, update_all: bool = False) → None#
set_matrix_to_world(self: SharedImageSet, matrix: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]'], which: SupportsInt | SupportsIndex, update_all: bool = False) → None#
set_timestamp(self: SharedImageSet, time: SupportsFloat | SupportsIndex, which: SupportsInt | SupportsIndex = -1) → None#
sum(self: SharedImageSet) → Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']#

Return a list of channel-wise sum of image elements.

Returns:

Channel-wise values returned as a numpy array.

timestamp(self: SharedImageSet, which: SupportsInt | SupportsIndex = -1) → float#
torch(device: device = None, dtype: dtype = None, same_as: Tensor = None) → Tensor#

Convert SharedImageSet or a SharedImage to a torch.Tensor.

Parameters:
  • self (DataElement | SharedImageSet | SharedImage) – Instance of SharedImageSet or SharedImage (this function bound as a method to SharedImageSet and SharedImage)

  • device (device) – Target device for the new torch.Tensor

  • dtype (dtype) – Type of the new torch.Tensor

  • same_as (Tensor) – Template tensor whose device and dtype configuration should be matched. device and dtype are still applied afterwards.

Returns:

New torch.Tensor

Return type:

Tensor

property all_same_descriptor#
Type:

bool

property all_timestamped#
Type:

bool

property focus#
Type:

int

property modality#
Type:

Modality

property properties#
Type:

Properties

property selection#
Type:

Selection

property shape#

Return a numpy compatible shape descripting the dimensions of this image.

The returned tuple has 5 entries: #frames, slices, height, width, channels

Type:

tuple[int, int, int, int, int]

property size#
Type:

int

class imfusion.data.TrackedSharedImageSet(*args, **kwargs)#

Bases: SharedImageSet

Set of images with arbitrarily sampled tracking data.

Replaces per-image matrices of SharedImageSet from TrackingSequence instances.

Construct from an existing SharedImageSet (cloned, original stays valid) and a TrackingSequence, copy another TrackedSharedImageSet (including trackings), or build an empty set and call add() / add_tracking().

Function overload documentation:

__init__(self: TrackedSharedImageSet) → None

Creates an empty TrackedSharedImageSet.

__init__(self: TrackedSharedImageSet, tracked_shared_image_set: TrackedSharedImageSet) → None

Creates a deep copy of tracked_shared_image_set, including images and tracking sequences. The original set is left unchanged.

__init__(self: TrackedSharedImageSet, shared_image_set: SharedImageSet, tracking_sequence: TrackingSequence) → None

Creates a TrackedSharedImageSet by cloning shared_image_set (images, timestamps, properties, and name) and attaching a copy of tracking_sequence. The original set is left unchanged.

For a full copy of an existing TrackedSharedImageSet (including trackings), use the single-argument copy constructor instead.

add_tracking(self: TrackedSharedImageSet, tracking_sequence: TrackingSequence) → None#

Attaches a copy of tracking_sequence to this set.

clear_trackings(self: TrackedSharedImageSet) → None#
from_shared_image_set(self: TrackedSharedImageSet, image_set: SharedImageSet) → None#

Swaps all images, timestamps, properties, and the name with image_set. After the call, this TrackedSharedImageSet holds the former contents of image_set, and image_set holds the former contents of this set (typically empty if this set was empty). Does not create or modify tracking sequences. Prefer the constructor when you need a non-destructive copy.

remove_tracking(self: TrackedSharedImageSet, num: SupportsInt | SupportsIndex = -1) → TrackingSequence#
tracking(self: TrackedSharedImageSet, num: SupportsInt | SupportsIndex = -1) → TrackingSequence#
property has_transformations#
Type:

bool

property height#
Type:

int

property num_tracking#
Type:

int

property tracking_used#
Type:

int

property trackings#

List of tracking sequences owned by this set (references, not copies).

Type:

list

property use_timestamps#
Type:

bool

property width#
Type:

int

class imfusion.data.TrackingSequence(self: TrackingSequence, name: str = '')#

Bases: Data

add(self: TrackingSequence, mat: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]']) → None#
add(self: TrackingSequence, mat: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]'], timestamp: SupportsFloat | SupportsIndex) → None
add(self: TrackingSequence, mat: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]'], timestamp: SupportsFloat | SupportsIndex, quality: SupportsFloat | SupportsIndex) → None
add(self: TrackingSequence, mat: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]'], timestamp: SupportsFloat | SupportsIndex, quality: SupportsFloat | SupportsIndex, flags: SupportsInt | SupportsIndex) → None

Function overload documentation:

add(self: TrackingSequence, mat: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]']) → None
add(self: TrackingSequence, mat: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]'], timestamp: SupportsFloat | SupportsIndex) → None
add(self: TrackingSequence, mat: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]'], timestamp: SupportsFloat | SupportsIndex, quality: SupportsFloat | SupportsIndex) → None
add(self: TrackingSequence, mat: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]'], timestamp: SupportsFloat | SupportsIndex, quality: SupportsFloat | SupportsIndex, flags: SupportsInt | SupportsIndex) → None
clear(self: TrackingSequence) → None#
flags(self: TrackingSequence, num: SupportsInt | SupportsIndex = -1) → int#
matrix(self: TrackingSequence, num_or_time: SupportsInt | SupportsIndex | SupportsFloat | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.float64], '[4, 4]']#
quality(self: TrackingSequence, num: SupportsInt | SupportsIndex) → float#
quality(self: TrackingSequence, time: SupportsFloat | SupportsIndex, check_distance: bool = True, ignore_relative: bool = False) → float

Function overload documentation:

quality(self: TrackingSequence, num: SupportsInt | SupportsIndex) → float
quality(self: TrackingSequence, time: SupportsFloat | SupportsIndex, check_distance: bool = True, ignore_relative: bool = False) → float
raw_matrix(self: TrackingSequence, num: SupportsInt | SupportsIndex) → Annotated[numpy.typing.NDArray[numpy.float64], '[4, 4]']#
remove(self: TrackingSequence, pos: SupportsInt | SupportsIndex, count: SupportsInt | SupportsIndex = 1) → None#
set_raw_matrix(self: TrackingSequence, idx: SupportsInt | SupportsIndex, value: Annotated[numpy.typing.ArrayLike, numpy.float64, '[4, 4]']) → None#
set_timestamp(self: TrackingSequence, idx: SupportsInt | SupportsIndex, value: SupportsFloat | SupportsIndex) → None#
shift_timestamps(self: TrackingSequence, shift: SupportsFloat | SupportsIndex) → None#
timestamp(self: TrackingSequence, num: SupportsInt | SupportsIndex = -1) → float#
property calibration#
Type:

Annotated[numpy.typing.NDArray[numpy.float64], ”[4, 4]”]

property center#
Type:

Annotated[numpy.typing.NDArray[numpy.float64], ”[3, 1]”]

property filename#
Type:

str

property filter_mode#
Type:

bool

property filter_size#
Type:

bool

property has_timestamps#
Type:

bool

property instrument_id#
Type:

str

property instrument_model#
Type:

str

property instrument_name#
Type:

str

property invert#
Type:

bool

property median_time_step#
Type:

float

property registration#
Type:

Annotated[numpy.typing.NDArray[numpy.float64], ”[4, 4]”]

property relative_to_first#
Type:

bool

property relative_tracking#
Type:

TrackingSequence

property size#
Type:

int

property temporal_offset#
Type:

float

property tracker_id#
Type:

TrackerID