OCIO still-image viewer for A/B comparison
Project description
Prism
(Pipeline Review and Image State Monitor)
Prism is a lightweight OCIO image viewer built for fast visual inspection, transform validation, and A/B comparison workflows.
It was created from a very practical need: quickly loading images, testing colorspace transforms, comparing outputs, and debugging OCIO behavior without having to launch a full compositing or grading application.
Prism focuses on still-image workflows and immediate visual feedback:
- compare two images side-by-side
- wipe between transforms
- inspect differences
- validate looks and context variables
- probe pixel values
- and quickly iterate on OCIO decisions
The goal is not to replace tools like Nuke, RV, or Resolve.
The goal is to provide a focused, lightweight environment for color pipeline inspection and experimentation, especially during look development, pipeline debugging, config validation, and day-to-day production support.
Built with:
- PySide6
- OpenColorIO
- OpenImageIO
- NumPy
Why Prism Exists
Many OCIO workflows still rely on launching large DCC applications just to validate a transform, compare two outputs, or debug context-dependent behavior.
Prism was built to reduce that friction.
It provides a fast standalone environment for inspecting color behavior directly, with minimal setup and immediate visual feedback.
Whether you're:
- validating an OCIO config
- checking a display transform
- comparing renders
- debugging context variables
- verifying looks
- or simply inspecting image data
Prism aims to make that process faster and more direct.
Features
- Load and compare two images simultaneously
- Apply independent OCIO transforms to A and B
- Compare images using Split, Wipe, Full, and Diff modes
- Inspect pixel values directly in the viewer HUD
- Adjust exposure and luminance interactively
- Edit OCIO context variables live
- Navigate synchronized A/B views
- Toggle transform bypass per image
- Use EXR, DPX, JPG, PNG, TIFF, and other common formats
- Built-in diagnostics window for environment validation
Requirements
-
Python 3.11+
-
Runtime packages:
PySide6OpenImageIOOpenColorIOnumpy
Install
From repository root:
python -m pip install -e .
Launch
prism
If the command is not found, activate your virtual environment first and retry.
Quick Start
- Open image A from
File -> Open Image A... - Open image B from
File -> Open Image B... - Load an OCIO config from
File -> Open OCIO Config...
- Select Input and Output colorspaces independently for A and B
- Optionally select a Look
- Switch compare modes (
Split,Wipe,Full (A),Full (B)Diff)
- Hover over the viewer to inspect pixel values in the footer HUD
Prism also supports drag-and-drop for images and OCIO configs.
Compare Modes
Split
Shows A and B side-by-side.
Useful for:
- framing comparisons
- look validation
- general A/B review
Wipe
Displays A/B across an interactive divider.
Use the wipe handle to inspect transitions and subtle image differences interactively.
Full
Displays only the currently selected side (A or B).
Useful for focused single-image inspection while preserving the compare setup.
Diff
Displays grayscale absolute difference between overlapping regions.
Brighter values indicate stronger differences.
Useful for:
- transform validation
- render verification
- subtle change detection
OCIO Context Variables
Prism can detect and expose OCIO context variables directly from the loaded config.
Open from:
View -> OCIO Context Variables- Hotkey:
E
Behavior:
- Hidden by default
- Dynamically rebuilds from the loaded config
- Updates processing live as values change
- Can be docked or undocked
- Persists current values while visible or hidden
This is especially useful for:
- shot-based transforms
- context-driven looks
- sequence-dependent processing
- debugging OCIO environment behavior
Viewer Controls
Exposure and Luminance
Interactive controls allow quick image inspection without modifying source data.
Useful for:
- shadow inspection
- highlight clipping checks
- transform debugging
- general image evaluation
Background Presets
Open from:
View -> Background
Presets:
- Black
- Dark Gray
- Mid Gray
- Light Gray
Useful when image edges become difficult to read against the viewer background.
Diagnostics
Prism includes a diagnostics window for quickly validating runtime dependencies and OCIO environment state.
Includes:
- Prism version
- Python version
- Qt / PySide version
- NumPy version
- OpenImageIO version
- OpenColorIO version
- Active OCIO config
- Platform information
Useful for:
- support,
- debugging,
- pipeline validation,
- environment troubleshooting.
Typical Workflows
A/B Grade Validation
- Load image A and B
- Load an OCIO config
- Configure Input and Output transforms
- Start in
Split - Move to
Wipefor edge comparison - Use
Diffto isolate subtle changes
Single Image Inspection
- Load image A
- Configure transforms
- Switch to
Full - Inspect pixel values and channels
- Adjust exposure and luminance interactively
Context-Based Look Debugging
- Load image and OCIO config
- Open
View -> OCIO Context Variables - Modify context values
- Observe updates live in the viewer
Hotkeys
-
FFit to Window -
HShow/Hide Hotkeys dialog -
EToggle OCIO Context Variables dock -
TabSwitch active side A/B -
Right/PageDownNext frame -
Left/PageUpPrevious frame -
Up/DownChange focused Input/Output item -
RToggle Red solo / RGB -
GToggle Green solo / RGB -
BToggle Blue solo / RGB -
ZRestore RGB -
1 / 2 / 3 / 4 / 5- Split
- Wipe
- Full (A)
- Full (B)
- Diff
-
Right Click + DragPan
Sample Assets
Prism includes sample files to validate setup quickly:
- Sample images:
samples/images/ - Sample OCIO config:
samples/ocio_config/
Quick smoke test:
- Launch
prism - Load image A and B from
samples/images/ - Load config from
samples/ocio_config/ - Switch between
Split,Wipe,Full (A),Full (B), andDiff
Troubleshooting
prism command not found
Activate the intended virtual environment and reinstall from repository root:
python -m pip install -e .
OCIO config fails to load
- Confirm
OpenColorIOis installed in the active environment - Confirm the selected file is a valid
.ocioconfig - If loading is canceled intentionally, Prism preserves current state
EXR or DPX images fail to load
Prism uses OpenImageIO fallback support for formats that may not be available through Qt directly.
Verify:
OpenImageIOis installed- the active environment can import it successfully
Movie source issues
Movie playback depends on optional backend availability such as:
opencv-pythonimageio[ffmpeg]
Still-image workflows remain fully functional without them.
Known Limitations
- Movie workflows remain backend/environment dependent
- Some EXR/DPX workflows rely on OpenImageIO fallback support
- Windows taskbar icon refresh may lag behind icon updates until Explorer refreshes shell cache
Planned Features
- Waveform Monitor
- Vectorscope
- Chromaticity Diagram and gamut visualization
- Transform breakdown visualization
- LUT plotting
- Nuke integration
- Resolve integration
- More Display/View support
Architecture and Developer Docs
See docs/README.md for subsystem and architecture documentation:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prism_viewer-1.0.0.tar.gz.
File metadata
- Download URL: prism_viewer-1.0.0.tar.gz
- Upload date:
- Size: 825.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d3d5faa9dc8a8633f0a7cd89415a77e86059f59f5220a242c9be760ce7e3101
|
|
| MD5 |
40cda0b44c93667dc7ac2fdbaf4e13ae
|
|
| BLAKE2b-256 |
987b217b56659826df7482a168f88a07c4648e9d550a437124fb7ff058d3ae6a
|
File details
Details for the file prism_viewer-1.0.0-py3-none-any.whl.
File metadata
- Download URL: prism_viewer-1.0.0-py3-none-any.whl
- Upload date:
- Size: 819.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fb5cc845f94efb49421acbd59e15b84f7eb761c1ba8086ee03bf998c05aa450
|
|
| MD5 |
9f5c0f96351b8e5a66d2fdff907c2fa1
|
|
| BLAKE2b-256 |
497a05fa758b0a1ef4fcc774d9d04c15d98c5072b08c0b519eb626d5cc6e2b1f
|