Rockchip · AI & Linux Hub

Камеры и видео

Оптимизация цвета Rockchip ISP30: полное руководство AWB, CCM и 3DLUT

Полный материал ISP30 V3.0.2: белые точки и стратегия AWB, калибровка и журналы, матрицы CCM и цветовые различия, инструменты и примеры 3DLUT.

· ArmSoM Editorial · Rockchip source documentation · 92 мин чтения

Статья полностью сохраняет техническую часть (стр.9–84 PDF) английского V3.0.2 объёмом 84 страницы. Китайский исходник не предоставлен. Китайская и русская версии полностью переводят техническую часть и используют те же отдельные оригинальные рисунки английского PDF, включая имеющиеся китайские подписи. Восстановлены пропущенные при извлечении векторные формулы стр.64; формулы, таблицы и код редактируемы. Обрезанные в самом исходнике префиксы/концы журналов и неотрисованные ссылки на рисунки не дополняются догадками.

Это справочник платформы для ArmSoM без аппаратной проверки. Проверьте плату, SoC, ISP, Sensor, SDK/BSP, AIQ, IQ Tool и ядро. Таблица стр.2 указывает RK3566/RK3568 с пустым полем ядра; стр.9 — ISP30/RK3588, стр.77 — RK1109. Противоречия сохранены, а не распространены на все платы ArmSoM. Результаты примеров исходника не являются измерениями ArmSoM. Код, настройка камеры и обновление IQ не выполнялись.

Сохранённая техническая история: V2.0.0 переводит IQ XML в JSON, поддерживает AIQ V2.0x60.0 и IQ Tool V2.0.2; V2.0.1 адаптирует ISP21/RK356X; V3.0.0 — ISP30/RK3588; V3.0.1 удаляет ручную JSON-конфигурацию CCM/3DLUT, оставляя онлайн только автоматический режим; V3.0.2 использует IQ Tool V2.1.0 для моделирования AWB. Примеры XML, указания на неподдерживаемые функции и ссылки на разные ISP в тексте сохранены по исходнику.

SoC Ядро (стр.2 оригинала)
RK3566 / RK3568 Поле исходника пусто; не указано

EDITORIAL-NOTES. ArmSoM · Rockchip Linux

1 Обзор

Модули цветовой настройки ISP30 включают автоматический баланс белого AWB, цветокоррекцию CC и трёхмерную таблицу поиска 3dlut.

Модули CCM и 3DLUT ISP21 (RK3566/RK3568) и ISP20 (RV1126/RV1109) не различаются; при настройке AWB нужно учитывать следующее:

(1) ISP21 не поддерживает настройку нескольких подокон Multiwindow.

(2) Алгоритм 3dyuv обновлён.

(3) Дополнительная область позволяет только исключать белые точки, но не использовать их как дополнительный источник.

(4) Добавлены разные веса белых точек в зависимости от яркости.

(5) Добавлены веса блоков.

(6) В XY для каждого источника задаются два размера области, на один меньше, чем в ISP20.

Модули CCM и 3DLUT ISP30 (RK3588) и ISP21 (RK3566/RK3568) не различаются, но для 3DLUT добавлены инструменты (см. описание модуля). Различия настройки AWB:

(1) Дополнительная область поддерживает как исключение белых точек, так и дополнительный источник.

(2) В инструменте обновлена настройка порогов YUV (см. пример 2).

2 AWB

2.1 Описание функции

Автоматический баланс белого рассчитывает WB gain каналов R/G/B и умножает на него RGB, восстанавливая чистый белый из белого, изменённого освещением. Это согласует цвет изображения с реальным цветом объекта при разных источниках света. При наличии белых точек WB gain вычисляется по их автоматическому обнаружению, при отсутствии — методом однотонных цветов. Хроматическая адаптация изменяет цель коррекции для соответствия восприятию человека; настройка тона меняет общий оттенок по предпочтению. AWB состоит из аппаратной статистики и программной стратегии, показанных на схеме.

Рисунок английского исходника, PDF p.10, #15

Рисунок английского исходника, PDF p.10, #15.

Рисунок: процесс AWB.

2.2 Основные параметры

Параметры ISP21 находятся в узле wb_v21 файла IQ JSON (здесь исходник указывает ISP21).

2.2.1 Включение коррекции и выбор режима баланса белого

В узле control.

Имя Описание
bypass Значение 0 или 1. 0: выполнять коррекцию баланса белого с усилением, определяемым mode; 1: не выполнять коррекцию.
mode CALIB_WB_MODE_AUTO либо CALIB_WB_MODE_MANUAL. CALIB_WB_MODE_MANUAL использует ручное усиление; CALIB_WB_MODE_AUTO вычисляет усиление алгоритмом автоматического баланса белого.

2.2.2 Параметры ручного баланса белого

В узле manualPara.

Имя Описание
mode CALIB_MWB_MODE_CCT, CALIB_MWB_MODE_WBGAIN либо CALIB_MWB_MODE_SCENE.
cfg.wbgain Диапазон [0.5-3.9]. Применяется к ручному балансу белого при mode == CALIB_MWB_MODE_WBGAIN.
cfg.scene CALIB_WB_SCENE_INCANDESCENT (источник A), CALIB_WB_SCENE_FLUORESCENT (CWF), CALIB_WB_SCENE_WARM_FLUORESCENT (U30), CALIB_WB_SCENE_DAYLIGHT (D65), CALIB_WB_SCENE_CLOUDY_DAYLIGHT (D50), CALIB_WB_SCENE_TWILIGHT (HZ) либо CALIB_WB_SCENE_SHADE (D75). Применяется к ручному балансу при Mode == CALIB_MWB_MODE_SCENE.
cfg.cct CCT: [0-10000]; CCRI: [-2,2]. CCRI 0 приблизительно соответствует источнику на планковской траектории диаграммы цветности. Применяется при Mode == CALIB_MWB_MODE_CCT.

Примеры конфигураций:

Auto White Balance + White Balance Correction Enabled (recommended)
control.bypass = 0;
control.mode = CALIB_WB_MODE_AUTO;
White balance correction is not enabled
control.wbBypass = 1;
Manual white balance + white balance correction enabled
control.wbBypass = 0;
control.mode = CALIB_WB_MODE_MANUAL;
manualPara.mode = CALIB_MWB_MODE_WBGAIN;
manualPara.cfg.wbgain = [1,1,1,1];

2.2.3 Параметры автоматического баланса белого

Следующие параметры относятся к автоматическому режиму и находятся в autoPara (состав ISP20/ISP21 различается) и autoExtPara (состав одинаков). Далее описаны поля этих двух структур.

2.2.4 hdrPara

Соответствует autoPara.hdrPara. Для HDR Sensor можно выбрать длинный, средний или короткий кадр для статистики баланса белого; рекомендуется автоматический режим.

Имя Описание
frameChooseMode CALIB_AWB_INPUT_RAW_FIXED, CALIB_AWB_INPUT_RAW_AUTO, CALIB_AWB_INPUT_BAYERNR либо CALIB_AWB_INPUT_DRC. RAW_FIXED фиксирует длинный/короткий raw через frameChoose; RAW_AUTO выбирает их автоматически; BAYERNR использует выход bayer2dnr; DRC — выход DRC.
frameChoose Действует в HDR при frameChooseMode CALIB_AWB_INPUT_RAW_FIXED. Для двух кадров HDR: 0 выбирает короткий raw_in_short; 1 — длинный raw_in_long- для статистики баланса белого (конечный дефис сохранён из оригинала).

2.2.5 limitRange

(1) autoPara.limitRange в JSON задаёт диапазон пикселей для статистики белых точек; остальные не учитываются. Расширение диапазона увеличивает число точек; для повышения точности исключают слишком тёмные и слишком светлые. Диапазоны задаются для разных уровней освещения, фактический получается линейной интерполяцией.

Имя Описание
lumaValue Освещённость в диапазоне 0-255000.
maxR Верхняя граница R; рекомендуется 255-black level-3, максимум 255.
minR Нижняя граница R; рекомендуется 3, минимум 0.
maxG Верхняя граница G; рекомендуется 255-black level-3, максимум 255.
minG Нижняя граница G; рекомендуется 3, минимум 0.
maxB Верхняя граница B; рекомендуется 255-black level-3, максимум 255.
minB Нижняя граница B; рекомендуется 3, минимум 0.
maxY Верхняя граница Y; рекомендуется 255-black level-3, максимум 255.
minY Нижняя граница Y; рекомендуется 3, минимум 0.

2.2.6 mainWindow

Главное окно статистики AWB соответствует autoPara.mainWindow в JSON; рекомендуется автоматическая настройка. В специальных случаях, например при сильной цветовой неравномерности по краям широкоугольного объектива, размер окна можно задать вручную для уменьшения влияния на статистику.

Имя Описание
mode CALIB_AWB_WINDOW_CFG_FIXED либо CALIB_AWB_WINDOW_CFG_AUTO. AUTO автоматически задаёт окно размером RAW и рекомендуется; FIXED задаёт пользовательский размер.
window Включается при mode 1. window=[h_offset,v_offset,h_size,v_size]; h и v означают горизонталь и вертикаль, компоненты в диапазоне 0-1. [0, 0, 1, 1] выбирает всё окно размером RAW.

2.2.7 downScaleMode

Соответствует autoPara.downScaleMode в JSON.

Имя Описание
downScaleMode CALIB_AWB_DS_4X4 либо CALIB_AWB_DS_8X8. Первый подаёт raw после уменьшения 4×4 в статистику AWB, ds_w и ds_h равны 4. Второй выполняет уменьшение 8×8, ds_w и ds_h равны 8; это значение по умолчанию.

2.2.8 lscBypassEnable

Соответствует autoPara.lscBypassEnable в JSON.

Имя Описание
lscBypassEnable 0 или 1. 0: LSC пути статистики баланса белого отключена; 1: включена. Не влияет на LSC основного пути ISP.

2.2.9 blkStatisticsEnable

Соответствует autoPara.blkStatisticsEnable в JSON.

Имя Описание
blkStatisticsEnable 0 или 1. 0: статистика баланса белого блоков 15×15 отключена; 1: включена.

2.2.10 blkMeasureMode

Соответствует autoPara.blkMeasureMode в JSON.

Имя Описание
blkMeasureMode CALIB_AWB_BLK_STAT_MODE_ALL_V201 либо CALIB_AWB_BLK_STAT_MODE_REALWP_V201. ALL_V201 суммирует все точки блоков 15×15 и используется по умолчанию; REALWP_V201 суммирует только белые точки.

2.2.11 Аппаратное обнаружение белых точек

Рисунок английского исходника, PDF p.15, #51

Рисунок английского исходника, PDF p.15, #51.

Рисунок: обнаружение белых точек AWB.

Как показано на схеме, принадлежность к белым точкам определяется в трёх пространствах.

Имя Описание
uvDetectionEnable 0 или 1. 0: фильтрация небелых точек UV отключена; 1: включена, белые точки UV выбираются по условиям.
xyDetectionEnable 0 или 1. 0: фильтрация небелых точек XY отключена; 1: включена, белые точки XY выбираются по условиям.
yuvDetectionEnable 0 или 1. 0: фильтрация небелых точек YUV отключена; 1: включена, белые точки YUV выбираются по условиям.

Все три параметра входят в autoPara. Если они равны 0, все точки окна статистики с допустимой яркостью считаются белыми. Это позволяет грубо оценить AWB, когда нет времени на калибровку.

2.2.11.1 RGB2XY

Параметры преобразования RGB в XY автоматически создаются инструментом калибровки и соответствуют autoPara.rgb2TcsPara в JSON.

Имя Описание
pseudoLumWeight Размещает белые точки разных источников по возможности на прямой. Формируется инструментом калибровки, диапазон 0~1; изменять не рекомендуется.
rotationMat Матрица поворота: x характеризует изменение цветовой температуры чёрного тела, y — оттенок источников одинаковой температуры. Формируется калибровкой, диапазон [-3.99, 3.99]; изменять не рекомендуется.
2.2.11.2 Обнаружение белых точек XY

Рисунок английского исходника, PDF p.16, #60

Рисунок английского исходника, PDF p.16, #60.

Рисунок: область белых точек XY.

Область XY показана выше: точки внутри прямоугольника считаются белыми. Предусмотрены два размера области, её координаты: [x0,x1,y0,y1]. Область настраивается вручную инструментом калибровки и соответствует autoPara.lightSources.xyRegion (в исходнике здесь написано SON).

Имя Описание
normal Диапазон белых точек среднего окна: [-8,7.99].
big Диапазон белых точек большого окна: [-8,7.99].
2.2.11.3 Обнаружение белых точек UV

Рисунок английского исходника, PDF p.17, #66

Рисунок английского исходника, PDF p.17, #66.

Рисунок: область белых точек UV.

Область UV показана выше: точки внутри четырёхугольника считаются белыми. Соответствует autoPara.lightSources.uvRegion в JSON.

Имя Описание
u Координаты U условий белых точек UV образуют замкнутый контур, например [u0,u1 u2,u3,u0]. Диапазон [0,255], дробная часть только 0 либо 0.5. Формируются ручной настройкой диапазона.
v Координаты V условий белых точек UV образуют замкнутый контур, например [v0,v1 v2,v3,v0]. Диапазон [0,255], дробная часть только 0 либо 0.5. Формируются вручную в инструменте калибровки.
2.2.11.4 RGB2RYUV

