A Python tool for automated brain region extraction from CT/MR images in NIfTI format. This tool processes medical imaging data to generate binary masks of brain regions, suitable for neuroimaging analysis and preprocessing pipelines.
- ✅ Support for both CT and MR imaging modalities
- ✅ Automatic thresholding and brain region extraction
- ✅ Morphological processing for noise removal and hole filling
- ✅ 3D connected component analysis
- ✅ Preservation of original image geometry
- ✅ Standard NIfTI format output
SimpleITK
numpy
scipy
scikit-image
pip install SimpleITK numpy scipy scikit-image
# Process CT images
python brain_extraction.py input_image.nii.gz output_mask.nii.gz --modality CT
# Process MR images
python brain_extraction.py input_image.nii.gz output_mask.nii.gz --modality MR
Modify the paths in the script and run directly:
if __name__ == "__main__":
input_path = "/path/to/your/input.nii"
output_path = "/path/to/your/output.nii.gz"
modality = "CT" # or "MR"
#extract_brain_region(input_path, output_path, modality)
- Read NIfTI format input images
- Analyze image statistics (value range, data type, percentiles)
- Extract voxel spacing information
CT Images:
- Brain tissue HU range (20-80 HU)
- Adaptive thresholding strategies
- Multi-threshold validation
MR Images:
- Otsu adaptive thresholding
- Slice-level threshold processing
- 2D slice-wise opening operations for noise removal
- Hole filling (particularly for ventricular regions)
- 8-connected component analysis
- Preservation of major brain components
- 6-connected 3D component analysis
- Anisotropic morphological processing
- Voxel spacing consideration
- Largest connected region extraction
- Binary mask generation (brain=1, background=0)
- Preservation of original image geometry and spatial coordinates
- Output as uint8 NIfTI files
Output files contain:
- Brain region: Pixel value = 1
- Background: Pixel value = 0
- File format: NIfTI (.nii or .nii.gz)
- Data type: np.uint8
python brain_extraction.py \
/Users/liulaolao/Desktop/R2/HeadCtSample_2022_volume_2.nii \
/Users/liulaolao/Desktop/R2/brain_mask.nii.gz \
--modality CT
After processing, the program outputs:
- Image statistics
- Processing progress
- Final brain region percentage
- Output file path
input_file: Input NIfTI file path
output_file: Output NIfTI file path
--modality: Imaging modality CT|MR, default: CT
- Brain tissue HU range: 20-80 HU
- Window Width (WW): 50
- Window Level (WL): 400
- Adaptive thresholding: Auto-adjusted based on image statistics
-
Completely Black Output
- Verify input image is valid CT/MR data
- Confirm correct modality setting
- Check image statistics output
-
Insufficient Memory
- Reduce number of simultaneously processed slices
- Use smaller structural elements
-
Long Processing Time
- Consider downsampling for large images
- Adjust morphological processing parameters
The program provides detailed processing information:
- Image dimensions and data type
- Value ranges and statistics
- Thresholding results
- Processing progress at each stage
- Final extraction statistics
brain_extraction.py # Main program file
README.md # Documentation
input_images/ # Input image directory
output_masks/ # Output mask directory
- SimpleITK: NIfTI file I/O operations
- scipy.ndimage: Morphological processing and connected component analysis
- numpy: Array operations and numerical computations
- scikit-image: Image processing algorithms
- Automatic adaptation to different image contrasts
- Consideration of medical image anisotropy
- Robust noise handling
- Preservation of brain anatomical structure integrity
- v1.0: Initial release with CT/MR brain extraction support
- v1.1: Optimized brain-specific thresholds, improved morphological processing
- Ensure input images are valid NIfTI format
- Processing time may be longer for very large images
- Recommend backing up original data before processing
- Results should be verified using medical image viewers
For issues or suggestions, please check:
- Input image format and integrity
- Dependency package version compatibility
- System memory availability
- Output directory write permissions