phenotypic.prefab.HeavyRoundPeaksPipeline#

class phenotypic.prefab.HeavyRoundPeaksPipeline(bm3d_sigma: float = 0.02, bm3d_block_size: int = 8, bm3d_stage_arg: Literal['all_stages', 'hard_thresholding'] = 'all_stages', bm3d_clip: bool = True, clahe_kernel_size: int | None = None, clahe_clip_limit: float = 0.01, median_mode: Literal['nearest', 'reflect', 'constant', 'mirror', 'wrap'] = 'nearest', median_shape: Literal['disk', 'square', 'diamond'] = 'diamond', median_radius: int = 5, median_cval: float = 0.0, detector_thresh_method: Literal['otsu', 'mean', 'local', 'triangle', 'minimum', 'isodata', 'li'] = 'otsu', detector_subtract_background: bool = True, detector_remove_noise: bool = True, detector_footprint_width: int = 6, detector_noise_radius: int = 1, detector_smoothing_sigma: float = 2.0, detector_min_peak_distance: int | None = None, detector_peak_prominence: float | None = None, detector_edge_refinement: bool = True, detector_selection_mode: Literal['dominant', 'centered', 'regularized'] = 'dominant', detector_split_merged: bool = True, grid_aligner_axis: int = 0, grid_aligner_mode: str = 'edge', mask_opener_footprint: Literal['auto', 'disk', 'square', 'diamond'] | ndarray | None = 'auto', mask_opener_width: int = 5, mask_opener_n_iter: int = 1, border_remover_size: int | float = 1, small_object_min_size: int = 50, mask_fill_structure: ndarray | None = None, mask_fill_origin: int = 0, texture_scale: int | list[int] = 5, texture_quant_lvl: Literal[8, 16, 32, 64] = 32, texture_enhance: bool = False, texture_warn: bool = False, color_white_chroma_max: float = 4.0, color_chroma_min: float = 8.0, color_include_XYZ: bool = False, benchmark: bool = False, verbose: bool = False)[source]

Bases: PrefabPipeline

Detect and measure round colonies using peak detection with full refinement.

An extended version of RoundPeaksPipeline that adds BM3D denoising, CLAHE contrast enhancement, morphological refinement, grid alignment, and a second detection pass for improved accuracy on challenging plates.

Steps:
  1. BM3DDenoiser — high-quality denoising

  2. CLAHE — boost local contrast

  3. MedianFilter — remove residual speckle

  4. RoundPeaksDetector — first detection pass

  5. MaskOpener, BorderObjectRemover, SmallObjectRemover, MaskFill — cleanup

  6. GridOversizedObjectRemover, ReduceMultipleGridObjects — grid refinement

  7. GridAligner — straighten the grid

  8. RoundPeaksDetector — second detection pass after alignment

  9. BorderObjectRemover, SmallObjectRemover, MaskFill — final cleanup

  10. ReduceMultipleGridObjects — final grid refinement

Measurements: MeasureShape, MeasureColor, MeasureIntensity, MeasureTexture.

Best For:
  • Round colonies on grid plates that need thorough refinement.

  • Noisy or low-contrast plates where RoundPeaksPipeline produces too many artifacts.

  • Plates with slight rotation that benefits from grid alignment between detection passes.

Consider Also:

See also

Tutorial 8: Using Prefab Pipelines for a visual comparison of prefab pipelines.

Methods

__init__

Represents an image processing pipeline for analyzing microbe colonies on solid media agar.

apply

The class provides an interface to process and apply a series of operations on an Image.

apply_and_measure

Applies processing to the given image and measures the results.

apply_napari

Apply the pipeline and progressively add layers to a napari viewer.

apply_with_intermediates

Apply the pipeline and capture a snapshot of the image after each operation.

benchmark_results

Return execution times and memory usage for operations and measurements.

from_json

Deserialize a PrefabPipeline from JSON.

get_meas

Get a copy of the measurements dictionary.

get_ops

Get a copy of the operations dictionary.

measure

Measures properties of a given image and optionally includes metadata.

set_meas

Sets the measurements to be used for further computation.

set_ops

Sets the operations to be performed.

set_post

Set the post-measurement transforms.

to_json

Serialize the pipeline configuration to JSON format.

widget

Return (and optionally display) the root widget.

Attributes

desc

Get pipeline description.