Параметры преобразования RGB в повёрнутое пространство YUV соответствуют матрице autoPara.rgb2RotationYuvMat в JSON.

rgb2RotationYuvMat=[u0,u1,u2,uoffset
v0,v1,v2,voffset
y0,y1,y2,yoffset]
Имя Описание
u0,u1,u2,v0,v1,v2,y0,y1,y2 Диапазон [-1,1), точность 1/2^9; автоматически формируется инструментом калибровки.
uoffset,voffset,yoffset Диапазон [-255,254], точность 1/2^4; автоматически формируется инструментом калибровки.
2.2.11.5 Обнаружение белых точек RYUV

Вычисляется разность яркости точки сцены (y0,u0,v0) и теоретической белой точки (y’,u0,v0): diff = |y0-y’|. При diff < th точка считается белой, иначе — нет. Для разных положений по u можно задать разные th, как на ломаной dis-th.

Рисунок английского исходника, PDF p.18, #78

Рисунок английского исходника, PDF p.18, #78.

В инструменте калибровки по diff и u точек сцены (y0,u0,v0) настраивается ломаная u-th соответствующего источника для правильного определения белых точек и исключения небелых (в исходнике указано, что функция пока не реализована). Источник определяется методами XY/UV, поэтому YUV нельзя включать отдельно: требуется совместное использование с XY или UV.

Соответствует autoPara.lightSources.rtYuvRegion в JSON.

Имя Описание
lineVector Параметр вычисления теоретической белой точки (y’,u0,v0) из (y0,u0,v0). Компоненты [0,255], точность 1/(2^4). Формируется калибровкой; изменять не рекомендуется.
disP1P2 Параметр вычисления теоретической белой точки (y’,u0,v0) из (y0,u0,v0). Компоненты [0,5]. Формируется калибровкой; изменять не рекомендуется.
thcurve_u Компоненты u ломаной u-th: целые [0,255]. Разность соседних u должна быть степенью 2.
thcure_th Компоненты th ломаной u-th: [0,255], точность 1/(2^4). Ломаная u-th должна монотонно возрастать.
2.2.11.6 Добавление областей небелых точек

Обычно точки, одновременно попадающие в белые области XY, UV и YUV, считаются белыми. Некоторые небелые точки также удовлетворяют условиям и находятся в центре диапазона, поэтому исключить их трудно. Можно добавить небелую область в UV или XY: все попавшие туда точки считаются небелыми.

Максимум 7 областей небелых точек (исходник формулирует это как non-white dots).

Соответствует autoPara.extraWpRange в JSON.

Рисунок английского исходника, PDF p.19, #87

Рисунок английского исходника, PDF p.19, #87.

Имя Описание
domain CALIB_AWB_EXTRA_RANGE_DOMAIN_UV либо CALIB_AWB_EXTRA_RANGE_DOMAIN_XY: диапазоны белых точек соответственно UV и XY.
mode CALIB_AWB_EXCLUDE_WP_MODE либо CALIB_AWB_EXTTRA_LIGHT_SOURCES_MODE. Первый задаёт диапазон небелых точек, второй — белых точек дополнительного источника; ISP21 не поддерживает второй режим.
window Конфигурация [x0,x1,y0,y1] согласно рисунку. При domain=0 диапазон [0,511] с 1 дробным битом; при domain=1 диапазон [-8192,8191] с 10 дробными битами.
2.2.11.7 Веса белых точек в зависимости от яркости

Для повышения точности lumalimit исключает слишком светлые/тёмные точки. Этот модуль развивает подход: присваивает им меньшие веса, а точкам подходящей яркости — большие. Веса можно динамически задавать по числу подходящих белых точек и освещённости сцены, как показано ниже.

Рисунок английского исходника, PDF p.20, #91

Рисунок английского исходника, PDF p.20, #91.

При большой доле точек подходящей яркости вес соответствующего интервала (например y=80–224) увеличивается, а веса тёмных и светлых областей уменьшаются.

Соответствует autoPara.wpDiffLumaWeight в JSON.

Имя Описание
enable Переключатель функции: 0 отключает, 1 включает.
wpDiffWeiEnableTh Для включения также необходимо выполнение порогового условия.
wpDiffWeiEnableTh.wpDiffWeiNoTh Включается при числе белых точек выше порога; диапазон [0,1].
wpDiffWeiEnableTh.wpDiffWeiLvValueTh Включается при освещённости выше порога; диапазон [0-2555000].
wpDiffwei_y Границы гистограммы яркости белых точек: 9 точек задают 8 bin, диапазон [0,255]. Оригинал не рекомендует менять настройку и указывает разности соседних компонентов как степени 2.
perfectBinConf Определяет bin высокой достоверности, то есть подходящую яркость. Каждый компонент соответствует bin: 0 — низкая, 1 — высокая достоверность белой точки.
wpDiffWeiLvTh Два компонента соответствуют уровням освещённости wpDiffWeiLvTh0 и wpDiffWeiLvTh1; диапазон [0-2555000].
wpDiffWeightLvSet Задаёт разные кривые для долей достоверных белых точек при разных уровнях освещённости. Текущее значение получается линейной интерполяцией кривых.
wpDiffWeightLvSet_len Число уровней освещённости.
wpDiffWeightLvSet.LvValue Значение освещённости.
wpDiffWeightLvSet.ratioSet При освещённости wpDiffWeightLvSet.LvValue можно задать разные кривые для разных долей достоверных белых точек.
wpDiffWeightLvSet.ratioSet_len Число белых точек высокой достоверности (формулировка оригинала).
wpDiffWeightLvSet.ratioSet.ratioValue Доля белых точек высокой достоверности.
wpDiffWeightLvSet.ratioSet.weight Веса яркости при освещённости wpDiffWeightLvSet.LvValue и доле достоверных точек wpDiffWeightLvSet.ratioSet.ratioValue. Каждый компонент соответствует bin, диапазон [0,1].
2.2.11.8 Веса блоков

Для белых точек разных блоков можно задавать разные веса по требованиям приложения; без особой необходимости это не рекомендуется.

Имя Описание
wpDiffBlkWeiEnable Переключатель функции: 0 отключает, 1 включает.
wpDiffBlkWeight 15×15 блоков, вес каждого — целое [0-63].

2.2.12 Стратегия AWB

2.2.12.1 Вычисление WBGain по областям

Рисунок английского исходника, PDF p.22, #101

Рисунок английского исходника, PDF p.22, #101.

Рисунок: вычисление WBGain по областям AWB.

Пространство «освещённость–число белых точек» делится на области с разными методами расчёта усиления. Определение освещённости: если при усилении экспозиции 1x и времени интеграции 1ms средняя яркость сцены равна 255 (максимум), освещённость равна 255000. Большее значение означает более светлую среду.

2.2.12.1.1 (1) Параметры разделения

Соответствует autoExtPara.division в JSON.

Имя Описание
lumaValThLow Порог освещённости LV_THL1 на рисунке, диапазон 0-255000.
lumaValThLow2 Порог освещённости LV_THL2 на рисунке, диапазон 0-255000.
lumaValThHigh Порог освещённости LV_THH1 на рисунке, диапазон 0-255000.
lumaValThHigh2 Порог освещённости LV_THH2 на рисунке, диапазон 0-255000.
wpNumTh Для разных уровней освещённости задаются WP_THL и WP_THH; текущие пороги получаются линейной интерполяцией.
wpNumTh.lumaValue Освещённость в диапазоне 0-255000.
wpNumTh.low Порог числа белых точек WP_THL, диапазон 0-100000. Фактическое число сравнивается с WP_THL/100000*totalPixe; totalPixel = wight * height /ds_w/ds_h. wight и height — ширина и высота, ds_w и ds_h — кратности уменьшения по горизонтали и вертикали. Написания totalPixe/wight сохранены.
wpNumTh.high Порог числа белых точек WP_THH, диапазон 0-100000. Фактическое число сравнивается с WP_THH/100000*totalPixel.
2.2.12.1.2 (2) Параметры WBGain стратегии

По указанным порогам пространство освещённости и числа белых точек делится на области. Методы расчёта:

① Wbgain в WPType3 зависит от статистического усиления источников StaGain_i, усиления светлой среды DayGain_i и тёмной NightGain. Вес StaGain_i — staWeigthSet, DayGain_i — 100-staWeigthSet, NightGain — tempWeigth; подробнее ниже.

② WPType2 — переходная область, смешивающая wbgain WPType3 и WPType1.

③ Wbgain в WPType1:

Для первого кадра, в зависимости от освещённости, используется фиксированный NightGain/DayGain либо WBGain одноцветного алгоритма. Иначе применяется взвешенный wbgain предыдущих кадров.

Соответствующие параметры JSON:

① DayGain

Имя Описание
defaultDayGainLow Рекомендуемый WBGAIN при особенно ярком дневном свете: [0.5-7.9].
defaultDayGainHigh Рекомендуемый WBGAIN при обычном дневном свете: [0.5-7.9].
dayGainLvThSet dayGainLvThSet_THL и dayGainLvThSet_THH соответствуют defaultDayGainLow и defaultDayGainHigh. Настройки могут различаться по источникам; диапазон [0-255000].
staWeight Вес StaGain_i в WPType3. Веса разных яркостей соответствуют LvMatrix JSON; вес DayGain_i равен 100-staWeigthSet. Настройки зависят от источника. Обычно лучший вес StaGain — 100. При красноватом небе задайте defaultDayGainLow стандартным wbgain d65, defaultDayGainHigh — d50 и уменьшите staWeigth при соответствующей яркости. Диапазон [0-100].

Линейная интерполяция по освещённости, dayGainLvThSet, defaultDayGainLow и defaultDayGainHigh даёт DayGain_i каждого источника; веса источников, описанные далее, формируют DayGain для WPType1.

② NightGain

Имя Описание
defaultNightGain Описанный NightGain: рекомендуемый wbgain при низкой освещённости, [0.5-7.9].
defaultNightGainWeight Вес NightGain при вычислении wbgain в WPType3. Веса для разных яркостей соответствуют lumaValueMatrix JSON; диапазон 0-100.

③ SingleColorGain (singleColorProcess)

Для баланса белого больших однотонных областей по сцене выбираются цвет и WBGain из заданных наборов цветов и источников. Стандартная калибровка распознаёт красный, зелёный, синий, жёлтый и фиолетовый. Можно менять colorBlock и lsUsedForEstimation по приложению. Инструмент функцию не поддерживает; соответствует autoExtPara.singleColorGain в JSON.

Имя Описание
enable Переключатель функции: 0 отключает, 1 включает.
colorBlock Набор выбираемых цветов, формируемый инструментом.
colorBlock_len Общее число цветов в colorBlock.
colorBlock.index Индекс цвета обозначает поле, использованное при калибровке; изменение не влияет на результат. Диапазон 1-24; инструмент выбирает 13, 14, 15, 16, 5, 10.
colorBlock.meanC Средняя цветность цвета в LCH.
colorBlock.meanH Средний тон цвета в LCH.
lsUsedForEstimation Набор выбираемых источников, формируемый инструментом.
lsUsedForEstimation_len Общее число источников в lsUsedForEstimation.
lsUsedForEstimation.name Имя источника.
lsUsedForEstimation.RGain Усиление баланса белого красного канала источника, дробное, больше 0.
lsUsedForEstimation.BGain Усиление баланса белого синего канала источника, дробное, больше 0.
alpha Вес H пространства LCH. Можно оставить значение по умолчанию; диапазон [0.0-1.0].

④ Если предыдущие кадры имеют усиление баланса белого, их взвешенный wbgain используется для WpType3 (имя области сохранено из исходника).

Имя Описание
weightForNightGainCalc_len Число предыдущих кадров weightForNightGainCalc_len для взвешивания; произвольное целое.
weightForNightGainCalc Веса предыдущих кадров. Элемент 0 соответствует самому раннему кадру, последний — новейшему. Диапазон [0-100].
2.2.12.1.3 (3) Параметры расчёта весов источников

Параметры расчёта вероятности источников в WpType3.

Рисунок английского исходника, PDF p.26, #126

Рисунок английского исходника, PDF p.26, #126.

Prob_i = probLV_i * probDis_i * probWP_i

Рисунок английского исходника, PDF p.26, #127

Рисунок английского исходника, PDF p.26, #127.

probDis_i

① Параметры вероятности по расстоянию.

Вычисляется евклидово расстояние gain_dis между wbgain предыдущего кадра и эталоном каждого источника; вероятность определяется по ломаной ниже.

Рисунок английского исходника, PDF p.26, #130

Рисунок английского исходника, PDF p.26, #130.

Соответствует autoExtPara.probCalcDis в JSON.

Имя Описание
proDis_THL Порог расстояния disTHL на рисунке, [0-4].
proDis_THH Порог расстояния disTHH на рисунке, [0-4].

Рисунок английского исходника, PDF p.26, #133

Рисунок английского исходника, PDF p.26, #133.

probLV_i

② Параметры вероятности по яркости сцены.

Вероятность уличного источника pout вычисляется по кривой яркость–pout на рисунке 4-14.

Вероятность источника в помещении pin = 1-pout.

