opencv / opencv/opencv-python

Integrate ICC v5 / iccMAX Support into OpenCV

Open
#1,153 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
5.4k
Forks
1k
Avg merge
22h 17m
Merged PRs (30d)
3

Description

Dear OpenCV Maintainers,

I am writing to propose an enhancement to OpenCV’s color management capabilities: the integration of ICC v5 / iccMAX profile support. As imaging workflows increasingly rely on wide-gamut, high-dynamic-range content, modern color management standards are essential for accurate processing, visualization, and output.

Motivation
Current OpenCV workflows typically rely on ICC v2/v4 profiles and manual gamma approximations for wide-gamut color spaces (e.g., ProPhoto RGB, ROMM RGB) or HDR content. This approach has several limitations:

Limited channel support: Only 3-channel RGB is fully supported; multi-channel or spectral data cannot be handled.

Approximate gamma and clipping: Wide-gamut transforms require manual gamma adjustments, introducing artifacts and loss of fidelity.

No perceptual color appearance modeling: Viewing conditions, adaptation, and flare corrections are not considered.

Limited HDR support: Floating-point and extended dynamic range are only partially implemented, restricting true HDR workflows.

Proposed Upgrade
Integrate ICC v5 / iccMAX profile handling directly into OpenCV, leveraging:

Multi-channel LUTs and transforms: Accurate conversion between wide-gamut color spaces and high-bit-depth or spectral data.

High-precision floating-point processing: Maintain HDR, linear-light, and extended dynamic range data throughout pipelines.

Color appearance models (CAM02 / CAM16): Support perceptual transforms for soft-proofing and viewing condition adaptation.

Backward compatibility: Ensure existing workflows using v2/v4 profiles remain functional.

Benefits

Professional color accuracy: OpenCV would handle modern cinema cameras (RED, Arri, Blackmagic) and high-end photography workflows accurately.

HDR and wide-gamut support: True representation of HDR content without manual approximations.

Scientific and industrial applications: Enhanced precision for research, medical imaging, and machine vision systems.

Enhanced Python and C++ pipelines: Enable real-time processing of color-managed content for computer vision, machine learning, and display.

Improved dataset quality: Training datasets generated in OpenCV would more accurately reflect real-world color and lighting, improving model generalization.

Suggested Implementation

Integrate an ICC v5 parser and transform engine (e.g., leverage DemoIccMax / iccDEV).

Provide Python bindings for profile application in cv2.cvtColor() or a new cv2.colorProfileTransform() function.

Maintain internal floating-point representation for linear color processing.

Add support for perceptual adaptation and multi-channel LUTs.

Adding ICC v5 / iccMAX support would bring OpenCV to parity with professional imaging software and ensure Python, C++, and GPU-based pipelines can process true wide-gamut HDR content accurately. This upgrade would significantly benefit research, industrial, and machine vision applications, positioning OpenCV as a robust choice for modern imaging workflows.
Integrating the iccMAX ICC file by default

Thank you for considering this enhancement.
https://www.color.org/iccmax.xalter

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or entry points. First determine whether ICC v5/iccMAX support belongs in this Python packaging toolchain or in upstream OpenCV, then seek a scoped implementation plan covering the requested profile handling, bindings, and backward compatibility before defining completion.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
computer-vision
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.