Parameters:
  • bm3d_sigma (float)

  • bm3d_block_size (int)

  • bm3d_stage_arg (Literal['all_stages', 'hard_thresholding'])

  • bm3d_clip (bool)

  • clahe_kernel_size (int | None)

  • clahe_clip_limit (float)

  • median_mode (Literal['nearest', 'reflect', 'constant', 'mirror', 'wrap'])

  • median_shape (Literal['disk', 'square', 'diamond'])

  • median_radius (int)

  • median_cval (float)

  • detector_thresh_method (Literal['otsu', 'mean', 'local', 'triangle', 'minimum', 'isodata', 'li'])

  • detector_subtract_background (bool)

  • detector_remove_noise (bool)

  • detector_footprint_width (int)

  • detector_noise_radius (int)

  • detector_smoothing_sigma (float)

  • detector_min_peak_distance (int | None)

  • detector_peak_prominence (float | None)

  • detector_edge_refinement (bool)

  • detector_selection_mode (Literal['dominant', 'centered', 'regularized'])

  • detector_split_merged (bool)

  • grid_aligner_axis (int)

  • grid_aligner_mode (str)

  • mask_opener_footprint (Literal['auto', 'disk', 'square', 'diamond'] | ~numpy.ndarray | None)

  • mask_opener_width (int)

  • mask_opener_n_iter (int)

  • border_remover_size (int | float)

  • small_object_min_size (int)

  • mask_fill_structure (ndarray | None)

  • mask_fill_origin (int)

  • texture_scale (int | list[int])

  • texture_quant_lvl (Literal[8, 16, 32, 64])

  • texture_enhance (bool)

  • texture_warn (bool)

  • color_white_chroma_max (float)

  • color_chroma_min (float)

  • color_include_XYZ (bool)

  • benchmark (bool)

  • verbose (bool)

__init__(bm3d_sigma: float = 0.02, bm3d_block_size: int = 8, bm3d_stage_arg: Literal['all_stages', 'hard_thresholding'] = 'all_stages', bm3d_clip: bool = True, clahe_kernel_size: int | None = None, clahe_clip_limit: float = 0.01, median_mode: Literal['nearest', 'reflect', 'constant', 'mirror', 'wrap'] = 'nearest', median_shape: Literal['disk', 'square', 'diamond'] = 'diamond', median_radius: int = 5, median_cval: float = 0.0, detector_thresh_method: Literal['otsu', 'mean', 'local', 'triangle', 'minimum', 'isodata', 'li'] = 'otsu', detector_subtract_background: bool = True, detector_remove_noise: bool = True, detector_footprint_width: int = 6, detector_noise_radius: int = 1, detector_smoothing_sigma: float = 2.0, detector_min_peak_distance: int | None = None, detector_peak_prominence: float | None = None, detector_edge_refinement: bool = True, detector_selection_mode: Literal['dominant', 'centered', 'regularized'] = 'dominant', detector_split_merged: bool = True, grid_aligner_axis: int = 0, grid_aligner_mode: str = 'edge', mask_opener_footprint: Literal['auto', 'disk', 'square', 'diamond'] | ndarray | None = 'auto', mask_opener_width: int = 5, mask_opener_n_iter: int = 1, border_remover_size: int | float = 1, small_object_min_size: int = 50, mask_fill_structure: ndarray | None = None, mask_fill_origin: int = 0, texture_scale: int | list[int] = 5, texture_quant_lvl: Literal[8, 16, 32, 64] = 32, texture_enhance: bool = False, texture_warn: bool = False, color_white_chroma_max: float = 4.0, color_chroma_min: float = 8.0, color_include_XYZ: bool = False, benchmark: bool = False, verbose: bool = False) None[source]

Represents an image processing pipeline for analyzing microbe colonies on solid media agar. The pipeline includes preprocessing, detection, morphological refinement, and measurement steps.

