ContourRenderer
Smooth contour rendering using marching squares.
Provides sub-pixel accurate contour extraction and visualization using skimage.measure.find_contours.
Classes
- class ContourRenderer
Render segmentation contours with multiple visualization modes.
Supports two outline modes: - Smooth: Marching squares (skimage.measure.find_contours) for sub-pixel
accurate contour extraction. Shows the interpolated boundary.
Pixel: Morphological dilation-erosion for jagged outlines that show the actual pixel boundaries of the segmentation.
Both modes have their uses: - Smooth: Better for seeing true boundary shape, comparing curves - Pixel: Shows actual voxel boundaries, important for understanding
what the algorithm actually segmented at pixel level
Methods:
- __init__()
Initialize renderer.
- get_morphological_outline()
Get pixel-level outline using morphological operations.
- find_contours()
Find smooth sub-pixel contours using marching squares.
- draw_contours()
Draw smooth contour polylines on RGB image.
- create_comparison_image()
Create comparison image with both segmentations as outlines.
- create_error_image()
Create error analysis image with TP/FP/FN coloring.
- create_combined_image()
Create combined visualization with both contours and error regions.
- clear_cache()
Clear the contour cache.
Functions
- get_morphological_outline()
Get pixel-level outline using morphological operations.
Creates a jagged outline that shows the actual pixel boundaries of the segmentation (dilation - erosion).
- Args:
mask: 2D binary mask. iterations: Thickness of outline in pixels.
- Returns:
Binary mask of outline pixels.
- find_contours()
Find smooth sub-pixel contours using marching squares.
- Args:
mask: 2D binary mask (any dtype, will be converted to bool).
- Returns:
List of contour arrays, each with shape (N, 2) in (row, col) format.
- draw_contours()
Draw smooth contour polylines on RGB image.
- Args:
rgb: RGB image (H, W, 3) as float64 or uint8. contours: List of contour arrays from find_contours. color: RGB color tuple (0-255). thickness: Line thickness in pixels.
- Returns:
RGB image with contours drawn.
- create_comparison_image()
Create comparison image with both segmentations as outlines.
- Args:
image_slice: 2D grayscale image (uint8) trial_slice: 2D binary trial segmentation mask gold_slice: 2D binary gold standard mask trial_color: RGB color for trial contour (default: green) gold_color: RGB color for gold contour (default: magenta) line_thickness: Contour line thickness in pixels mode: Outline mode - “smooth” (marching squares) or “pixel” (morphological)
- Returns:
RGB image as uint8 array (H, W, 3)
- create_error_image()
Create error analysis image with TP/FP/FN coloring.
Color coding (assuming gold standard is truth): - Green: True Positive (both agree) - Red: False Positive (trial only - over-segmentation) - Blue: False Negative (gold only - under-segmentation)
- Args:
image_slice: 2D grayscale image (uint8) trial_slice: 2D binary trial segmentation mask gold_slice: 2D binary gold standard mask tp_color: RGB for true positives (agreement) fp_color: RGB for false positives (over-segmentation) fn_color: RGB for false negatives (under-segmentation) alpha: Opacity of overlay
- Returns:
RGB image as uint8 array (H, W, 3)
- create_combined_image()
Create combined visualization with both contours and error regions.
- Args:
image_slice: 2D grayscale image (uint8) trial_slice: 2D binary trial segmentation mask gold_slice: 2D binary gold standard mask show_contours: Whether to draw smooth contours show_error_regions: Whether to show TP/FP/FN regions error_alpha: Opacity of error regions
- Returns:
RGB image as uint8 array (H, W, 3)
- clear_cache()
Clear the contour cache.