Для источников без строгого разделения, например PD50 = max(pout, pin).

Рисунок английского исходника, PDF p.27, #138

Рисунок английского исходника, PDF p.27, #138.

Соответствующие параметры JSON приведены ниже.

Имя Описание
autoExtPara.probCalcLv.outdoorLumaValThLow Порог освещённости outdoorTHL, 0-255000.
autoExtPara.probCalcLv.outdoorLumaValThHigh Порог освещённости outdoorTHH, 0-255000.
autoPara.lightSources.doorType Тип источника, задаваемый индивидуально: 1 — помещение; 2 — промежуточный; 3 — улица.

Рисунок английского исходника, PDF p.27, #141

Рисунок английского исходника, PDF p.27, #141.

probWP_i

③ Параметры вероятности по числу белых точек сцены.

Соответствует autoExtPara.probCalcWp в JSON.

Имя Описание
wpNumPercTh Если число белых точек источника меньше wpNumPercTh*totalPixel, а доля среди точек всех источников меньше wpNumPercTh2, вероятность по числу точек равна 0. totalPixel = wight * height /ds_w/ds_h; wight и height — ширина и высота, ds_w и ds_h — кратности уменьшения. Диапазон 0-1. Знаки умножения восстановлены по странице оригинала.
wpNumPercTh2 См. выше.

2.2.13 Хроматическая адаптация WBGain

Пока не рекомендуется; соответствует autoExtPara.chrAdpttAdj в JSON.

Имя Описание
enable Приближает цветовой облик исправленного изображения к человеческому восприятию. 0 отключает, 1 включает.
laCalcFactor Коэффициент хроматической адаптации при разной яркости, по умолчанию 40.
targetGain Целевой источник задаётся wbgain; цветовой облик приводится к этому источнику. Диапазон 0-4, по умолчанию усиление баланса белого d50.

2.2.14 Ограничение диапазона WBGain

Рисунок английского исходника, PDF p.28, #149

Рисунок английского исходника, PDF p.28, #149.

Ограничивает усиление баланса белого областью внутри красной линии на рисунке выше. По горизонтали отложена относительная цветовая температура, по вертикали — индекс цветопередачи; оба являются характеристиками источника света. Соответствует структуре autoExtPara.wbGainClip в JSON.

Имя Описание
enable Ограничение диапазона цветовой температуры: 0 отключает, 1 включает.
cct Координаты CCT точек верхней и нижней границ области; обе границы используют одинаковые отсчёты CCT, диапазон [1000-10000].
cri_bound_up Точки нижней границы; условие cri0>=-cri_bound_up, диапазон от -1 до 1.
cri_bound_low Компоненты cri верхней границы; условие cri0<=cri_bound_low, диапазон от -1 до 1.
cct_len/cri_bound_up_len/cri_bound_low_len cct_len, cri_bound_up_len и cri_bound_low_len — длины cct, cri_bound_up и cri_bound_low; все три должны совпадать.

Кроме того, можно ограничить минимальную цветовую температуру наружного освещения; соответствует структуре autoExtPara.wbGainDaylightClip в JSON.

Имя Описание
enable Ограничение минимальной наружной цветовой температуры: 0 отключает, 1 включает.
outdoor_cct_min Минимальная наружная цветовая температура; диапазон не ограничен.

Если wbGainClip.eanble = 1, а сцена имеет координаты (cct0, cri0), при выходе cct0 за левую (правую) границу выходное cct0 принудительно устанавливается на соответствующую границу. Если cri0<-cri_bound_up, выход равен cri0=-cri_bound_up; если cri0 >cri_bound_low, выход равен cri0=cri_bound_low.

Если wbGainDaylightClip.enable= 1 и сцена наружная, при cct0 >outdoor_cct_min выход равен cct0=outdoor_cct_min.

2.2.15 Коррекция оттенка WBGain

Соответствует структуре autoExtPara.wbGainAdjust в JSON.

Имя Описание
enable Коррекция оттенка: 0 отключает, 1 включает.
lutAll Для разных уровней освещённости можно задать разные таблицы выходной цветовой температуры.
lutAll_len Число таблиц цветовой температуры.
lutAll.lumaValue Освещённость, диапазон 0-255000.
lutAll.ct_grid_num Число отсчётов цветовой температуры входной таблицы, без ограничения.
lutAll.ct_in_range Диапазон цветовой температуры входной таблицы, без ограничения.
lutAll.cri_grid_num Число отсчётов индекса цветопередачи входной таблицы, без ограничения.
lutAll.cri_in_range Диапазон индекса цветопередачи входной таблицы, без ограничения.
lutAll.ct_out На интерфейсе ниже ct точек растёт слева направо (от холодного к тёплому), диапазон 0-255000.
lutAll.cri_out На интерфейсе ниже CRI точек растёт снизу вверх (от пурпурного к зелёному), от отрицательного к положительному, без ограничения.
lutAll.ct_in_range_len/ lutAll.cri_in_range_len/lutAll.cri_out_len/lutAll.cri_out Число точек двумерной сетки ниже; длины равны lutAll.ct_grid_num*lutAll.cri_grid_num.

Текущая JSON-версия инструмента не поддерживает эту функцию коррекции.

Без коррекции цветовой температуры двумерная сетка ct_out и cri_out имеет вид ниже. Прямоугольник, заданный ct_in_range и cri_in_range, дискретизируется по горизонтали и вертикали с ct_grid_num и cri_grid_num соответственно; отсчёты соответствуют точкам рисунка. ct_out хранит координаты ct всех точек, а cri_out — их вертикальные координаты.

Рисунок английского исходника, PDF p.31, #161

Рисунок английского исходника, PDF p.31, #161.

Коррекция общего цветового стиля:

(1) Чтобы сделать теплее оттенок при 2000k, выберите CT Line Only и настройте таблицу как показано ниже: наведите мышь на любую точку cct=2000 и перетащите вправо. После применения все входные значения 2000k–2391k преобразуются в 2391k.

Рисунок английского исходника, PDF p.31, #164

Рисунок английского исходника, PDF p.31, #164.

(2) Чтобы сделать все оттенки холоднее, выберите CT Line Only и настройте таблицу как показано ниже: наведите мышь на точки разных CCT и перетаскивайте влево, пока все оттенки не сместятся влево.

Рисунок английского исходника, PDF p.32, #166

Рисунок английского исходника, PDF p.32, #166.

(3) Чтобы придать пурпурный оттенок всем значениям CRI 0.5, выберите CRILine ONLY и настройте таблицу как показано ниже: наведите мышь на любую точку CRI=0.5 и перетащите вниз. Перетаскивание вверх даёт зеленоватый оттенок.

Рисунок английского исходника, PDF p.32, #168

Рисунок английского исходника, PDF p.32, #168.

Результаты коррекции оттенка показаны ниже: в центре оригинал, сверху, снизу, слева и справа соответственно зелёный, пурпурный, синий и красный оттенки.

Рисунок английского исходника, PDF p.33, #170

Рисунок английского исходника, PDF p.33, #170.

Двумерная таблица также позволяет локально корректировать wbgain, не затрагивая другие сцены. Выберите свободный режим для перемещения в любом направлении; перемещение четырёх вершин соответствующего прямоугольника изменяет выходной wbgain.

2.2.16 Смещение wbGain

Соответствует структуре autoExtPara.wbGainOffset в JSON.

Имя Описание
enable Переключатель: 0 отключает, 1 включает.
offset Смещения каналов R, GR, GB, B. Допустимость определяется суммой wbgain+offset: [0,4] для ISP21, [0,8] для остальных.

2.2.17 Настройка датчика remosaic

При преобразовании raw другого формата в Bayer raw интерполяцией сначала необходимо применить wbgain, после чего обратное преобразование wbgain не выполняется. Эта настройка адаптирует данные к текущему алгоритму AWB и соответствует структуре autoExtPara.remosaicCfg в JSON.

Имя Описание
enable Переключатель: 0 отключает, 1 включает. Для датчика с Bayer включение не требуется.
sensorWbGain wbgain, применяемый при интерполяции, для R, GR, GB, B. Диапазон см. в документации датчика.
applyInvWbGainEnable Обратное применение wbgain перед статистикой raw AWB, то есть деление на sensorWbGain. 0 отключает, 1 включает.

2.2.18 Сглаживание WBGain

Вычисляется вес усиления баланса белого предыдущего кадра wbGainDampFactor. Взвешивание wbgain предыдущего и текущего кадров сглаживает изменение. Увеличение dFMin и dFMax повышает стабильность, но замедляет сходимость; уменьшение ускоряет сходимость, однако может вызвать скачки wbgain.

Логика вычисления wbGainDampFactor: при небольшом изменении освещённости wbGainDampFactor стабилизируется на dFMax; при резком изменении приближается к dFMin. Вес текущего кадра увеличивается, чтобы wbgain быстрее следовал изменениям среды и ускорял сходимость. Код приведён ниже:

if (varianceLuma > LvVarTh) {
*wbGainDampFactor -= dFStep;
}
else {
*wbGainDampFactor += dFStep;
}
if (*wbGainDampFactor < dFMin) {
*wbGainDampFactor = dFMin;
}
else if (*wbGainDampFactor > dFMax) {
*wbGainDampFactor = dFMax;
}

Соответствует структуре autoExtPara.dampFactor в JSON.

Имя Описание
dFStep Шаг изменения wbGainDampFactor, 0-1.
dFMin Минимум wbGainDampFactor, 0-1.
dFMax Максимум wbGainDampFactor, 0-1.
LvIIRsize Число кадров записи освещённости, 0-255.
LvVarTh Порог дисперсии освещённости для изменения wbGainDampFactor, 0-255000.

2.2.19 Прочее

2.2.19.1 tolerance

Управляет обновлением wbgain. Для разных уровней освещённости lumaValue задаются разные пороги toleranceValue. Если средняя разность усилений баланса белого по всем каналам за несколько кадров, вычисленная стратегией AWB, меньше порога, используется wbgain предыдущего кадра. Число кадров задаёт weightForNightGainCalc_len. Соответствует структуре autoExtPara.tolerance в JSON.

Имя Описание
lumaValue Освещённость [0-255000]; настройка по lumaValueMatrix ниже.
toleranceValue Порог [0-1].
lumaValue_len/toleranceValue_len Число соответствующих конфигураций; длины равны, диапазон не ограничен.
2.2.19.2 runInterval

Задаёт интервал выполнения автоматического баланса белого в кадрах. Для разных уровней освещённости lumaValue можно задавать разные intervalValue. Соответствует структуре autoExtPara.runInterval в JSON.

Имя Описание
lumaValue Освещённость [0-255000]; настройка по lumaValueMatrix ниже.
intervalValue Число кадров [0-255].
lumaValue_len/intervalValue_len Число соответствующих конфигураций; длины равны, диапазон не ограничен.
2.2.19.3 lumaValueMatrix

Соответствует массиву autoExtPara.lumaValueMatrix в JSON.

Имя Описание
lumaValueMatrix Освещённость разделена на 15 уровней; начало каждого уровня в диапазоне 0-300000.
2.2.19.4 Определение сходимости баланса белого

Соответствует структуре autoExtPara.converged в JSON.

Имя Описание
varThforUnDamp Порог сходимости. AWB считается сошедшимся, если средняя разность усилений всех каналов за несколько кадров меньше varThforUnDamp до сглаживания и меньше varThforDamp после него. Число кадров задаётся weightForNightGainCalc_len. Диапазон 0.0-1, рекомендуется 0.06.
varThforDamp Смысл и диапазон как выше; рекомендуется 0.03.
2.2.19.5 Параметры выбора белых точек среднего, большого и дополнительного окон

Соответствует узлу autoExtPara.xyRegionStableSelection в JSON.

Имя Описание
enable Включает стабилизацию выбора среднего, большого и дополнительного окон белых точек.
xyTypeListSize xyRegionSize и LvVarTh стабилизируют выбор окна. Используется окно с большинством голосов за xyTypeListSize кадров. Если дисперсия освещённости за LvIIRsize кадров (см. сглаживание WBGain) меньше varianceLumaTh, выбор не обновляется и сохраняется предыдущее окно. Диапазон 0-1000.
varianceLumaTh Описание см. выше; диапазон 0-1000.
wpNumTh Задаёт пороги для разных уровней освещённости; текущий порог интерполируется линейно.
wpNumTh.lumaValue Освещённость, 0-255000.
wpNumTh.forBigType Число белых точек сравнивается с forBigType/100000*totalPixel; диапазон 0-100000.
wpNumTh.forExtraType Фактическое число белых точек сравнивается с forExtraType/100000*totalPixel; диапазон 0-100000.

При xyRegionSize = 0 или varianceLumaTh= 0 для каждого кадра применяется результат выбора окна по информации текущего кадра.

if(number of white dots in the middle frame> forBigType/100000*totalPixel){
Then the white point for calculating wbgain comes from the middle box
}else{
The white point for calculating wbgain comes from the large box
if(The number of white dots in the large box<=forExtraType/100000*totalPixel && The total number of white dots in the accessory white dot box > 0){
The white point for calculating wbgain comes from the additional white point box}
}

Примечания:

(1) Когда белые точки для вычисления wbgain берутся из дополнительного окна, параметры раздела «Вычисление WBGain стратегией разбиения» не действуют.

2.3 Калибровка