Parameters:
  • bm3d_sigma (float)

  • bm3d_block_size (int)

  • bm3d_stage_arg (Literal['all_stages', 'hard_thresholding'])

  • bm3d_clip (bool)

  • clahe_kernel_size (int | None)

  • clahe_clip_limit (float)

  • median_mode (Literal['nearest', 'reflect', 'constant', 'mirror', 'wrap'])

  • median_shape (Literal['disk', 'square', 'diamond'])

  • median_radius (int)

  • median_cval (float)

  • detector_thresh_method (Literal['otsu', 'mean', 'local', 'triangle', 'minimum', 'isodata', 'li'])

  • detector_subtract_background (bool)

  • detector_remove_noise (bool)

  • detector_footprint_width (int)

  • detector_noise_radius (int)

  • detector_smoothing_sigma (float)

  • detector_min_peak_distance (int | None)

  • detector_peak_prominence (float | None)

  • detector_edge_refinement (bool)

  • detector_selection_mode (Literal['dominant', 'centered', 'regularized'])

  • detector_split_merged (bool)

  • grid_aligner_axis (int)

  • grid_aligner_mode (str)

  • mask_opener_footprint (Literal['auto', 'disk', 'square', 'diamond'] | ~numpy.ndarray | None)

  • mask_opener_width (int)

  • mask_opener_n_iter (int)

  • border_remover_size (int | float)

  • small_object_min_size (int)

  • mask_fill_structure (ndarray | None)

  • mask_fill_origin (int)

  • texture_scale (int | list[int])

  • texture_quant_lvl (Literal[8, 16, 32, 64])

  • texture_enhance (bool)

  • texture_warn (bool)

  • color_white_chroma_max (float)

  • color_chroma_min (float)

  • color_include_XYZ (bool)

  • benchmark (bool)

  • verbose (bool)

Return type:

None

bm3d_sigma

Controls the degree of noise reduction during BM3D denoising. Lower values retain more fine details, which might preserve subtle colony textures. Higher values remove more noise but may blur colony edges, affecting detection accuracy.

bm3d_block_size

Block size for BM3D denoising. Larger blocks capture more spatial context for noise estimation but increase computation time.

bm3d_stage_arg

Specifies the stage of BM3D denoising. “all_stages” applies more comprehensive denoising, potentially enhancing signal uniformity but may result in detail loss. “hard_thresholding” retains more high-frequency details but may leave more background noise intact.

bm3d_clip

Whether to clip denoised values to the [0, 1] range. Disabling may preserve subtle intensity variations but can produce out-of-range values.

clahe_kernel_size

Determines the size of the kernel used for local contrast enhancement via CLAHE. Larger sizes improve contrast over broader areas, but may over-amplify large background variations. Smaller sizes enhance localized details but may introduce noise.

clahe_clip_limit

Contrast clipping limit for CLAHE. Lower values produce more subtle enhancement; higher values amplify local contrast more aggressively, which can over-enhance noise.

median_mode

Boundary handling mode for median filtering. Controls how pixel values are extrapolated at image edges.

median_shape

Defines the morphological shape (“disk”, “square”, “diamond”) used for median filtering. The choice impacts how texture and artifacts are smoothed. For instance, “disk” may preserve radial features, whereas “square” provides edge-focused filtering.

median_radius

Dictates the width for median filtering. Smaller values enhance fine textural differences, whereas larger radii smooth broader regions, potentially affecting the precise detection of small colonies.

median_cval

Constant value used to pad image borders when median_mode is “constant”.

detector_thresh_method

Specifies the thresholding method for binary segmentation. “otsu” (default) applies global thresholding, “mean” uses mean-based threshold, “local” adapts to background variations, “li” uses Li’s iterative minimum cross-entropy method, and “triangle”, “minimum”, “isodata” offer alternative thresholding strategies.

detector_subtract_background

Toggles white tophat background subtraction before thresholding. Enabling this helps standardize varying lighting or agar density but may also obscure genuine gradients or subtle ring colonies.

detector_remove_noise

Sets whether morphological opening is applied to remove small noise artifacts. True ensures a cleaner output but may falsely discard tiny colonies. False retains all details, which can increase false-positive noise levels.

detector_footprint_width

Width in pixels for the morphological footprint used in background subtraction. Larger values remove larger-scale background variations but may erode colony edges.

detector_noise_radius

Radius in pixels for the morphological opening used to remove small noise artifacts. Larger values remove larger noise but may erode fine colony features.

detector_smoothing_sigma

Standard deviation for Gaussian smoothing of intensity profiles before peak detection. Higher values increase robustness to noise but may merge nearby peaks. Set to 0 to disable smoothing.

detector_min_peak_distance

Minimum distance between detected peaks in pixels. If None, automatically estimated from grid dimensions. Prevents detection of spurious peaks too close together.

detector_peak_prominence

