Skip to content

Color Checker and White Balance Correction

Automated color calibration using color checker cards and white balance correction models. Critical for product/jewelry photography standardization — consistent metal color, gemstone hue across different lighting.

Core Concept

Color checker cards (X-Rite 24-patch, 140-patch Digital ColorChecker SG) provide known color references. Pipeline: 1. Detect color checker in image 2. Compute color transform (3x3 matrix, polynomial, or neural) from measured → reference values 3. Apply transform to entire image

Datasets

Dataset Content Use
Middlebury Color 35 cameras × 2 lighting conditions (3200K/4800K), RAW + JPEG Camera-specific calibration
ccHarmony 4260 pairs synthetic composites + real images Image harmonization training
Color Checkers (Roboflow) 214 images + pretrained detection model Checker detection
I-HAZE 35 pairs (haze/clean) with MacBeth checker Haze + color correction
CroP Synthetic RAW generator with checkers Training data generation
Gehler, NUS-8, Cube++ Standard color constancy benchmarks White balance evaluation

Links: - vision.middlebury.edu/color/data/ - github.com/bcmi/Image-Harmonization-Dataset-ccHarmony - universe.roboflow.com/nahom-5dyof/color-checkers

Detection Tools

Tool Approach Notes
colour-checker-detection YOLOv8 + segmentation Python package, github.com/colour-science/colour-checker-detection
Roboflow pretrained API-based detection Pre-trained, ready to use
Custom YOLO Train on checker dataset Best for specific shooting setups

White Balance Correction Models

Model Approach License Notes
WB_sRGB Deep WB correction for already-rendered sRGB Has datasets, idea reproducible github.com/mahmoudnafifi/WB_sRGB
WB_color_augmenter Emulates wrong WB for training data augmentation Pairs generation github.com/mahmoudnafifi/WB_color_augmenter

Primary Pipeline: Diffusion-Generated Color Checker

Главный подход: обучить диффузионную модель СТАБИЛЬНО генерировать виртуальный color checker внутри изображения, согласованный с освещением сцены. Потом детекция + цветокоррекция по точкам — это уже классический алгоритм.

Архитектура (3 стадии)

Stage 1: GENERATE — диффузионная модель вписывает чекер в изображение
  Input: фото без чекера + маска (где разместить чекер)
  Output: фото с чекером, где цвета чекера отражают реальное освещение сцены
  Model: SD2 Inpainting fine-tune / [[SANA]] / [[Step1X-Edit|Qwen-Image-Edit]] LoRA

Stage 2: DETECT — найти сгенерированный чекер и считать значения патчей
  Model: YOLO или colour-checker-detection (простая задача — чекер всегда есть)
  Output: 24 измеренных RGB значений

Stage 3: CORRECT — классический алгоритм цветокоррекции
  Compute: 3×3 color matrix (measured → reference D65 values)
  Apply: transform entire image
  Method: least squares, polynomial, или colour-science library

Почему генерация а не детекция

Реальные фото не содержат color checker — фотографы убирают его перед финальной обработкой. Нам нужна модель которая может восстановить как бы выглядел чекер в данной сцене при данном освещении. Это задача illumination estimation через generative inpainting.

Датасет для обучения Stage 1

Источник Что берём Как используем
Middlebury Color Фото С чекером + фото БЕЗ (кроп/маска) Before/after пары
I-HAZE Фото с MacBeth чекером Paired training data
CroP (synthetic) Генерируем любое количество Augmentation
ccHarmony Пары с known illumination Validation
Собственные фото Снять ювелирку С чекером и БЕЗ Gold standard pairs

Формат пар:

input/0001.png    → фото БЕЗ чекера (маска на месте чекера)
target/0001.png   → фото С чекером (реальный, в том же освещении)
mask/0001.png     → бинарная маска позиции чекера

Критичный момент: стабильность генерации

Модель должна генерировать узнаваемый X-Rite 24-patch чекер, а не абстрактные цветные пятна. Подходы: 1. ControlNet с шаблоном чекера (фиксированный layout) + inpainting для цветов 2. LoRA обученная на парах (сцена без чекера → сцена с чекером) 3. Prompt conditioning: "X-Rite ColorChecker Classic, 24 patches, 4×6 grid" + маска

Альтернативный подход: прямая WB коррекция

Без генерации чекера — обучить модель предсказывать цветовую матрицу напрямую: - Input: фото - Output: 3×3 color correction matrix (или illuminant estimation) - Training: на RAW→final парах из DNG sidecar файлов (Lightroom WB corrections)

Проще, но менее interpretable и менее точно для нестандартных условий.

Relevance for Jewelry Photography

  • Standardize metal color (gold, silver, rose gold) across different studio setups
  • Consistent gemstone color under varying illumination
  • Batch processing: photographer shoots 700+ RAW files → automated color correction
  • Solar curves technique (see discussions) for revealing subtle color/edge differences invisible to naked eye
  • Intrinsic image decomposition: separate illumination from reflectance (github.com/vinavfx/Intrinsic-for-Nuke — good implementation, restrictive license but paper is reproducible)
  • Shadow removal: SP-Net/M-Net for shadow decomposition (ICCV 2019, ISTD dataset 4800 pairs)
  • Reflectance filtering: github.com/tnestmeyer/reflectance-filtering