2.3.1 Основы калибровки AWB

В основном калибруются условия белой точки Raw в пространствах XY, UV и YUV, параметры алгоритма одноцветной сцены и усиление баланса белого при стандартных источниках света.

2.3.2 Требования к raw-изображениям для калибровки AWB

Для захвата RAW-изображений подготовьте следующие условия:

① Оборудование: 24-полевая цветовая мишень X-rite и световой бокс.

② Настройте экспозицию так, чтобы максимальное значение самого яркого белого поля мишени находилось в диапазоне [150-240]; в этом диапазоне предпочтительна большая яркость.

③ Мишень должна занимать более 1/9 изображения.

Последовательно снимите 24-полевую мишень X-rite при источниках A, CWF, D50, D65, D75, HZ и TL84. Пример демозаики приведён ниже:

Рисунок английского исходника, PDF p.38, #231

Рисунок английского исходника, PDF p.38, #231.

2.3.3 Интерфейс инструмента калибровки AWB

(1) Главный интерфейс AWB.

Рисунок английского исходника, PDF p.39, #234

Рисунок английского исходника, PDF p.39, #234.

(2) При калибровке в основном настраиваются границы белых точек в UV и XY и значение TH в YUV.

Рисунок английского исходника, PDF p.39, #236

Рисунок английского исходника, PDF p.39, #236.

Рисунок английского исходника, PDF p.40, #237

Рисунок английского исходника, PDF p.40, #237.

Настройка диапазона белых точек в UV и XY: a) перетаскивайте мышью углы области условий белой точки, изменяя положение и диапазон; b) перетаскивание в пустой области перемещает весь диапазон; c) колесо мыши изменяет масштаб.

(3) Панель Exclude WPC Range позволяет добавлять диапазоны небелых точек и белых точек дополнительного освещения.

(4) Кнопка AWB Simulaton в главном интерфейсе AWB открывает окно ниже. AWB Simulaton обнаруживает белые точки в raw-изображениях и подсчитывает их усиления и количество.

Рисунок английского исходника, PDF p.40, #241

Рисунок английского исходника, PDF p.40, #241.

① После загрузки Raw через LoadImage выводится информация о белых точках, как показано ниже. Точки разных источников света отмечаются разными цветами. Число точек среднего и большого окон и значения RGain и BGain отображаются в полях Detected WP Number, RGain и BGain.

Рисунок английского исходника, PDF p.41, #243

Рисунок английского исходника, PDF p.41, #243.

② Щелчок в любом месте изображения (чёрная стрелка ниже) отображает точку в интерфейсах условий UV и XY маленькими чёрными квадратами, позволяя проверить попадание в диапазон белых точек. Одновременно выводятся R G B U V X Y RGain BGain (красная рамка), а также you, th и расстояние отклонения от стандартной белой точки после отображения в YUV для каждого источника (три столбца зелёной рамки; в оригинале написано you).

Рисунок английского исходника, PDF p.41, #245

Рисунок английского исходника, PDF p.41, #245.

Рисунок английского исходника, PDF p.42, #246

Рисунок английского исходника, PDF p.42, #246.

2.3.4 Этапы калибровки AWB

(1) До калибровки AWB необходимо завершить калибровку BLC и LSC.

(2) Нажмите Load Raw Files и импортируйте raw-изображения для A, CWF, D50, D65, D75, HZ и TL84; рекомендуется калибровка по этим семи источникам.

(3) Нажмите Find Chart для распознавания мишени.

Рисунок английского исходника, PDF p.42, #251

Рисунок английского исходника, PDF p.42, #251.

① Последовательно нажмите Block 1, Block 6, Block 19, затем Block 20.

② Нажмите FindChart для пакетного распознавания полей мишени при всех источниках, как показано ниже; отображается результат обнаружения белых точек последнего источника.

Рисунок английского исходника, PDF p.43, #254

Рисунок английского исходника, PDF p.43, #254.

③ Выбирайте другие источники в раскрывающемся списке и проверяйте распознавание полей. В примере только последнее поле TL84 немного смещено вправо. Повторно обнаружьте его отдельно: выберите Find chart one by one в соответствующем режиме и повторяйте шаги 1 и 2, пока поля TL84 не будут определены правильно, как показано ниже.

Рисунок английского исходника, PDF p.43, #256

Рисунок английского исходника, PDF p.43, #256.

④ Нажмите Save для завершения распознавания.

(4) Нажмите Calibrate для получения начальных условий белых точек и других параметров ниже.

Рисунок английского исходника, PDF p.44, #259

Рисунок английского исходника, PDF p.44, #259.

Рисунок английского исходника, PDF p.44, #260

Рисунок английского исходника, PDF p.44, #260.

Источник U0 U1 U2 U3 U4 U5
A 50 54 70 78 110 142
CWF 50 54 70 78 110 142
D50 50 54 70 78 110 142
D65 50 54 70 78 110 142
D75 50 54 70 78 110 142
HZ 50 54 70 78 110 142
TL84 50 54 70 78 110 142
Источник Th0 Th1 Th2 Th3 Th4 Th5
A 0.2 0.2 0.2 0.76 1 4
CWF 0.2 0.2 0.2 0.76 1 4
D50 0.2 0.2 0.2 0.76 1 4
D65 0.2 0.2 0.2 0.76 1 4
D75 0.2 0.2 0.2 0.76 1 4
HZ 0.2 0.2 0.2 0.76 1 4
TL84 0.2 0.2 0.2 0.76 1 4

(5) Нажмите AWB Simulaton, импортируйте raw для A, CWF, D50, D65, D75, HZ и TL84 и проверьте точность обнаружения белых точек.

(6) Изменяйте окна UV или XY либо TH в YUV, повышая точность обнаружения белых точек мишени при каждом источнике.

(7) Нажмите Save.

(8) Повторяйте (5)–(7), пока обнаружение белых точек всех источников не станет приемлемым.

(9) Замечания:

① Настройте границы так, чтобы белые точки находились внутри окна, а небелые — снаружи; обычно полностью выполнить это невозможно.

② Диапазоны средних окон всех источников на траектории абсолютно чёрного тела должны быть непрерывными по x. Три типа линий обозначают три размера окон; в текущей версии малых окон нет.

Неправильный пример: диапазоны больших окон непрерывны, но между средними окнами есть разрыв, отмеченный стрелками ниже.

Рисунок английского исходника, PDF p.45, #269

Рисунок английского исходника, PDF p.45, #269.

Правильный пример:

Рисунок английского исходника, PDF p.45, #271

Рисунок английского исходника, PDF p.45, #271.

③ Для источников A и hz диапазон по y в XY можно сузить; для d50 и d65 диапазон по y в XY можно расширить.

④ Средние и большие окна источников с близкой цветовой температурой должны быть непрерывны по y: CWF и TL84.

⑤ Диапазоны всех источников в UV не должны иметь разрывов.

⑥ Границы разных источников могут пересекаться, но не одновременно в XY и UV.

⑦ Разделяйте пространство UV с учётом XY, чтобы исключить небелые точки.

Если обведённое седьмое поле при D75 попадает в диапазон hz, оно распознаётся как белая точка.

Рисунок английского исходника, PDF p.46, #278

Рисунок английского исходника, PDF p.46, #278.

После повторной настройки седьмое поле B при D75 не принадлежит одному источнику в XY и UV и поэтому не распознаётся как белая точка.

Рисунок английского исходника, PDF p.46, #280

Рисунок английского исходника, PDF p.46, #280.

⑧ Если небелая точка попадает в диапазоны белых точек XY и UV, её можно исключить уменьшением TH в YUV или добавлением диапазона небелых точек.

⑨ Если белая точка попадает в диапазоны XY и UV, но не признаётся белой, она может быть исключена из-за выхода за диапазон яркости, попадания в диапазон небелых точек либо из-за значения меньше TH, не позволяющего войти в диапазон белых точек YUV.

2.3.5 Проверка параметров калибровки AWB

Последовательно импортируйте калибровочные изображения и выполняйте обнаружение белых точек. В первую очередь обеспечьте низкую долю пропусков, затем соответственно уменьшайте ложные определения.

Итоговые условия белых точек:

Рисунок английского исходника, PDF p.47, #286

Рисунок английского исходника, PDF p.47, #286.

Результаты проверки белых точек:

Источник A

Рисунок английского исходника, PDF p.47, #289

Рисунок английского исходника, PDF p.47, #289.

CWF:

Рисунок английского исходника, PDF p.48, #291

Рисунок английского исходника, PDF p.48, #291.

D50

Рисунок английского исходника, PDF p.48, #293

Рисунок английского исходника, PDF p.48, #293.

D65

Рисунок английского исходника, PDF p.49, #295

Рисунок английского исходника, PDF p.49, #295.

D75

Рисунок английского исходника, PDF p.49, #297

Рисунок английского исходника, PDF p.49, #297.

HZ

Рисунок английского исходника, PDF p.50, #299

Рисунок английского исходника, PDF p.50, #299.

TL84

Рисунок английского исходника, PDF p.50, #301

Рисунок английского исходника, PDF p.50, #301.

2.4 Диагностика распространённых проблем

Для устранения аномалий баланса белого обычно требуется получить журналы и raw, проанализировать причину и изменить условия белых точек либо параметры стратегии.

2.4.0.1 Получение и анализ журналов

Для отладочного журнала AWB используется команда export persist_camera_engine_log=0x2ff4.

2.4.0.1.1 Интерпретация A (заголовок оригинала)
2.4.0.2 Интерпретация журнала AWB (на примере вывода последовательного порта или adb)
2.4.0.2.1 (1) Журнал управления и режима

Рисунок английского исходника, PDF p.51, #309

Рисунок английского исходника, PDF p.51, #309.

Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:

[AWB]:XCAM INFO (1782) rk_aiq_awb_algo_v201.cpp:1979: AwbInitV201: (enter)
[AWB]:XCAM INFO (1782) rk_aiq_awb_algo_v201.cpp:2040: AwbInitV201: (exit)
[AWB]:XCAM INFO (1782) rk_aiq_awb_algo_v201.cpp:2070: AwbPrepareV201: (enter)
[AWB]:XCAM INFO (1782) rk_aiq_awb_algo_v201.cpp:2148: hdr_working_mode(0), remosaic_cfg.enable (0)
[AWB]:XCAM INFO (1782) rk_aiq_awb_algo_v201.cpp:2149: AwbPrepareV201: (exit)
[AWB]:XCAM INFO (1782) rk_aiq_awb_itf.cpp:102: ---------------------------------------------frame_id (-1)---------------------------------------------
[AWB]:XCAM DEBUG rk_aiq_awb_algo_v201.cpp:2469: AwbReconfigV201: byPass: 0  mode( 0-manual 1-auto):1
[AWB]:XCAM INFO (1782) rk_aiq_awb_itf.cpp:250: processing awb_gain_algo (1.905082,1.000000,1.000000,1.978512)
[AWB]:XCAM INFO (1782) rk_aiq_awb_itf.cpp:102: ---------------------------------------------frame_id (0)---------------------------------------------

hdr_working_mode, равный 0, означает обычный режим; иначе используется HDR.

byPass, равный 0, означает включённую коррекцию баланса белого; 1 означает отключённую.

mode, равный 0, означает ручной баланс белого; 1 означает автоматический.

frame_id — идентификатор кадра.

processing awb_gain_algo — итоговый wbgain на выходе модуля.

2.4.0.2.2 (2) Уровень журнала AWB export persist_camera_engine_log=0x2ff2 для общей диагностики

Рисунок английского исходника, PDF p.51, #317

Рисунок английского исходника, PDF p.51, #317.

Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:

2: ---------------------------------------------frame_id (1)---------------------------------------------
68: ***1th calculate wbgain***
52: AwbGainClip, Input CCT : 5800.018555, CRI : -0.124677
09: AwbGainClip, Output CCT : 5800.018555, CRI : -0.124677
09: AwbGainAdjust2, Input CCT : 5800.018555, CRI : -0.124677
50: AwbGainAdjust2, Output CCT : 5800.018066, CRI : -0.124677
3:
7: wbgain_s5(after damping)(rggb):(2.146030,1.000000,1.000000,2.072558), awbConverged(0) ,LVValue(6054), WPType(3),df(0.75), frameChoose(0)
0: WPNo(normal,big):(203,208),valid wp number in standard light(187), valid wp number in extra light(0),
2: select white point range type (0-normal xy range,1-big xy range, 3-extra light) : 0, runInterval(0),tolerance(0.000000)
41:
0: processing awb_gain_algo (2.146030,1.000000,1.000000,2.072558)

Input и output AwbGainClip — CCT и CRI соответственно до и после ограничения диапазона wbgain.

Input и output AwbGainAdjust2 — CCT и CRI соответственно до и после коррекции оттенка.

wbgain_s5 равен сглаженному wbgain и обычно равен processing awb_gain_algo; awbConverged 0 и 1 означают соответственно отсутствие и достижение сходимости AWB.

LVValue — освещённость сцены.

WPType соответствует диапазону разбиения стратегии.

df — текущий коэффициент сглаживания wbGainDampFactor.

frameChoose 0, 1 и 2 означают использование короткого, среднего и длинного кадров соответственно как входа аппаратной статистики AWB.

WPNo — число белых точек среднего и большого окон.

