Статья полностью сохраняет техническую часть (стр.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.
Рисунок: процесс 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.
Рисунок: обнаружение белых точек 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.
Рисунок: область белых точек 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.
Рисунок: область белых точек 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.
В инструменте калибровки по 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.
| Имя | Описание |
|---|---|
| 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.
При большой доле точек подходящей яркости вес соответствующего интервала (например 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.
Рисунок: вычисление 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.
Prob_i = probLV_i * probDis_i * probWP_i

Рисунок английского исходника, PDF p.26, #127.
probDis_i
① Параметры вероятности по расстоянию.
Вычисляется евклидово расстояние gain_dis между wbgain предыдущего кадра и эталоном каждого источника; вероятность определяется по ломаной ниже.

Рисунок английского исходника, PDF p.26, #130.
Соответствует autoExtPara.probCalcDis в JSON.
| Имя | Описание |
|---|---|
| proDis_THL | Порог расстояния disTHL на рисунке, [0-4]. |
| proDis_THH | Порог расстояния disTHH на рисунке, [0-4]. |

Рисунок английского исходника, PDF p.26, #133.
probLV_i
② Параметры вероятности по яркости сцены.
Вероятность уличного источника pout вычисляется по кривой яркость–pout на рисунке 4-14.
Вероятность источника в помещении pin = 1-pout.
Для источников без строгого разделения, например PD50 = max(pout, pin).

Рисунок английского исходника, 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.
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.
Ограничивает усиление баланса белого областью внутри красной линии на рисунке выше. По горизонтали отложена относительная цветовая температура, по вертикали — индекс цветопередачи; оба являются характеристиками источника света. Соответствует структуре 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.
Коррекция общего цветового стиля:
(1) Чтобы сделать теплее оттенок при 2000k, выберите CT Line Only и настройте таблицу как показано ниже: наведите мышь на любую точку cct=2000 и перетащите вправо. После применения все входные значения 2000k–2391k преобразуются в 2391k.

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

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

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

Рисунок английского исходника, 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.
2.3.3 Интерфейс инструмента калибровки AWB
(1) Главный интерфейс AWB.

Рисунок английского исходника, PDF p.39, #234.
(2) При калибровке в основном настраиваются границы белых точек в UV и XY и значение TH в YUV.

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

Рисунок английского исходника, PDF p.40, #237.
Настройка диапазона белых точек в UV и XY: a) перетаскивайте мышью углы области условий белой точки, изменяя положение и диапазон; b) перетаскивание в пустой области перемещает весь диапазон; c) колесо мыши изменяет масштаб.
(3) Панель Exclude WPC Range позволяет добавлять диапазоны небелых точек и белых точек дополнительного освещения.
(4) Кнопка AWB Simulaton в главном интерфейсе AWB открывает окно ниже. AWB Simulaton обнаруживает белые точки в raw-изображениях и подсчитывает их усиления и количество.

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

Рисунок английского исходника, 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.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.
① Последовательно нажмите Block 1, Block 6, Block 19, затем Block 20.
② Нажмите FindChart для пакетного распознавания полей мишени при всех источниках, как показано ниже; отображается результат обнаружения белых точек последнего источника.

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

Рисунок английского исходника, PDF p.43, #256.
④ Нажмите Save для завершения распознавания.
(4) Нажмите Calibrate для получения начальных условий белых точек и других параметров ниже.

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

Рисунок английского исходника, 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, #271.
③ Для источников A и hz диапазон по y в XY можно сузить; для d50 и d65 диапазон по y в XY можно расширить.
④ Средние и большие окна источников с близкой цветовой температурой должны быть непрерывны по y: CWF и TL84.
⑤ Диапазоны всех источников в UV не должны иметь разрывов.
⑥ Границы разных источников могут пересекаться, но не одновременно в XY и UV.
⑦ Разделяйте пространство UV с учётом XY, чтобы исключить небелые точки.
Если обведённое седьмое поле при D75 попадает в диапазон hz, оно распознаётся как белая точка.

