classDiagram direction LR class ImageItem { +ndarray image +Mapping metadata } class FilterResult { +ndarray image +Mapping metadata } class SpatialLayout { +int dimension +tuple spatial_axes +tuple singleton_axes +int channel_axis } class Capabilities { +frozenset spatial_dimensions +str accepted_dtypes +str input_range +str output_dtype +bool preserves_shape +bool supports_channels } class ImageFilter { <> +apply(image, metadata) FilterResult +apply_batch(items) list~FilterResult~ } class NumericFilter { <> } ImageFilter <|-- NumericFilter ImageFilter ..> ImageItem : consumes in batches ImageFilter ..> FilterResult : returns ImageFilter ..> Capabilities : declares NumericFilter ..> SpatialLayout : validates and computes