VAILD WP Number in Standard Light — число действительных белых точек всех источников.

Select White Point Range Type 0 и 1 означают статистику белых точек соответственно среднего и большого окон.

runInterval — интервал выполнения в кадрах.

Если изменение wbgain меньше tolerance, wbgain не обновляется.

2.4.0.2.3 (3) Уровень журнала AWB export persist_camera_engine_log=0x2ff3 для диагностики условий белых точек и стратегии

Рисунок английского исходника, PDF p.52, #332

Рисунок английского исходника, PDF p.52, #332.

Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:

tf.cpp:102: ---------------------------------------------frame_id (91)---------------------------------------------
om1.cpp:868: ***91th calculate wbgain***
om2.cpp:352: AwbGainClip, Input CCT : 6534.665527, CRI : -0.122040
p:389: AwbGainClip wb gain clip, because current cri(-0.122040)< upper bound cri(-0.120000)
p:407: AwbGainClip, wbgain_s3 (rggb) (2.319863,1.000000,1.000000,1.746177)
om2.cpp:409: AwbGainClip, Output CCT : 6534.665527, CRI : -0.120000
om2.cpp:609: AwbGainAdjust2, Input CCT : 6534.665527, CRI : -0.120000
p:649: AwbGainAdjust2, wbgain_s4(2.319863,1.000000,1.000000,1.746177)
om2.cpp:650: AwbGainAdjust2, Output CCT : 6534.664551, CRI : -0.120000
p:847: Global CCT:6524.882812,CCRI:-0.119850,valid:1
p:860: ill:D65 prob: 0.923094, CCT:6514.593750, CCRI:-0.121243, valid:1
p:860: ill:D75 prob: 0.076906, CCT:6775.584961, CCRI:-0.131615, valid:1
p:860: ill:A prob: 0.000000, CCT:0.000000, CCRI:0.000000, valid:0
p:860: ill:CWF prob: 0.000000, CCT:4577.164551, CCRI:-0.118429, valid:1
201.cpp:43:
201.cpp:47: wbgain_s5(after damping)(rggb):(2.317371,1.000000,1.000000,1.750428), awbConverged(1) ,LVValue(1498), WPType(3),df(0.90), frameChoose(0)
201.cpp:50: WPNo(normal,big):(12374,12429),valid wp number in standard light(12282), valid wp number in extra light(0),
201.cpp:52: select white point range type (0-normal xy range,1-big xy range, 3-extra light) : 0, runInterval(0),tolerance(0.000000)
p:63: temporalDefaultGain for wbGainType3 (rggb):(1.327034,1.000000,1.000000,3.314321), weight (0.000000)
p:65: wbGainType1 (rggb):(0.000000,0.000000,0.000000,0.000000)
p:67: wbGainType3(rggb):(2.321654,1.000000,1.000000,1.747155)
p:70: wbgain_s1 (mix wbGainType1 and wbGainType3 ) :(2.321654,1.000000,1.000000,1.747155) is updated (1), weight of wbGainType3
p:108: A:
p:112:      stategy_result.gain (rggb):(0.000000,0.000000,0.000000,0.000000)
p:114:      prob_total(0.000000),prob_dis(0.056154),prob_LV(0.142857),prob_WPNO(0.000000)
p:116:      spatial gain(rggb):(1.883842,1.000000,1.000000,2.821964),statistics gain weigth(1.000000)
p:132:      type0: gain (rg,bg):(0.000000,0.000000) WPNo(0)
p:132:      type1: gain (rg,bg):(0.000000,0.000000) WPNo(0)
p:108: CWF:
p:112:      stategy_result.gain (rggb):(1.846224,1.000000,1.000000,2.610467)
p:114:      prob_total(0.000000),prob_dis(0.148655),prob_LV(0.142857),prob_WPNO(0.000000)
p:116:      spatial gain(rggb):(1.883842,1.000000,1.000000,2.821964),statistics gain weigth(1.000000)
p:132:      type0: gain (rg,bg):(1.846224,2.610467) WPNo(18)
p:132:      type1: gain (rg,bg):(1.860870,2.614064) WPNo(20)
p:108: D50:
p:112:      stategy_result.gain (rggb):(2.087728,1.000000,1.000000,2.081820)
p:114:      prob_total(0.000000),prob_dis(0.207562),prob_LV(0.142857),prob_WPNO(0.000000)
p:116:      spatial gain(rggb):(1.883842,1.000000,1.000000,2.821964),statistics gain weigth(1.000000)
p:132:      type0: gain (rg,bg):(2.087728,2.081820) WPNo(74)
p:132:      type1: gain (rg,bg):(2.092266,2.077117) WPNo(78)
p:108: D65:
p:112:      stategy_result.gain (rggb):(2.316112,1.000000,1.000000,1.755642)
p:114:      prob_total(0.923094),prob_dis(0.216764),prob_LV(0.142857),prob_WPNO(0.923058)
p:116:      spatial gain(rggb):(1.883842,1.000000,1.000000,2.821964),statistics gain weigth(1.000000)
p:132:      type0: gain (rg,bg):(2.316112,1.755642) WPNo(11337)
p:132:      type1: gain (rg,bg):(2.316112,1.755642) WPNo(11337)
p:108: D75:
p:112:      stategy_result.gain (rggb):(2.388181,1.000000,1.000000,1.645277)
p:114:      prob_total(0.076906),prob_dis(0.216654),prob_LV(0.142857),prob_WPNO(0.076942)
p:116:      spatial gain(rggb):(1.883842,1.000000,1.000000,2.821964),statistics gain weigth(1.000000)
p:132:      type0: gain (rg,bg):(2.388181,1.645277) WPNo(945)
p:132:      type1: gain (rg,bg):(2.389237,1.646780) WPNo(994)
p:108: Hz:

Этапы обработки от stat type0: gain до итогового processing awb_gain_algo:

type0: gain ==> stategy_result.gain ==> wbGainType1+wbGainType3 ==> wbgain_s1 ==> wbgain_s3 (после AwbGainClip) ==> wbgain_s4 (AwbGainAdjust, после коррекции оттенка) ==> wbgain_s5 (damp, после сглаживания) ==> processing awb_gain_algo

①

Рисунок английского исходника, PDF p.52, #336

Рисунок английского исходника, PDF p.52, #336.

Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:

: Global
: CCT:4342.158203,CCRI:0.072367

: ill:A prob: 0.372926
: CCT:3058.074463,CCRI:0.034103

: ill:D50 prob: 0.369272
: CCT:5710.621582,CCRI:0.096392

: ill:TL84 prob: 0.233994
: CCT:4246.391602,CCRI:0.107421

: ill:CWF prob: 0.014538
: CCT:4403.761719,CCRI:-0.060823

Эта вспомогательная информация характеризует цветовую температуру сцены. Global — общая цветовая температура; ill перечисляет вероятности и цветовые температуры первых источников, участвующих в вычислении WBGain.

② temporalDefaultGain for wbGainType3 и weight — соответственно temporalDefaultGain в wbGainType3 и его вес.

③ wbGainTepType1 — WBGain, вычисленный WpType1.

④ wbGainType3 — WBGain, вычисленный WpType3; wbWeightType3 — его вес. Вес WpType1 равен 1-wbWeightType3.

⑤ wbgain_s1 — результат взвешивания wbGainTepType1 и wbGainType3; weight — вес wbGainType3.

⑥ stategy_result.gain — WBGain каждого источника.

⑦ prob_total (0.372926), prob_dis (0.151197), prob_LV (0.142857) и prob_WPNO (0.383987) обозначают соответственно общую вероятность, вероятность по расстоянию, яркости и числу белых точек каждого источника.

⑧ spatial gain (rggb) :(1.745900, 1.000000, 1.000000, 1.824126) и statistics gain weigth (1.000000) обозначают соответственно dayGain (WBGain стратегии) каждого источника и вероятность использования WBGain статистических белых точек. Вероятность WBGain стратегии равна 1 - statistics gain weigth.

⑨ type0: gain (rg,bg):(1.287584,2.843158) WPNo(7707) — усиление баланса белого и число белых точек среднего окна.

⑩ type1: gain (rg,bg):(1.291619,2.862351) WPNo(8557) — усиление баланса белого и число белых точек большого окна.

2.4.1 Диагностика по журналу

① Если WPNo мало, хотя в сцене есть белые точки, следует перенастроить условия их обнаружения.

② Проверьте, равен ли statistics gain weigth каждого источника 1 и влияет ли усиление стратегии.

③ Проверьте, равен ли вес wbWeightType3 1:

Если белых точек действительно мало, но wbGainType3 лучше соответствует реальной цветовой температуре, измените WP_THL и WP_THH, отнеся текущую сцену к WpType3.

В остальных случаях выполняйте настройку согласно первым двум пунктам.

2.4.2 Захват RAW и моделирование

Если требуется перенастроить условия белых точек либо журнал не выявляет проблему, захватите raw для моделирования обнаружения и изучения статистики белых точек каждого источника.

2.4.2.1 (1) Пример 1

Справа показана проблемная сцена, слева — результат перенастройки условий белых точек по захваченному изображению.

Рисунок английского исходника, PDF p.54, #357

Рисунок английского исходника, PDF p.54, #357.

Порядок действий:

① Захватите изображение 1.

② Откройте RKISPCalibrationTool и импортируйте json.

③ Чтобы видеть распределение белых и небелых полей мишени при стандартных источниках, снова импортируйте все калибровочные изображения через Load Raw Files и нажмите FindChart для распознавания. Не нажимайте Calibrate. Нажмите Draw WPC From IQ Param для загрузки условий белых точек и отображения распределения полей.

Рисунок английского исходника, PDF p.54, #362

Рисунок английского исходника, PDF p.54, #362.

④ В AWB Simulation нажмите Load Image и импортируйте raw-изображение 1. Изображение и результат обнаружения белых точек обновятся одновременно, как показано ниже.

Рисунок английского исходника, PDF p.55, #364

Рисунок английского исходника, PDF p.55, #364.

Обнаруженных белых точек очень мало, а изображение действительно тёмное. Подобные серые области, обведённые ниже, должны определяться как белые точки.

Рисунок английского исходника, PDF p.55, #366

Рисунок английского исходника, PDF p.55, #366.

⑤ Щёлкните серую область изображения.

Проверьте попадание отображённой точки в диапазоны белых точек XY и UV. Если она вне диапазонов, измените условия так, чтобы включить её.

AWB Simulaton также показывает R G B и Y точки. Сравните их с limitRange в JSON. При выходе за диапазон можно немного расширить limit Range. У очень тёмных и ярких точек шум либо насыщение канала отклоняет Rgain и Bgain от реальных значений, поэтому требуется компромисс при выборе диапазона.

Если точка находится внутри limitRange и диапазонов XY и UV, но не определяется как белая, проверьте TH в YUV. В дальнейшем AWB Simulaton также показывает th точки; используйте это значение для настройки TH в YUV.

⑥ После настройки нажмите Save в AWB, затем Run Simlation в AWB Simulation для повторного моделирования.

После изменения диапазонов XY и UV обнаружение белых точек имеет вид ниже; аномалия баланса белого в примере устранена.

Рисунок английского исходника, PDF p.56, #373

Рисунок английского исходника, PDF p.56, #373.

2.4.2.2 (2) Пример 2 (обновлённый интерфейс моделирования)
2.4.2.2.1 a. Получение RAW онлайн (пока не поддерживается)

После соединения инструмента с платой кнопка Get online Image получает изображение онлайн и автоматически обновляет результаты моделирования, упрощая отладку относительно примера 1. Остальные шаги приведены в пунктах ④⑤⑥ примера 1.

Рисунок английского исходника, PDF p.57, #377

Рисунок английского исходника, PDF p.57, #377.

Примечание: полученное изображение сохраняется в корневом каталоге инструмента с расширением .dat2, например awbinput_rgb_w2880_h1616_ds1_fr1453492.dat2. Load Image этого интерфейса также поддерживает данный формат.

2.4.2.2.2 b. Просмотр белых точек среднего и большого окон и точек дополнительных и исключающих окон

Соответствующие кнопки показывают белые точки среднего и большого окон и точки дополнительных и исключающих окон. В оригинале здесь оставлена неотрисованная ссылка: ! [image-20230201154517001] (Rockchip_color_optimization_guide_isp2x_pngimage-20230201154517001.png).

2.4.2.2.3 c. Вычисление общего WBGAIN

Неотрисованная ссылка на изображение в оригинале: ! [image-20230201155238824] (Rockchip_color_optimization_guide_isp2x_pngimage-20230201155238824.png).

Итоговый WBGAIN вычисляется взвешиванием белых точек каждого источника. Это отличается от реального алгоритма, содержащего дополнительные стратегии. В рисунке, на который ссылается оригинал, среднее окно содержит 38125 точек с wbgain (1.549, 1.665), большое — 38742 точки с wbgain (1.548, 1.666).

Красную область можно редактировать, изменяя вес. При изменении WP Number автоматически обновляются prob справа и соответствующие данные строки Statistics.

2.4.2.2.4 d. Офлайн-моделирование BLC-LSC-WB-CCM-GAMMA

Функция позволяет просматривать влияние разных WBgain для отладки AWB, влияние LSC разных источников для отладки LSC, а также проверять аномалии RAW и выполнять подобные проверки.

