Module i2pp.core.import_image

Import image data and convert it into 3D data.

Functions

def determine_image_format(folder_path: pathlib.Path) ‑> ImageFormat
Expand source code
def determine_image_format(folder_path: Path) -> ImageFormat:
    """Verifies the existence and readability of image data and determines the
    format type.

    This function checks whether the provided folder exists, contains
    readable image data, and determines the format of the image data (either
    DICOM or PNG). If the directory is empty, contains both DICOM and PNG
    files, or is otherwise invalid, an appropriate error is raised.

    Arguments:
        folder_path (Path): Path to the image-data folder.

    Raises:
        RuntimeError: If the specified path does not exist.
        RuntimeError: If the path has no readable data.
        RuntimeError: If the path contains more than one type of readable data
            (e.g. PNG and DICOM).

    Returns:
        ImageFormat: The format of the image data.
    """
    if not Path(folder_path).is_dir():
        raise RuntimeError(
            f"Path {folder_path} to the image data cannot be found!"
        )

    supported_formats = {
        fmt: any(folder_path.glob(f"*{fmt.value}")) for fmt in ImageFormat
    }

    detected_formats = {
        fmt for fmt, exists in supported_formats.items() if exists
    }

    if len(detected_formats) == 1:
        return detected_formats.pop()

    if not detected_formats:
        raise RuntimeError(
            "Image data folder is empty or has no readable data! "
            "Please make sure the input file has the correct format "
            f"({', '.join(fmt.value for fmt in ImageFormat)})."
        )

    raise RuntimeError(
        "Image data folder contains multiple format types! "
        "Img2physiprop cannot be executed!"
    )

Verifies the existence and readability of image data and determines the format type.

This function checks whether the provided folder exists, contains readable image data, and determines the format of the image data (either DICOM or PNG). If the directory is empty, contains both DICOM and PNG files, or is otherwise invalid, an appropriate error is raised.

Arguments

folder_path (Path): Path to the image-data folder.

Raises

RuntimeError
If the specified path does not exist.
RuntimeError
If the path has no readable data.
RuntimeError
If the path contains more than one type of readable data (e.g. PNG and DICOM).

Returns

ImageFormat
The format of the image data.
def verify_and_load_imagedata(folder_path: pathlib.Path,
options: dict,
bounding_box: BoundingBox) ‑> ImageData
Expand source code
def verify_and_load_imagedata(
    folder_path: Path, options: dict, bounding_box: BoundingBox
) -> ImageData:
    """Validates input data format and loads 3D image data.

    This function checks the specified input folder for valid image files,
    determines the format (DICOM or PNG), and loads the data using the
    appropriate image reader. The image is then converted into a structured
    format containing pixel data and metadata. Additionally, the function sets
    the pixel intensity range based on the pixel type.

    Arguments:
        folder_path (Path): Path to the image-data folder.
        options (dict): Options for loading image data (e.g., metadata
            settings).
        bounding_box (BoundingBox): The spatial region defining the area of
            interest for image processing.

    Returns:
        ImageData: An object containing structured pixel data, metadata, and
            spatial information.

    Raises:
        RuntimeError: If the input data folder is invalid or contains
            unsupported data formats.
    """
    _detect_and_append_suffixes(folder_path)

    image_format = determine_image_format(folder_path)

    image_reader = image_format.get_reader()(options, bounding_box)

    raw_image = image_reader.load_image(folder_path)

    image_data = image_reader.convert_to_image_data(raw_image)

    if image_data.pixel_type == PixelValueType.MRT:

        image_data.pixel_range = np.array(
            [image_data.pixel_data.min(), image_data.pixel_data.max()]
        )
    else:
        image_data.pixel_range = image_data.pixel_type.pixel_range

    return image_data

Validates input data format and loads 3D image data.

This function checks the specified input folder for valid image files, determines the format (DICOM or PNG), and loads the data using the appropriate image reader. The image is then converted into a structured format containing pixel data and metadata. Additionally, the function sets the pixel intensity range based on the pixel type.

Arguments

folder_path (Path): Path to the image-data folder. options (dict): Options for loading image data (e.g., metadata settings). bounding_box (BoundingBox): The spatial region defining the area of interest for image processing.

Returns

ImageData
An object containing structured pixel data, metadata, and spatial information.

Raises

RuntimeError
If the input data folder is invalid or contains unsupported data formats.