Black Slice Replacement
SkillDev toolsDetect all-black DICOM/MRI slices (mean==0) and replace them by randomly sampling a non-black slice from the same series
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Black Slice Replacement skill
What this skill tells your AI
The instructions your AI receives, as published by wenmin-wu/ds-skills in skills/cv/black-slice-replacement/SKILL.md and read by ahel’s review.
Overview
Medical imaging volumes sometimes contain entirely black slices due to scanner artifacts, corrupt files, or padding. Feeding black slices into a model wastes capacity and can degrade training. Detecting slices with mean == 0 and replacing them with a randomly sampled non-black slice from the same series maintains the expected input shape while providing meaningful pixel data.
Quick Start
import random
import numpy as np
def load_slice_with_fallback(path, all_paths, read_fn, max_retries=100):
"""Load a DICOM slice; if all-black, replace with random non-black slice."""
image = read_fn(path)
retries = 0
while image.mean() == 0 and retries < max_retries:
image = read_fn(random.choice(all_paths))
retries += 1
return image
def load_volume_safe(file_paths, read_fn):
"""Load volume with black-slice replacement."""
slices = []
for p in file_paths:
slices.append(load_slice_with_fallback(p, file_paths, read_fn))
return np.stack(slices)
Workflow
- Load each slice from the series
- Check if
image.mean() == 0(all-black) - If black, randomly sample another slice from the same series
- Retry up to N times to avoid infinite loops on fully corrupt volumes
- Stack non-black slices into the output volume
Key Decisions
- Detection threshold:
mean == 0catches fully black; usemean < epsilonfor near-black - Replacement strategy: random sampling is simple; nearest non-black slice preserves spatial context better
- Max retries: cap at 100 to handle volumes where most slices are black
- vs zero-pad: replacement provides real texture; zero-pad is cleaner but less informative
References
Signals
- GitHub stars
- 60
- Forks
- 4
- Last commit
- Apr 2026
Advanced
- Catalog kind
- skill
- Gateway key
cv-black-slice-replacement- Source
- github.com/wenmin-wu/ds-skills