Рисунок английского исходника, PDF p.58, #388

Рисунок английского исходника, PDF p.58, #388.

Нажмите Run Simulator2 для получения результата blc-lsc-wb-ccm-gamma. Применяемые данные BLC, LSC, CCM и Gamma берутся из JSON и выводятся в окне журнала калибровки.

Рисунок английского исходника, PDF p.59, #390

Рисунок английского исходника, PDF p.59, #390.

Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:

Width: 2560
Height: 1440
Bits: 10 bit
Bayer: BGGR
->Info: Load JsonIQ normal: day
->INFO: load
sc4336_OT01_40IRC_F16.json
successfully.
->INFO(AWB): init uv/xy wpc ok.
->INFO(AWB): use D65 CCM parameter.
->INFO(AWB): ccmMatrix:1.3683,-0.3732
,0.0049
->INFO(LSC): Raw Image loaded
successfully.
->Info: Load JsonIQ normal: day
->INFO: load
sc4336_OT01_40IRC_F16.json
successfully.
->INFO(AWB): init uv/xy wpc ok.
->INFO(AWB): use TL84 CCM parameter.
->INFO(AWB): ccmMatrix:1.2447,-0.2877
,0.0429
->INFO(AWB): Raw Image loaded
successfully.
->INFO(AWB): Load
rkisp_sc4336_D75_2560_1440_10bpp_1.80x
_0.0400s_normal_normL_single_104803899
.raw successfully
->INFO(AWB): BlcValue(12bit)= 254 ,254
,254 ,254
->INFO(AWB): D75 use D50 LSC
parameter.
->INFO(AWB): R:2246 ,1970 ,1760 ,1607
->INFO(AWB): Gr:2211 ,1901 ,1702 ,1578
->INFO(AWB): Gb:2264 ,1942 ,1757 ,1626
->INFO(AWB): B:2197 ,1979 ,1747 ,1625
->INFO(AWB): D75 use A CCM parameter.
->INFO(AWB): ccmMatrix:1.2380,-0.7220
,0.4840

Применяемый wbgain берётся из среднего окна. Его можно отредактировать непосредственно, затем нажать Run Simulator2 для обновления моделирования.

2.4.2.3 (3) Пример 3 (настройка YUV TH)

Для проверки, вызван ли пропуск белых точек неверной настройкой yuv th, выполните следующие действия:

a. Определите текущий источник по диапазонам XY и UV, в которые попадает точка.

b. В AWB Simulator проверьте, превышает ли distance соответствующей строки источника TH. Если да:

Определите столбцы строки источника, соответствующие U условия YUV, и увеличьте их th.

Конкретные действия:

На рисунке ниже поле 22 мишени не полностью распознано как белое. Причина — distance > th (0.3125>0.1875) для источника D65.

Рисунок английского исходника, PDF p.60, #399

Рисунок английского исходника, PDF p.60, #399.

Для D65 точка отображается в u 60 между u1(54) и u2(70). Поэтому настройте соответствующие пороги th1 и th2, как показано ниже, и определяйте направление изменения по результатам обнаружения белых точек.

Рисунок английского исходника, PDF p.60, #401

Рисунок английского исходника, PDF p.60, #401.

Примечание:

Исключение небелых точек посредством yuv th выполняется аналогично, но порог уменьшается; при этом нельзя нарушать обнаружение белых точек.

2.4.3 Примеры особых проблем

(1) В приложении сетевой камеры выбран режим естественного освещения, из-за чего автоматический баланс белого не включён.

По журналу текущее значение mode=1; оригинал называет его ручным режимом.

Рисунок английского исходника, PDF p.60, #407

Рисунок английского исходника, PDF p.60, #407.

Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:

[09:51:39.57935][AWB]:XCAM DEBUG rk_aiq_awb_algo_v200.cpp:2795: AwbReConfigV200: byPass: 0  mode:1

Изменение режима баланса белого устранило проблему.

(2) При калибровке белые точки источников HZ и A распределялись несосредоточенно.

Рисунок английского исходника, PDF p.61, #410

Рисунок английского исходника, PDF p.61, #410.

Фактический результат ниже показывает неверный баланс белого.

Рисунок английского исходника, PDF p.61, #412

Рисунок английского исходника, PDF p.61, #412.

Последующая проверка выявила неподходящий ИК-фильтр, не отсекавший ближний инфракрасный диапазон. Замена фильтра устранила проблему.

(3) Колебания оценки источника модулем CC вызывают колебания цвета.

Рисунок английского исходника, PDF p.61, #415

Рисунок английского исходника, PDF p.61, #415.

Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:

