SIPS Compliance Matrix¶
Tracking implementation status of algorithms defined in the NGA Softcopy Image Processing Standard (NGA.STND.0014 v2.4, 2019-08-21).
This is a living document. It is updated as operators are implemented and validated. The goal is incremental progress toward full compliance, with clear documentation of what is and isn’t covered at each release.
Reference¶
Standard: NGA.STND.0014_2.4 — Softcopy Image Processing Standard
Version: 2.4 (2019-08-21)
Source:
osml-imagery-io/reference-materials/SIPS/SIPS_v24_21Aug2019.pdf
Status Legend¶
Symbol |
Meaning |
|---|---|
✅ |
Implemented and validated against SIPS verification matrices |
🔨 |
In progress |
📋 |
Planned for current release |
📅 |
Planned for future release |
➖ |
Not planned (out of scope or deferred indefinitely) |
Algorithm Compliance Matrix¶
# |
SIPS Algorithm |
Section |
Status |
Toolkit Module |
Notes |
|---|---|---|---|---|---|
1 |
RRDS Generation |
2.2 |
📋 v2.0 |
|
7×7 anti-alias kernel + 4×4 LaGrange interpolation + 2× subsample. Validates against Tables 2.4–2.6. |
2 |
Four-Point Interpolation |
2.3 |
📋 v2.0 |
|
LaGrange 4×4 kernel with 1/32 pixel quantization. Compromise coefficients (Table 2.8). Used by RRDS and Scaling. Validates against Tables 2.9–2.15. |
3 |
Convolution and Correlation |
2.4 |
📋 v2.0 |
|
Mirror Edge - Odd boundary handling via |
4 |
1-D Look-Up Table |
2.5 |
📋 v2.0 |
|
Per-band LUT application. Supports 8, 11, 12, 16-bit. Validates against Table 2.29. |
5 |
Dynamic Range Adjustment |
2.6 |
📋 v2.0 |
|
Histogram percentile-based clipping (Equations 2.16–2.20). |
6 |
Scaling |
2.7 |
📅 v2.1 |
|
Intra-octave scaling for non-power-of-2 factors. Uses 1-D anti-aliasing kernels derived from RRDS filter LSF + LaGrange interpolation. Validates against Table 2.43. |
7 |
Asymmetric Pixel Correction |
2.8 |
📅 Future |
— |
Resamples non-square pixels to square pixel space via spatially-variant LaGrange correlation. Uses the same interpolation engine as RRDS. Niche use case. |
8 |
Color Management Module |
2.9 |
📋 v2.0 (partial) |
|
v2.0 delta: Hardcoded transforms for well-known color spaces (sRGB, ProPhoto RGB, AdobeRGB, CIE XYZ, CIELab). No ICC profile file parsing. Validates against Table 2.44 for sRGB→ProPhoto RGB. Full ICC support: post-v2.0 optional extra. |
9 |
Max-Pixel Decimation |
2.10 |
📅 v2.1 |
— |
Per-channel max from 2×2 blocks for colorized change composites. ~20 lines. Low priority — specialized for change detection products. |
10 |
Band Dependent Linearization |
2.11 |
📅 v2.1 |
— |
Per-band black/white point normalization for multiband imagery. Related to DRA but multiband-aware. ~50 lines. |
11 |
LUT from Piecewise Math Formulae |
2.12 |
➖ |
— |
Utility for generating TTC tables from piecewise functions. Not needed for image display. |
v2.0 Compliance Summary¶
What v2.0 Covers¶
RRDS Generation (the core pyramid quality algorithm) — full compliance with SIPS Section 2.2, validated against reference matrices
Four-Point Interpolation — full compliance, used internally by RRDS
Convolution and Correlation — full compliance with boundary handling
1-D LUT Application — full compliance
Dynamic Range Adjustment — full compliance with auto-DRA algorithm
Color Management — partial compliance (well-known color spaces only)
Known v2.0 Deltas from Full SIPS Compliance¶
CMM does not parse ICC profile files. Transforms are limited to hardcoded well-known color spaces. Users with custom sensor ICC profiles cannot use them through our CMM. Workaround: use Pillow’s
ImageCmsorpylcms2externally, then pass the transformed array to our functions.Intra-octave scaling not implemented. Only power-of-2 downsampling is supported via
sips_rrds_resample(). Smooth zoom between pyramid levels uses OpenCV resamplers as an interim. Planned for v2.1.No asymmetric pixel correction. Images with non-square pixels are not automatically corrected. The LaGrange interpolation engine needed for this is implemented (shared with RRDS), so adding this is straightforward when needed.
No max-pixel decimation. Colorized change composite products use standard RRDS instead of the max-pixel algorithm. Planned for v2.1.
No band dependent linearization. Multiband imagery uses per-band DRA instead of the BDL algorithm. Planned for v2.1.
SIPS databases not bundled. The SIPS spec is accompanied by databases of kernels (MTFR, MTFE, anti-aliasing, TTC families). We implement the reference kernels from the spec text but do not bundle the full SIPS database files. Users with access to the SIPS databases can load them via
apply_lut()andsips_convolve().
Verification Approach¶
Each implemented algorithm is validated against the SIPS verification matrices provided in the specification:
Algorithm |
SIPS Verification Data |
Our Test |
|---|---|---|
RRDS Generation |
Tables 2.4 (R₀), 2.5 (R₁), 2.6 (R₂) |
Exact matrix comparison |
Four-Point Interpolation |
Tables 2.10–2.15 |
Single-point and 10×10 matrix verification |
Convolution |
Tables 2.17–2.26 |
5×5 and 4×4 kernel examples, both odd and even |
1-D LUT |
Tables 2.27–2.29 |
TTC Family 0 Member 0 verification |
DRA |
Tables 2.31–2.34 |
10×10 11-bit matrix with known parameters |
Scaling |
Tables 2.35–2.43 |
0.4× absolute magnification example |
CMM |
Table 2.44 |
sRGB→ProPhoto RGB conversion |
Error tolerances follow SIPS Section 4, Table 4.1:
Bit Depth |
Max Absolute Error |
|---|---|
8-bit |
±1 digital count |
11-bit |
±1 digital count |
12-bit |
±1 digital count |
16-bit |
±1 digital count |
Reference Image Chain Coverage¶
The SIPS reference image chain (Section 3) defines the processing order for single-band and multiband imagery. Here is our coverage of each element:
Single-Band Reference Chain (Figure 3.8)¶
Sharpness Enhancement → DRA → 1-D LUT (TTC)
↓ ↓ ↓
MTFC/MTFE d/b Histogram TTC d/b
Element |
v2.0 Status |
Notes |
|---|---|---|
Sharpness Enhancement |
✅ via |
User supplies MTFC/MTFE kernel |
Histogram |
✅ via |
|
DRA |
✅ via |
|
1-D LUT (TTC) |
✅ via |
Multiband Reference Chain (Figure 3.9)¶
DRA → CST → [ACS Operations] → CST → Output Preparation
↓ ↓ ↓
DRA ICC Profile ICC Profile
d/b d/b d/b
Element |
v2.0 Status |
Notes |
|---|---|---|
DRA |
✅ via |
Per-band |
CST (Color Space Transform) |
📋 partial |
Well-known spaces only |
ACS Operations (sharpening, LUT) |
✅ via |
|
Output Preparation |
📋 partial |
Quantization to output bit-depth; CMM limited to well-known spaces |
Non-Interactive Processing (Figure 3.3)¶
Element |
v2.0 Status |
Notes |
|---|---|---|
Band Equalization |
➖ |
Sensor-specific; not in scope |
MTF Restoration |
✅ via |
User supplies MTFR kernel |
Atmospheric Correction |
➖ |
Sensor-specific; not in scope |
Data Remapping (PEDF/LinLog) |
📅 v2.1 |
Equations 3.1–3.4 in spec |
Asymmetric Pixel Correction |
📅 Future |
|
RRDS Generation |
📋 v2.0 |