Minimum prominence of peaks for detection. If None, automatically estimated from signal statistics. Higher values are more selective.

detector_edge_refinement

Whether to refine grid edges using local intensity profiles. Improves accuracy but adds computational cost.

detector_selection_mode

Strategy for selecting the primary grid when multiple candidate grids are found. “dominant” selects the grid with the most colonies, “centered” prefers grids near the image center, “regularized” balances colony count with spatial regularity.

detector_split_merged

Whether to attempt splitting merged colonies that appear as single large objects. Improves accuracy for dense plates where colonies grow together but may over-segment irregular colony morphologies.

grid_aligner_axis

Axis along which to align the grid (0 for rows, 1 for columns).

grid_aligner_mode

Padding mode used when rotating the image for alignment.

mask_opener_footprint

Describes the morphological shape for noise removal or mask refinement. “auto” lets the system adapt, named shapes (“disk”, “square”, “diamond”) use a standard footprint, an ndarray specifies a custom structuring element, and None disables opening.

mask_opener_width

Width of the structuring element when using a named shape for mask opening. Larger values remove more noise but may erode small colonies.

mask_opener_n_iter

Number of iterations for the morphological opening. More iterations apply stronger smoothing to the mask.

border_remover_size

Specifies the width of the border region to remove. Larger sizes eliminate edge artifacts and colonies cropped by image edges but may discard valid colonies near borders.

small_object_min_size

Specifies the size threshold for considering objects as colonies. Increasing this parameter reduces false detection of small artifacts but risks ignoring small colonies.

mask_fill_structure

Binary structuring element for hole filling in masks. Larger or more connected structures fill bigger holes. None uses the default cross-shaped element.

mask_fill_origin

Origin offset for the structuring element used in hole filling.

texture_scale

Defines the spatial scale(s) at which texture features are measured. Larger scales focus on macro-textures; smaller scales enhance granular detail assessment. Can be a list to compute features at multiple scales simultaneously.

texture_quant_lvl

Number of gray levels for quantizing intensity values in texture analysis. Higher values capture finer intensity distinctions but increase computation time and may be sensitive to noise.

texture_enhance

Whether to apply contrast enhancement to the texture input before computing GLCM features. May improve texture discrimination for low-contrast colonies.

texture_warn

Boolean that enables warnings when texture measurements may not be reliable. Use this to flag potential inconsistencies in the captured texture data or image quality issues.

color_white_chroma_max

Maximum chroma value for classifying a colony as white. Colonies with chroma below this threshold are labeled as white/achromatic.

color_chroma_min

Minimum chroma value for assigning a chromatic hue. Colonies with chroma below this value receive a neutral color classification.

color_include_XYZ

Whether to include CIE XYZ color space measurements in addition to the standard Lab and descriptive color features.

benchmark

Enables time benchmarking for each pipeline step. Useful for performance debugging but adds overhead to the computation.

verbose

Specifies whether to output detailed process information during execution. True provides step-by-step logs, which are useful for debugging, while False ensures silent execution suitable for batch processing.

__del__()

Automatically stop tracemalloc when the object is deleted.

__getstate__()

Prepare the object for pickling by disposing of any widgets.

This ensures that UI components (which may contain unpickleable objects like input functions or thread locks) are cleaned up before serialization.

Note

This method modifies the object state by calling dispose_widgets(). Any active widgets will be detached from the object.

__str__() str

Return a JSON-formatted string representation of the pipeline.

The generated JSON string provides a structured representation of the object’s current state, including its operations and measurements. This output can be used for logging, debugging, or to recreate the object’s configuration in another context.

Returns:

A JSON-formatted string that encodes the object’s current configuration in a human-readable manner. This includes the phenotypic version, pipeline name, description, and the lists of operations and measurements.

Return type:

str

apply(image: Image, inplace: bool = False, reset: bool | None = None) GridImage | Image

The class provides an interface to process and apply a series of operations on an Image. The operations are maintained in a queue and executed sequentially when applied to the given Image.

Parameters:
  • image (Image) – The arr Image to be processed. The type Image refers to an instance of the Image object to which transformations are applied.

  • inplace (bool, optional) – A flag indicating whether to apply the transformations directly on the provided Image (True) or create a copy of the Image before performing transformations (False). Defaults to False.

  • reset (bool, optional) – Whether to reset the image before applying the pipeline. If None (default), uses the pipeline’s reset setting from __init__. If explicitly set to True or False, overrides the pipeline setting.