Рисунок английского исходника, PDF p.46, #278.
После повторной настройки седьмое поле B при D75 не принадлежит одному источнику в XY и UV и поэтому не распознаётся как белая точка.

Рисунок английского исходника, PDF p.46, #280.
⑧ Если небелая точка попадает в диапазоны белых точек XY и UV, её можно исключить уменьшением TH в YUV или добавлением диапазона небелых точек.
⑨ Если белая точка попадает в диапазоны XY и UV, но не признаётся белой, она может быть исключена из-за выхода за диапазон яркости, попадания в диапазон небелых точек либо из-за значения меньше TH, не позволяющего войти в диапазон белых точек YUV.
2.3.5 Проверка параметров калибровки AWB
Последовательно импортируйте калибровочные изображения и выполняйте обнаружение белых точек. В первую очередь обеспечьте низкую долю пропусков, затем соответственно уменьшайте ложные определения.
Итоговые условия белых точек:

Рисунок английского исходника, PDF p.47, #286.
Результаты проверки белых точек:
Источник A

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

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

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

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

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

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

Рисунок английского исходника, 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.
Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:
[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.
Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:
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.
Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:
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.
Расшифровка читаемого текста; обрезанные исходником части не восстанавливаются:
: 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.
Порядок действий:
① Захватите изображение 1.
② Откройте RKISPCalibrationTool и импортируйте json.
③ Чтобы видеть распределение белых и небелых полей мишени при стандартных источниках, снова импортируйте все калибровочные изображения через Load Raw Files и нажмите FindChart для распознавания. Не нажимайте Calibrate. Нажмите Draw WPC From IQ Param для загрузки условий белых точек и отображения распределения полей.

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

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

Рисунок английского исходника, 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.
2.4.2.2 (2) Пример 2 (обновлённый интерфейс моделирования)
2.4.2.2.1 a. Получение RAW онлайн (пока не поддерживается)
После соединения инструмента с платой кнопка Get online Image получает изображение онлайн и автоматически обновляет результаты моделирования, упрощая отладку относительно примера 1. Остальные шаги приведены в пунктах ④⑤⑥ примера 1.

Рисунок английского исходника, 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.
Нажмите Run Simulator2 для получения результата blc-lsc-wb-ccm-gamma. Применяемые данные BLC, LSC, CCM и Gamma берутся из JSON и выводятся в окне журнала калибровки.

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

Рисунок английского исходника, PDF p.60, #401.
Примечание:
Исключение небелых точек посредством yuv th выполняется аналогично, но порог уменьшается; при этом нельзя нарушать обнаружение белых точек.
2.4.3 Примеры особых проблем
(1) В приложении сетевой камеры выбран режим естественного освещения, из-за чего автоматический баланс белого не включён.
По журналу текущее значение mode=1; оригинал называет его ручным режимом.

Рисунок английского исходника, 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, #412.
Последующая проверка выявила неподходящий ИК-фильтр, не отсекавший ближний инфракрасный диапазон. Замена фильтра устранила проблему.
(3) Колебания оценки источника модулем CC вызывают колебания цвета.

Рисунок английского исходника, 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.
[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.
[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.
Рисунок: 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.
Насыщенность камеры для поля 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.
| Источник / применение | Показатель | Рекомендация оригинала |
|---|---|---|
| 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, #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, #537.
Например, используйте исправленный компонент B как цель: уменьшите канал B на 17 в fastone; зелёный цвет справа внизу — желаемый.

Рисунок английского исходника, PDF p.71, #539.
RGB зелёного RK равны 64 85 90, целевые — 65 86 69. Следовательно, уменьшите компонент B через CCM, сближая два зелёных цвета.
(3) Целевые значения 24-полевой мишени для человеческого зрения:

Рисунок английского исходника, 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.
[R',G',B']^T = [[a11,a12,a13],[a21,a22,a23],[a31,a32,a33]] * [R,G,B]^T
Для сохранения баланса белого параметры должны удовлетворять условиям:

Рисунок английского исходника, PDF p.72, #549.
a_i1 + a_i2 + a_i3 = 1
Каждый канал в основном определяется исходным компонентом того же канала, поэтому должны выполняться условия:

Рисунок английского исходника, PDF p.72, #551.
a_ii >= 1
Также по возможности уменьшайте различия диагональных элементов и делайте недиагональные элементы отрицательными.

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

Рисунок английского исходника, PDF p.72, #554.
a31
Положительный a13 придаёт пурпурный оттенок насыщенному красному; положительный a31 — насыщенному синему.

Рисунок английского исходника, PDF p.73, #556.
a21
При отрицательном a21 увеличение его модуля уменьшает G исправленного красного, повышая насыщенность красного. При отрицательном a23 увеличение его модуля уменьшает G исправленного синего, повышая насыщенность синего.

Рисунок английского исходника, PDF p.73, #558.
a23
(2) Сводка распространённых цветовых отклонений:

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

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

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

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

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

Рисунок английского исходника, PDF p.73, #567.
a21
Если синий (красный) перенасыщен и a23 (a21) отрицателен, увеличьте G, уменьшив модуль a23 (a21).

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

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

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

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

Рисунок английского исходника, PDF p.73, #574.
a12
При синеватом пурпурном увеличьте R: увеличьте a13 и уменьшите a11 и a12; либо уменьшите B, уменьшив a33 и увеличив a31 и a32.

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

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

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

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

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

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

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

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

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

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

Рисунок английского исходника, PDF p.73, #589.
a33
3.4.3.2.4 Примеры настройки CCM
(1) Пример 1: красный смещён к оранжевому.

Рисунок английского исходника, PDF p.73, #593.
Настройка RGB в faststone показала, что уменьшение G исправляет оранжевый оттенок. Целевые RGB красной пластиковой пластины: [212 63 79].

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

Рисунок английского исходника, PDF p.74, #597.
G' = a21*R + a22*G + a23*B
,

Рисунок английского исходника, PDF p.74, #599.
[a21,a22,a23] = [-0.2854,1.1496,0.1358]
Исходные коэффициенты коррекции:

Рисунок английского исходника, PDF p.74, #601.
a21
Компонент R красной пластины максимален, поэтому уменьшите a21 и увеличьте модуль a22, соблюдая сумму строки, равную 1.

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

Рисунок английского исходника, PDF p.74, #605.
[a21,a22,a23] = [-0.385,1.2497,0.1358]
Коэффициенты после настройки:

Рисунок английского исходника, PDF p.74, #607.
Красная пластина: RGB = [208, 56, 76].
(2) Пример 2: желтовато-зелёный оттенок кожи.

Рисунок английского исходника, PDF p.75, #610.
Кожа в красной рамке имеет желтовато-зелёный оттенок, RGB = [216, 174, 124]; G повышен, B понижен.

Рисунок английского исходника, 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.
a23

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

Рисунок английского исходника, PDF p.75, #616.
a21
Как в примере 1, уменьшите G: значительно уменьшите a22, увеличьте a23 и подстройте a21.

Рисунок английского исходника, PDF p.75, #618.
Текущий цвет кожи: RGB = [212, 169, 124].

Рисунок английского исходника, PDF p.75, #620.
a31
Для увеличения B при большом R значительно увеличьте a31; чтобы сохранить сумму строки 1, уменьшите a32 и a33.

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

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

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

Рисунок английского исходника, 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.
Рисунок: обходная 3DLUT 9×9×9.
Любой цвет можно независимо отобразить в другое значение.

Рисунок английского исходника, 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.80, #655.
Рисунок 4.4-1: повышение насыщенности зелёного.

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

Рисунок английского исходника, 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.
(2) При желтовато-зелёном оттенке переместите опорную точку кожи к красному тону и уменьшите насыщенность, как обозначено (1) и (2). Точка (3) слегка изменена для сглаживания.

Рисунок английского исходника, PDF p.84, #674.
(3) Сравнение результатов:

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