IBSI 2 Compliance: Convolutional Filters
Overview
The Image Biomarker Standardisation Initiative Chapter 2 (IBSI 2) focuses on standardizing convolutional image filters for radiomics. This page documents Pictologics' compliance with IBSI 2 Phase 1: technical validation using digital phantoms.
Important
Pictologics implements 3D filters and 3D radiomic features only.
The library is designed specifically for volumetric medical imaging analysis (CT, MRI, PET). 2D slice-by-slice processing is not supported as it loses critical spatial information needed for accurate radiomic feature extraction.
How to Run the Benchmarks
1. Download the Data
The IBSI 2 reference datasets (digital phantoms) are available on the IBSI GitHub repository.
- Digital Phantoms: Download the phantom NIfTI files (e.g.,
checkerboard.nii.gz,impulse_response.nii.gz) from theibsi_2_validationfolder.
Place these files in a local directory (e.g., data/ibsi2/) to run the benchmarks.
2. Run Configurations Programmatically using RadiomicsPipeline
You can run IBSI 2 filter configurations programmatically using the RadiomicsPipeline class.
from pictologics import RadiomicsPipeline
pipeline = RadiomicsPipeline()
# Define an IBSI 2 Gabor filter configuration
# (Gabor filter, orthogonal rotation invariant, 3D)
gabor_config = [
# 1. IBSI 2 Preprocessing
{"step": "resample", "params": {"new_spacing": (1.0, 1.0, 1.0), "interpolation": "cubic"}},
{"step": "round_intensities", "params": {}},
{"step": "resegment", "params": {"range_min": -1000, "range_max": 400}},
# 2. Apply Gabor Filter (Phase 1 Validation)
{"step": "filter", "params": {
"type": "gabor",
"sigma_mm": 5.0,
"lambda_mm": 4.0,
"gamma": 0.5,
"rotation_invariant": True,
"pooling": "average"
}},
# 3. Extract Intensity Features from the response map
{"step": "extract_features", "params": {"families": ["intensity"]}}
]
pipeline.add_config("ibsi2_gabor_demo", gabor_config)
# Run on an image
results = pipeline.run("path/to/phantom.nii.gz", config_names=["ibsi2_gabor_demo"])
print(results["ibsi2_gabor_demo"])
Note
The example above shows a Gabor filter configuration. This is just one example. You can configure any IBSI 2 compliant filter (Mean, LoG, Laws, Wavelet, etc.) similarly. For full specifications of filter parameters, please refer to the Image Filtering guide and the IBSI 2 Reference Manual.
Phase 1 Results
Filter Performance Overview
| Test | Filter | Phantom | Error % | Time | Memory | Status |
|---|---|---|---|---|---|---|
| 1.a.1 | Mean | checkerboard | 0.00% | 2ms | 1.0MB | ✅ PASS |
| 1.a.2 | Mean | checkerboard | 0.00% | 2ms | 1.0MB | ✅ PASS |
| 1.a.3 | Mean | checkerboard | 0.00% | 2ms | 1.0MB | ✅ PASS |
| 1.a.4 | Mean | checkerboard | 0.00% | 2ms | 1.0MB | ✅ PASS |
| 1.b.1 | Mean (2D) | impulse_response | - | - | - | ⏭ SKIP |
| 2.a | LoG | impulse_response | 0.00% | 9ms | 3.0MB | ✅ PASS |
| 2.b | LoG | checkerboard | 0.03% | 11ms | 3.0MB | ✅ PASS |
| 2.c | LoG (2D) | checkerboard | - | - | - | ⏭ SKIP |
| 3.a.1 | Laws | impulse_response | 0.00% | 2ms | 2.0MB | ✅ PASS |
| 3.a.2 | Laws | impulse_response | 0.00% | 54ms | 4.0MB | ✅ PASS |
| 3.a.3 | Laws | impulse_response | 0.00% | 54ms | 4.0MB | ✅ PASS |
| 3.b.1 | Laws | checkerboard | 0.00% | 2ms | 2.0MB | ✅ PASS |
| 3.b.2 | Laws | checkerboard | 0.00% | 50ms | 4.0MB | ✅ PASS |
| 3.b.3 | Laws | checkerboard | 0.00% | 53ms | 4.0MB | ✅ PASS |
| 3.c.1 | Laws (2D) | checkerboard | - | - | - | ⏭ SKIP |
| 3.c.2 | Laws (2D) | checkerboard | - | - | - | ⏭ SKIP |
| 3.c.3 | Laws (2D) | checkerboard | - | - | - | ⏭ SKIP |
| 4.a.1 | Gabor | impulse_response | 0.27% | 26ms | 16.5MB | ✅ PASS |
| 4.a.2 | Gabor | impulse_response | 0.14% | 394ms | 20.6MB | ✅ PASS |
| 4.b.1 | Gabor | sphere | 0.01% | 31ms | 34.8MB | ✅ PASS |
| 4.b.2 | Gabor | sphere | 0.09% | 956ms | 49.3MB | ✅ PASS |
| 5.a.1 | Daubechies 2 | impulse_response | 0.00% | 3ms | 3.0MB | ✅ PASS |
| 5.a.2 | Daubechies 2 | impulse_response | 0.00% | 68ms | 6.0MB | ✅ PASS |
| 6.a.1 | Coiflet 1 | sphere | 0.00% | 3ms | 3.0MB | ✅ PASS |
| 6.a.2 | Coiflet 1 | sphere | 0.00% | 76ms | 6.0MB | ✅ PASS |
| 7.a.1 | Haar | checkerboard | 0.00% | 114ms | 6.0MB | ✅ PASS |
| 7.a.2 | Haar | checkerboard | 0.00% | 117ms | 6.0MB | ✅ PASS |
| 8.a.1 | Simoncelli | checkerboard | 0.38% | 10ms | 24.3MB | ✅ PASS |
| 8.a.2 | Simoncelli | checkerboard | 0.00% | 11ms | 24.3MB | ✅ PASS |
| 8.a.3 | Simoncelli | checkerboard | 0.00% | 10ms | 24.3MB | ✅ PASS |
| 9.a | Riesz-LoG | impulse_response | 0.05% | 14ms | 14.4MB | ✅ PASS |
| 9.b.1 | Riesz-LoG | sphere | 0.64% | 13ms | 14.4MB | ✅ PASS |
| 9.b.2 | Riesz-LoG (aligned) | sphere | - | - | - | ❗ REF. |
| 10.a | Riesz-Simoncelli | impulse_response | - | - | - | ❗ REF. |
| 10.b.1 | Riesz-Simoncelli | pattern_1 | 0.79% | 13ms | 24.3MB | ✅ PASS |
| 10.b.2 | Riesz-Simoncelli (aligned) | pattern_1 | - | - | - | ❗ REF. |
Tolerance Criteria
All tests use the IBSI 2 standard tolerance:
Known Deviations
2D Filters Not Implemented (5 Tests Skipped)
Note
Design Decision: 3D Volumetric Processing Only
Pictologics implements only 3D convolutional filters and only 3D radiomic features only. This is a deliberate design choice for clinical radiomics workflows with volumetric medical imaging data (CT, MRI, PET scans).
The following tests are intentionally skipped because they require 2D filter implementations: Test 1.b.1 (Mean Filter 2D), Test 2.c (LoG 2D), and Tests 3.c.1-3.c.3 (Laws 2D).
Structure Tensor Alignment (Reference Missing)
The following tests are currently not implemented because they require structure tensor alignment and the IBSI 2 reference dataset does not contain the corresponding validity response maps:
- Tests 9.b.2, 10.b.2: Riesz Filter Alignment (ValidCRM missing)
- Test 10.a: Riesz-Simoncelli Alignment (ValidCRM missing)
Warning
Reference Data Unavailable
The official IBSI 2 reference dataset does not contain the reference validity maps for these tests (9_b_2-ValidCRM.nii, 10_a-ValidCRM.nii, 10_b_2-ValidCRM.nii). Therefore, these tests cannot be validated and are marked as ❗ REF. (Reference Missing).
Summary
In total, 28 tests passed validating all core 3D filter functionality. 5 tests were skipped as they relate to 2D filters which are not applicable to this 3D-focused library. 3 tests are marked as missing reference (structure tensor alignment) because the validation data is not provided by IBSI.