Return type:

Union[GridImage, Image]

apply_and_measure(image: Image, inplace: bool = False, reset: bool | None = None, include_metadata: bool = True) pd.DataFrame

Applies processing to the given image and measures the results.

This function first applies a processing method to the supplied image, adjusting it based on the given parameters. After processing, the resulting image is measured, and a DataFrame containing the measurement data is returned.

Parameters:
  • image (Image) – The image to process and measure.

  • inplace (bool) – Whether to modify the original image directly or work on a copy. Default is False.

  • reset (bool, optional) – Whether to reset any previous processing on the image before applying the current method. If None (default), uses the pipeline’s reset setting. If explicitly set, overrides the pipeline setting.

  • include_metadata (bool) – Whether to include metadata in the measurement results. Default is True.

Returns:

A DataFrame containing measurement data for the processed image.

Return type:

pd.DataFrame

apply_napari(image: Image, inplace: bool = False, reset: bool | None = None, viewer: napari.Viewer | None = None) NapariPipelineResult

Apply the pipeline and progressively add layers to a napari viewer.

Creates (or reuses) a napari viewer and adds the original image layers as a baseline, then adds the modified layer after each operation completes. Layer names follow the pattern {step:02d}_{OperationName}_{accessor}.

Parameters:
  • image (Image) – The input image to process.

  • inplace (bool) – If True the image is modified in place; otherwise a copy is made first. Defaults to False.

  • reset (bool | None) – Whether to reset the image before applying operations. None (default) uses the pipeline-level setting.

  • viewer (napari.Viewer | None) – An existing napari viewer to add layers to. If None (default), a new viewer is created.

Returns:

Named tuple with the final image and the napari viewer reference.

Return type:

NapariPipelineResult

Raises:

ImportError – If napari is not installed.

apply_with_intermediates(image: Image, inplace: bool = False, reset: bool | None = None, output_dir: str | Path | None = None) IntermediateResult

Apply the pipeline and capture a snapshot of the image after each operation.

Behaves identically to apply() (respecting inplace, reset, benchmark timing, and verbose/tqdm progress) but additionally records the image state after every operation completes.

Parameters:
  • image (Image) – The input image to process.

  • inplace (bool) – If True the image is modified in place; otherwise a copy is made first. Defaults to False.

  • reset (Optional[bool]) – Whether to reset the image before applying operations. None (default) uses the pipeline-level setting.

  • output_dir (Optional[Union[str, Path]]) – Optional directory path. When provided, each intermediate image is persisted to an HDF5 file inside this directory (created automatically) and the corresponding dict value is set to None to conserve memory. When None, intermediates are kept in memory as Image copies.

Returns:

A named tuple containing the final image and a dictionary mapping operation names to intermediate snapshots (or None when output_dir is used).

Return type:

IntermediateResult

benchmark_results() pandas.DataFrame

Return execution times and memory usage for operations and measurements.

This method should be called after applying the pipeline on an image to get the execution times and memory consumption of the different processes.

When an operation is itself an ImagePipelineCore (nested pipeline), its sub-operations are expanded as indented sub-rows beneath the parent entry with names like "ParentOp > ChildOp".

Returns:

A DataFrame with columns Process Type,

Process Name, Execution Time (s), Memory Delta (MB), and RSS After (MB).

Return type:

pd.DataFrame

property desc: str

Get pipeline description. Returns class docstring if no description set.

classmethod from_json(json_data: str | Path | dict, benchmark: bool = False, verbose: bool = False) PrefabPipeline

Deserialize a PrefabPipeline from JSON.

PrefabPipeline subclasses build their ops/meas inside __init__, so the base from_json (which passes ops= directly) would conflict. This override deserializes via ImagePipeline and re-tags the instance as the correct PrefabPipeline subclass.

Parameters:
  • json_data (str | Path | dict) – A JSON string, path to a JSON file, or a pre-parsed dict.

  • benchmark (bool) – Whether to enable benchmarking for the pipeline.

  • verbose (bool) – Whether to enable verbose output.

Returns:

A PrefabPipeline (or subclass) instance with the loaded configuration.

Return type:

PrefabPipeline

get_meas() Dict[str, MeasureFeatures]

Get a copy of the measurements dictionary.