Find result - 143 hits
Line 5698: [00:02:57.712232][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.262492,0.988665, estimation illuminant is D50(2)
Line 5699: [00:02:57.712232][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.262492,0.988665, estimation illuminant is D50(2)
Line 5809: [00:02:57.811349][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.262492,0.988665, estimation illuminant is D50(2)
Line 5810: [00:02:57.811349][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.262492,0.988665, estimation illuminant is D50(2)
Line 5920: [00:02:58.561261][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.267507,0.983502, estimation illuminant is D50(2)
Line 5921: [00:02:58.561261][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.267507,0.983502, estimation illuminant is D50(2)
Line 6031: [00:02:58.155059][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.267507,0.983502, estimation illuminant is D50(2)
Line 6032: [00:02:58.155059][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.267507,0.983502, estimation illuminant is D50(2)
Line 6142: [00:02:58.366345][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.271833,0.979029, estimation illuminant is D50(2)
Line 6143: [00:02:58.366345][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.271833,0.979029, estimation illuminant is D50(2)
Line 6253: [00:02:58.465620][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.271833,0.979029, estimation illuminant is D50(2)
Line 6254: [00:02:58.465620][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.271833,0.979029, estimation illuminant is D50(2)
Line 6364: [00:02:58.577856][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.271833,0.979029, estimation illuminant is D50(2)
Line 6365: [00:02:58.577856][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.271833,0.979029, estimation illuminant is D50(2)
Line 6475: [00:02:58.776105][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.275650,0.975244, estimation illuminant is D65(3)
Line 6476: [00:02:58.776105][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.275650,0.975244, estimation illuminant is D65(3)
Line 6586: [00:02:58.987769][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.279142,0.971930, estimation illuminant is D65(3)
Line 6587: [00:02:58.987769][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.279142,0.971930, estimation illuminant is D65(3)
Line 6697: [00:02:59.85831][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.279142,0.971930, estimation illuminant is D65(3)
Line 6698: [00:02:59.85831][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.279142,0.971930, estimation illuminant is D65(3)
Line 6808: [00:02:59.296966][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.282218,0.968997, estimation illuminant is D65(3)
Line 6809: [00:02:59.296966][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.282218,0.968997, estimation illuminant is D65(3)
Line 6919: [00:02:59.409406][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.282218,0.968997, estimation illuminant is D65(3)
Line 6920: [00:02:59.409406][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.282218,0.968997, estimation illuminant is D65(3)
Line 7030: [00:02:59.522048][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.282218,0.968997, estimation illuminant is D65(3)
Line 7031: [00:02:59.522048][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.282218,0.968997, estimation illuminant is D65(3)
Line 7141: [00:02:59.719781][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.285019,0.966382, estimation illuminant is D65(3)
Line 7142: [00:02:59.719781][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.285019,0.966382, estimation illuminant is D65(3)
Line 7252: [00:02:59.945211][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.287606,0.963857, estimation illuminant is D65(3)
Line 7253: [00:02:59.945211][ACCM]:XCAM DEBUG rk_aiq_accm_algo.cpp:56: wbGain:1.287606,0.963857, estimation illuminant is D65(3)

Увеличьте value узла tolerance в JSON. Если изменение wbgain меньше этого значения, обновление не выполняется, что повышает стабильность. В примере параметр XML изменён на значение ниже.

<tolerance index="1" type="struct" size="[1 1]">
    <LV index="1" type="double" size="[1 4]">
        [0 64 128 256.0000 ]
    </LV>
    <value index="1" type="double" size="[1 4]">
        [0.05 0.05 0.05 0.05 ]
    </value>
</tolerance>

3 Базовая коррекция цвета CCM

3.1 Описание функции

Спектральная характеристика датчика не может точно совпасть с откликом человеческого зрения. Матрица цветокоррекции CCM корректирует перекрёстное влияние и интенсивность спектрального отклика, приближая цвет захваченного изображения к человеческому восприятию.

Инструмент калибровки CCM поддерживает предварительную калибровку матрицы 3×3 CCM (aij) по 24-полевой мишени.

Рисунок английского исходника, PDF p.62, #422

Рисунок английского исходника, PDF p.62, #422.

[R_CC, G_CC, B_CC]^T = [[a11,a12,a13],[a21,a22,a23],[a31,a32,a33]] * [R_camera,G_camera,B_camera]^T

Поддерживаются несколько CCM для разных цветовых температур. Во время работы ISP глобальная или локальная насыщенность изменяется по узлу gain параметров IQ, динамически корректируя коэффициенты CCM.

Рисунок английского исходника, PDF p.62, #424

Рисунок английского исходника, PDF p.62, #424.

[R_CC,G_CC,B_CC]^T = alpha * scale * [[a11-1,a12,a13],[a21,a22-1,a23],[a31,a32,a33-1]] * [R_camera,G_camera,B_camera]^T + [R_camera,G_camera,B_camera]^T

3.2 Основные параметры

Параметры ISP находятся в узле ccm_calib файла IQ json и действуют только в автоматическом режиме.

3.2.1 Включение и выбор режима

В узле control.

Параметр Описание
enable Переключатель цветокоррекции, 0 или 1; 1 включает.
wbgain_tolerance Допуск изменения усиления баланса белого для цветокоррекции. Разность статистических усилений ниже порога означает стабильность; диапазон 0.0-1, рекомендуется 0.3.
gain_tolerance Допуск изменения усиления экспозиции для цветокоррекции. Разность статистических усилений ниже порога означает стабильность; диапазон 0.0-1, рекомендуется 0.5.

3.2.2 Коррекция яркости и насыщенности

В узле lumaCCM.

3.2.2.1 Коррекция насыщенности по яркости пикселя

Для пикселей заданного диапазона Y можно изменять интенсивность цветокоррекции.

Параметр Описание
RGB2Y_para Коэффициенты RGB в Y, 7-разрядная фиксированная точка; целые [0,128], настраиваются.
low_bound_pos_bit Порог яркости для зависимости интенсивности CC от Y пикселя; целое [0,10].
y_alpha_curve Интенсивность alpha для яркости Y. 1024 означает единичную интенсивность, 0 — отсутствие коррекции; целое [0,1024].

Рисунок английского исходника, PDF p.63, #435

Рисунок английского исходника, PDF p.63, #435.

Рисунок: Y-CcAlpha.

3.2.2.2 Глобальная коррекция насыщенности

В узле gain_alphaScale_curve.

Разным усилениям экспозиции соответствуют разные масштабы интенсивности коррекции, задаваемые параметрами gain_alphaScale_curve.

Параметр Описание
gain Компонент усиления экспозиции gain-scale, дробный, больше 0.
scale Компонент интенсивности коррекции gain-scale, дробный, [0,1].

3.2.3 Параметры автоматической CCM

В узле TuningPara.

Параметр Описание
damp_enable Сглаживание CCM, 0 или 1; 1 включает функцию.
3.2.3.1 Выбор способа вычисления матрицы CCM

Модуль CCM использует два способа: (1) выбирает параметры CCM источника с минимальным евклидовым расстоянием между стандартным усилением баланса белого и статистическим значением; (2) взвешивает матрицы CCM вероятностями расстояния между стандартным и статистическим усилениями каждого источника. Вероятность расстояния prob вычисляется следующим образом:

Векторные формулы вероятности расстояния

dist = sqrt((Rgain-awbGain[0])^2 * wr + (Bgain-awbGain[1])^2 * wb)
prob = exp(-dist^2 / sigma^2)

Здесь Rgain и Bgain — статистические усиления баланса белого, awbGain — стандартные усиления каждого источника, wr и wb — веса каналов R и B, sigma — стандартное отклонение dist всех источников.

В узле illu_estim.

Параметр Описание
interp_enable Взвешенное вычисление CCM, 0 или 1; 1 включает.
3.2.3.2 Взвешенное вычисление матрицы CCM

В узле illu_estim.

Параметр Описание
default_illu Имя источника по умолчанию. При равных вероятностях расстояния используются его параметры CCM.
weightRB Вес канала R(G)gain (обозначение R(G) сохранено из оригинала).
prob_limit Нижняя граница вероятности расстояния; источники ниже неё не участвуют в вычислении CCM.
frame_no Число кадров сглаживания. Для взвешивания CCM берётся средняя вероятность расстояния за frame_no кадров.
3.2.3.3 Параметры управления выбором CCM

Параметры источника выбираются автоматически по усилению баланса белого. Для одного источника можно задать CCM с разной насыщенностью sat для разных усилений экспозиции gain.

В узле aCcmCof.

Параметр Описание
name Имя источника.
awbGain Стандартное усиление баланса белого источника, формируется калибровкой, больше 0.
minDist Порог расстояния усиления баланса белого источника, формируется калибровкой и используется для вероятности расстояния. При dist ниже порога prob источника устанавливается в 1.
matrixUsed CCM.
gains Компонент усиления экспозиции gains-sat, дробный, больше 0.
sat Компонент насыщенности gains-sat, дробный, больше 0.
3.2.3.4 Параметры CCM
Параметр Описание
Name Имя CCM.
illumination Имя источника.
saturation Соответствующая насыщенность, формируется калибровкой, не меньше 0.
ccMatrix Матрица цветокоррекции, формируется калибровкой; дробные значения [-8,7.992].
ccOffsets Смещения RGB, формируются калибровкой, [-4096,4095].

3.3 Калибровка CCM

Выполните калибровку CCM согласно Rockchip_IQ_Tools_Guide_ISP2x_CN.

3.3.1 Захват данных RAW

3.3.1.1 Выбор источников для калибровки

Семь источников с разной цветовой температурой: D50, D65, D75, A, CWF, HZ, TL84.

3.3.1.2 Этапы захвата

Шаг 1. Разместите мишень в центре задней стенки светового бокса, обеспечив равномерный свет слева и справа. При высоких требованиях к цвету рядом можно разместить соответствующий образец, например телесного тона, для проверки результата.

Шаг 2. Настройте экспозицию так, чтобы ни одно поле после gamma не было переэкспонировано. Рекомендуется автоматическая экспозиция.

Шаг 3. Измените расстояние при съёмке так, чтобы мишень занимала 1/9 кадра.

3.3.2 Калибровка

3.3.2.1 Этапы

Шаг 1. Импорт RAW и выбор 24 цветовых областей описаны в разделе 4.5 «CCM Calibration» документа Rockchip_IQ_Tools_Guide_ISP2x_CN.

Шаг 2. Настройте параметры калибровки.

(1) Задайте gamma: выберите кривую, которую будет использовать камера. Поддерживаются Normal, HDR, Night и пользовательская кривая.

(2) Задайте веса полей в таблице 6×4; положение ячеек соответствует положению полей мишени.

(3) Нажмите Calibrate для калибровки и получения CCM. Вручную меняйте Saturation на странице Calibration, пока исправленное изображение либо диаграмма цветовых различий в Result не удовлетворит требованиям.

3.3.2.2 Диаграммы цветовых различий

Анализируйте отклонённый компонент по направлению и расстоянию относительно стандартного поля на диаграмме:

(1) Если поле камеры дальше от начала координат, чем идеальное, насыщенность камеры выше идеальной.

(2) Если поле камеры ближе к началу координат, чем идеальное, насыщенность камеры ниже идеальной.

Пример:

Рисунок английского исходника, PDF p.67, #479

Рисунок английского исходника, PDF p.67, #479.

Насыщенность камеры для поля 15 (красного) и поля 14 (зелёного) ниже IDEA, но отклонение относительно небольшое.

Поле 13 (синее) смещено к пурпурному; человеческое зрение также может воспринимать его пурпурным, поэтому отклонение допустимо.

Обычно необходимо ограничить отклонения полей 13–15: они приблизительно представляют три основных цвета, комбинациями которых образуются остальные.

При цветовом сдвиге полей 13–15 либо других важных полей увеличьте их веса, учитывая влияние на отклонения остальных полей.

3.3.2.3 Замечания

(1) При выборе 24 цветовых областей не включайте чёрные края полей.

(2) Изменение gamma может потребовать повторной калибровки CCM, поэтому сначала лучше настроить gamma.

(3) Неподходящая яркость калибровочного изображения влияет на насыщенность CCM: слишком яркий RAW даёт низкую насыщенность CCM, слишком тёмный — высокую.

(4) Рекомендуемые объективные показатели приведены ниже, но зависят от проекта; не следует ориентироваться только на них.

Рисунок английского исходника, PDF p.68, #489

Рисунок английского исходника, PDF p.68, #489.

Источник / применение Показатель Рекомендация оригинала
D65 (внешний) Насыщенность 110-120%
D65 (внешний) mean(ΔC) <10
D65 (внешний) max(ΔC) <20
D65 (внешний) mean(ΔE) <15
TL84 (только внутренний) Насыщенность 110-120%
TL84 (только внутренний) mean(ΔC) <10
TL84 (только внутренний) max(ΔC) <20
TL84 (только внутренний) mean(ΔE) <12
Coolwhite (только внутренний) Насыщенность 110-125%
Coolwhite (только внутренний) mean(ΔC) <10
Coolwhite (только внутренний) max(ΔC) <20
Coolwhite (только внутренний) mean(ΔE) <12
A (только внутренний) Насыщенность 110-120%
A (только внутренний) mean(ΔC) <10
A (только внутренний) max(ΔC) <22
A (только внутренний) mean(ΔE) <12

3.4 Коррекция цвета

3.4.1 Коррекция общей насыщенности

3.4.1.1 Настройка gain_alphaScale_curve

Настраивайте scale в диапазоне [0, 1.0], изменяя итоговую интенсивность цветокоррекции. Меньший scale снижает насыщенность, больший повышает её.

3.4.1.2 Настройка gains-sat

Меньший SAT снижает насыщенность, больший повышает её. Для разных источников можно задавать разные параметры.

3.4.1.3 Добавление CCM высокой насыщенности

Если максимальные значения первых двух настроек недостаточны, перекалибруйте CCM с большей насыщенностью и установите максимальный sat в gains-sat равным увеличенной насыщенности.

3.4.1.4 Уменьшение насыщенности тёмных пикселей

Уменьшение y_alpha_curve снижает насыщенность тёмных пикселей. Последнее значение должно быть 1024, иначе изменится насыщенность пикселей другой яркости.

3.4.2 Коррекция отдельных цветов

Если после общей настройки насыщенности цвет не соответствует ожиданиям, попробуйте следующее:

(1) Для соответствия человеческому зрению сначала проверьте правильность баланса белого.

(2) Для совпадения с эталонной камерой сначала проверьте совпадение баланса белого.

(3) Для совпадения с эталонной камерой также проверьте близость яркости.

(4) Если баланс белого согласован либо правилен, а яркость близка, но цвет всё ещё не устраивает, измените параметры CCM.

3.4.2.1 Проверка правильности баланса белого

Главное: имеет ли белый объект цветовой оттенок.

Методы:

Визуально проверьте, выглядит ли белый объект в видео белым.

Захватите изображение и проверьте, сильно ли различаются компоненты R/G/B белого поля.

3.4.2.2 Согласование баланса белого с эталонной камерой

(1) Если баланс белого эталонной камеры правилен, а белый объект RK заметно окрашен, сначала исправьте баланс белого соответствующим модулем.

(2) Если эталонная камера заметно окрашивает белый объект, а баланс RK сравнительно правилен, выясните, вызвано ли это недостатком алгоритма либо иной тональной настройкой. При иной настройке согласуйте оттенок через модуль баланса белого либо приведите изображение эталонной камеры к RK в faststone или подобном инструменте. При недостатке алгоритма увеличьте число белых точек сцены и повторите захват либо также согласуйте оттенок программно.

(3) Как отличить недостаток алгоритма от цветовых предпочтений эталонной камеры:

a. Если сцена содержит только белые объекты при подходящей яркости, но эталонная камера даёт оттенок, скорее всего, применена тональная настройка.

b. В противном случае оригинал относит это к недостатку алгоритма эталонной камеры.

3.4.2.3 Согласование яркости с эталонной камерой

(1) Настройте модули AE, Gamma, Dehaze и HDR для близкой яркости; некоторое различие допустимо.

(2) Либо приведите яркость эталонного изображения к RK с помощью faststone или аналогичного инструмента.

3.4.3 Настройка CCM

3.4.3.1 Повторная калибровка CCM инструментом

Найдите ближайшее к нужному цвету поле 24-полевой мишени, увеличьте его вес и повторно откалибруйте CCM.

Пример:

На левой диаграмме ниже отклонения полей 6 и 18 велики. Задайте нейтральным полям 19–24 вес 0, полю 6 — 16, полю 18 — 8. Чтобы ограничить влияние на остальные поля, задайте основным цветам 13–15 вес 8 и телесному полю 2 также вес 8. Правая диаграмма показывает уменьшенное отклонение полей 6 и 18.

Рисунок английского исходника, PDF p.70, #526

Рисунок английского исходника, PDF p.70, #526.

Рисунок английского исходника, PDF p.70, #527

Рисунок английского исходника, PDF p.70, #527.

3.4.3.2 Ручная настройка CCM
3.4.3.2.1 Получение RGB RK

Захватите изображение устройством RK и получите значения RGB.

3.4.3.2.2 Получение целевых RGB

(1) При наличии эталонной камеры.

Получите целевые значения из захвата эталонной камеры, сохраняя близкие к RK яркость и баланс белого.

(2) Без эталонной камеры.

Измените интересующий цвет изображения RK в faststone или аналогичном инструменте до желаемого результата.

Рисунок английского исходника, PDF p.71, #536

Рисунок английского исходника, PDF p.71, #536.

Рисунок английского исходника, PDF p.71, #537

Рисунок английского исходника, PDF p.71, #537.

Например, используйте исправленный компонент B как цель: уменьшите канал B на 17 в fastone; зелёный цвет справа внизу — желаемый.

Рисунок английского исходника, PDF p.71, #539

Рисунок английского исходника, PDF p.71, #539.

RGB зелёного RK равны 64 85 90, целевые — 65 86 69. Следовательно, уменьшите компонент B через CCM, сближая два зелёных цвета.

(3) Целевые значения 24-полевой мишени для человеческого зрения:

Рисунок английского исходника, PDF p.72, #542

Рисунок английского исходника, PDF p.72, #542.

№ Поле sRGB R G B CIE L* a* b* Тон Манселла Светлота / насыщенность
1 тёмная кожа 115 82 68 37.986 13.555 14.059 3 YR 3.7 / 3.2
2 светлая кожа 194 150 130 65.711 18.13 17.81 2.2 YR 6.47 / 4.1
3 голубое небо 98 122 157 49.927 -4.88 -21.925 4.3 PB 4.95 / 5.5
4 листва 87 108 67 43.139 -13.095 21.905 6.7 GY 4.2 / 4.1
5 синий цветок 133 128 177 55.112 8.844 -25.399 9.7 PB 5.47 / 6.7
6 сине-зелёный 103 189 170 70.719 -33.397 -0.199 2.5 BG 7 / 6
7 оранжевый 214 126 44 62.661 36.067 57.096 5 YR 6 / 11
8 пурпурно-синий 80 91 166 40.02 10.41 -45.964 7.5 PB 4 / 10.7
9 умеренно-красный 193 90 99 51.124 48.239 16.248 2.5 R 5 / 10
10 пурпурный 94 60 108 30.325 22.976 -21.587 5 P 3 / 7
11 жёлто-зелёный 157 188 64 72.532 -23.709 57.255 5 GY 7.1 / 9.1
12 оранжево-жёлтый 224 163 46 71.941 19.363 67.857 10 YR 7 / 10.5
13 синий 56 61 150 28.778 14.179 -50.297 7.5 PB 2.9 / 12.7
14 зелёный 70 148 73 55.261 -38.342 31.37 0.25 G 5.4 / 8.65
15 красный 175 54 60 42.101 53.378 28.19 5 R 4 / 12
16 жёлтый 231 199 31 81.733 4.039 79.819 5 Y 8 / 11.1
17 маджента 187 86 149 51.935 49.986 -14.574 2.5 RP 5 / 12
18 циан 8 133 161 51.038 -28.631 -28.638 5 B 5 / 8
19 белый (.05*) 243 243 242 96.539 -0.425 1.186 N 9.5 /
20 нейтральный 8 (.23*) 200 200 200 81.257 -0.638 -0.335 N 8 /
21 нейтральный 6.5 (.44*) 160 160 160 66.766 -0.734 -0.504 N 6.5 /
22 нейтральный 5 (.70*) 122 122 121 50.867 -0.153 -0.27 N 5 /
23 нейтральный 3.5 (1.05*) 85 85 85 35.656 -0.421 -1.231 N 3.5 /
24 чёрный (1.50*) 52 52 52 20.461 -0.079 -0.973 N 2 /
3.4.3.2.3 Описание настройки CCM

Сравните текущие и целевые RGB и вручную настройте CCM для их сближения.

(1) Ограничения настройки CCM.

Формула матрицы цветокоррекции:

Рисунок английского исходника, PDF p.72, #547

Рисунок английского исходника, PDF p.72, #547.

[R',G',B']^T = [[a11,a12,a13],[a21,a22,a23],[a31,a32,a33]] * [R,G,B]^T

Для сохранения баланса белого параметры должны удовлетворять условиям:

Рисунок английского исходника, PDF p.72, #549

Рисунок английского исходника, PDF p.72, #549.

a_i1 + a_i2 + a_i3 = 1

Каждый канал в основном определяется исходным компонентом того же канала, поэтому должны выполняться условия:

Рисунок английского исходника, PDF p.72, #551

Рисунок английского исходника, PDF p.72, #551.

a_ii >= 1

Также по возможности уменьшайте различия диагональных элементов и делайте недиагональные элементы отрицательными.

Рисунок английского исходника, PDF p.72, #553

Рисунок английского исходника, PDF p.72, #553.

a13

Рисунок английского исходника, PDF p.72, #554

Рисунок английского исходника, PDF p.72, #554.

a31

Положительный a13 придаёт пурпурный оттенок насыщенному красному; положительный a31 — насыщенному синему.

Рисунок английского исходника, PDF p.73, #556

Рисунок английского исходника, PDF p.73, #556.

a21

При отрицательном a21 увеличение его модуля уменьшает G исправленного красного, повышая насыщенность красного. При отрицательном a23 увеличение его модуля уменьшает G исправленного синего, повышая насыщенность синего.

Рисунок английского исходника, PDF p.73, #558

Рисунок английского исходника, PDF p.73, #558.

a23

(2) Сводка распространённых цветовых отклонений:

Рисунок английского исходника, PDF p.73, #561

Рисунок английского исходника, PDF p.73, #561.

a13

Рисунок английского исходника, PDF p.73, #562

Рисунок английского исходника, PDF p.73, #562.

a31

Рисунок английского исходника, PDF p.73, #563

Рисунок английского исходника, PDF p.73, #563.

a13

Рисунок английского исходника, PDF p.73, #564

Рисунок английского исходника, PDF p.73, #564.

a31

Если синий (красный) смещён к пурпурному и a13 (a31) положителен, уменьшите R (B), изменив a13 (a31) с малого положительного на меньшее отрицательное значение.

Рисунок английского исходника, PDF p.73, #566

Рисунок английского исходника, PDF p.73, #566.

a23

Рисунок английского исходника, PDF p.73, #567

Рисунок английского исходника, PDF p.73, #567.

a21

Если синий (красный) перенасыщен и a23 (a21) отрицателен, увеличьте G, уменьшив модуль a23 (a21).

Рисунок английского исходника, PDF p.73, #569

Рисунок английского исходника, PDF p.73, #569.

a23

Рисунок английского исходника, PDF p.73, #570

Рисунок английского исходника, PDF p.73, #570.

a21

Рисунок английского исходника, PDF p.73, #572

Рисунок английского исходника, PDF p.73, #572.

a13

Рисунок английского исходника, PDF p.73, #573

Рисунок английского исходника, PDF p.73, #573.

a11

Рисунок английского исходника, PDF p.73, #574

Рисунок английского исходника, PDF p.73, #574.

a12

При синеватом пурпурном увеличьте R: увеличьте a13 и уменьшите a11 и a12; либо уменьшите B, уменьшив a33 и увеличив a31 и a32.

Рисунок английского исходника, PDF p.73, #576

Рисунок английского исходника, PDF p.73, #576.

a33

Рисунок английского исходника, PDF p.73, #577

Рисунок английского исходника, PDF p.73, #577.

a31

Рисунок английского исходника, PDF p.73, #578

Рисунок английского исходника, PDF p.73, #578.

a32

Рисунок английского исходника, PDF p.73, #580

Рисунок английского исходника, PDF p.73, #580.

a21

Рисунок английского исходника, PDF p.73, #581

Рисунок английского исходника, PDF p.73, #581.

a22

При оранжевом оттенке красного уменьшите G: уменьшите a21 и увеличьте a22.

При желтовато-зелёной коже уменьшите G и увеличьте B: значительно уменьшите a22, увеличьте a23 и подстройте a21; значительно увеличьте a31, уменьшите a32 и подстройте a33.

Рисунок английского исходника, PDF p.73, #584

Рисунок английского исходника, PDF p.73, #584.

a22

Рисунок английского исходника, PDF p.73, #585

Рисунок английского исходника, PDF p.73, #585.

a23

Рисунок английского исходника, PDF p.73, #586

Рисунок английского исходника, PDF p.73, #586.

a21

Рисунок английского исходника, PDF p.73, #587

Рисунок английского исходника, PDF p.73, #587.

a31

Рисунок английского исходника, PDF p.73, #588

Рисунок английского исходника, PDF p.73, #588.

a32

Рисунок английского исходника, PDF p.73, #589

Рисунок английского исходника, PDF p.73, #589.

a33
3.4.3.2.4 Примеры настройки CCM

(1) Пример 1: красный смещён к оранжевому.

Рисунок английского исходника, PDF p.73, #593

Рисунок английского исходника, PDF p.73, #593.

Настройка RGB в faststone показала, что уменьшение G исправляет оранжевый оттенок. Целевые RGB красной пластиковой пластины: [212 63 79].

Рисунок английского исходника, PDF p.74, #595

Рисунок английского исходника, PDF p.74, #595.

Пластина в красной рамке имеет оранжевый оттенок и RGB = [212, 78, 80]; G повышен относительно цели [212 63 79]. При достаточном опыте можно пропустить получение цели в faststone и непосредственно уменьшить G настройкой CCM.

Рисунок английского исходника, PDF p.74, #597

Рисунок английского исходника, PDF p.74, #597.

G' = a21*R + a22*G + a23*B

,

Рисунок английского исходника, PDF p.74, #599

Рисунок английского исходника, PDF p.74, #599.

[a21,a22,a23] = [-0.2854,1.1496,0.1358]

Исходные коэффициенты коррекции:

Рисунок английского исходника, PDF p.74, #601

Рисунок английского исходника, PDF p.74, #601.

a21

Компонент R красной пластины максимален, поэтому уменьшите a21 и увеличьте модуль a22, соблюдая сумму строки, равную 1.

Рисунок английского исходника, PDF p.74, #603

Рисунок английского исходника, PDF p.74, #603.

a22

Рисунок английского исходника, PDF p.74, #605

Рисунок английского исходника, PDF p.74, #605.

[a21,a22,a23] = [-0.385,1.2497,0.1358]

Коэффициенты после настройки:

Рисунок английского исходника, PDF p.74, #607

Рисунок английского исходника, PDF p.74, #607.

Красная пластина: RGB = [208, 56, 76].

(2) Пример 2: желтовато-зелёный оттенок кожи.

Рисунок английского исходника, PDF p.75, #610

Рисунок английского исходника, PDF p.75, #610.

Кожа в красной рамке имеет желтовато-зелёный оттенок, RGB = [216, 174, 124]; G повышен, B понижен.

Рисунок английского исходника, PDF p.75, #612

Рисунок английского исходника, PDF p.75, #612.

[[a21,a22,a23],[a31,a32,a33]] = [[-0.3192,1.6927,-0.3735],[0.0239,-0.5738,1.5499]]

Исходные коэффициенты коррекции:

Рисунок английского исходника, PDF p.75, #614

Рисунок английского исходника, PDF p.75, #614.

a23

Рисунок английского исходника, PDF p.75, #615

Рисунок английского исходника, PDF p.75, #615.

a22

Рисунок английского исходника, PDF p.75, #616

Рисунок английского исходника, PDF p.75, #616.

a21

Как в примере 1, уменьшите G: значительно уменьшите a22, увеличьте a23 и подстройте a21.

Рисунок английского исходника, PDF p.75, #618

Рисунок английского исходника, PDF p.75, #618.

Текущий цвет кожи: RGB = [212, 169, 124].

Рисунок английского исходника, PDF p.75, #620

Рисунок английского исходника, PDF p.75, #620.

a31

Для увеличения B при большом R значительно увеличьте a31; чтобы сохранить сумму строки 1, уменьшите a32 и a33.

Рисунок английского исходника, PDF p.75, #622

Рисунок английского исходника, PDF p.75, #622.

a32

Рисунок английского исходника, PDF p.75, #623

Рисунок английского исходника, PDF p.75, #623.

a33

Рисунок английского исходника, PDF p.75, #625

Рисунок английского исходника, PDF p.75, #625.

Рисунок английского исходника, PDF p.76, #626

Рисунок английского исходника, PDF p.76, #626.

[[a21,a22,a23],[a31,a32,a33]] = [[-0.3004,1.6375,-0.3371],[0.2127,-0.7294,1.5166]]

Коэффициенты после настройки приведены ниже.

Полученный цвет кожи: RGB = [214, 169, 146].

4 Расширенная коррекция цвета 3DLut

4.1 CCM и 3DLut

CCM приближает цвет при разных источниках к человеческому зрению; 3DLut изменяет отдельные цвета согласно предпочтениям. Преимущества и недостатки обоих способов:

  CCM 3DLut
Преимущества Естественные переходы цвета, малая вероятность появления шума. Проще корректировать тон и насыщенность отдельного цвета, не затрагивая остальные.
Недостатки Изменение CCM под предпочтения может затронуть другие непохожие цвета; настройка сложнее. Малое число отсчётов 9×9×9 может создавать неестественные переходы; изменение значений влияет на интенсивность подавления шума пикселя и вносит шум.

Выбор в проекте определяется компромиссом между цветовыми предпочтениями, переходами и шумом.

4.2 Описание функции

Трёхмерная таблица поиска: 3 dimensional look-up-tables (3DLUT).

Рисунок английского исходника, PDF p.77, #636

Рисунок английского исходника, PDF p.77, #636.

Рисунок: обходная 3DLUT 9×9×9.

Любой цвет можно независимо отобразить в другое значение.

Рисунок английского исходника, PDF p.77, #639

Рисунок английского исходника, PDF p.77, #639.

Рисунок: 3DLUT 9×9×9 с усиленным зелёным.

Оригинал указывает 3D LUT 9×9×9 для RK1109; значения вне узлов таблицы получают трилинейной интерполяцией.

4.3 Основные параметры

Параметры находятся в узле lut3d_calib файла IQ json и действуют только в автоматическом режиме.

4.3.1 Включение и выбор режима

В узле Common.

Параметр Описание
enable Переключатель 3DLUT, 0 или 1; 1 включает.
wbgain_tolerance Допуск изменения усиления баланса белого 3DLUT. Разность статистических усилений ниже порога означает стабильность 3DLUT; диапазон 0.0-1.
gain_tolerance Допуск изменения усиления экспозиции 3DLUT. Разность статистических усилений ниже порога означает стабильность 3DLUT; диапазон 0.0-1.

4.3.2 Параметры автоматической 3DLUT

В узле ALut3D.

Параметр Описание
damp_en Сглаживание 3DLUT, 0 или 1; 1 включает функцию.
4.3.2.1 Параметры 3DLUT
Параметр Описание
Name Имя 3DLUT.
awbGain Соответствующее стандартное усиление баланса белого, формируется калибровкой, больше 0.
gain Компонент усиления экспозиции gain-alpha, дробный, больше 0.
alpha Компонент интенсивности 3DLUT gain-alpha, дробный, больше 0.
look_up_table_r Таблица канала R, [0,1023].
look_up_table_g Таблица канала G, [0,4095].
look_up_table_b Таблица канала B, [0,1023].

4.4 Калибровка и настройка 3DLUT

RKISP 3D-LutTool на основе LAB преобразует декартовы координаты A-B (цветовые каналы) в полярные C (насыщенность)-H (тон). Поддерживаются jpg/bmp/png/yuv/nv12. На рисунке 4.4-2 насыщенность в начале O равна 0 и растёт радиально наружу; вращение красной стрелки против часовой стрелки меняет тон. Интерфейс и использование описаны в разделе 2.6 «3D-LUT Tools» документа Rockchip_IQ_Tools_Guide_ISP2x_CN.

Рисунок английского исходника, PDF p.79, #654

Рисунок английского исходника, PDF p.79, #654.

Рисунок английского исходника, PDF p.80, #655

Рисунок английского исходника, PDF p.80, #655.

Рисунок 4.4-1: повышение насыщенности зелёного.

Рисунок английского исходника, PDF p.81, #657

Рисунок английского исходника, PDF p.81, #657.

Рисунок английского исходника, PDF p.82, #658

Рисунок английского исходника, PDF p.82, #658.

Рисунок 4.4-2: изменение красного тона.

4.4.1 Этапы настройки

1. Захватите изображение, отключив 3DLUT и последующие модули YNR/SHARP/CNR и другие, чтобы видеть побочные эффекты 3DLUT. Предпочтителен захват yuv.

2. Импортируйте изображение согласно разделу 2.6 «3D-LUT Tools» документа Rockchip_IQ_Tools_Guide_ISP2x_CN.

3. Сохраните баланс белого: щёлкните правой кнопкой начало координат; превращение точки в квадрат означает фиксацию.

4. Щёлкните нужный пиксель изображения справа; его положение отобразится в системе координат слева.

5. Перетащите мышью к целевой точке, обеспечив сглаживание соседних точек координатной системы.

6. После формирования параметров 3DLUT примените их к сцене с разнообразными цветами и проверьте соответствие ожиданиям.

4.4.1.1 Примечание

При настройке модулей перед 3DLUT, особенно влияющей на цвет, необходимо перенастроить 3DLUT.

4.4.1.2 Пример

Коррекция цвета лица:

(1) Выберите Grid Division (8,12,16): большее значение повышает точность. Щёлкните лицо на изображении справа для определения координат слева.

Рисунок английского исходника, PDF p.83, #672

Рисунок английского исходника, PDF p.83, #672.

(2) При желтовато-зелёном оттенке переместите опорную точку кожи к красному тону и уменьшите насыщенность, как обозначено (1) и (2). Точка (3) слегка изменена для сглаживания.

Рисунок английского исходника, PDF p.84, #674

Рисунок английского исходника, PDF p.84, #674.

(3) Сравнение результатов:

Рисунок английского исходника, PDF p.84, #676

Рисунок английского исходника, PDF p.84, #676.

Другие статьи по теме → · Учебные маршруты →