Returns a shallow copy to prevent accidental mutation of internal state.

Returns:

Dictionary mapping measurement names to

MeasureFeatures instances.

Return type:

Dict[str, MeasureFeatures]

get_ops() Dict[str, ImageOperation]

Get a copy of the operations dictionary.

Returns a shallow copy to prevent accidental mutation of internal state.

Returns:

Dictionary mapping operation names to

ImageOperation instances.

Return type:

Dict[str, ImageOperation]

measure(image: Image, include_metadata=True) pd.DataFrame

Measures properties of a given image and optionally includes metadata. The method performs measurements using a set of predefined measurement operations. If benchmarking is enabled, the execution time of each measurement is recorded. When verbose mode is active, detailed logging of the measurement process is displayed. A progress bar is used to track progress if the tqdm library is available.

Parameters:
  • image (Image) – The image object for which measurements are performed. It must support the info method and optionally a grid or objects attribute.

  • include_metadata (bool, optional) – Indicates whether metadata should be included in the measurements. Defaults to True.

Returns:

A DataFrame containing the results of all performed measurements combined

on the same index.

Return type:

pd.DataFrame

Raises:

Exception – An exception is raised if a measurement operation fails while being applied to the image.

set_meas(measurements: List[MeasureFeatures] | Dict[str, MeasureFeatures])

Sets the measurements to be used for further computation. The input can be either a list of MeasureFeatures objects or a dictionary with string keys and MeasureFeatures objects as values.

The method processes the given input to construct a dictionary mapping measurement names to MeasureFeatures instances. If a list is passed, unique class names of the MeasureFeatures instances in the list are used as keys.

Parameters:

measurements (List[MeasureFeatures] | Dict[str, MeasureFeatures]) – A collection of measurement features either as a list of MeasureFeatures objects, where class names are used as keys for dictionary creation, or as a dictionary where keys are predefined strings and values are MeasureFeatures objects.

Raises:

TypeError – If the measurements argument is neither a list nor a dictionary.

set_ops(ops: List[ImageOperation | ImagePipeline] | Dict[str, ImageOperation | ImagePipeline])

Sets the operations to be performed. The operations can be passed as either a list of ImageOperation or ImagePipeline instances or a dictionary mapping operation names to ImageOperation or ImagePipeline instances. This method ensures that each operation in the list has a unique name. Raises a TypeError if the input is neither a list nor a dictionary.

Parameters:

ops (List[ImageOperation | ImagePipeline] | Dict[str, ImageOperation | ImagePipeline]) – A list of ImageOperation or ImagePipeline objects, or a dictionary where keys are operation names and values are ImageOperation or ImagePipeline objects.

Raises:

TypeError – If the input is not a list or a dictionary.

set_post(post: List[PostMeasurement] | Dict[str, PostMeasurement])

Set the post-measurement transforms.

Parameters:

post (List[PostMeasurement] | Dict[str, PostMeasurement]) – A list or dictionary of PostMeasurement objects. If a list, class names are used as keys.

Raises:

TypeError – If post is neither a list nor a dictionary.

to_json(filepath: str | Path | None = None) str

Serialize the pipeline configuration to JSON format.

This method captures the pipeline’s operations and measurements. It excludes internal state (attributes starting with ‘_’) and pandas DataFrames to keep the serialization clean and focused on reproducible configuration.

Parameters:

filepath (str | Path | None) – Optional path to save the JSON. If None, returns JSON string. Can be a string or Path object.

Returns:

JSON string representation of the pipeline configuration.

Return type:

str

Example

Serialize a pipeline to JSON format:

>>> from phenotypic import ImagePipeline
>>> from phenotypic.detect import OtsuDetector
>>> from phenotypic.measure import MeasureShape
>>> pipe = ImagePipeline(pipe_cfgs=[OtsuDetector()], meas=[MeasureShape()])
>>> json_str = pipe.to_json()
>>> pipe.to_json('my_pipeline.json')  # Save to file
widget(image: Image | None = None, show: bool = False) Widget

Return (and optionally display) the root widget.

Parameters:
  • image (Image | None) – Optional image to visualize. If provided, visualization controls will be added to the widget.

  • show (bool) – Whether to display the widget immediately. Defaults to False.

Returns:

The root widget.

Return type:

ipywidgets.Widget

Raises:

ImportError – If ipywidgets or IPython are not installed.