Это справочный материал платформы: полностью сохранена техническая часть 436-страничного английского оригинала V1.2.5 (стр.16–436), включая форматы RK-RAW и заключительные главы кодов ошибок и сокращений. Соответствующий китайский PDF не предоставлен; китайская и русская статьи — полные переводы этой версии. Все 42 технических рисунка взяты из английского PDF, в том числе с китайскими подписями, уже присутствующими в оригинале. Десять таблиц форматов и расположения битов RAW дополнительно восстановлены в редактируемом виде. Изображения целых страниц не заменяют текст.
В исходнике указаны RK3588 / Linux 5.10: BuildRoot и Android — Y, Debian и Yocto — N. Это исторические сведения исходника, не гарантия совместимости всех BSP. Для ArmSoM сначала проверьте SoC, поколение ISP, сенсор/VCM, ядро, библиотеку AIQ, файл IQ и ветку SDK/BSP конкретной платы. ArmSoM Sige7 использует RK3588, однако API и примеры этой статьи на её оборудовании не проверялись. Данные и примеры относятся к исходнику, а не к измерениям ArmSoM. Команды оборудования и операции камеры/мотора не выполнялись.
Неоднозначности оригинала: сохранены повторяющиеся заголовки API, смешение поколений ISP и типов, противоречия единиц, значений по умолчанию, уровней журнала и описаний полей RAW. Они перечислены в редакционных заметках; значения и идентификаторы не исправляются молча. Комментарии кода оставлены на языке оригинала. Команды и API могут менять состояние камеры или мотора: перед использованием необходимы проверка и адаптация.
EDITORIAL-NOTES · ArmSoM Sige7 · ArmSoM camera documentation · Rockchip Linux
1. Общий обзор
1.1 Структурная схема

RK3588 VI — общее обозначение модулей видеоввода, включающих:
Интерфейсы и сбор данных: C/DPHY, DVP, CSI, VICAP.
Обработка изображений: ISP-0, ISP-1, FEC-0, FEC-1.
ISP RK3588 относится к RK ISP v3.0; далее в документе он обозначается ISP30.
1.2 Режимы работы
Один ISP и один CIS (CMOS Image Sensor):
Сквозной/онлайновый режим RAW: синие стрелки на схеме показывают путь данных 1.0.
Режим обратного чтения/офлайновой обработки Raw: оранжевые стрелки показывают пути данных 1.1 и 1.2.
Режим двух ISP 2-in-1 для одного CIS:
В режиме 2-in-1 ISP-0 и ISP-1 отдельно обрабатывают левую и правую части изображения одного CIS, обеспечивая поддержку CIS высокого разрешения.
Несколько CIS:
Один ISP в режиме обратного чтения/офлайновой обработки Raw может обслуживать несколько входов CIS посредством временного мультиплексирования.
1.3 Производительность и ограничения
Поддерживаемые разрешения и пропускная способность:
| Режим работы | Пропускная способность | Максимальное разрешение | Минимальное поддерживаемое разрешение |
|---|---|---|---|
| Один ISP, один CIS | 16Mega@30fps | 4672x3504 | 208x128 |
| Два ISP 2-in-1, один CIS | 32Mega@30fps | 8064x6048 | \ |
Поддерживается ввод данных Raw12.
ISP30 обрабатывает данные Raw12. При вводе Raw14 младшие биты отбрасываются для обработки как Raw12. У данных с разрядностью менее 12 бит младшие разряды дополняются до Raw12.
Поддерживаются цветные Bayer CIS и монохромные Mono CIS.
Поддерживается многокадровый HDR 3-in-1. Типы HDR CIS перечислены ниже:
| Многоэкспозиционный HDR | Поддержка платформами RK | CIS | Применение |
|---|---|---|---|
| Sequential / Framebase HDR (последовательный/покадровый) | ISP20: RV1109/RV1126 и др.; ISP21: RK356X и др.; ISP30: RK3588; ISP32: RV1106 | OV4689 | IPC/CVR |
| Staggered / DOL HDR (чередование) | ISP20: RV1109/RV1126 и др.; ISP21: RK356X и др.; ISP30: RK3588; ISP32: RV1106 | OS04A10 IMX464 AR0239 | IPC/CVR |
| DCG HDR | ISP20: RV1109/RV1126 и др.; ISP21: RK356X и др.; ISP30: RK3588; ISP32: RV1106 | OS04A10 IMX585 | IPC/CVR |
| SME HDR | N | IMX378 | Потребительские устройства |
| BME HDR | N | IMX258 | Потребительские устройства |
| QBC HDR | N | OV50C40 IMX586 | Потребительские устройства |
| HDR с боковым переполнением | N | AR0821 | IPC |
| Splite-diode pixel HDR (написание исходника) | N | OV10640 | CVR |
В сквозном/онлайновом режиме Raw минимальная задержка до уведомления о выводе данных ISP30 в DDR составляет примерно время передачи кадра/15.
В режиме временного мультиплексирования один ISP поддерживает до четырёх входных источников данных.
В сквозном/онлайновом режиме RAW минимальный кадровый интервал гашения составляет 136 строк, минимальный строчный — 16 пикселей.
Модуль CSM не поддерживает преобразование в ограниченный диапазон YUV; подробности приведены в описании API IMGPROC/CSM.
2. Обзор
ISP30 включает алгоритмы коррекции тёмного тока и дефектных пикселей, 3A, HDR, коррекции затенения и геометрических искажений объектива, 3DLUT, шумоподавления (в домене RAW, многокадрового, цветового и др.) и повышения резкости.
ISP30 состоит из аппаратной реализации алгоритмов и программного логического управления; RkAiq реализует программное управление.
RkAiq получает статистику изображения от драйвера ISP, объединяет её с параметрами IQ Tuning, рассчитывает алгоритмами новые параметры ISP, Sensor и других аппаратных блоков и непрерывно повторяет процесс для получения наилучшего изображения.
2.1 Описание функций

Рис. 1-1. Структурная схема системы ISP21 (подпись исходника)
Общая программно-аппаратная схема ISP30 приведена на рис. 1-1. Сенсор передаёт поток ISP HW, который выводит изображение после последовательности алгоритмов обработки. RkAiq непрерывно получает статистику ISP HW и алгоритмами, включая 3A, формирует новые параметры для аппаратных модулей. Инструмент Tuning позволяет изменять параметры онлайн в реальном времени и затем сохранить новый файл параметров IQ.
2.2 Архитектура RkAiq

Рис. 1-2. Общая архитектура RkAiq
1. Программная концепция ISP30 RkAiq показана на рис. 1-2 и включает четыре части:
1. Динамическая библиотека RkAiq lib содержит основную логику: получает статистику драйвера и передаёт её отдельным алгоритмическим библиотекам.
2. Integrated algo libs: статические алгоритмические библиотеки RK по умолчанию зарегистрированы в динамической библиотеке RkAiq lib.
3. customer 3A libs: заказчик может реализовать собственную библиотеку 3A или других алгоритмов согласно интерфейсам. После регистрации в RkAiq lib предоставленные интерфейсы позволяют выбрать собственную библиотеку или библиотеку RK.
4. IQ file: файл результатов настройки IQ хранит параметры алгоритмов и статические параметры системы, например CIS.
2.3 Программная архитектура

Рис. 1-3. Программная архитектура
Программная схема ISP30 на рис. 1-3 включает три основных слоя:
1. Слой kernel содержит аппаратные драйверы камеры: ISP, sensor, VCM, flashlight, IrCutter и другие, основанные на V4L2 и Media framework.
2. Слой framework интегрирует RkAiq lib двумя способами:
Режим IspServer: Rkaiq lib работает в отдельном процессе IspServer, с которым клиент взаимодействует через dbus. Это также позволяет предоставлять существующим сторонним приложениям, например v4L-CTL, изображения с настроенной обработкой ISP без изменения их исходного кода.
Прямая интеграция: RkAiq lib можно встроить непосредственно в приложение.
3. Слой user: пользовательские приложения.
2.4 Программный процесс

Рис. 1-4. Блок-схема процесса
Последовательность вызовов RkAiq показана на рис. 1-4. Пунктирные блоки необязательны; синий текст обозначает настройки приложения, необходимые для работы с процессом RkAiq.
configure media pipeline: при необходимости настройте тракт ISP30, например выходное разрешение sensor; драйвер имеет настройки по умолчанию. rk_aiq_uapi2_sysctl_init: инициализирует RkAiq, параметры IQ и библиотеки алгоритмов. other Aiq or algo params uapis: необязательно задайте параметры через API алгоритмов и зарегистрируйте сторонние библиотеки. rk_aiq_uapi2_sysctl_prepare: подготавливает начальные параметры библиотек и аппаратных модулей и передаёт их драйверу.
video capture start: включает поток ISP для приложения; этот шаг выполняется после rk_aiq_uapi2_sysctl_prepare.
rk_aiq_uapi2_sysctl_start: запускает внутренний процесс RkAiq. После успешного вызова sensor начинает выдавать данные, а ISP — обрабатывать и выводить изображение.
Rkaiq running: непрерывно получает статистику драйвера ISP, рассчитывает новые параметры алгоритмами, включая 3A, и передаёт их драйверу. PC Online Tuning Tool: ПК может настраивать параметры онлайн через Tuning Tool. video capture stop: перед остановкой RkAiq остановите поток данных. rk_aiq_uapi2_sysctl_stop: останавливает процесс RkAiq; после этого можно изменить параметры и перезапустить его либо перезапустить без изменений.
rk_aiq_uapi2_sysctl_deinit: освобождает ресурсы RkAiq.
2.5 Описание API
API RKAiq делятся на функциональный и модульный уровни.
Функциональный API оборачивает модульный API и предназначен прежде всего для простых настроек функций модуля в прикладном продукте.
Модульный API предоставляет детальную настройку и запрос параметров модуля без разделения API по функциям.
Модульные API RKAiq поддерживают синхронный и асинхронный режимы; функциональные API по умолчанию используют синхронный режим модульных API.
Синхронный режим (Sync): блокирующий API. AIQ обновляет параметры в основном с гранулярностью видеокадра; время возможной блокировки вызывающего потока <= периода видеокадра.
Асинхронный режим (ASync): неблокирующий API. AIQ сохраняет параметры в своём буфере и в соответствующий момент передаёт аппаратуре последние настройки ISP.
Использование синхронного и асинхронного режимов модульного API
Второй параметр модульного API обычно представляет набор настроек — структуру атрибутов. Её член rk_aiq_uapi_sync_t задаёт режим вызова текущего API; подробнее см. тип данных ниже:
2.5.1 rk_aiq_uapi_sync_t
【Описание】Режим синхронизации модуля
【Определение】
typedef struct rk_aiq_uapi_sync_s {
rk_aiq_uapi_mode_sync_e sync_mode;
bool done;
} rk_aiq_uapi_sync_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync_mode | @setAttrib: флаг режима обновления параметров; RK_AIQ_UAPI_MODE_DEFAULT — по умолчанию синхронный; RK_AIQ_UAPI_MODE_SYNC — синхронный; RK_AIQ_UAPI_MODE_ASYNC — асинхронный. @getAttrib: RK_AIQ_UAPI_MODE_DEFAULT возвращает последние заданные атрибуты (sync_mode == RK_AIQ_UAPI_MODE_ASYNC), которые могут ещё не действовать; RK_AIQ_UAPI_MODE_SYNC — реально используемые атрибуты; RK_AIQ_UAPI_MODE_ASYNC — то же, что RK_AIQ_UAPI_MODE_DEFAULT. |
| done | @done (parsm out, написание исходника): флаг состояния обновления; true — параметры обновлены, false — ещё не обновлены. |
Примеры использования API AIQ разделены по модулям; рекомендуется обращаться непосредственно к этим примерам.
rkisp_demo/demo/sample
| Имя файла | Модуль |
|---|---|
| sample_3dlut_module.cpp | 3DLUT |
| sample_ccm_module.cpp | CCM |
| sample_csm_module.cpp | CSM |
| sample_ablc_module.cpp | BLC |
| sample_abayer2dnr_module.cpp | BayerNR 2D |
| sample_abayertnr_module.cpp | BayerNR 3D |
| sample_aynr_module.cpp | YNR |
| sample_acnr_module.cpp | CNR |
| sample_asharp_module.cpp | Sharp |
| sample_amerge_module.cpp | Merge(HDR) |
| sample_adrc_module.cpp | DRC |
| sample_adehaze_module.cpp | Удаление дымки и улучшение изображения |
| sample_agamma_module.cpp | Gamma |
| sample_awb_module.cpp | AWB |
| sample_ae_module.cpp | AE |
| sample_af_module.cpp | AF |
3. Управление системой
3.1 Обзор функций
Управление системой включает общие атрибуты AIQ, инициализацию, запуск, завершение работы и настройку модулей AIQ.
3.2 Справочник API
3.2.1 rk_aiq_uapi2_sysctl_preInit
【Описание】Предварительная установка параметров перед инициализацией AIQ, например используемого файла IQ.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_preInit (const char* sns_ent_name,
rk_aiq_working_mode_t mode,
const char* force_iq_file);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sns_ent_name | Имя сущности sensor | Вход |
| mode | Режим работы ISP | Вход |
| force_iq_file | Принудительно заданный файл iq | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
【Примечание】
Вызывать до rk_aiq_uapi2_sysctl_init.
mode используется только для выбора файла IQ, но не задаёт режим ISP: его задают в rk_aiq_uapi2_sysctl_prepare. Если force_iq_file не пуст, mode не действует.
Параметр force_iq_file содержит полный путь.
Функция необязательна и служит только для изменения некоторых настроек по умолчанию до rk_aiq_uapi2_sysctl_init.
3.2.2 rk_aiq_uapi2_sysctl_preInit_scene
【Описание】Выбор параметров сцены IQ до инициализации AIQ.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_preInit_scene (const char* sns_ent_name,
const char *main_scene,
const char *sub_scene);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sns_ent_name | Имя сущности sensor | Вход |
| main_scene | Основная сцена; значения определены в файле IQ. | Вход |
| sub_scene | Подсцена; значения определены в файле IQ. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
【Примечание】
Вызывать до rk_aiq_uapi2_sysctl_init.
main_scene выбирают из массива основных сцен файла IQ; обычно по умолчанию используется “normal”.
sub_scene выбирают из массива подсцен основной сцены файла IQ; обычно по умолчанию используется “day”.
По умолчанию выбирается normal-day. Для hdr-day или другого пользовательского режима укажите сцену этой функцией, иначе параметры IQ могут оказаться неверными.
3.2.3 rk_aiq_uapi2_sysctl_switch_scene
【Описание】Переключение параметров сцены IQ после инициализации AIQ.
【Синтаксис】
int
rk_aiq_uapi2_sysctl_switch_scene (const rk_aiq_sys_ctx_t* sys_ctx,
const char *main_scene,
const char *sub_scene);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| main_scene | Основная сцена; значения определены в файле IQ. | Вход |
| sub_scene | Подсцена; значения определены в файле IQ. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
【Примечание】
Вызывать после rk_aiq_uapi2_sysctl_init.
main_scene выбирают из массива основных сцен файла IQ.
sub_scene выбирают из массива подсцен основной сцены файла IQ.
Интерфейс динамически переключает IQ; он пока недостаточно протестирован и может дать неожиданный результат, поэтому используйте его осторожно.
3.2.4 rk_aiq_uapi2_sysctl_init
【Описание】Инициализация контекста AIQ.
【Синтаксис】
rk_aiq_sys_ctx_t*
rk_aiq_uapi2_sysctl_init (const char* sns_ent_name,
const char* iq_file_dir,
rk_aiq_error_cb err_cb,
rk_aiq_metas_cb metas_cb);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sns_ent_name | Имя сущности sensor | Вход |
| iq_file_dir | Путь к файлу параметров калибровки | Вход |
| err_cb | Обратный вызов ошибки; может быть NULL. | Вход |
| metas_cb | Обратный вызов метаданных; может быть NULL. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| rk_aiq_sys_ctx_t* | Указатель контекста AIQ |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
【Примечание】
Вызывать до других функций.
3.2.5 rk_aiq_uapi2_sysctl_deinit
【Описание】Освобождение контекста AIQ.
【Синтаксис】
void
rk_aiq_uapi2_sysctl_deinit( rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| Нет | Нет |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
【Примечание】
Не вызывать, когда AIQ находится в состоянии start.
3.2.6 rk_aiq_uapi2_sysctl_prepare
【Описание】Подготовка рабочей среды AIQ.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_prepare(const rk_aiq_sys_ctx_t* ctx,
uint32_t width,
uint32_t height,
rk_aiq_working_mode_t mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| width | Ширина выходного разрешения sensor; используется только для проверки. | Вход |
| height | Высота выходного разрешения sensor; используется только для проверки. | Вход |
| mode | Режим работы тракта ISP (NORMAL/HDR). | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
【Примечание】
Вызывать до rk_aiq_uapi2_sysctl_start.
Если требуется вызов после rk_aiq_uapi2_sysctl_start, сначала вызовите rk_aiq_uapi2_sysctl_stop, затем rk_aiq_uapi2_sysctl_prepare для повторной подготовки рабочей среды.
3.2.7 rk_aiq_uapi2_sysctl_start
【Описание】Запуск системы управления AIQ. После запуска она непрерывно получает статистику 3A от драйвера ISP, выполняет алгоритм 3A и применяет рассчитанные параметры.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_start(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
【Примечание】
Вызывать после rk_aiq_uapi2_sysctl_prepare.
3.2.8 rk_aiq_uapi2_sysctl_stop
【Описание】Остановка системы управления AIQ.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_stop(const rk_aiq_sys_ctx_t* ctx, bool keep_ext_hw_st);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| keep_ext_hw_st | Сохранять ли после остановки состояние внешних устройств, например ircut/cpsl. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
3.2.9 rk_aiq_uapi2_sysctl_getStaticMetas
【Описание】Запрос статических сведений о sensor, например разрешения и формата данных.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_getStaticMetas(const char* sns_ent_name,
rk_aiq_static_info_t* static_info);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sns_ent_name | Имя сущности sensor | Вход |
| static_info | Указатель структуры статических сведений | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
3.2.10 rk_aiq_uapi2_sysctl_enumStaticMetas
【Описание】Перечисление статических сведений, полученных AIQ.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_enumStaticMetas(int index, rk_aiq_static_info_t*
static_info);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| index | Индекс, начиная с 0. | Вход |
| static_info | Указатель структуры статических сведений | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
3.2.11 rk_aiq_uapi2_sysctl_enableAxlib
【Описание】Установка состояния пользовательской библиотеки алгоритмов.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_enableAxlib(const rk_aiq_sys_ctx_t* ctx,
const int algo_type,
const int lib_id,
bool enable);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| algo_type | Тип обрабатываемого алгоритмического модуля. | Вход |
| lib_id | Идентификатор библиотеки алгоритмов | Вход |
| enable | Настройка состояния | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
【Примечание】
Если lib_id соответствует работающей библиотеке, функцию можно вызвать в любом состоянии, кроме неинициализированного.
В остальных случаях вызывать только в состоянии prepared: библиотека алгоритма algo_type заменяется новой библиотекой с идентификатором lib_id.
3.2.12 rk_aiq_uapi2_sysctl_getAxlibStatus
【Описание】Получение состояния библиотеки алгоритмов.
【Синтаксис】
bool
rk_aiq_uapi2_sysctl_getAxlibStatus(const rk_aiq_sys_ctx_t* ctx,
const int algo_type,
const int lib_id);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| algo_type | Тип обрабатываемого алгоритмического модуля. | Вход |
| lib_id | Идентификатор библиотеки алгоритмов | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| false | Выключено |
| true | Включено |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
3.2.13 rk_aiq_uapi2_sysctl_getEnabledAxlibCtx
【Описание】Получение структуры контекста включённой библиотеки алгоритмов.
【Синтаксис】
const RkAiqAlgoContext*
rk_aiq_uapi2_sysctl_getEnabledAxlibCtx(const rk_aiq_sys_ctx_t* ctx, const int
algo_type);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| algo_type | Тип обрабатываемого алгоритмического модуля. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| NULL | Не удалось получить |
| Non-NULL | Получено успешно |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
【Примечание】
Возвращаемая структура контекста алгоритма используется внутренней закрытой функцией. Для пользовательских библиотек вызывайте её после rk_aiq_uapi2_sysctl_enableAxlib, иначе возвращается NULL.
3.2.14 rk_aiq_uapi2_sysctl_setCpsLtCfg
【Описание】Установка параметров управления подсветкой.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_setCpsLtCfg(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_cpsl_cfg_t* cfg);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| cfg | Указатель структуры настроек подсветки | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
3.2.15 rk_aiq_uapi2_sysctl_getCpsLtInfo
【Описание】Получение параметров управления подсветкой.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_getCpsLtInfo(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_cpsl_info_t* info);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| info | Указатель структуры настроек подсветки | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
3.2.16 rk_aiq_uapi2_sysctl_queryCpsLtCap
【Описание】Запрос возможностей подсветки.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_queryCpsLtCap(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_cpsl_cap_t* cap);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| cap | Указатель структуры запроса поддерживаемых возможностей подсветки. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
3.2.17 rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd
【Описание】Запрос имени сущности sensor, соответствующей узлу video.
【Синтаксис】
const char* rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd(const char* vd);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| vd | Путь узла video, например /dev/video20 | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| Имя сущности sensor | Указатель строки |
【Примечание】
Параметр должен содержать путь узла ISPP scale.
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
3.2.18 rk_aiq_uapi2_sysctl_updateIq
【Описание】Динамическое обновление текущего файла параметров IQ без остановки потока.
【Синтаксис】
XCamReturn rk_aiq_uapi2_sysctl_updateIq(const rk_aiq_sys_ctx_t* sys_ctx, char*
iqfile);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| iqfile | Новый файл IQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Примечание】
iqfile должен содержать полный путь.
Обновление параметров IQ не переключает рабочий режим: например, переход HDR/normal нельзя выполнить обновлением файла IQ. Однако отдельные функции переключаются разными настройками IQ; например, дневной/ночной режим целиком переключается конфигурацией IQ.
При переключении IQ его параметры заменяют настройки пользовательского API. Например, IQ может задать ручной или автоматический AWB; после вызова функции текущий режим AWB в любом случае заменяется конфигурацией нового IQ по умолчанию.
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
3.2.19 rk_aiq_uapi2_sysctl_getCrop
【Описание】Получение параметров кадрирования.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_sysctl_getCrop(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_rect_t
*rect);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| rect | Указатель структуры параметров кадрирования | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
3.3 Типы данных
3.3.1 rk_aiq_working_mode_t
【Описание】Режим работы тракта AIQ.
【Определение】
typedef enum {
RK_AIQ_WORKING_MODE_NORMAL,
RK_AIQ_WORKING_MODE_ISP_HDR2 = 0x10,
RK_AIQ_WORKING_MODE_ISP_HDR3 = 0x20,
} rk_aiq_working_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_AIQ_WORKING_MODE_NORMAL | Обычный режим |
| RK_AIQ_WORKING_MODE_ISP_HDR2 | Двухкадровый режим HDR |
| RK_AIQ_WORKING_MODE_ISP_HDR3 | Трёхкадровый режим HDR |
【Меры предосторожности】
Сначала запросите режимы, поддерживаемые sensor и AIQ; установка неподдерживаемого режима не действует.
3.3.2 rk_aiq_static_info_t
【Описание】Статические сведения AIQ.
【Определение】
typedef struct {
rk_aiq_sensor_info_t sensor_info;
rk_aiq_lens_info_t lens_info;
bool has_lens_vcm;
bool has_fl;
bool fl_strth_adj_sup;
bool has_irc;
bool fl_ir_strth_adj_sup;
} rk_aiq_static_info_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sensor_info | Имя sensor, поддерживаемые разрешения и другие сведения. |
| lens_info | Сведения об объективе |
| has_lens_vcm | Наличие VCM |
| has_fl | Наличие вспышки |
| fl_strth_adj_sup | Возможность регулировки вспышки |
| bool has_irc | Наличие IR-CUT |
| bool fl_ir_strth_adj_sup |
3.3.3 rk_aiq_sensor_info_t
【Описание】Сведения о sensor.
【Определение】
typedef struct {
char sensor_name[32];
rk_frame_fmt_t support_fmt[SUPPORT_FMT_MAX];
int32_t num;
/* binded pp stream media index */
int8_t binded_strm_media_idx;
} rk_aiq_sensor_info_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sensor_name | Имя sensor |
| support_fmt | Поддерживаемые форматы |
| num | Количество поддерживаемых форматов |
| has_fl | Наличие вспышки |
| binded_strm_media_idx | Номер узла media, к которому подключён sensor. |
3.3.4 rk_aiq_module_id_t
【Описание】Идентификатор модуля AIQ.
【Определение】
typedef enum {
RK_MODULE_INVAL = 0,
RK_MODULE_DPCC,
RK_MODULE_BLS,
RK_MODULE_LSC,
RK_MODULE_AWB_GAIN,
RK_MODULE_CTK,
RK_MODULE_GOC,
RK_MODULE_SHARP,
RK_MODULE_AE,
RK_MODULE_AWB,
RK_MODULE_NR,
RK_MODULE_GIC,
RK_MODULE_3DLUT,
RK_MODULE_LDCH,
RK_MODULE_TNR,
RK_MODULE_FEC,
RK_MODULE_MAX
}rk_aiq_module_id_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_MODULE_DPCC | Обнаружение и коррекция дефектных пикселей |
| RK_MODULE_BLS | Уровень чёрного |
| RK_MODULE_LSC | Коррекция затенения объектива |
| RK_MODULE_AWB_GAIN | Усиление баланса белого |
| RK_MODULE_CTK | Цветокоррекция |
| RK_MODULE_GOC | Gamma |
| RK_MODULE_SHARP | Повышение резкости |
| RK_MODULE_AE | Экспозиция |
| RK_MODULE_AWB | Баланс белого |
| RK_MODULE_NR | Шумоподавление |
| RK_MODULE_GIC | Баланс зелёных каналов |
| RK_MODULE_3DLUT | 3DLUT |
| RK_MODULE_LDCH | LDCH |
| RK_MODULE_TNR | 3D-шумоподавление |
| RK_MODULE_FEC | Коррекция «рыбьего глаза» |
3.3.5 rk_aiq_cpsl_cfg_t
【Описание】Структура настройки подсветки.
【Определение】
typedef struct rk_aiq_cpsl_cfg_s {
RKAiqOPMode_t mode;
rk_aiq_cpsls_t lght_src;
bool gray_on; /*!< force to gray if light on */
union {
struct {
float sensitivity; /*!< Range [0-100] */
uint32_t sw_interval; /*!< switch interval time, unit seconds */
} a; /*< auto mode */
struct {
uint8_t on; /*!< disable 0, enable 1 */
float strength_led; /*!< Range [0-100] */
float strength_ir; /*!< Range [0-100] */
} m; /*!< manual mode */
} u;
} rk_aiq_cpsl_cfg_t;
【Члены】
| Имя члена | Описание |
|---|---|
| mode | Режим работы |
| lght_src | Тип источника света |
| gray_on | Переводить ли изображение в чёрно-белое после перехода в ночной режим. |
| sensitivity | Чувствительность переключения в автоматическом режиме, диапазон [0,100]. |
| sw_interval | Интервал переключения в автоматическом режиме, в секундах. |
| on | Переходить ли в ночной режим при ручном управлении. |
| strength_led | Интенсивность LED при ручном управлении, диапазон [0,100]. |
| strength_ir | Интенсивность ИК-подсветки при ручном управлении, диапазон [0,100]. |
3.3.6 rk_aiq_cpsl_info_t
【Описание】Структура запроса сведений о подсветке.
【Определение】
typedef struct rk_aiq_cpsl_info_s {
int32_t mode;
uint8_t on;
bool gray;
float strength_led;
float strength_ir;
float sensitivity;
uint32_t sw_interval;
int32_t lght_src;
} rk_aiq_cpsl_info_t;
【Члены】
| Имя члена | Описание |
|---|---|
| mode | Режим работы |
| lght_src | Тип источника света |
| gray | Переводить ли изображение в чёрно-белое после перехода в ночной режим. |
| sensitivity | Чувствительность переключения в автоматическом режиме, диапазон [0,100]. |
| sw_interval | Интервал переключения в автоматическом режиме, в секундах. |
| on | Переходить ли в ночной режим при ручном управлении. |
| strength_led | Интенсивность LED при ручном управлении, диапазон [0,100]. |
| strength_ir | Интенсивность ИК-подсветки при ручном управлении, диапазон [0,100]. |
3.3.7 rk_aiq_cpsl_cap_t
【Описание】Структура поддерживаемых возможностей подсветки.
【Определение】
typedef struct rk_aiq_cpsl_cap_s {
int32_t supported_modes[RK_AIQ_OP_MODE_MAX];
uint8_t modes_num;
int32_t supported_lght_src[RK_AIQ_CPSLS_MAX];
uint8_t lght_src_num;
rk_aiq_range_t strength_led;
rk_aiq_range_t sensitivity;
rk_aiq_range_t strength_ir;
} rk_aiq_cpsl_cap_t;
【Члены】
| Имя члена | Описание |
|---|---|
| supported_modes | Поддерживаемые режимы работы |
| modes_num | Количество поддерживаемых режимов |
| gray | Переводить ли изображение в чёрно-белое после перехода в ночной режим. |
| supported_lght_src | Поддерживаемые источники света |
| lght_src_num | Количество поддерживаемых источников света |
| strength_led | Диапазон интенсивности LED |
| sensitivity | Диапазон чувствительности |
| strength_ir | Диапазон интенсивности ИК-подсветки |
3.3.8 rk_aiq_rect_t
【Описание】Определение структуры параметров кадрирования.
【Определение】
typedef struct rk_aiq_rect_s {
int left;
int top;
int width;
int height;
} rk_aiq_rect_t;
【Члены】
| Имя члена | Описание |
|---|---|
| left | Горизонтальное смещение вывода |
| top | Вертикальное смещение вывода |
| width | Размер вывода по горизонтали |
| height | Размер вывода по вертикали |
4. Офлайновая обработка кадров
4.1 Обзор
RKAIQ поддерживает офлайновую обработку кадров RAW: разбирает файл собственного формата RAW RK, передаёт его ISP и выводит изображение, пригодное для нормального отображения.
Примечание: функция офлайновой обработки кадров не протестирована.
4.2 Функциональная схема

Схема офлайновой обработки кадров
4.3 Описание функций
Поддерживается ввод файла RK-RAW. При файловом интерфейсе вызывающий процесс блокируется до завершения обработки файла и успешного вывода.
Поддерживается ввод буфера RK-RAW с асинхронной обработкой. Процесс не блокируется; после обработки буфера вызывается обратный вызов, если он зарегистрирован.
Поддерживается ввод буфера RK-RAW с синхронной обработкой. Процесс блокируется до окончания обработки буфера и успешного вывода.
4.4 Формат RK-RAW
См. документ RK RAW File Format.
4.5 Поддерживаемые форматы RAW
Поддерживаются raw8/raw10/raw12 и четыре формата Bayer: BGGR/GBRG/GRBG/RGGB.
4.6 Справочник API
4.7 Структуры данных
4.8 Особенности использования
При создании AIQ Context для обработки RK Raw параметр sns_ent_name интерфейса rk_aiq_uapi2_sysctl_init должен быть “FakeCamera”.
Обработка Raw зависит от файла эффектов IQ XML. XML должен быть подготовлен для того же разрешения, что и входной кадр RK Raw; файл необходимо назвать FakeCamera.xml и поместить в путь загрузки XML.
4.9 Пример использования
Пример работы с API офлайновой обработки кадров: rkisp_demo, путь YOUR_SDK_DIR/external/camera_engine_rkaiq/rkisp_demo.
5. Группы камер
5.1 Обзор
В круговом обзоре и подобных сценариях камеры объединяют для общего управления и настройки экспозиции и других параметров. Для этого создают group. Camera Group API основан на AIQ API отдельной камеры; если не оговорено иное, API отдельного AIQ подходит и группе. По типу переданного Context AIQ направляет запрос группе либо одной камере.
5.1.1 rk_aiq_uapi2_camgroup_create
【Описание】При создании Camera group для каждой Camera создаётся отдельный AIQ ctx, управляемый Group Ctx.
【Синтаксис】
rk_aiq_camgroup_ctx_t*
rk_aiq_uapi2_camgroup_create (rk_aiq_camgroup_instance_cfg_t* cfg);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| cfg | Параметры настройки | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| rk_aiq_camgroup_ctx_t* | Рабочий контекст группы |
| NULL | Ошибка |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_camgroup.h
Библиотека: librkaiq.so
【Примечание】
rk_aiq_uapi2_sysctl_init создаёт среду AIQ отдельной камеры. Для sensor entity, среда которой уже создана этой функцией, нельзя дополнительно создавать групповую среду через rk_aiq_uapi2_camgroup_create, и наоборот.
Сцена IQ по умолчанию — normal-day. Для HDR и других режимов предварительно настройте сцену через rk_aiq_uapi2_sysctl_preInit_scene.
5.1.2 rk_aiq_uapi2_camgroup_prepare
【Описание】Создаёт начальные параметры и тракты согласно выбранному режиму pipeline, вызывая rk_aiq_uapi2_sysctl_prepare для AIQ ctx каждой Camera.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_camgroup_prepare (rk_aiq_camgroup_ctx_t* camgroup_ctx,
rk_aiq_working_mode_t mode);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| camgroup_ctx | Рабочий контекст группы | Вход |
| mode | Режим работы pipeline | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | См. коды ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_camgroup.h; библиотека: librkaiq.so
5.1.3 rk_aiq_uapi2_camgroup_start
【Описание】Запускает группу камер, вызывая rk_aiq_uapi2_sysctl_start для AIQ ctx каждой Camera.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_camgroup_start (rk_aiq_camgroup_ctx_t* camgroup_ctx);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| camgroup_ctx | Рабочий контекст группы | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. коды ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_camgroup.h; библиотека: librkaiq.so
5.1.4 rk_aiq_uapi2_camgroup_stop
【Описание】Останавливает группу камер, вызывая rk_aiq_uapi2_sysctl_stop для AIQ ctx каждой Camera.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_camgroup_stop (rk_aiq_camgroup_ctx_t* camgroup_ctx);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| camgroup_ctx | Рабочий контекст группы | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. коды ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_camgroup.h; библиотека: librkaiq.so
5.1.5 rk_aiq_uapi2_camgroup_destroy
【Описание】Уничтожает группу камер, вызывая rk_aiq_uapi2_sysctl_deinit для AIQ ctx каждой Camera.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_camgroup_destroy (rk_aiq_camgroup_ctx_t* camgroup_ctx);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| camgroup_ctx | Рабочий контекст группы | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. коды ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_camgroup.h; библиотека: librkaiq.so
5.1.6 rk_aiq_uapi2_camgroup_getOverlapMap
【Описание】В круговом обзоре получает сведения о перекрытии камер из контекста CameraGroup.
【Синтаксис】
struct RK_PS_SrcOverlapMap*
rk_aiq_uapi2_camgroup_getOverlapMap (rk_aiq_camgroup_ctx_t* camgroup_ctx);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| camgroup_ctx | Рабочий контекст группы | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| struct RK_PS_SrcOverlapMap* | Указатель структуры сведений о перекрытии |
| NULL | Ошибка |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_camgroup.h; библиотека: librkaiq.so
5.1.7 rk_aiq_uapi2_camgroup_getOverlapMap
【Описание】В круговом обзоре получает сведения о перекрытии камер из файла.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_camgroup_getOverlapMap_from_file (const char* map_file,
struct
RK_PS_SrcOverlapMap** overlapMap);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| map_file | Файл со сведениями о перекрытии | Вход |
| overlapMap | Хранит полученные сведения о перекрытии | Вход, выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. коды ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_camgroup.h; библиотека: librkaiq.so
5.1.8 rk_aiq_uapi2_camgroup_getAiqCtxBySnsNm
【Описание】Получает контекст AIQ отдельной Camera по имени сущности Sensor в группе.
【Синтаксис】
rk_aiq_sys_ctx_t*
rk_aiq_uapi2_camgroup_getAiqCtxBySnsNm (rk_aiq_camgroup_ctx_t* camgroup_ctx,
const char* sns_entity_name);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| camgroup_ctx | Рабочий контекст группы | Вход |
| sns_entity_name | Имя сущности sensor в группе | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| rk_aiq_sys_ctx_t* | Полученная рабочая среда AIQ |
| NULL | Ошибка |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_camgroup.h; библиотека: librkaiq.so
5.1.9 rk_aiq_uapi2_camgroup_getCamInfos
【Описание】Получает сведения о камерах группы, например имена сущностей sensor.
【Синтаксис】
XCamReturn
rk_aiq_uapi2_camgroup_getCamInfos (rk_aiq_camgroup_ctx_t* camgroup_ctx,
rk_aiq_camgroup_camInfos_t* camInfos);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| camgroup_ctx | Рабочий контекст группы | Вход |
| camInfos | Полученные сведения о камерах группы | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. коды ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_camgroup.h; библиотека: librkaiq.so
5.1.10 rk_aiq_uapi2_camgroup_bind
【Описание】Зарезервированный интерфейс, не реализован.
5.1.11 rk_aiq_uapi2_camgroup_unbind
【Описание】Зарезервированный интерфейс, не реализован.
5.2 Структуры данных
5.2.1 rk_aiq_camgroup_instance_cfg_t
【Описание】Параметры Carmelaghrup (написание исходника).
【Определение】
typedef struct rk_aiq_camgroup_instance_cfg_s {
const char* sns_ent_nm_array[RK_AIQ_CAM_GROUP_MAX_CAMS];
int sns_num;
const char* config_file_dir;
/* followings are relative path to config_file_dir */
const char* single_iq_file;
const char* group_iq_file;
const char* overlap_map_file;
} rk_aiq_camgroup_instance_cfg_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sns_ent_nm_array | Массив сущностей Sensor, которые нужно включить в управление группой. |
| sns_num | Количество сущностей sensor, добавляемых в группу. |
| config_file_dir | Задаёт путь к файлам IQ. |
| single_iq_file | Задаёт имя файла IQ; допускается NULL, тогда AIQ выбирает файл автоматически. |
| group_iq_file | Заданный файл IQ для Camera group; пока не используется. |
| overlap_map_file | Задаёт файл сведений о перекрытии Camera; допускается NULL. |
5.2.2 rk_aiq_camgroup_camInfos_t
【Описание】Сведения о каждой камере Camera group.
【Определение】
typedef struct rk_aiq_camgroup_camInfos_s {
int valid_sns_num;
const char* sns_ent_nm[RK_AIQ_CAM_GROUP_MAX_CAMS];
int sns_camPhyId[RK_AIQ_CAM_GROUP_MAX_CAMS];
} rk_aiq_camgroup_camInfos_t;
【Члены】
| Имя члена | Описание |
|---|---|
| valid_sns_num | Количество сущностей Sensor в группе. |
| sns_ent_nm | Массив имён сущностей Sensor в группе. |
| sns_camPhyId | Массив физических ID, соответствующих сущностям Sensor в группе. |
5.2.3 struct RK_PS_SrcOverlapMap
【Описание】Определение областей перекрытия камер.
【Определение】
struct RK_PS_SrcOverlapMap
{
char versionInfo[64];
RK_PS_SrcOverlapPosition srcOverlapPositon[8];
unsigned char overlapMap[15 * 15 * 8];
};
【Члены】
| Имя члена | Описание |
|---|---|
| versionInfo | Сведения о версии |
| srcOverlapPositon | Угол поворота каждой камеры: 0, 90, 180 или 270 градусов. |
| overlapMap | Сведения о перекрытии статистических блоков восьми камер: у каждой камеры сетка 15*15; всего восемь камер с номерами 0~7. Если камер меньше восьми, соответствующие позиции заполняются нулями. Запись построчная: сначала первая строка всех восьми камер, затем вторая и т. д. Диапазон 0~255: 0 — нет перекрытия, 255 — полное перекрытие; частичное перекрытие интерполируется пропорционально. Порядок: camera0 row0; camera1 row0; camera2 row0; camera3 row0; camera4 row0; camera5 row0; camera6 row0; camera7 row0; camera0 row1; camera1 row1; camera2 row1; camera3 row1; camera4 row1; camera5 row1; camera6 row1; camera7 row1; …… camera0 row14; camera1 row14; camera2 row14; camera3 row14; camera4 row14; camera5 row14; camera6 row14; camera7 row14; |
6. AE
6.1 Обзор
Модуль AE определяет экспозицию текущего изображения системой автоматического замера и автоматически настраивает диафрагму объектива, затвор и усиление sensor для наилучшего качества изображения.
6.2 Основные понятия
Время экспозиции: время накопления заряда sensor, от начала экспонирования пикселя до считывания заряда.
Усиление экспозиции: общий коэффициент усиления выходного заряда sensor, обычно включающий цифровое и аналоговое усиление. Аналоговое вносит несколько меньше шума, поэтому обычно предпочтительнее.
Диафрагма: механизм объектива, изменяющий размер светового отверстия.
Подавление мерцания: устраняет мерцание из-за несовпадения частоты питания лампы и частоты кадров sensor; обычно ограничивает выдержку и изменяет частоту кадров sensor.
6.3 Описание функций
Модуль AE состоит из статистики AE и алгоритма стратегии управления AE.
6.4 Справочник функционального API
6.4.1 rk_aiq_uapi2_setAeLock
【Описание】
Настройка блокировки экспозиции AE.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setAeLock(const rk_aiq_sys_ctx_t* ctx, bool on);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| on | Включение блокировки | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 |
6.4.2 rk_aiq_uapi2_setExpMode
【Описание】Установка автоматического или ручного режима экспозиции.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setExpMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| mode | Режим экспозиции | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Примечание】
При переходе к ручной экспозиции усиление и выдержка берутся из начальных значений файла эффектов. Чтобы одновременно задать экспозицию, используйте rk_aiq_uapi2_setManualExp.
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.3 rk_aiq_uapi2_getExpMode
【Описание】Получение режима экспозиции.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getExpMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| mode | Режим экспозиции | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.4 rk_aiq_uapi2_setManualExp
【Описание】Установка ручной экспозиции с заданием усиления и выдержки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setManualExp(const rk_aiq_sys_ctx_t* ctx, float gain,
float time);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| gain | Усиление экспозиции | Вход |
| time | Время экспозиции | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.5 rk_aiq_uapi2_setExpGainRange
【Описание】Установка диапазона усиления.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setExpGainRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
*gain);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| gain | Диапазон усиления экспозиции | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.6 rk_aiq_uapi2_getExpGainRange
【Описание】Получение диапазона усиления.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getExpGainRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
*gain);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| gain | Диапазон усиления экспозиции | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.7 rk_aiq_uapi2_setExpTimeRange
【Описание】Установка диапазона выдержки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setExpTimeRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
*time);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| time | Диапазон выдержки | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.8 rk_aiq_uapi2_getExpTimeRange
【Описание】Получение диапазона выдержки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getExpTimeRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
*time);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| time | Диапазон выдержки | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.9 rk_aiq_uapi2_setBLCMode
【Описание】Включение компенсации контрового света и выбор области.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setBLCMode(const rk_aiq_sys_ctx_t* ctx, bool on,
aeMeasAreaType_t areaType);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| on | Переключатель | Вход |
| areaType | Выбор области компенсации | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Примечание】
Интерфейс доступен только в линейном режиме.
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.10 rk_aiq_uapi2_setBLCStrength
【Описание】Установка степени усиления тёмных областей.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setBLCStrength(const rk_aiq_sys_ctx_t* ctx, int
strength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| strength | Степень усиления, диапазон [1,100]. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Примечание】
Интерфейс доступен только в линейном режиме.
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.11 rk_aiq_uapi2_setHLCMode
【Описание】Включение подавления ярких областей.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setHLCMode(const rk_aiq_sys_ctx_t* ctx, bool on);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| on | Переключатель | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Примечание】
Интерфейс доступен только в линейном режиме.
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.12 rk_aiq_uapi2_setHLCStrength
【Описание】Установка степени подавления ярких областей.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setHLCStrength(const rk_aiq_sys_ctx_t* ctx, int
strength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| strength | Степень подавления, диапазон [1,100]. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Примечание】
Интерфейс доступен только в линейном режиме.
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.sov (написание исходника, требуется проверка).
6.4.13 rk_aiq_uapi2_setAntiFlickerEn
【Описание】Включение подавления мерцания на частоте сети.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setAntiFlickerEn(const rk_aiq_sys_ctx_t* ctx, bool on);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| on | Параметры включения функции | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.14 rk_aiq_uapi2_getAntiFlickerEn
【Описание】Включение подавления мерцания на частоте сети.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getAntiFlickerEn(const rk_aiq_sys_ctx_t* ctx, bool* on);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| on | Параметры включения функции | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.15 rk_aiq_uapi2_setAntiFlickerMode
【Описание】Установка режима подавления мерцания.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setAntiFlickerMode(const rk_aiq_sys_ctx_t* ctx,
antiFlickerMode_t mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| mode | Режим подавления мерцания | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.16 rk_aiq_uapi2_getAntiFlickerMode
【Описание】Получение режима подавления мерцания.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getAntiFlickerMode(const rk_aiq_sys_ctx_t* ctx,
antiFlickerMode_t *mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| mode | Режим подавления мерцания | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.17 rk_aiq_uapi2_setExpPwrLineFreqMode
【Описание】Установка частоты подавления мерцания.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setExpPwrLineFreqMode(const rk_aiq_sys_ctx_t* ctx,
expPwrLineFreq_t freq);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| freq | Частота подавления мерцания | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.4.18 rk_aiq_uapi2_getExpPwrLineFreqMode
【Описание】Получение частоты подавления мерцания.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getExpPwrLineFreqMode(const rk_aiq_sys_ctx_t* ctx,
expPwrLineFreq_t *freq);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| freq | Частота подавления мерцания | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
6.5 Типы данных функционального API
6.5.1 opMode_t
【Описание】Определение автоматического и ручного режимов.
【Определение】
typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUALl = 1,
OP_INVAL
} opMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| OP_AUTO | Автоматический режим |
| OP_MANUALl | Ручной режим |
| OP_INVAL | Недопустимое значение |
6.5.2 paRange_t
【Описание】Определение диапазона параметра.
【Определение】
typedef struct paRange_s {
float max;
float min;
} paRange_t;
【Члены】
| Имя члена | Описание |
|---|---|
| max | Верхняя граница |
| min | Нижняя граница |
6.5.3 aeMeasAreaType_t
【Описание】Определение типа области измерения AE.
【Определение】
typedef enum aeMeasAreaType_e {
AE_MEAS_AREA_AUTO = 0,
AE_MEAS_AREA_UP,
AE_MEAS_AREA_BOTTOM,
AE_MEAS_AREA_LEFT,
AE_MEAS_AREA_RIGHT,
AE_MEAS_AREA_CENTER,
} aeMeasAreaType_t;
【Члены】
| Имя члена | Описание |
|---|---|
| AE_MEAS_AREA_AUTO | Автоматически |
| AE_MEAS_AREA_UP | Верхняя область |
| AE_MEAS_AREA_BOTTOM | Нижняя область |
| AE_MEAS_AREA_LEFT | Левая область |
| AE_MEAS_AREA_RIGHT | Правая область |
| AE_MEAS_AREA_CENTER | Центральная область |
6.5.4 expPwrLineFreq_t
【Описание】Определение частоты подавления мерцания.
【Определение】
typedef enum expPwrLineFreq_e {
EXP_PWR_LINE_FREQ_DIS = 0,
EXP_PWR_LINE_FREQ_50HZ = 1,
EXP_PWR_LINE_FREQ_60HZ = 2,
} expPwrLineFreq_t;
【Члены】
| Имя члена | Описание |
|---|---|
| EXP_PWR_LINE_FREQ_DIS | |
| EXP_PWR_LINE_FREQ_50HZ | 50 Hz |
| EXP_PWR_LINE_FREQ_60HZ | 60 Hz |
6.5.5 antiFlickerMode_t
【Описание】Определение режима подавления мерцания.
【Определение】
typedef enum antiFlickerMode_e {
ANTIFLICKER_NORMAL_MODE = 0,
ANTIFLICKER_AUTO_MODE = 1,
} antiFlickerMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ANTIFLICKER_NORMAL_MODE | Обычный режим |
| ANTIFLICKER_AUTO_MODE | Автоматический выбор режима |
6.6 Справочник модульного API
6.6.1 rk_aiq_user_api2_ae_setExpSwAttr
【Описание】Установка программных атрибутов экспозиции AE.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_setExpSwAttr(const rk_aiq_sys_ctx_t* ctx,
const Uapi_ExpSwAttrV2_t expSwAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| expSwAttr | Структура параметров управления общими функциями AE | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
【Пример】
Настройка ручной экспозиции
Компоненты экспозиции: выдержка sensor, его усиление и цифровое усиление ISP. После выбора ручного режима задайте ручные состояния каждого компонента (ManualGainEn, ManualTimeEn, ManualIspDgainEn) и соответствующие значения. В ручном режиме все компоненты должны управляться вручную; значения ограничены sensor и объективом. При превышении ограничений sensor алгоритм автоматически исправляет значение.
Uapi_ExpSwAttrV2_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
expSwAttr.AecOpType = RK_AIQ_OP_MODE_MANUAL;
//LinearAE
expSwAttr.stManual.LinearAE.ManualGainEn = true;
expSwAttr.stManual.LinearAE.ManualTimeEn = true;
expSwAttr.stManual.LinearAE.GainValue = 1.0f; /*gain = 1x*/
expSwAttr.stManual.LinearAE.TimeValue = 0.02f; /*time = 1/50s*/
//HdrAE (should set all frames)
expSwAttr.stManual.HdrAE.ManualGainEn = true;
expSwAttr.stManual.HdrAE.ManualTimeEn = true;
expSwAttr.stManual.HdrAE.GainValue[0] = 1.0f; /*sframe gain = 1x*/
expSwAttr.stManual.HdrAE.TimeValue[0] = 0.002f; /*sframe time = 1/500s*/
expSwAttr.stManual.HdrAE.GainValue[1] = 2.0f; /*mframe gain = 2x*/
expSwAttr.stManual.HdrAE.TimeValue[1] = 0.01f; /*mframe time = 1/100s*/
expSwAttr.stManual.HdrAE.GainValue[2] = 4.0f; /*lframe gain = 4x*/
expSwAttr.stManual.HdrAE.TimeValue[2] = 0.02f; /*lframe time = 1/50s*/
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
Настройка автоматической экспозиции
Для автоматической экспозиции задаются диапазоны компонентов; при выходе за ограничения sensor алгоритм корректирует их автоматически.
【Примечание】Параметры задания диапазона компонентов экспозиции отличаются от параметров получения диапазона.
Uapi_ExpSwAttrV2_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
expSwAttr.AecOpType = RK_AIQ_OP_MODE_AUTO;
//set time range in struct "stAdvanced"
expSwAttr.stAdvanced.SetAeRangeEn = true;/*must enable*/
//LinAE
expSwAttr.stAdvanced.SetLinAeRange.stExpTimeRange.Max = 0.04f; /*time_max =
0.04*/
expSwAttr.stAdvanced.SetLinAeRange.stExpTimeRange.Min = 0.001f; /*time_min =
0.001*/
//HdrAE
expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[0].Max = 0.002f; /*sframe
time_max = 0.02*/
expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[0].Min = 0.001f; /*sframe
time_min = 0.01*/
expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[1].Max = 0.003f; /*mframe
time_max = 0.03*/
expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[1].Min = 0.002f; /*mframe
time_min = 0.02*/
expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[2].Max = 0.04f; /*lframe
time_max = 0.03*/
expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[2].Min = 0.03f; /*lframe
time_min = 0.02*/
//get time range in struct "stAuto"
printf("linear time range=[%f,%f]\n",
expSwAttr.stAuto.LinAeRange.stExpTimeRange.Min,
expSwAttr.stAuto.LinAeRange.stExpTimeRange.Max);
printf("hdr stime range=[%f,%f], mtime range=[%f,%f], ltime range=[%f,%f]\n",
expSwAttr.stAuto.HdrAeRange.stExpTimeRange[0].Min,
expSwAttr.stAuto.HdrAeRange.stExpTimeRange[0].Max,
expSwAttr.stAuto.HdrAeRange.stExpTimeRange[1].Min,
expSwAttr.stAuto.HdrAeRange.stExpTimeRange[1].Max,
expSwAttr.stAuto.HdrAeRange.stExpTimeRange[2].Min,
expSwAttr.stAuto.HdrAeRange.stExpTimeRange[2].Max);
//set gain range in struct "stAdvanced"
expSwAttr.stAdvanced.SetAeRangeEn = true;/*must enable*/
//LinAE
expSwAttr.stAdvanced.SetLinAeRange.stGainRange.Max = 32.0f; /*gain_max = 32x*/
expSwAttr.stAdvanced.SetLinAeRange.stGainRange.Min = 1.0f; /*gain_min = 1x*/
//HdrAE
expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[0].Max = 32.0f; /*sframe gain_max
= 2x*/
expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[0].Min = 1.0f; /*sframe gain_min =
1x*/
expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[1].Max = 64.0f; /*mframe gain_max
= 64x*/
expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[1].Min = 1.0f; /*mframe gian_min =
1x*/
expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[2].Max = 64.0f; /*lframe gain_max
= 64x*/
expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[2].Min = 1.0f; /*lframe gain_min =
1x*/
//get gain range in struct "stAuto"
printf("linear gain range=[%f,%f]\n",
expSwAttr.stAuto.LinAeRange.stGainRange.Min,
expSwAttr.stAuto.LinAeRange.stGainRange.Max);
printf("hdr sgain range=[%f,%f], mgain range=[%f,%f], lgain range=[%f,%f]\n",
expSwAttr.stAuto.HdrAeRange.stGainRange[0].Min,
expSwAttr.stAuto.HdrAeRange.stGainRange[0].Max,
expSwAttr.stAuto.HdrAeRange.stGainRange[1].Min,
expSwAttr.stAuto.HdrAeRange.stGainRange[1].Max,
expSwAttr.stAuto.HdrAeRange.stGainRange[2].Min,
expSwAttr.stAuto.HdrAeRange.stGainRange[2].Max);
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
Настройка полуручной экспозиции
Полуручная экспозиция требует ручного управления хотя бы одним компонентом (выдержкой sensor, его усилением или цифровым усилением ISP), тогда как остальные управляются автоматически; иначе происходит выход с ошибкой. Для ручного усиления при автоматических выдержке и усилении ISP есть два способа. Способ 1: в ручном режиме задать false для ручного управления выдержкой и усилением ISP, true для усиления sensor и нужное ручное значение. Способ 2: в автоматическом режиме установить одинаковые максимум и минимум усиления, равные фиксируемому значению.
【Примечание】Способ 1: в HDR ручное управление синхронно для всех кадров — соответствующие компоненты имеют одинаковое состояние. Максимальная экспозиция длинного кадра должна превышать максимальную короткого, минимальная длинного — минимальную короткого. Способ 2: в HDR состояния могут различаться, например ручное усиление короткого и автоматическое длинного кадра. Требования к превышению максимума и минимума длинного кадра над коротким сохраняются.
//Method One
Uapi_ExpSwAttrV2_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
expSwAttr.AecOpType = RK_AIQ_OP_MODE_MANUAL;
//LinearAE
expSwAttr.stManual.LinearAE.ManualGainEn = true;
expSwAttr.stManual.LinearAE.ManualTimeEn = false;
expSwAttr.stManual.LinearAE.ManualIspDgainEn = false;
expSwAttr.stManual.LinearAE.GainValue = 2.0f; /*gain = 2x*/
//HdrAE (need to set all frames)
expSwAttr.stManual.HdrAE.ManualGainEn = true;
expSwAttr.stManual.HdrAE.ManualTimeEn = false;
expSwAttr.stManual.HdrAE.ManualIspDgainEn = false;
expSwAttr.stManual.HdrAE.GainValue[0] = 1.0f; /*sframe gain = 1x*/
expSwAttr.stManual.HdrAE.GainValue[1] = 2.0f; /*mframe gain = 2x*/
expSwAttr.stManual.HdrAE.GainValue[2] = 4.0f; /*lframe gain = 4x*/
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
//Method Two
Uapi_ExpSwAttrV2_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
expSwAttr.AecOpType = RK_AIQ_OP_MODE_AUTO;
//set gain range
expSwAttr.stAdvanced.SetAeRangeEn = true;/*Must be enabled*/
//LinAE
expSwAttr.stAdvanced.SetLinAeRange.stGainRange.Max = 2.0f; /*gain_max = 2x*/
expSwAttr.stAdvanced.SetLinAeRange.stGainRange.Min = 2.0f; /*gain_min = 2x*/
//HdrAE (allow to set only one frame)
expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[0].Max = 2.0f; /*sframe gain_max =
2x*/
expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[0].Min = 2.0f; /*sframe gain_min
= 2x*/
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
Настройка фиксированной частоты кадров или её автоматического снижения
В режиме фиксированной частоты нельзя превышать максимальную частоту, заданную драйвером; иначе выводится сообщение в журнал и настройка частоты отключается.
//set fixed framemode
Uapi_ExpSwAttrV2_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
expSwAttr.stAuto.stFrmRate.isFpsFix = true;
expSwAttr.stAuto.stFrmRate.FpsValue = 25; /*fps = 25*/
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
//set auto framemode
Uapi_ExpSwAttrV2_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
expSwAttr.stAuto.stFrmRate.isFpsFix = false;
/*Generally, the automatic frame reduction mode is configured by tuning personnel
in advance with the minimum frame rate and the gain value corresponding to the
switching frame rate*/
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
Настройка скорости регулировки экспозиции и задержки в кадрах
Uapi_ExpSwAttrV2_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
//set ae speed
expSwAttr.stAuto.stAeSpeed.DampOver = 0.8f;
expSwAttr.stAuto.stAeSpeed.DampDark2Bright = 0.8f;
expSwAttr.stAuto.stAeSpeed.DampUnder = 0.8f;
expSwAttr.stAuto.stAeSpeed.DampBright2Dark = 0.8f;
//set ae delay
expSwAttr.stAuto.BlackDelayFrame = 2;
expSwAttr.stAuto.WhiteDelayFrame = 4;
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
Настройка подавления мерцания
Uapi_ExpSwAttr_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
//set antifilicker mode
expSwAttr.stAuto.stAntiFlicker.enable = true;
expSwAttr.stAuto.stAntiFlicker.Frequency = AECV2_FLICKER_FREQUENCY_50HZ;
expSwAttr.stAuto.stAntiFlicker.Mode = AECV2_ANTIFLICKER_AUTO_MODE;
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
Настройка весов AE
Задаются веса 15X15, которые алгоритм сжимает под фактическую сетку аппаратных блоков. Можно менять веса непосредственно в JSON либо через stadvanced; при отключении последнего восстанавливаются веса JSON. Рекомендуется второй способ.
Для приложений с лицами при появлении лица рекомендуется expSwAttr.stAdvanced.enable = true и использование весов expSwAttr.stAdvanced; при исчезновении — false для возврата исходных весов.
Uapi_ExpSwAttr_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
uint8_t GridWeights[225]={
0, 0, 1, 2, 2, 3, 4, 5, 4, 3, 2, 2, 1, 0, 0,
0, 1, 2, 3, 3, 4, 5, 6, 5, 4, 3, 3, 2, 1, 0,
1, 2, 3, 5, 5, 6, 7, 8, 7, 6, 5, 5, 3, 2, 1,
2, 3, 5, 7, 7, 8, 9, 10, 9, 8, 7, 7, 5, 3, 2,
2, 3, 5, 7, 8, 9, 10, 11, 10, 9, 8, 7, 5, 3, 2,
2, 4, 6, 8, 9, 10, 11, 12, 11,10, 9, 8, 6, 4, 2,
2, 4, 6, 9, 10, 11, 12, 13, 12,11, 10, 9, 6, 4, 2,
3, 5 ,7, 10, 11, 12, 13, 14, 13,12, 11, 10, 7, 5, 3,
2, 4, 6, 9, 10, 11, 12, 13, 12,11, 10, 9, 6, 4, 2,
2, 4, 6, 8, 9, 10, 11, 12, 11,10, 9, 8, 6, 4, 2,
2, 3, 5, 7, 8, 9, 10, 11, 10, 9, 8, 7, 5, 3, 2,
2, 3, 5, 7, 7, 8, 9, 10, 9, 8, 7, 7, 5, 3, 2,
1, 2, 4, 6, 6, 7, 8, 9, 8, 7, 6, 6, 4, 2, 1,
0, 1, 3, 5, 5, 6, 7, 8, 7, 6, 5, 5, 3, 1, 0,
0, 1, 3, 5, 5, 6, 7, 8, 7, 6, 5, 5, 3, 1, 0
};
//method one:
memcpy(expSwAttr.GridWeights.uCoeff, GridWeights,
sizeof(expSwAttr.GridWeights.uCoeff));
//method two:
expSwAttr.stAdvanced.enable = true; //important! true means preferring to use these parameters
memcpy(expSwAttr.stAdvanced.GridWeights, GridWeights,
sizeof(expSwAttr.stAdvanced.GridWeights));
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
6.6.2 rk_aiq_user_api2_ae_getExpSwAttr
【Описание】Получение программных атрибутов экспозиции AE.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_getExpSwAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_ExpSwAttrV2_t* pExpSwAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| pExpSwAttr | Указатель структуры программных атрибутов экспозиции AE | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
6.6.3 rk_aiq_user_api2_ae_setLinAeRouteAttr
【Описание】Установка стратегии распределения экспозиции AE для сцены в линейном режиме.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_setLinAeRouteAttr(const rk_aiq_sys_ctx_t* ctx, const
Uapi_LinAeRouteAttr_t linAeRouteAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| linAeRouteAttr | Структура стратегии распределения экспозиции AE | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
【Пример】
Uapi_LinAeRouteAttr_t LinAeRouteAttr;
memset(&LinAeRouteAttr,0x00,sizeof(Uapi_LinAeRouteAttr_t));
rk_aiq_user_api2_ae_getLinAeRouteAttr(sys_ctx,&LinAeRouteAttr);
int len = 8;
float TimeDot[8]={0,0.01,0.01,0.02,0.02,0.03,0.03,0.04};
float GainDot[8]={1,1,4,4,8,8,16,32};
float IspGainDot[8]={1,1,1,1,1,1,1,1};
int PirisDot[8]={512,512,512,512,512,512,512,512};
LinAeRouteAttr.TimeDot_len = len;
LinAeRouteAttr.GainDot_len = len;
LinAeRouteAttr.IspDGainDot_len = len;
LinAeRouteAttr.PIrisDot_len = len;
LinAeRouteAttr.GainDot = GainDot;
LinAeRouteAttr.IspDGainDot = IspGainDot;
LinAeRouteAttr.TimeDot = TimeDot;
LinAeRouteAttr.PIrisDot = PirisDot;
rk_aiq_user_api2_ae_setLinAeRouteAttr(sys_ctx,LinAeRouteAttr);
6.6.4 rk_aiq_user_api2_ae_getLinAeRouteAttr
【Описание】Получение стратегии распределения экспозиции AE для сцены в линейном режиме.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_getLinAeRouteAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_LinAeRouteAttr_t* pLinAeRouteAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| pLinAeRouteAttr | Указатель структуры стратегии распределения экспозиции AE | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
6.6.5 rk_aiq_user_api2_ae_setHdrAeRouteAttr
【Описание】Установка стратегии распределения экспозиции AE для сцены в режиме HDR.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_setHdrAeRouteAttr(const rk_aiq_sys_ctx_t* ctx, const
Uapi_HdrAeRouteAttr_t hdrAeRouteAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| hdrAeRouteAttr | Структура стратегии распределения экспозиции AE | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
【Пример】
Uapi_HdrAeRouteAttr_t stHdrRoute;
memset(&stHdrRoute,0x00,sizeof(Uapi_HdrAeRouteAttr_t));
ret = rk_aiq_user_api2_ae_getHdrAeRouteAttr(ctx,&stHdrRoute);
int len = 6;
float HdrTimeDot[3][6] = {0.0, 0.01, 0.01, 0.01, 0.01, 0.01,
0.0, 0.02, 0.02, 0.02, 0.02, 0.02,
0.0, 0.03, 0.03, 0.03, 0.03, 0.03};
float HdrGainDot[3][6] = {1, 1, 4, 6, 8, 12,
1, 1, 4, 6, 8, 12,
1, 1, 4, 6, 8, 12};
float HdrIspDGainDot[3][6] = {1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1};
int HdrPIrisGainDot[6] = {1, 1, 1, 1, 1, 1};
stHdrRoute.Frm0TimeDot_len = len;
stHdrRoute.Frm0GainDot_len = len;
stHdrRoute.Frm0IspDGainDot_len = len;
stHdrRoute.Frm1TimeDot_len = len;
stHdrRoute.Frm1GainDot_len = len;
stHdrRoute.Frm1IspDGainDot_len = len;
stHdrRoute.Frm2TimeDot_len = len;
stHdrRoute.Frm2GainDot_len = len;
stHdrRoute.Frm2IspDGainDot_len = len;
stHdrRoute.PIrisDot_len = len;
stHdrRoute.Frm0TimeDot = HdrTimeDot[0];
stHdrRoute.Frm0GainDot = HdrGainDot[0];
stHdrRoute.Frm0IspDGainDot = HdrIspDGainDot[0];
stHdrRoute.Frm1TimeDot = HdrTimeDot[1];
stHdrRoute.Frm1GainDot = HdrGainDot[1];
stHdrRoute.Frm1IspDGainDot = HdrIspDGainDot[1];
stHdrRoute.Frm2TimeDot = HdrTimeDot[2];
stHdrRoute.Frm2GainDot = HdrGainDot[2];
stHdrRoute.Frm2IspDGainDot = HdrIspDGainDot[2];
stHdrRoute.PIrisDot = HdrPIrisGainDot;
ret = rk_aiq_user_api2_ae_setHdrAeRouteAttr(ctx,stHdrRoute);
6.6.6 rk_aiq_user_api2_ae_getHdrAeRouteAttr
【Описание】Получение стратегии распределения экспозиции AE для сцены в режиме HDR.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_getHdrAeRouteAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_HdrAeRouteAttr_t* pHdrAeRouteAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| pHdrAeRouteAttr | Указатель структуры стратегии распределения экспозиции AE | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
6.6.7 rk_aiq_user_api2_ae_setLinExpAttr
【Описание】Установка параметров экспозиции AE в линейном режиме.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_setLinExpAttr(const rk_aiq_sys_ctx_t* ctx, const
Uapi_LinExpAttrV2_t linExpAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| linExpAttr | Структура параметров экспозиции AE | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
【Пример】
Установка параметров линейной экспозиции AE, включая Evbias для регулировки яркости, BackLightCtrl для компенсации контрового света и OverExpCtrl для подавления ярких областей. Последние две функции нельзя включать одновременно.
Uapi_LinExpAttrV2_t linExpAttr;
memset(&linExpAttr,0,sizeof(Uapi_LinExpAttrV2_t));
ret = rk_aiq_user_api2_ae_getLinExpAttr(ctx, &linExpAttr);
//set Evbias
printf("Evbias=%f\n", linExpAttr.Evbias);
linExpAttr.Evbias = 100.0f;
//set BackLightCtrl
linExpAttr.BackLightCtrl.Enable = true;
linExpAttr.BackLightCtrl.StrBias = 200.0f;
//set OverExpCtrl
linExpAttr.OverExpCtrl.Enable = true;
linExpAttr.OverExpCtrl.StrBias = 100.0f;
ret = rk_aiq_user_api2_ae_setLinExpAttr(ctx, linExpAttr);
6.6.8 rk_aiq_user_api2_ae_getLinExpAttr
【Описание】Получение параметров линейной экспозиции AE.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_getLinExpAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_LinExpAttrV2_t* pLinExpAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| pLinExpAttr | Указатель структуры параметров экспозиции AE | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
6.6.9 rk_aiq_user_api2_ae_setHdrExpAttr
【Описание】Установка параметров экспозиции AE в режиме HDR.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_setHdrExpAttr(const rk_aiq_sys_ctx_t* ctx, const
Uapi_HdrExpAttrV2_t hdrExpAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| hdrExpAttr | Структура параметров экспозиции AE | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
【Пример】
Установка параметров HDR AE, включая ручное/автоматическое соотношение экспозиций и регулировку яркости Evbias.
Uapi_HdrExpAttrV2_t HdrExpAttr;
memset(&HdrExpAttr,0,sizeof(Uapi_HdrExpAttrV2_t));
ret = rk_aiq_user_api2_ae_getHdrExpAttr(ctx, &HdrExpAttr);
//set hdr mframe params
int len = 8;
float explevel[8] = {0, 0.096, 0.192, 0.384, 0.96, 1.344, 1.92, 3};
float setpoint[8] = {50, 45, 40, 35, 30, 25, 20, 15};
HdrExpAttr.HdrAEAttr.MframeCtrl.MExpLevel_len = len;
HdrExpAttr.HdrAEAttr.MframeCtrl.MSetPoint_len = len;
HdrExpAttr.HdrAEAttr.MframeCtrl.MExpLevel = explevel;
HdrExpAttr.HdrAEAttr.MframeCtrl.MSetPoint = setpoint;
//set ExpRatioType (AUTO/FIX)
HdrExpAttr.ExpRatioCtrl.ExpRatioType = AECV2_HDR_RATIOTYPE_MODE_AUTO;
//set Evbias
HdrExpAttr.Evbias = -100.0f;
ret = rk_aiq_user_api2_ae_setHdrExpAttr(ctx, HdrExpAttr);
6.6.10 rk_aiq_user_api2_ae_getHdrExpAttr
【Описание】Получение параметров экспозиции AE в режиме HDR.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_getHdrExpAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_HdrExpAttrV2_t* pHdrExpAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| pHdrExpAttr | Указатель структуры параметров экспозиции AE | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
6.6.11 rk_aiq_user_api2_ae_setIrisAttr
【Описание】Установка параметров управления диафрагмой AE.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_setIrisAttr(const rk_aiq_sys_ctx_t * sys_ctx, const
Uapi_IrisAttrV2_t irisAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| irisAttr | Структура параметров управления диафрагмой | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
【Пример】
Uapi_IrisAttrV2_t irisAttr;
ret = rk_aiq_user_api2_ae_getIrisAttr(ctx, &irisAttr);
irisAttr.enable = true; /*run AIris*/
//set P-iris attributes
irisAttr.IrisType = IRIS_P_TYPE;
irisAttr.PIrisAttr.TotalStep = 81;
irisAttr.PIrisAttr.EffcStep = 44;
irisAttr.PIrisAttr.ZeroIsMax = true;
uint16_t StepTable[1024] = {512, 511, 506, 499, 491, 483, 474, 465, 456,
446, 437, 427, 417, 408, 398, 388, 378, 368,
359, 349, 339, 329, 319, 309, 300, 290, 280,
271, 261, 252, 242, 233, 224, 214, 205, 196,
187, 178, 170, 161, 153, 144, 136, 128, 120,
112, 105, 98, 90, 83, 77, 70, 64, 58,
52, 46, 41, 36, 31, 27, 23, 19, 16,
13, 10, 8, 6, 4, 3, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0};
memcpy(irisAttr.PIrisAttr.StepTable,StepTable,sizeof(irisAttr.PIrisAttr.StepTable
));
ret = rk_aiq_user_api2_ae_setIrisAttr(ctx, irisAttr);
//set DC-iris attributes
irisAttr.IrisType = IRIS_DC_TYPE;
irisAttr.DCIrisAttr.Kp= 0.5f;
irisAttr.DCIrisAttr.Ki= 0.2f;
irisAttr.DCIrisAttr.Kd = 0.3f;
irisAttr.DCIrisAttr.OpenPwmDuty = 40;
irisAttr.DCIrisAttr.ClosePwmDuty = 22;
irisAttr.DCIrisAttr.MinPwmDuty = 0;
irisAttr.DCIrisAttr.MaxPwmDuty = 100;
ret = rk_aiq_user_api2_ae_setIrisAttr(ctx, irisAttr);
//set manual iris with auto ae
irisAttr.IrisOpType = RK_AIQ_OP_MODE_MANUAL;
if(irisAttr.IrisType == IRIS_P_TYPE);
irisAttr.ManualAttr.PIrisGainValue = 512; /*p-iris F#=1.4*/
if(irisAttr.IrisType == IRIS_DC_TYPE);
irisAttr.ManualAttr.DCIrisHoldValue = 20; /*dc-iris PwmDuty=20*/
ret = rk_aiq_user_api2_ae_setIrisAttr(ctx, irisAttr);
6.6.12 rk_aiq_user_api2_ae_getIrisAttr
【Описание】Получение параметров управления диафрагмой AE.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_getIrisAttr(const rk_aiq_sys_ctx_t * sys_ctx, const
Uapi_IrisAttrV2_t* irisAttr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| irisAttr | Структура параметров управления диафрагмой | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
6.6.13 rk_aiq_user_api2_ae_setExpWinAttr
【Описание】Установка атрибутов окна статистики AE.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_setExpWinAttr(const rk_aiq_sys_ctx_t* sys_ctx, const
Uapi_ExpWin_t ExpWin);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| ExpWin | Параметры атрибутов окна | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
【Пример】
Измените координаты статистики AE по положению лица для измерения яркости его области.
Примечание: при настройке координат обеспечьте ExpWin.h_offs+ExpWin.h_size<=pic_width и ExpWin.v_offs+ExpWin.v_size<=pic_height.
Uapi_ExpWin_t ExpWin;
//Suppose the sensor resolution is 2688X1520, the lateral offset of the face from the upper left corner of the screen is 100 pixel, the vertical offset is 100 pixel, and the face size is a square with a side length of 100 pixel
ExpWin.h_offs=100;
ExpWin.v_offs=100;
ExpWin.h_size=100;
ExpWin.v_size=100;
rk_aiq_user_api2_ae_setExpWinAttr(ctx, ExpWin);
6.6.14 rk_aiq_user_api2_ae_getExpWinAttr
【Описание】Получение атрибутов окна статистики AE.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_getExpWinAttr(const rk_aiq_sys_ctx_t* sys_ctx,const
Uapi_ExpWin_t* ExpWin);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| ExpWin | Параметры атрибутов окна | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
6.6.15 rk_aiq_user_api2_ae_queryExpResInfo
【Описание】Получение внутренних состояний AE.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ae_queryExpResInfo(const rk_aiq_sys_ctx_t* ctx,
Uapi_ExpQueryInfo_t* pExpResInfo);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| pExpResInfo | Указатель структуры внутренних состояний AE | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Библиотека: librkaiq.so
6.7 Типы данных модульного API
6.7.1 Uapi_ExpSwAttr_t
【Описание】
Структура параметров управления общими функциями AE.
【Определение】
typedef struct Uapi_ExpSwAttrV2_s {
rk_aiq_uapi_sync_t sync;
uint8_t Enable;
CalibDb_CamRawStatsModeV2_t RawStatsMode;
CalibDb_CamHistStatsModeV2_t HistStatsMode;
CalibDb_CamYRangeModeV2_t YRangeMode;
uint8_t AecRunInterval;
RKAiqOPMode_t AecOpType;
Cam15x15UCharMatrix_t GridWeights;
Uapi_AeAttrV2_t stAuto;
Uapi_MeAttrV2_t stManual;
Uapi_ExpSwAttr_AdvancedV2_t stAdvanced;
} Uapi_ExpSwAttrV2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| Enable | Включение AEC: 1 — включить алгоритм; 0 — выключить с сохранением последней экспозиции. |
| RawStatsMode | Режим статистики яркости AEC: четыре варианта CAM_RAWSTATSV2_MODE_Y/R/G/B; по умолчанию Y. |
| HistStatsMode | Режим гистограммы AEC. Исходник говорит о пяти вариантах, перечисляя CAM_HISTV2_MODE_Y/R/G/B; по умолчанию Y. Несоответствие количества сохранено. |
| YRangeMode | Диапазон Y-канала AEC: CAM_YRANGEV2_MODE_FULL/LIMITED; по умолчанию FULL. |
| AecRunInterval | Интервал запуска AE, диапазон [0,255], по умолчанию 0. При 0 AE работает каждый кадр, при 1 — через один кадр и т. д. |
| AecOpType | Режим экспозиции: автоматический RK_AIQ_OP_MODE_AUTO или ручной RK_AIQ_OP_MODE_MANUAL; по умолчанию AUTO. Ручной режим требует задания значений через stManual. |
| GridWeights | Веса окна (гистограммы), массив 15*15 элементов, диапазон [0,32]. |
| stAuto | Структура параметров автоматической экспозиции |
| stManual | Структура параметров ручной экспозиции |
| stAdvanced | Структуры параметров |
Связанные типы данных
rk_aiq_uapi_sync_t
Uapi_ExpSwAttr_AdvancedV2_t
Uapi_AeAttrV2_t
Uapi_MeAttrV2_t
6.7.1.1 Uapi_ExpSwAttr_AdvancedV2_t
【Описание】
Приоритет параметров структуры.
【Определение】
typedef struct Aec_uapi_advanced_attr_s {
bool enable;
uint8_t GridWeights[15 * 15];
bool SetAeRangeEn;
Aec_LinAeRange_t SetLinAeRange;
Aec_HdrAeRange_t SetHdrAeRange;
} Aec_uapi_advanced_attr_t;
typedef Aec_uapi_advanced_attr_t Uapi_ExpSwAttr_AdvancedV2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| enable | При 1 приоритет имеют параметры структуры. |
| GridWeights | Веса AE, размер 15X15. |
| SetAeRangeEn | 1 — задать диапазон компонентов автоматической экспозиции; 0 — не задавать, использовать файл настройки. |
| SetLinAeRange | Заданный диапазон компонентов автоматической линейной экспозиции, а не окончательный действующий диапазон. |
| SetHdrAeRange | Заданный диапазон компонентов автоматической экспозиции HDR, а не окончательный действующий диапазон. |
【Меры предосторожности】
Uapi_ExpSwAttrV2_t содержит веса AE 15X15, которые алгоритм разворачивает под фактическое количество аппаратных весов. Для экспозиции лица и подобных областей можно использовать веса 15X15 из Uapi_ExpSwAttr_AdvancedV2_t; алгоритм сжимает их под аппаратную конфигурацию. Для использования весов Uapi_ExpSwAttr_Advanced_t установите enable в 1. В последнем имени типа исходника отсутствует V2; оно сохранено.
Для задания диапазона AE через API установите SetAeRangeEn в 1; иначе используются диапазоны файла настройки. Для разных режимов предусмотрены SetLinAeRange и SetHdrAeRange; последний задаёт диапазоны для каждого кадра. Окончательные действующие диапазоны выдержки и усиления запрашивают в stAuto: здесь хранятся только заданные, не окончательные диапазоны.
6.7.1.1.1 Aec_AeRange_t
【Описание】Определение диапазона параметров AE.
【Определение】
typedef struct Aec_AeRange_s {
float Min;
float Max;
} Aec_AeRange_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Min | Нижняя граница |
| Max | Верхняя граница |
6.7.1.1.2 Aec_LinAeRange_t
【Описание】Определение диапазонов AE в линейном режиме.
【Определение】
typedef struct Aec_LinAeRange_s {
Aec_AeRange_t stExpTimeRange;
Aec_AeRange_t stGainRange;
Aec_AeRange_t stIspDGainRange;
Aec_AeRange_t stPIrisRange;
} Aec_LinAeRange_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stExpTimeRange | Диапазон выдержки; максимум и минимум задаются в миллисекундах (единица исходника). |
| stGainRange | Диапазон аналогового усиления Sensor; задаются максимум и минимум. |
| stIspDGainRange | Диапазон цифрового усиления ISP; задаются максимум и минимум. |
| stPIrisRange | Диапазон эквивалентного усиления диафрагмы; поддерживается только регулировка размера P-Iris. |
【Меры предосторожности】
Если максимум/минимум компонента равен исходному 0, заданный диапазон не действует; фактические границы определяются узлами маршрута разложения экспозиции AecRoute.
При ненулевых максимуме/минимуме заданный диапазон действует. Если ограничения sensor/ISP не превышены, фактические границы равны заданным и соответствующим образом корректируются узлы AecRoute. При превышении ограничений используются максимум/минимум узлов AecRoute.
6.7.1.1.3 Aec_HdrAeRange_t
【Описание】Определение диапазонов AE в режиме HDR.
【Определение】
typedef struct Aec_HdrAeRange_s {
Aec_AeRange_t stExpTimeRange[3];
Aec_AeRange_t stGainRange[3];
Aec_AeRange_t stIspDGainRange[3];
Aec_AeRange_t stPIrisRange;
} Aec_HdrAeRange_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stExpTimeRange | Диапазон выдержки, максимум/минимум в секундах; элементы 0/1/2 соответствуют короткому, среднему и длинному кадрам. |
| stGainRange | Диапазон аналогового усиления Sensor; максимум/минимум элементов 0/1/2 соответствуют короткому, среднему и длинному кадрам. |
| stIspDGainRange | Диапазон цифрового усиления ISP; максимум/минимум элементов 0/1/2 соответствуют короткому, среднему и длинному кадрам. |
| stPIrisRange | Диапазон эквивалентного усиления диафрагмы; задаются максимум и минимум. |
【Меры предосторожности】
stExpTimeRange, stGainRange и stIspDGainRange — массивы из трёх элементов. В двухкадровом HDR действуют только 0 и 1 для короткого и длинного кадров; в трёхкадровом — 0–2 для короткого, среднего и длинного.
При исходных нулевых максимуме/минимуме заданный диапазон не действует; фактические границы определяются узлами маршрута разложения экспозиции после коррекции алгоритмом.
При ненулевых максимуме/минимуме заданный диапазон действует. Если ограничения sensor/ISP не превышены, фактические границы равны заданным, а границы узлов маршрута разложения экспозиции корректируются под них; при превышении ограничений sensor/ISP
фактические границы определяются максимумом/минимумом узлов маршрута разложения экспозиции. Платформа 1106 пока не поддерживает isp dgain, поэтому stIspDGainRange временно не действует.
6.7.1.2 Uapi_AeAttrV2_t
【Описание】Определение атрибутов автоматической экспозиции AE.
【Определение】
typedef struct Uapi_AeAttrV2_s {
Uapi_AeSpeedV2_t stAeSpeed;
DelayFrmNum
uint8_t BlackDelayFrame;
uint8_t WhiteDelayFrame;
Auto/Fixed fps
Uapi_AeFpsAttrV2_t stFrmRate;
Uapi_AntiFlickerV2_t stAntiFlicker;
auto range
Aec_LinAeRange_t LinAeRange;//result LinAerange
Aec_HdrAeRange_t HdrAeRange;//result HdrAerange
} Uapi_AeAttrV2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stAeSpeed | Скорость регулировки автоматической экспозиции |
| BlackDelayFrame | Задержка AE: если яркость ниже целевой дольше BlackDelayFrame кадров, начинается регулировка. |
| WhiteDelayFrame | Задержка AE: если яркость выше целевой дольше WhiteDelayFrame кадров, начинается регулировка. |
| stFrmRate | Структура частоты кадров AE: фиксированная частота или автоматическое снижение. |
| stAntiFlicker | Параметры подавления сетевого мерцания |
| LinAeRange | Структура диапазона линейного AE (окончательный действующий диапазон). |
| HdrAeRange | Структура диапазона HDR AE (окончательный действующий диапазон). |
【Меры предосторожности】
LinAeRange/HdrAeRange — фактически используемые диапазоны после внутренней проверки и коррекции. Если заданный API диапазон превышает ограничения sensor, применяются ограничения sensor. Они описаны в параметре sensorinfo модуля AE документа Rockchip_Tuning_Guide_ISP30_CN.pdf, на который ссылается исходник.
Чтобы задать диапазоны компонентов AE, используйте параметры Uapi_ExpSwAttr_AdvancedV2_t и SetAeRangeEn = 1; иначе действуют диапазоны файла настройки.
6.7.1.2.1 Uapi_AeSpeedV2_t
【Описание】Определение скоростей регулировки AE.
【Определение】
typedef struct CalibDb_AeSpeedV2_s {
float DampOver;
float DampUnder;
float DampDark2Bright;
float DampBright2Dark;
} CalibDb_AeSpeedV2_t;
typedef CalibDb_AeSpeedV2_t Uapi_AeSpeedV2_t;
【Члены】
| Имя поля | Описание |
|---|---|
| DampOver | Скорость регулировки при стабильном освещении и яркости выше целевой, диапазон [0,1]. |
| DampUnder | Скорость регулировки при стабильном освещении и яркости ниже целевой, диапазон [0,1]. |
| DampDark2Bright | Скорость регулировки при резком переходе освещения от тёмного к светлому, диапазон [0,1]. |
| DampBright2Dark | Скорость регулировки при резком переходе от светлого к тёмному, диапазон [0,1]. |
6.7.1.2.2 Uapi_AeFpsAttrV2_t
【Описание】Определение частоты кадров AE.
【Определение】
typedef struct CalibDb_AeFrmRateAttrV2_s {
bool isFpsFix;
uint8_t FpsValue;
} CalibDb_AeFrmRateAttrV2_t;
typedef CalibDb_AeFrmRateAttrV2_t Uapi_AeFpsAttrV2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| isFpsFix | Фиксация частоты кадров AE. По умолчанию FALSE — автоматическое снижение; TRUE — фиксированная частота. |
| FpsValue | Действует только при фиксированной частоте: 0 использует частоту драйвера по умолчанию, ненулевое значение — заданную частоту. |
6.7.1.2.3 Uapi_AntiFlickerV2_t
【Описание】Определение атрибутов подавления мерцания.
【Определение】
typedef struct CalibDb_AntiFlickerAttrV2_s {
bool enable;
CalibDb_FlickerFreq_t Frequency;
CalibDb_AntiFlickerMode_t Mode;
} CalibDb_AntiFlickerAttrV2_t;
typedef CalibDb_AntiFlickerAttrV2_t Uapi_AntiFlickerV2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| enable | Включение подавления сетевого мерцания: 0 — выключено, 1 — включено. |
| Frequency | Три значения частоты: AECV2_FLICKER_FREQUENCY_OFF (действует при бите включения 0), AECV2_FLICKER_FREQUENCY_50HZ и AECV2_FLICKER_FREQUENCY_60HZ; по умолчанию AECV2_FLICKER_FREQUENCY_50HZ, то есть сеть 50 Hz. |
| Mode | Два режима подавления мерцания: обычный AECV2_ANTIFLICKER_NORMAL_MODE и автоматический AECV2_ANTIFLICKER_AUTO_MODE. |
【Меры предосторожности】
Для выключения установите enable = 0; алгоритм задаст Frequency=AECV2_FLICKER_FREQUENCY_OFF. Если enable = 1, значение частоты OFF недействительно и заменяется исходным AECV2_FLICKER_FREQUENCY_50HZ.
В обычном режиме AECV2_ANTIFLICKER_NORMAL_MODE выдержка меняется с яркостью, но её минимум фиксирован: 1/120 sec (60Hz) или 1/100 sec (50Hz); исходник указывает отсутствие ограничения «минимальной выдержкой».
При освещении выдержка согласуется с частотой источника, предотвращая мерцание.
При высокой яркости нужна более короткая выдержка. Ограничение минимальной выдержки обычного режима может привести к пересвету. Автоматический AECV2_ANTIFLICKER_AUTO_MODE меняет выдержку по яркости вплоть до минимума sensor. Основное отличие проявляется при высокой яркости: можно подавить пересвет, однако защита от мерцания тогда не действует.
6.7.1.3 Uapi_MeAttrV2_t
【Описание】
Ручные параметры экспозиции разделены на LinearAE и HdrAE.
【Определение】
typedef struct Uapi_MeAttrV2_s {
Uapi_LinMeAttrV2_t stLinMe;
Uapi_HdrMeAttrV2_t stHdrMe;
} Uapi_MeAttrV2_t;
【Связанные типы данных】
Uapi_LinMeAttrV2_t
Uapi_HdrMeAttrV2_t
6.7.1.3.1 Uapi_LinMeAttrV2_t
【Описание】
Параметры ручного управления экспозицией LinearAE.
【Определение】
typedef struct Uapi_LinMeAttrV2_s {
bool ManualTimeEn;
bool ManualGainEn;
bool ManualIspDgainEn;
float TimeValue;
float GainValue;
float IspDGainValue;
} Uapi_LinMeAttrV2_t;
【Члены】
| Имя поля | Описание |
|---|---|
| ManualTimeEn | Включение ручной выдержки, по умолчанию 1. |
| ManualGainEn | Включение ручного усиления sensor, по умолчанию 1. |
| ManualIspDgainEn | Включение ручного цифрового усиления ISP, по умолчанию 1. |
| TimeValue | Ручная выдержка в s, ограничена sensor. |
| GainValue | Ручное усиление sensor, ограничено sensor. |
| IspDGainValue | Ручное цифровое усиление ISP, ограничено ISP. |
【Меры предосторожности】
Действует только при AeOptype = MANUAL. Если ManualTimeEn, ManualGainEn и ManualIspDgainEn равны 1, режим ручной; при отключении любого — полуавтоматический. Далее исходник говорит о «всех четырёх, равных 0»: это приравнивается к автоматическому режиму с сообщением об ошибке; несоответствие количества сохранено.
В ручном/полуручном режиме выдержка и усиление ограничены границами автоматического режима; при выходе за них используются соответствующие границы автоматического режима.
RK356X не поддерживает цифровое усиление ISP; ManualIspDgainEn и IspDGainValue не действуют.
6.7.1.3.2 Uapi_HdrMeAttrV2_t
【Описание】
Параметры ручного управления экспозицией HdrAE.
【Определение】
typedef struct Uapi_HdrMeAttrV2_s {
bool ManualTimeEn;
bool ManualGainEn;
bool ManualIspDgainEn;
Cam3x1FloatMatrix_t TimeValue;
Cam3x1FloatMatrix_t GainValue;
Cam3x1FloatMatrix_t IspDGainValue;
} Uapi_HdrMeAttrV2_t;
【Члены】
Значения переменных совпадают с Uapi_LinMeAttrV2_t.
【Меры предосторожности】
TimeValue/GainValue/IspDGainValue — массивы из трёх элементов. В двухкадровом HDR действуют [0-1] для короткого и длинного кадров; в трёхкадровом — [0-2] для короткого, среднего и длинного.
В ручном/полуручном режиме выдержка и усиление ограничены границами автоматического режима; при выходе за них используются соответствующие границы автоматического режима.
RK356X пока не поддерживает цифровое усиление ISP; ManualIspDgainEn и IspDGainValue не действуют.
6.7.2 Uapi_LinAeRouteAttr_t
【Описание】Определение атрибутов маршрута разложения линейной экспозиции AE.
【Определение】
typedef struct CalibDb_LinAeRoute_AttrV2_s {
float* TimeDot;
int TimeDot_len;
float* GainDot;
int GainDot_len;
float* IspDGainDot;
int IspDGainDot_len;
int* PIrisDot;
int PIrisDot_len;
} CalibDb_LinAeRoute_AttrV2_t;
typedef struct Uapi_LinAeRouteAttr_s {
rk_aiq_uapi_sync_t sync;
CalibDb_LinAeRoute_AttrV2_t Params;
} Uapi_LinAeRouteAttr_t;
【Члены】
| Имя члена | Описание |
|---|---|
| TimeDot | Узел выдержки sensor в s. |
| GainDot | Узел усиления экспозиции sensor. |
| IspgainDot | Узел цифрового усиления ISP |
| PIrisGainDot | Узел эквивалентного усиления диафрагмы |
【Меры предосторожности】
Число узлов кривой не ограничено, рекомендуется не менее 6.
Экспозиция узла — произведение выдержки, усиления sensor, цифрового усиления ISP, эквивалентного усиления диафрагмы и других компонентов. Она должна монотонно возрастать: следующий узел больше предыдущего. Далее исходник говорит: «у первого узла минимальная экспозиция, у второго — максимальная»; сомнительное соответствие многоузловому описанию сохранено.
Выдержка узла задаётся в секундах, допускается минимум 0; код корректирует фактическую минимальную выдержку по ограничениям sensor.
Компонент диафрагмы поддерживает только P-Iris, но не DC-Iris. Эквивалентное усиление P-iris действует лишь при включённом автоматическом Airis; иначе диафрагма фиксирована в начальном положении. Расчёт описан в AecIrisCtrl.
Заданные узлы не являются окончательным маршрутом. Фактические границы компонентов определяются совместно узлами и вручную настроенными пределами. Сначала выполняется первая коррекция границ узлов:
Если ограничения SENSOR/ISP не превышены, границы узлов не меняются; иначе ограничиваются возможностями SENSOR/ISP. При нулевых ручных границах действует результат первой коррекции. При ненулевых ручных границах в допустимых пределах выполняется вторая коррекция по ручному диапазону; если ручные границы превышают ограничения, сохраняется результат первой коррекции. Между соседними узлами увеличивают только один компонент при фиксированных остальных. Этот компонент задаёт стратегию участка: например, увеличение только усиления означает его приоритет.
RK356X пока не поддерживает цифровое усиление ISP, поэтому IspgainDot не действует.
6.7.3 Uapi_HdrAeRouteAttr_t
【Описание】Определение атрибутов маршрута разложения HDR-экспозиции AE.
【Определение】
typedef struct CalibDb_HdrAeRoute_AttrV2_s {
float* Frm0TimeDot;
int Frm0TimeDot_len;
float* Frm0GainDot;
int Frm0GainDot_len;
float* Frm0IspDGainDot;
int Frm0IspDGainDot_len;
float* Frm1TimeDot;
int Frm1TimeDot_len;
float* Frm1GainDot;
int Frm1GainDot_len;
float* Frm1IspDGainDot;
int Frm1IspDGainDot_len;
float* Frm2TimeDot;
int Frm2TimeDot_len;
float* Frm2GainDot;
int Frm2GainDot_len;
float* Frm2IspDGainDot;
int Frm2IspDGainDot_len;
int* PIrisDot;
int PIrisDot_len;
} CalibDb_HdrAeRoute_AttV2r_t;
typedef struct Uapi_HdrAeRouteAttr_s {
rk_aiq_uapi_sync_t sync;
CalibDb_HdrAeRoute_AttrV2_t Params;
} Uapi_HdrAeRouteAttr_t;
【Поля】
| Имя поля | Описание |
|---|---|
| Frm0/1/2TimeDot | Узлы выдержки в секундах: в двухкадровом HDR действуют Frm0/1TimeDot, в трёхкадровом — Frm0/1/2TimeDot. Исходное обозначение FRM0~3 как порядка от короткой к длинной экспозиции сохранено. |
| Frm0/1/2GainDot | Узлы усиления Sensor: Frm0/1GainDot для двухкадрового HDR и Frm0/1/2GainDot для трёхкадрового; значения в единицах 1x. Исходник обозначает порядок от короткой к длинной экспозиции как FRM0~3. |
| Frm0/1/2IspDGainDot | Узлы цифрового усиления ISP: Frm0/1IspDGainDot для двухкадрового HDR и Frm0/1/2IspDGainDot для трёхкадрового; значения в единицах 1x. Исходное FRM0~3 обозначает порядок от короткой к длинной экспозиции. |
| PIrisDot | Узлы эквивалентного усиления диафрагмы, фактические значения в единицах 1x. |
【Меры предосторожности】
Число узлов не ограничено; рекомендуется не менее 6 для плавного разложения экспозиции.
В двухкадровом HDR задаются Frm0/1TimeDot, Frm0/1GainDot и Frm0/1IspDGainDot для короткого и длинного кадров. В трёхкадровом — Frm0/1/2TimeDot, Frm0/1/2GainDot и Frm0/1/2IspDGainDot для короткого, среднего и длинного. Распределяйте выдержки разумно: их сумма не должна превышать максимум, допускаемый частотой кадров!
Экспозиция узла — произведение выдержки, усиления sensor, цифрового усиления ISP, эквивалентного усиления диафрагмы и других компонентов. Она должна монотонно возрастать: следующий узел больше предыдущего. Далее исходник говорит: «у первого узла минимальная экспозиция, у второго — максимальная»; сомнительное соответствие многоузловому описанию сохранено.
Выдержка узла задаётся в секундах, допускается минимум 0; код корректирует фактическую минимальную выдержку по ограничениям sensor.
Компонент диафрагмы поддерживает только P-Iris, но не DC-Iris. Эквивалентное усиление P-iris действует лишь при включённом автоматическом Airis; иначе диафрагма фиксирована в начальном положении. Расчёт описан в AecIrisCtrl.
Заданные узлы не являются окончательным маршрутом: границы компонентов зависят и от узлов, и от ручных пределов. Сначала границы узлов проверяются: в пределах SENSOR/ISP остаются прежними, иначе ограничиваются аппаратурой. При нулевых ручных границах действует первая коррекция; при ненулевых допустимых границах выполняется
вторая коррекция по ручному диапазону. Если ручные границы превышают ограничения, действует первая коррекция. При росте экспозиции соседних узлов увеличивают один компонент, фиксируя остальные. Этот компонент определяет стратегию участка: например, увеличение только усиления задаёт его приоритет.
356X пока не поддерживает цифровое усиление ISP; Frm0/1/2ispDGainDot не действуют.
6.7.4 Uapi_LinExpAttrV2_t
【Описание】
Определение параметров настройки линейной экспозиции AE.
【Определение】
typedef struct CalibDb_LinearAE_AttrV2_s {
uint8_t RawStatsEn;
float ToleranceIn;
float ToleranceOut;
float Evbias;
CalibDb_AeStrategyModeV2_t StrategyMode;
CalibDb_LinExpInitExpV2_t InitExp;
CalibDb_LinAeRoute_AttrV2_t Route;
CalibDb_AecDynamicSetpointV2_t DySetpoint;
CalibDb_AecBacklightV2_t BackLightCtrl;
CalibDb_AecOverExpCtrlV2_t OverExpCtrl;
} CalibDb_LinearAE_AttrV2_t;
typedef struct Uapi_LinExpAttrV2_s {
rk_aiq_uapi_sync_t sync;
CalibDb_LinearAE_AttrV2_t Params;
} Uapi_LinExpAttrV2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RawStatsEn | Использование статистической яркости домена Raw для линейной экспозиции. |
| EvBias | Процентное смещение экспозиции при автоматической регулировке, в %, рекомендуемый диапазон [-200, +200]. |
| ToleranceIn/Out | Допуск яркости при автоматической регулировке, в %, диапазон [0,100]. |
| StrategyMode | Стратегия AE: приоритет светов или слабого освещения; пока не действует. |
| DySetpoint | Динамическая целевая яркость AE, изменяемая с экспозицией. |
| BackLightCtrl | Параметры компенсации контрового света |
| OverExpCtrl | Параметры подавления ярких областей |
【Меры предосторожности】
EvBias корректирует целевую яркость SetPoint/IRSetPoint (фиксированную или динамическую) для особых сцен. Действующая цель равна (SetPoint)*[1+abs(EvBias)/100]^[EvBias/abs(EvBias)]. При EvBias=100 она вдвое выше исходной, при EvBias=-100 — вдвое ниже.
Допуск яркости AE задаётся Tolerance. После сходимости B должна находиться в [действующая целевая яркость X(1-Tolerance/100), действующая целевая яркость X(1+Tolerance/100)]. Большие ToleranceIn/Out влияют на скорость реакции и действие EvBias; если шаг EvBias меньше ToleranceIn/Out, коррекция яркости может не проявиться.
StrategyMode пока не действует.
【Связанные типы данных】
CalibDb_AecDynamicSetpointV2_t
CalibDb_AecBacklightV2_t
CalibDb_AecOverExpCtrlV2_t
6.7.4.1 CalibDb_AecDynamicSetpointV2_t
【Описание】Определение динамических целевых значений AE.
【Определение】
typedef struct CalibDb_AecDynamicSetpointV2_s {
float* ExpLevel;
int ExpLevel_len;
float* DySetpoint;
int DySetpoint_len;
} CalibDb_AecDynamicSetpointV2_t;
【Члены】
| Имя поля | Описание |
|---|---|
| ExpLevel | Узлы динамической экспозиции: значение узла равно текущей экспозиции; число не ограничено, рекомендуется не менее 6 для плавного перехода. Сомнительная отрицательная формулировка оригинала отмечена в записях. |
| DySetpoint | Динамическая целевая яркость меняется с экспозицией: большему узлу экспозиции соответствует меньшая целевая яркость. Узлы соответствуют друг другу один к одному, их число равно ExpLevel; оно не ограничено, но рекомендуется не менее 6 для плавного перехода. |
6.7.5 Uapi_HdrExpAttrV2_t
【Описание】Определение параметров настройки HDR-экспозиции AE.
【Определение】
typedef struct CalibDb_HdrAE_AttrV2_s {
float ToleranceIn;
float ToleranceOut;
float Evbias;
CalibDb_AeStrategyModeV2_t StrategyMode;
float LumaDistTh; //used for area-growing
CalibDb_HdrExpInitExpV2_t InitExp;
CalibDb_HdrAeRoute_AttrV2_t Route;
CalibDb_ExpRatioCtrlV2_t ExpRatioCtrl;
CalibDb_LongFrmCtrlV2_t LongFrmMode;
CalibDb_LfrmCtrlV2_t LframeCtrl;
CalibDb_MfrmCtrlV2_t MframeCtrl;
CalibDb_SfrmCtrlV2_t SframeCtrl;
} CalibDb_HdrAE_AttrV2_t;
typedef struct Uapi_HdrExpAttrV2_s {
rk_aiq_uapi_sync_t sync;
CalibDb_HdrAE_AttrV2_t Params;
} Uapi_HdrExpAttrV2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ToleranceIn/Out | Допуск яркости при автоматической регулировке, в %, диапазон [0,100]. |
| LongfrmMode | Параметры режима длинного кадра |
| StrategyMode | Стратегия AE: приоритет слабого освещения/светов (AECV2_STRATEGY_MODE_LOWLIGHT_PRIOR/AECV2_STRATEGY_MODE_HIGHLIGHT_PRIOR). |
| Evbias | Процентное смещение экспозиции при автоматической регулировке, в %, рекомендуемый диапазон [-200, +200]. |
| ExpRatioCtrl | Модуль управления отношением экспозиций HdrAE; действует только при многокадровом HDR. |
| LframeCtrl | Параметры длинного кадра |
| MframeCtrl | Параметры среднего кадра; только для трёхкадрового HDR. |
| SframeCtrl | Параметры короткого кадра |
【Связанные типы данных】
CalibDb_LFrameCtrlV2_t
CalibDb_MFrameCtrlV2_t
CalibDb_SFrameCtrlV2_t
6.7.6 Uapi_IrisAttrV2_t
【Описание】
Параметры управления диафрагмой.
【Определение】
typedef struct CalibDb_AecIrisCtrlV2_s {
uint8_t Enable;
CalibDb_IrisTypeV2_t IrisType;
RKAiqOPMode_t IrisOpType;
CalibDb_MIris_AttrV2_t ManualAttr;
CalibDb_PIris_AttrV2_t PIrisAttr;
CalibDb_DCIris_AttrV2_t DCIrisAttr;
} CalibDb_AecIrisCtrlV2_t;
typedef struct Uapi_IrisAttrV2_s {
rk_aiq_uapi_sync_t sync;
CalibDb_AecIrisCtrlV2_t Params;
} Uapi_IrisAttrV2_t;
【Члены】
| Имя поля | Описание |
|---|---|
| Enable | Включение автоматического управления диафрагмой. |
| IrisType | Тип диафрагмы: P (P-iris) или DC (DC-iris). |
| IrisOpType | Режим управления: автоматический RK_AIQ_OP_MODE_AUTO или ручной RK_AIQ_OP_MODE_MANUAL. |
| ManualAttr | Параметры ручного управления диафрагмой |
| PIrisAttr | Атрибуты P-диафрагмы |
| DCIrisAttr | Атрибуты DC-диафрагмы |
6.7.6.1 CalibDb_MIris_AttrV2_t
【Описание】
Параметры ручного управления диафрагмой.
【Определение】
typedef struct CalibDb_MIris_AttrV2_s {
int PIrisGainValue;
int DCIrisHoldValue;
} CalibDb_MIris_AttrV2_t;
【Члены】
| Имя поля | Описание |
|---|---|
| PIrisGainValue | Ручное эквивалентное усиление P-диафрагмы, ограниченное устройством, диапазон [1,1024]. |
| DCIrisHoldValue | HoldValue DC-диафрагмы, зависит от устройства, диапазон [0,100]. |
【Меры предосторожности】
Ручное управление включается при IrisOpType = RK_AIQ_OP_MODE_MANUAL. Для P-диафрагмы действует только PirisGainValue, для DC — только DCIrisHoldValue.
DCIrisHoldValue непосредственно задаёт PWM двигателя в ручном режиме, диапазон [0,100]. При HoldValue между ClosePwmDuty и OpenPwmDuty из AecIrisCtrl размер сохраняется. Выше OpenPwmDuty диафрагма открывается тем быстрее, чем больше значение; ниже ClosePwmDuty закрывается тем быстрее, чем меньше значение.
6.7.6.2 CalibDb_PIris_AttrV2_t
【Описание】
Атрибуты P-диафрагмы.
【Определение】
#define AEC_PIRIS_STAP_TABLE_MAX (1024)
typedef struct CalibDb_PIris_AttrV2_s {
uint16_t TotalStep;
uint16_t EffcStep;
bool ZeroIsMax;
uint16_t StepTable[AEC_PIRIS_STAP_TABLE_MAX];
} CalibDb_PIris_AttrV2_t;
【Члены】
| Имя поля | Описание |
|---|---|
| TotalStep | Полное число шагов двигателя P-iris, зависит от объектива. |
| EffcStep | Число используемых шагов двигателя P-iris, зависит от объектива. |
| ZeroIsMax | Соответствие step0 максимальной диафрагме зависит от объектива: 0 означает минимальное отверстие в step0, 1 — максимальное. |
| StepTable | Таблица соответствия положения двигателя и эквивалентного усиления диафрагмы, зависит от P-iris объектива. |
6.7.6.3 CalibDb_DCIris_AttrV2_t
【Описание】
Атрибуты DC-диафрагмы.
【Определение】
typedef struct CalibDb_DCIris_AttrV2_s {
float Kp;
float Ki;
float Kd;
int MinPwmDuty;
int MaxPwmDuty;
int OpenPwmDuty;
int ClosePwmDuty;
} CalibDb_DCIris_AttrV2_t;
【Члены】
| Имя поля | Описание |
|---|---|
| Kp | Пропорциональный коэффициент ограничения резких изменений скважности диафрагмы. По исходнику при большем значении она меняется медленнее. Слишком большое значение вызывает раннее торможение и долгую регулировку, слишком малое — позднее торможение и перерегулирование. Подбор зависит от DC-iris объектива и схемы. Рекомендуется 0.5, диапазон [0,1]. |
| Ki | Интегральный коэффициент скорости открытия/закрытия. По исходнику большее значение увеличивает скорость; слишком большое вызывает перерегулирование и колебания, слишком малое — медленную регулировку и колебания при резких изменениях света. Рекомендуется 0.2, диапазон [0,1]. |
| Kd | Дифференциальный коэффициент скорости открытия/закрытия: большее значение увеличивает скорость. Рекомендуется 0.3, диапазон [0,1]. |
| MinPwmDuty | Минимальный PWM в %, зависит от объектива и схемы. Меньшее значение допускает более быстрое закрытие, но повышает риск колебаний. Диапазон [0,100], по умолчанию 0. |
| MaxPwmDuty | Максимальный PWM в %, зависит от объектива и схемы. Большее значение ускоряет открытие; слишком малое может завершить управление до максимального открытия. Диапазон [0,100], по умолчанию 100. |
| OpenPwmDuty | Порог открытия OpenPwmDuty: диафрагма открывается при PWM строго выше него. Значение зависит от DC-iris объектива, в %. |
| ClosePwmDuty | Порог закрытия ClosePwmDuty: диафрагма закрывается при PWM строго ниже него. Значение зависит от DC-iris объектива, в %. |
【Меры предосторожности】
При выключении автоматической диафрагмы DC-iris по умолчанию полностью открывается, P-iris переходит в положение максимального отверстия. Изменить эти начальные положения можно через InitPIrisGainValue и InitDCIrisDutyValue модуля AecInitValue.
Основной процесс алгоритма автоматической диафрагмы Airis:
Для DC-iris алгоритм Airis управляет отверстием по отклонению яркости от цели. Когда экспозиция минимальна, но яркость превышает целевой допуск, управление AE прекращается, выдержка и усиление фиксируются, включается AIRIS. Если яркость стабильна и PWM DC-iris
превышает OpenPwmDuty, диафрагма считается полностью открытой; Airis завершается и возвращает управление AE.
P-iris управляется через AecRoute: размер отверстия преобразуется в эквивалентное усиление для разложения экспозиции.
StepTable обычно строят по соответствию положения двигателя и отверстия, предоставленному производителем. AecRoute AE переводит отверстие в эквивалентное усиление, поэтому требуется хорошая линейность P-iris. Диапазон усиления [1,1024]: F1.0 соответствует 1024, F1.4 — 512, далее до F32.0 — 1. Пересчитайте отверстия в усиления и заполните StepTable в порядке положений step0, step1…stepN.
TotalStep — полное число шагов двигателя, зависящее от объектива. EffcStep — число используемых шагов, обычно меньше TotalStep. Возле закрытого конца ошибка эквивалентного усиления велика и возможны колебания, поэтому эти положения обычно не используются.
Таблица 4-1 связывает положение двигателя, отверстие и усиление для примера StepTable. Соответствия положения и площади в столбцах 1–2 и 4–5 предоставлены производителем объектива. У него 81 шаг; step0 соответствует максимальному отверстию F1.4 и усилению 512. Для step3 площадь 195.869 даёт усиление = 512* (195.869/201.062)=499 после округления. Остальные значения рассчитываются аналогично. Далее исходник ссылается на «таблицу 1-1»: у закрытого конца площадь может быть в тысячи раз меньше максимальной, ошибка усиления велика; такие положения не рекомендуется использовать из-за колебаний экспозиции. Заполните StepTable усилениями в порядке step0, step1…stepN. Различие ссылок на таблицу сохранено.
OpenPwmDuty и ClosePwmDuty измеряют для конкретного DC-iris объектива. Некоторые объективы открываются выше OpenPwmDuty. Далее исходник говорит о закрытии ниже OpenPwmDuty, но затем определяет ClosePwmDuty <= PWM <= OpenPwmDuty как область удержания HoldValue; противоречие не исправлено молча. У других объективов один порог: выше — открытие, ниже — закрытие, на пороге — удержание. Тогда ClosePwmDuty = OpenPwmDuty = HoldValue.
Настройка ручной диафрагмы аналогична ручной экспозиции: AecOpType перевести в ручной режим и включить AecManualCtrl.ManualIrisEn. Исходник дважды указывает IrisType = P-iris, связывая его сначала только с PirisGainValue, затем только с DCIrisValue. Противоречивое условие типа сохранено и требует проверки перед применением.
Таблица 4-1. Положение двигателя P-iris, площадь отверстия и эквивалентное усиление
| Положение шага | Площадь отверстия (mm2) | Эквивалентное усиление | Положение шага | Площадь отверстия (mm2) | Эквивалентное усиление |
|---|---|---|---|---|---|
| 0 | 201.062 | 512 | 41 | 56.653 | 144 |
| 1 | 200.759 | 511 | 42 | 53.438 | 136 |
| 2 | 198.583 | 506 | 43 | 50.282 | 128 |
| 3 | 195.869 | 499 | 44 | 47.188 | 120 |
| 4 | 192.879 | 491 | 45 | 44.159 | 112 |
| 5 | 189.677 | 483 | 46 | 41.197 | 105 |
| 6 | 186.293 | 474 | 47 | 38.307 | 98 |
| 7 | 182.744 | 465 | 48 | 35.49 | 90 |
| 8 | 179.035 | 456 | 49 | 32.751 | 83 |
| 9 | 175.271 | 446 | 50 | 30.093 | 77 |
| 10 | 171.484 | 437 | 51 | 27.519 | 70 |
| 11 | 167.681 | 427 | 52 | 25.034 | 64 |
| 12 | 163.865 | 417 | 53 | 22.642 | 58 |
| 13 | 160.036 | 408 | 54 | 20.347 | 52 |
| 14 | 156.198 | 398 | 55 | 18.154 | 46 |
| 15 | 152.351 | 388 | 56 | 16.068 | 41 |
| 16 | 148.499 | 378 | 57 | 14.096 | 36 |
| 17 | 144.642 | 368 | 58 | 12.245 | 31 |
| 18 | 140.783 | 359 | 59 | 10.522 | 27 |
| 19 | 136.925 | 349 | 60 | 8.935 | 23 |
| 20 | 133.069 | 339 | 61 | 7.484 | 19 |
| 21 | 129.217 | 329 | 62 | 6.169 | 16 |
| 22 | 125.371 | 319 | 63 | 4.987 | 13 |
| 23 | 121.535 | 309 | 64 | 3.936 | 10 |
| 24 | 117.709 | 300 | 65 | 3.014 | 8 |
| 25 | 113.897 | 290 | 66 | 2.22 | 6 |
| 26 | 110.1 | 280 | 67 | 1.55 | 4 |
| 27 | 106.321 | 271 | 68 | 1.003 | 3 |
| 28 | 102.562 | 261 | 69 | 0.577 | 1 |
| Положение шага | Площадь отверстия (mm2) | Эквивалентное усиление | Положение шага | Площадь отверстия (mm2) | Эквивалентное усиление |
|---|---|---|---|---|---|
| 29 | 98.826 | 252 | 70 | 0.268 | 1 |
| 30 | 95.115 | 242 | 71 | 0.075 | 0 |
| 31 | 91.431 | 233 | 72 | Закрыто | 0 |
| 32 | 87.777 | 224 | 73 | Закрыто | 0 |
| 33 | 84.156 | 214 | 74 | Закрыто | 0 |
| 34 | 80.569 | 205 | 75 | Закрыто | 0 |
| 35 | 77.02 | 196 | 76 | Закрыто | 0 |
| 36 | 73.51 | 187 | 77 | Закрыто | 0 |
| 37 | 70.043 | 178 | 78 | Закрыто | 0 |
| 38 | 66.621 | 170 | 79 | Закрыто | 0 |
| 39 | 63.247 | 161 | 80 | Закрыто | 0 |
| 40 | 59.923 | 153 |
6.7.7 Uapi_ExpWin_t
【Описание】Определение атрибутов окна статистики AE.
【Определение】
typedef struct window {
uint16_t h_offs;
uint16_t v_offs;
uint16_t h_size;
uint16_t v_size;
} window_t;
typedef struct Uapi_ExpWin_s {
rk_aiq_uapi_sync_t sync;
window Params;
} Uapi_ExpWin_t;
【Члены】
| Имя члена | Описание |
|---|---|
| h_offs | Горизонтальное смещение левого верхнего угла окна от начала координат — левого верхнего угла светочувствительной области sensor. |
| v_offs | Вертикальное смещение левого верхнего угла окна от начала координат — левого верхнего угла светочувствительной области sensor. |
| h_size | Горизонтальный размер окна |
| v_size | Вертикальный размер окна |
6.7.8 Uapi_ExpQueryInfo_t
【Описание】Определение запроса параметров экспозиции AE.
【Определение】
typedef struct Uapi_ExpQueryInfo_s {
bool IsConverged;
bool IsExpMax;
float LumaDeviation;
float HdrLumaDeviation[3];
float MeanLuma;
float HdrMeanLuma[3];
float GlobalEnvLux;
float BlockEnvLux[ISP2_RAWAE_WINNUM_MAX];
RKAiqAecExpInfo_t CurExpInfo;
unsigned short Piris;
float LinePeriodsPerField;
float PixelPeriodsPerLine;
float PixelClockFreqMHZ;
} Uapi_ExpQueryInfo_t;
【Члены】
| Имя члена | Описание |
|---|---|
| IsConverged | Сошлась ли автоматическая экспозиция |
| IsExpMax | Достигнут ли максимум экспозиции ISP |
| LumaDeviation | Отклонение яркости от цели AEC в линейном режиме: положительное — фактическая яркость выше цели, отрицательное — ниже, 0 — в пределах допуска цели. |
| HdrLumaDeviation | Отклонения фактической яркости от цели для кадров HDR: положительное — выше цели, отрицательное — ниже, 0 — в допуске. В двухкадровом HDR 0 и 1 соответствуют короткому и длинному кадрам, в трёхкадровом 0–2 — короткому, среднему и длинному. |
| MeanLuma | Средняя яркость текущего изображения в линейном режиме. |
| HdrMeanLuma | Средняя яркость текущих кадров HDR: в двухкадровом режиме элементы 0 и 1 — короткий и длинный кадры; в трёхкадровом все элементы — короткий, средний и длинный. |
| CurExpInfo | Текущие параметры выдержки и усиления sensor, разделённые по режиму на LinearExp и HdrExp[3]. |
| Piris | Aperture |
| LinePeriodsPerField | sensor VTS |
| PixelPeriodsPerLine | sensor HTS |
| PixelClockFreqMHZ | Частота пиксельного такта Sensor в MHz. |
6.8 Поиск проблем и отладка
При мерцании яркости, перерегулировании или несоответствии ожидаемой яркости рекомендуется записать AE LOG проблемной сцены для быстрого анализа.
6.8.1 Тест синхронизации экспозиции и статистики
Перед калибровкой ISP разработчик драйвера или настройщик должен заполнить SensorInfo в IQ XML. Ошибки этих параметров экспозиции могут вызвать неправильную экспозицию, мерцание и другие проблемы. После настройки рекомендуется самопроверка SyncTest; параметры описаны в Rockchip_Tuning_Guide_ISP30.
SyncTest циклически задаёт N наборов экспозиций для проверки кадров вступления в силу выдержки, усиления sensor и переключения DCG. Он также проверяет линейность и правильность формул преобразования регистров выдержки/усиления и связанных параметров.
Параметры SyncTest:
【Описание】
Тест синхронизации циклически задаёт N экспозиций через заданное число кадров, проверяя кадры вступления в силу выдержки/усиления и настройки экспозиции sensor.
【Члены】
| Имя поля | Описание |
|---|---|
| Enable | Включение теста синхронизации экспозиции и статистики. |
| IntervalFrm | Интервал переключения экспозиции в кадрах |
| AlterExp | Параметры переключения экспозиции |
AlterExp
Два набора по режиму: LinearAE и HdrAE.
| Имя поля | Описание |
|---|---|
| TimeValue | Значение выдержки |
| GainValue | Значение усиления экспозиции |
| IspDgainValue | Значение цифрового усиления ISP |
| DcgMode | Значение режима DCG |
| PIrisGainValue | Эквивалентное усиление P-iris |
В исходном примере LOG приведены только ключевые сведения. Красная рамка отмечает переключение экспозиции. Если яркость соответствует экспозиции без задержки, опережения и нарушения линейности, sensorinfo предварительно можно считать настроенным правильно.

6.8.2 Мерцание при изменении экспозиции
Возможные причины мерцания при изменении экспозиции:
(1) Неверные кадры вступления в силу gain/time в CISExpUpdate. В примере LOG показаны только ключевые строки каждого кадра.

Красная рамка показывает ошибочную яркость: она изменяется противоположно росту/снижению экспозиции. Резкий скачок приходится на второй кадр после изменения выдержки и усиления и следует выдержке. Это указывает на неверные кадры вступления в силу gain/time: они действуют не одновременно, нарушая соответствие яркости и экспозиции. Исправьте число кадров gain/time. Для воспроизведения используйте AE syncTest
с двумя наборами различных усилений/выдержек, переключая их и проверяя воспроизведение по LOG.
(2) Ошибка драйвера вызывает колебания яркости без сходимости, часто при ярком освещении. В LOG приведены ключевые строки кадров.

На рисунке выдержка колеблется между 59ms и 44ms; отношение средних яркостей сильно отличается от отношения экспозиций, что указывает на нелинейность. Сначала выведите регистр экспозиции в драйвере sensor и сравните с LOG. Для проверки переключайте через syncTest несколько экспозиций, включая проблемную, и анализируйте линейность яркости по кадрам LOG.

(3) Мерцание вызывается модулями после AE. В примере LOG показаны ключевые строки кадров.

В левом LOG при снижении SMeanLuma и MMeanLuma меняется яркость выхода TmoMeanluma; в таком случае требуется отладка TMO.
7. AWB
7.1 Обзор
AWB изменяет усиления цветовых каналов камеры, компенсируя цветовую температуру среды и собственное различие усилений устройства, чтобы изображение верно передавало цвет объекта.
7.2 Основные понятия
Цветовая температура определяется через абсолютное чёрное тело: если излучение источника в видимом диапазоне совпадает с ним, температура этого тела называется цветовой температурой источника.
Баланс белого: при разных цветовых температурах белый на sensor может выглядеть синеватым или красноватым. Алгоритм регулирует R, G и B для реалистичного белого.
7.3 Описание функций
AWB состоит из статистики WB и алгоритма управления балансом белого.
7.4 Справочник функционального API
7.4.1 rk_aiq_uapi2_setWBMode
【Описание】Установка режима баланса белого.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setWBMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| mode | Режим баланса белого | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Примечание】
В ручном режиме усиление WB определяется текущими ручными параметрами. Для перехода в ручной режим с одновременным заданием усиления используйте rk_aiq_uapi2_setMWBGain.
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.2 rk_aiq_uapi2_getWBMode
【Описание】Получение режима баланса белого.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getWBMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| mode | Режим баланса белого | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.3 rk_aiq_uapi2_lockAWB
【Описание】Блокировка текущих параметров WB.
【Синтаксис】
XCamReturn rk_aiq_uapi2_lockAWB(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.4 rk_aiq_uapi2_unlockAWB
【Описание】Снятие блокировки параметров WB.
【Синтаксис】
XCamReturn rk_aiq_uapi2_unlockAWB(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.5 rk_aiq_uapi2_setMWBScene
【Описание】Установка сцены баланса белого.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setMWBScene(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_wb_scene_t scene);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| scene | Сцена баланса белого | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.6 rk_aiq_uapi2_getMWBScene
【Описание】Получение сцены баланса белого.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getMWBScene(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_wb_scene_t *scene);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| scene | Сцена баланса белого | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.7 rk_aiq_uapi2_setMWBGain
【Описание】Установка коэффициентов ручного усиления WB.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setMWBGain(const rk_aiq_sys_ctx_t* ctx, rk_aiq_wb_gain_t
*gain);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| gain | Коэффициенты усиления WB | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.8 rk_aiq_uapi2_getWBGain
【Описание】Получение коэффициентов усиления WB для ручного и автоматического режимов.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getWBGain(const rk_aiq_sys_ctx_t* ctx, rk_aiq_wb_gain_t
*gain);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| gain | Коэффициенты усиления WB | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.9 rk_aiq_uapi2_setMWBCT
【Описание】Установка цветовой температуры ручного WB.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setMWBCT(const rk_aiq_sys_ctx_t* ctx, unsigned int ct);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| ct | Параметры цветовой температуры WB | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.10 rk_aiq_uapi2_getWBCT
【Описание】Получение цветовой температуры WB в автоматическом и ручном режимах.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getWBCT(const rk_aiq_sys_ctx_t* ctx, unsigned int *ct);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| ct | Цветовая температура WB | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.11 rk_aiq_uapi2_setAwbGainOffsetAttrib
【Описание】Установка смещения усиления AWB.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setAwbGainOffsetAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wb_awb_wbGainOffset_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры смещения wbgain | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.12 rk_aiq_uapi2_getAwbGainOffsetAttrib
【Описание】Получение смещения усиления AWB.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getAwbGainOffsetAttrib(const rk_aiq_sys_ctx_t* ctx,
CalibDbV2_Awb_gain_offset_cfg_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры смещения wbgain | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.13 rk_aiq_uapi2_setAwbGainAdjustAttrib
【Описание】Установка коррекции цветового тона AWB.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setAwbGainAdjustAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры коррекции тона WB | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.14 rk_aiq_uapi2_getAwbGainAdjustAttrib
【Описание】Получение параметров коррекции тона AWB.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getAwbGainAdjustAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры коррекции тона WB | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.15 rk_aiq_uapi2_setAwbV30AllAttrib
【Описание】Установка всех параметров API баланса белого.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setAwbV30AllAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wbV30_attrib_t attr);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Все параметры API баланса белого. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок. |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.4.16 rk_aiq_uapi2_getAwbV30AllAttrib
【Описание】Получение всех параметров API баланса белого.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getAwbV30AllAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wbV30_attrib_t *attr);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры смещения wbgain | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок. |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.5 Типы данных функционального API
7.5.1 rk_aiq_wb_op_mode_t
【Описание】Определение режима WB.
【Определение】
typedef enum rk_aiq_wb_op_mode_s {
RK_AIQ_WB_MODE_INVALID = 0,
RK_AIQ_WB_MODE_MANUAL = 1,
RK_AIQ_WB_MODE_AUTO = 2,
RK_AIQ_WB_MODE_MAX
} rk_aiq_wb_op_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_AIQ_WB_MODE_MANUAL | Ручной WB |
| RK_AIQ_WB_MODE_AUTO | Автоматический WB |
7.5.2 rk_aiq_wb_mwb_mode_t
【Описание】Определение типа ручного режима WB.
【Определение】
typedef enum rk_aiq_wb_mwb_mode_e {
RK_AIQ_MWB_MODE_INVAILD = 0,
RK_AIQ_MWB_MODE_CCT = 1,
RK_AIQ_MWB_MODE_WBGAIN = 2,
RK_AIQ_MWB_MODE_SCENE = 3,
} rk_aiq_wb_mwb_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_AIQ_MWB_MODE_CCT | Цветовая температура |
| RK_AIQ_MWB_MODE_WBGAIN | Коэффициент усиления |
| RK_AIQ_MWB_MODE_SCENE | Сцена |
7.5.3 rk_aiq_wb_gain_t
【Описание】Определение параметров усиления WB.
【Определение】
typedef struct rk_aiq_wb_gain_s {
float rgain;
float grgain;
float gbgain;
float bgain;
} rk_aiq_wb_gain_t;
【Члены】
| Имя члена | Описание |
|---|---|
| rgain | Усиление R |
| grgain | Усиление G |
| gbgain | Усиление GB |
| bgain | Усиление B |
7.5.4 rk_aiq_wb_scene_t
【Описание】Определение параметров усиления WB.
【Определение】
typedef enum rk_aiq_wb_scene_e {
RK_AIQ_WBCT_INCANDESCENT = 0,
RK_AIQ_WBCT_FLUORESCENT,
RK_AIQ_WBCT_WARM_FLUORESCENT,
RK_AIQ_WBCT_DAYLIGHT,
RK_AIQ_WBCT_CLOUDY_DAYLIGHT,
RK_AIQ_WBCT_TWILIGHT,
RK_AIQ_WBCT_SHADE
} rk_aiq_wb_scene_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_AIQ_WBCT_INCANDESCENT | Лампа накаливания |
| RK_AIQ_WBCT_FLUORESCENT | Люминесцентная лампа |
| RK_AIQ_WBCT_WARM_FLUORESCENT | Тёплая люминесцентная лампа |
| RK_AIQ_WBCT_DAYLIGHT | Дневной свет |
| RK_AIQ_WBCT_CLOUDY_DAYLIGHT | Облачно |
| RK_AIQ_WBCT_TWILIGHT | Сумерки |
| RK_AIQ_WBCT_SHADE | Тень |
7.5.5 rk_aiq_wb_cct_t
【Описание】Определение параметров усиления WB.
【Определение】
typedef struct rk_aiq_wb_cct_s {
float CCT;
float CCRI;
} rk_aiq_wb_cct_t;
【Члены】
| Имя члена | Описание |
|---|---|
| CCT | Коррелированная цветовая температура |
| CCRI | Коррелированный индекс цветопередачи |
7.5.6 rk_aiq_wb_mwb_attrib_t
【Описание】Определение атрибутов ручного WB.
【Определение】
typedef struct rk_aiq_wb_mwb_attrib_s {
rk_aiq_wb_mwb_mode_t mode;
union MWBPara_u {
rk_aiq_wb_gain_t gain;
rk_aiq_wb_scene_t scene;
rk_aiq_wb_cct_t cct;
} para;
} rk_aiq_wb_mwb_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| mode | Выбор режима |
7.5.7 rk_aiq_uapiV2_wb_awb_wbGainOffset_t
【Описание】Определение смещения усиления AWB.
【Определение】
typedef struct rk_aiq_uapiV2_wb_awb_wbGainOffset_s{
rk_aiq_uapi_sync_t sync;
CalibDbV2_Awb_gain_offset_cfg_t gainOffset;
}rk_aiq_uapiV2_wb_awb_wbGainOffset_t;
【Члены】
| Имя поля | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| gainOffset | См. далее описание CalibDbV2_Awb_gain_offset_cfg_t. |
7.5.8 CalibDbV2_Awb_gain_offset_cfg_t
【Описание】Определение смещения усиления AWB.
【Определение】
typedef struct CalibDbV2_Awb_gain_offset_cfg_s{
bool enable;
float offset[4];
}CalibDbV2_Awb_gain_offset_cfg_t;
【Члены】
| Имя поля | Описание |
|---|---|
| enable | Включение: 0 — выключено, 1 — включено. |
| offset | offset суммируется с wbgain; диапазоны offset каналов R GR GB B выбирают так, чтобы сумма была в [0,8] (ISP21 — платформа, указанная исходником). |
7.5.9 rk_aiq_uapiV2_wb_awb_wbGainAdjust_t
【Описание】Определение коррекции цветового тона AWB.
【Определение】
typedef struct rk_aiq_uapiV2_wb_awb_wbGainAdjustLut_s {
float lumaValue;
int ct_grid_num;
int cri_grid_num;
float ct_in_range[2];//min,max, equal distance sapmle
float cri_in_range[2];//min,max
float *ct_lut_out;//size is ct_grid_num*cri_grid_num
float *cri_lut_out;
} rk_aiq_uapiV2_wb_awb_wbGainAdjustLut_t;
typedef struct rk_aiq_uapiV2_wb_awb_wbGainAdjust_s {
rk_aiq_uapi_sync_t sync;
bool enable;
rk_aiq_uapiV2_wb_awb_wbGainAdjustLut_t *lutAll;
int lutAll_len;
} rk_aiq_uapiV2_wb_awb_wbGainAdjust_t;
【Члены】
| Имя поля | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| enable | Включение коррекции тона: 0 — выключено, 1 — включено. |
| lutAll | Для разных яркостей среды можно задать различные таблицы выходной цветовой температуры. |
| lutAll_len | Количество таблиц цветовой температуры. |
| lutAll.ct_grid_num | Число точек выборки входной цветовой температуры не ограничено. |
| lutAll.ct_in_range | Диапазон входной цветовой температуры не ограничен. |
| lutAll.cri_grid_num | Число точек выборки индекса цветопередачи входной таблицы не ограничено. |
| lutAll.cri_in_range | Диапазон индекса цветопередачи входной таблицы не ограничен. |
| lutAll.ct_out | На интерфейсе инструмента ct возрастает слева направо, от холодного к тёплому тону; диапазон CT 0-255000. |
| lutAll.cri_out | На интерфейсе cri возрастает снизу вверх, от отрицательных значений к положительным, от пурпурного к зелёному; диапазон CRI не ограничен. |
Подробнее см. раздел цветовой настройки WBGain в Rockchip_Color_Optimization_Guide.
7.5.10 rk_aiq_uapiV2_wbV30_awb_attrib_t
【Описание】Определение параметров API AWB.
【Определение】
typedef struct rk_aiq_uapiV2_wbV30_awb_attrib_s {
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t wbGainAdjust;
CalibDbV2_Awb_gain_offset_cfg_t wbGainOffset;
} rk_aiq_uapiV2_wbV30_awb_attrib_t;
【Члены】
| Имя поля | Описание |
|---|---|
| wbGainAdjust | См. CalibDbV2_Awb_gain_offset_cfg_t. |
| wbGainOffset | См. rk_aiq_uapiV2_wb_awb_wbGainAdjust_t. |
| multiWindow | См. rk_aiq_uapiV2_wbV32_awb_mulWindow_t. |
7.5.11 rk_aiq_uapiV2_wbV32_attrib_t
【Описание】Определение всех параметров API WB.
【Определение】
typedef struct rk_aiq_uapiV2_wbV30_attrib_s {
rk_aiq_uapi_sync_t sync;
bool byPass;
rk_aiq_wb_op_mode_t mode;
rk_aiq_wb_mwb_attrib_t stManual;
rk_aiq_uapiV2_wbV30_awb_attrib_t stAuto;
} rk_aiq_uapiV2_wbV30_attrib_t;
【Члены】
| Имя поля | Описание |
|---|---|
| sync | Описание rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| byPass | Значение 0 или 1: 0 — выполнять WB с усилением, задаваемым параметрами конца таблицы; 1 — не выполнять коррекцию WB. |
| mode | Автоматическое/ручное управление WB: см. rk_aiq_wb_op_mode_t. |
| stManual | Ручные параметры WB: см. rk_aiq_wb_mwb_attrib_t. |
| stAuto | Параметры AWB: см. rk_aiq_uapiV2_wbV21_awb_attrib_t. |
7.6 Справочник модульного API
7.6.1 rk_aiq_user_api2_awbV30_SetAllAttrib
【Описание】Установка всех параметров API баланса белого.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awbV30_SetAllAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wbV30_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Все параметры API WB | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.2 rk_aiq_user_api2_awbV30_GetAllAttrib
【Описание】Получение всех параметров API WB.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awbV30_GetAllAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wbV30_attrib_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Все параметры API WB | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.3 rk_aiq_user_api2_awb_GetCCT
【Описание】Получение цветовой температуры WB в автоматическом и ручном режимах.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_GetCCT(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_wb_cct_t
*cct);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| cct | Параметры цветовой температуры WB | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.4 rk_aiq_user_api2_awb_QueryWBInfo
【Описание】Получение усиления и цветовой температуры WB.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_QueryWBInfo(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_wb_querry_info_t *wb_querry_info);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| wb_querry_info | Параметры состояния цвета | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.5 rk_aiq_user_api2_awb_Lock
【Описание】Блокировка текущих параметров WB.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_Lock(const rk_aiq_sys_ctx_t* sys_ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.6 rk_aiq_user_api2_awb_Unlock
【Описание】Снятие блокировки параметров WB.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_Lock(const rk_aiq_sys_ctx_t* sys_ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.7 rk_aiq_user_api2_awb_SetWpModeAttrib
【Описание】Установка режима баланса белого.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_SetWpModeAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_opMode_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Режим баланса белого | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.8 rk_aiq_user_api2_awb_GetWpModeAttrib
【Описание】Получение режима баланса белого.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_GetWpModeAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_opMode_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Режим баланса белого | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.9 rk_aiq_user_api2_awb_SetMwbAttrib
【Описание】Установка ручных параметров WB.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_SetMwbAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_wb_mwb_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры ручного WB | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.10 rk_aiq_user_api2_awb_GetMwbAttrib
【Описание】Установка ручных параметров WB.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_SetMwbAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_wb_mwb_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры ручного WB | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.11 rk_aiq_user_api2_awb_SetWbGainAdjustAttrib
【Описание】Установка коррекции цветового тона AWB.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_SetWbGainAdjustAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры коррекции тона | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.12 rk_aiq_user_api2_awb_GetWbGainAdjustAttrib
【Описание】Получение параметров коррекции тона AWB.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_GetWbGainAdjustAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры коррекции тона | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.13 rk_aiq_user_api2_awb_SetWbGainOffsetAttrib
【Описание】Установка смещения усиления AWB.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_SetWbGainOffsetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_awb_wbGainOffset_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры коррекции тона | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.6.14 rk_aiq_user_api2_awb_GetWbGainOffsetAttrib
【Описание】Получение смещения усиления AWB.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_awb_GetWbGainOffsetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_awb_wbGainOffset_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры коррекции тона | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Библиотека: librkaiq.so
【Пример】
См. sample_awb_module.cpp.
7.7 Типы данных модульного API
7.7.1 rk_aiq_wb_querry_info_t
【Описание】Определение запрашиваемых сведений WB.
【Определение】
typedef struct rk_aiq_wb_querry_info_s {
rk_aiq_wb_gain_t gain;
rk_aiq_wb_cct_t cctGloabl;
bool awbConverged;
uint32_t LVValue;
} rk_aiq_wb_querry_info_t;
【Члены】
| Имя члена | Описание |
|---|---|
| gain | Gain |
| cctGloabl | Параметры глобальной цветовой температуры |
| LVValue | Соответствующая яркость среды |
7.7.2 rk_aiq_wb_op_mode_t
【Описание】Определение режима WB.
【Определение】
typedef struct rk_aiq_uapiV2_wb_opMode_s {
rk_aiq_uapi_sync_t sync;
rk_aiq_wb_op_mode_t mode;
} rk_aiq_uapiV2_wb_opMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Описание rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| mode | См. описание rk_aiq_wb_op_mode_t. |
7.7.3 rk_aiq_wb_mwb_attrib_t
【Описание】Определение атрибутов ручного WB.
【Определение】
typedef struct rk_aiq_wb_mwb_attrib_s {
rk_aiq_uapi_sync_t sync;
rk_aiq_wb_mwb_mode_t mode;
union MWBPara_u {
rk_aiq_wb_gain_t gain;
rk_aiq_wb_scene_t scene;
rk_aiq_wb_cct_t cct;
} para;
} rk_aiq_wb_mwb_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| mode | Выбор режима |
| para | Конфигурация параметров режима |
8. AF
8.1 Обзор
Модуль AF регулирует объектив камеры для резкого изображения объекта.
8.2 Описание функций
AF состоит из статистики и алгоритма управления; ниже показана схема модуля статистики AF.

ch0/ch1/ch2 соответствуют кадрам S/M/L HDR; debayer — объединённый кадр HDR.
windowA выводит главным образом FV V1/V2/H1/H2 размером 15*15, яркость и число ярких пикселей.
windowB выводит главным образом одно значение FV, яркость и число ярких пикселей.
8.3 Разработка пользовательских алгоритмов AF

Расположение примера: sdk: external/camera_engine_rkaiq/rkisp_demo/demo/af_algo_demo
8.4 Справочник функционального API
8.4.1 rk_aiq_uapi2_setFocusMode
【Описание】Настройка режима фокусировки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setFocusMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| mode | Режим фокусировки | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.2 rk_aiq_uapi2_getFocusMode
【Описание】Получение текущего режима фокусировки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getFocusMode(const rk_aiq_sys_ctx_t* ctx, opMode_t
*mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| mode | Режим фокусировки | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.3 rk_aiq_uapi2_setFocusWin
【Описание】Установка окна автофокусировки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setFocusWin(const rk_aiq_sys_ctx_t* ctx, paRect_t *rect);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| rect | Окно фокусировки, диапазон определяется входным размером sensor. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.4 rk_aiq_uapi2_getFocusWin
【Описание】Установка окна автофокусировки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getFocusWin(const rk_aiq_sys_ctx_t* ctx, paRect_t *rect);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| rect | Окно фокусировки | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.5 rk_aiq_uapi2_lockFocus
【Описание】Блокировка автофокуса и приостановка фокусировки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_lockFocus(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.6 rk_aiq_uapi2_unlockFocus
【Описание】Разблокировка автофокуса и продолжение фокусировки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_unlockFocus(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.7 rk_aiq_uapi2_oneshotFocus
【Описание】Однократная фокусировка без продолжения после завершения.
【Синтаксис】
XCamReturn rk_aiq_uapi2_oneshotFocus(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.8 rk_aiq_uapi2_manualTrigerFocus
【Описание】Ручной запуск фокусировки с дальнейшим контролем резкости и повторной фокусировкой при размытии.
【Синтаксис】
XCamReturn rk_aiq_uapi2_manualTrigerFocus(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.9 rk_aiq_uapi2_trackingFocus
【Описание】Непрерывный контроль резкости и повторная фокусировка при размытии; обычно используется после rk_aiq_uapi2_oneshotFocus.
【Синтаксис】
XCamReturn rk_aiq_uapi2_trackingFocus(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.10 rk_aiq_uapi2_getSearchResult
【Описание】Получение результата фокусировки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getSearchResult(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_af_result_t* result);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| result | Результат фокусировки: см. rk_aiq_af_result_t. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.11 rk_aiq_uapi2_getZoomRange
【Описание】Получение диапазона зума, ограничивающего код положения на входе rk_aiq_uapi_setOpZoomPosition.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getZoomRange(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_af_zoomrange* range);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| range | Диапазон перемещения зума, см. rk_aiq_af_zoomrange. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.12 rk_aiq_uapi2_setOpZoomPosition
【Описание】Установка и изменение положения зума.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setOpZoomPosition(const rk_aiq_sys_ctx_t* ctx, int pos);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pos | Положение зума, диапазон определяется rk_aiq_uapi2_getZoomRange. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.13 rk_aiq_uapi2_getOpZoomPosition
【Описание】Получение положения зума.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getOpZoomPosition(const rk_aiq_sys_ctx_t* ctx, int *pos);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pos | Положение зума | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.14 rk_aiq_uapi2_endOpZoomChange
【Описание】Завершение установки положения зума; вызывается после rk_aiq_uapi_setOpZoomPosition и запускает фокусировку.
【Синтаксис】
XCamReturn rk_aiq_uapi2_endOpZoomChange(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.15 rk_aiq_uapi2_getFocusRange
【Описание】Получение диапазона фокусировки, ограничивающего код положения на входе rk_aiq_uapi_setFocusPosition.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getFocusRange(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_af_focusrange* range);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| range | Диапазон перемещения фокуса, см. rk_aiq_af_focusrange. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.16 rk_aiq_uapi2_setFocusPosition
【Описание】Установка положения фокуса в ручном режиме.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setFocusPosition(const rk_aiq_sys_ctx_t* ctx, unsigned
short code);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| code | Код положения фокуса, диапазон определяется rk_aiq_uapi2_getFocusRange. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.17 rk_aiq_uapi2_getFocusPosition
【Описание】Получение текущего положения фокуса.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getFocusPosition(const rk_aiq_sys_ctx_t* ctx, unsigned
short *code);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| code | Код положения фокуса | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.18 rk_aiq_uapi2_startZoomCalib
【Описание】Калибровка моторизованного модуля.
【Синтаксис】
XCamReturn rk_aiq_uapi2_startZoomCalib(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.4.19 rk_aiq_uapi2_resetZoom
【Описание】Сброс моторизованного модуля.
【Синтаксис】
XCamReturn rk_aiq_uapi2_resetZoom(const rk_aiq_sys_ctx_t* ctx);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
8.5 Типы данных функционального API
8.5.1 opMode_t
【Описание】Определение режима статистики AF.
【Определение】
typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUAL = 1,
OP_SEMI_AUTO = 2,
OP_INVAL
} opMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| OP_AUTO | Автофокус с выполнением встроенного алгоритма AF. |
| OP_MANUAL | Ручной фокус с остановкой встроенного AF. |
| OP_SEMI_AUTO | Полуавтоматический фокус: вызов API положения зума выполняет одну автофокусировку. |
8.5.2 rk_aiq_af_zoomrange
【Описание】Определение диапазона зума.
【Определение】
typedef struct {
int min_pos;
int max_pos;
float min_fl;
float max_fl;
} rk_aiq_af_zoomrange;
【Члены】
| Имя члена | Описание |
|---|---|
| min_pos | Минимум зума |
| max_pos | zoommax |
| min_fl | Минимальное фокусное расстояние |
| max_fl | Максимальное фокусное расстояние |
8.5.3 rk_aiq_af_focusrange
【Описание】Определение диапазона фокуса.
【Определение】
typedef struct {
int min_pos;
int max_pos;
} rk_aiq_af_focusrange;
【Члены】
| Имя члена | Описание |
|---|---|
| min_pos | Минимум фокуса |
| max_pos | Максимум фокуса |
8.5.4 rk_aiq_af_result_t
【Описание】Определение результатов поиска AF.
【Определение】
typedef enum rk_aiq_af_sec_stat_e
{
RK_AIQ_AF_SEARCH_INVAL = 0,
RK_AIQ_AF_SEARCH_RUNNING = 1,
RK_AIQ_AF_SEARCH_END = 2
} rk_aiq_af_sec_stat_t;
typedef struct {
rk_aiq_af_sec_stat_t stat;
int32_t final_pos;
} rk_aiq_af_result_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stat | Состояние фокусировки |
| final_pos | Окончательное положение фокуса |
8.6 Справочник модульного API
8.6.1 rk_aiq_user_api2_af_SetAttrib
【Описание】Установка атрибутов фокусировки.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_af_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_af_attrib_t
attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров фокусировки | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_af.h
Библиотека: librkaiq.so
8.6.2 rk_aiq_user_api2_af_GetAttrib
【Описание】Получение атрибутов фокусировки.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_af_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_af_attrib_t
*attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров фокусировки | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_af.h
Библиотека: librkaiq.so
8.7 Типы данных модульного API
8.7.1 RKAIQ_AF_MODE
【Описание】Определение режима работы фокуса.
【Определение】
typedef enum _RKAIQ_AF_MODE
{
RKAIQ_AF_MODE_NOT_SET = -1,
RKAIQ_AF_MODE_AUTO,
RKAIQ_AF_MODE_MACRO,
RKAIQ_AF_MODE_INFINITY,
RKAIQ_AF_MODE_FIXED,
RKAIQ_AF_MODE_EDOF,
RKAIQ_AF_MODE_CONTINUOUS_VIDEO,
RKAIQ_AF_MODE_CONTINUOUS_PICTURE,
RKAIQ_AF_MODE_ONESHOT_AFTER_ZOOM,
} RKAIQ_AF_MODE;
【Члены】
| Имя члена | Описание |
|---|---|
| RKAIQ_AF_MODE_NOT_SET | Режим фокуса не задан |
| RKAIQ_AF_MODE_AUTO | Режим автофокуса |
| RKAIQ_AF_MODE_MACRO | Режим макрофокуса |
| RKAIQ_AF_MODE_INFINITY | Режим дальнего фокуса |
| RKAIQ_AF_MODE_FIXED | Режим фиксированного фокуса |
| RKAIQ_AF_MODE_EDOF | Режим фокусировки по глубине резкости |
| RKAIQ_AF_MODE_CONTINUOUS_VIDEO | Плавный непрерывный автофокус |
| RKAIQ_AF_MODE_CONTINUOUS_PICTURE | Быстрый непрерывный автофокус |
| RKAIQ_AF_MODE_ONESHOT_AFTER_ZOOM | Полуавтоматический фокус: настройка положения зума автоматически запускает одну фокусировку. |
8.7.2 RKAIQ_AF_HWVER
【Описание】Определение режима работы фокуса.
【Определение】
typedef enum _RKAIQ_AF_HWVER
{
RKAIQ_AF_HW_V20 = 0,
RKAIQ_AF_HW_V30,
RKAIQ_AF_HW_VMAX
} RKAIQ_AF_HWVER;
【Члены】
| Имя члена | Описание |
|---|---|
| RKAIQ_AF_HW_V20 | Версия аппаратуры AF 2.0 |
| RKAIQ_AF_HW_V30 | Версия аппаратуры AF 3.0 |
8.7.3 rk_aiq_af_algo_meas_v30_t
【Описание】Определение режима статистики AF.
【Определение】
typedef struct {
unsigned char af_en;
unsigned char rawaf_sel;
unsigned char gamma_en;
unsigned char gaus_en;
unsigned char v1_fir_sel;
unsigned char hiir_en;
unsigned char viir_en;
unsigned char v1_fv_outmode; // 0 square, 1 absolute
unsigned char v2_fv_outmode; // 0 square, 1 absolute
unsigned char h1_fv_outmode; // 0 square, 1 absolute
unsigned char h2_fv_outmode; // 0 square, 1 absolute
unsigned char ldg_en;
unsigned char accu_8bit_mode; //fix to 1
unsigned char ae_mode;
unsigned char y_mode; //fix to 0
unsigned char line_en[RKAIQ_RAWAF_LINE_NUM];
unsigned char line_num[RKAIQ_RAWAF_LINE_NUM];
unsigned char window_num;
unsigned short wina_h_offs;
unsigned short wina_v_offs;
unsigned short wina_h_size;
unsigned short wina_v_size;
unsigned short winb_h_offs;
unsigned short winb_v_offs;
unsigned short winb_h_size;
unsigned short winb_v_size;
unsigned short gamma_y[RKAIQ_RAWAF_GAMMA_NUM];
// [old version param]
unsigned short thres;
unsigned char shift_sum_a;
unsigned char shift_sum_b;
unsigned char shift_y_a;
unsigned char shift_y_b;
/**********[Vertical IIR (v1 & v2)]************/
short v1_iir_coe[9];
short v1_fir_coe[3];
short v2_iir_coe[3];
short v2_fir_coe[3];
/**********[Horizontal IIR (h1 & h2)]************/
short h1_iir1_coe[6];
short h2_iir1_coe[6];
short h1_iir2_coe[6];
short h2_iir2_coe[6];
/**********[Focus value statistic param]**********/
// level depended gain
// input8 lumi, output8bit gain
unsigned char h_ldg_lumth[2]; //luminance thresh
unsigned char h_ldg_gain[2]; //gain for [minLum,maxLum]
unsigned short h_ldg_gslp[2]; //[slope_low,-slope_high]
unsigned char v_ldg_lumth[2];
unsigned char v_ldg_gain[2];
unsigned short v_ldg_gslp[2];
// coring
unsigned short v_fv_thresh;
unsigned short h_fv_thresh;
// left shift, more needed if outmode=square
unsigned char v1_fv_shift; //only for sel1
unsigned char v2_fv_shift;
unsigned char h1_fv_shift;
unsigned char h2_fv_shift;
/**********[High light]**********/
unsigned short highlit_thresh;
} rk_aiq_af_algo_meas_v30_t;
【Члены】
| Имя члена | Описание |
|---|---|
| af_en | Включение статистики AF: 0 — выключено, 1 — включено. |
| rawaf_sel | Канал статистики AF, диапазон 0-3, соответствует длинному/среднему/короткому/объединённому кадрам HDR. Обычно выбирается средний: 0 для не-HDR, 1 для HDR; исходное соответствие сохранено. |
| Gamma_en | Включение Gamma: 0 — выключено, 1 — включено. |
| gaus_en | Необходимо фиксированное значение 1. |
| v1_fir_sel | Необходимо фиксированное значение 1. |
| hiir_en | Включение H1/H2: 0 — выключено, 1 — включено. |
| viir_en | Включение V1/V2: 0 — выключено, 1 — включено. При gamma_en необходимо viir_en = 1. |
| v1_fv_outmode | Режим выхода FV канала V1: 0 — квадрат, 1 — абсолютное значение. |
| v2_fv_outmode | Выход FV V2: 0 — квадрат, 1 — абсолютное значение. |
| ldg_en | Включение LDG: 0 — выключено, 1 — включено. |
| accu_8bit_mode | Необходимо фиксированное значение 1. |
| ae_mode | При ae_mode=1 RAWAF использует логику RAWAE_BIG для усреднения яркости по сетке 15x15. |
| y_mode | Необходимо фиксированное значение 0. |
| sobel_sel | Необходимо фиксированное значение 0. |
| v_dnscl_mode | Широкая/узкая полоса, задаётся по результату инструмента коэффициентов фильтра AF. |
| from_awb | Вход статистики AF берётся из AWB. |
| from_ynr | Вход статистики AF берётся из YNR. |
| ae_config_use | Фиксированное значение 0. |
| line_en | Пока не действует. |
| line_num | Пока не действует. |
| window_num | Число окон: window_num=1 — основное WinA; 2 — WinA и независимое WinB. |
| wina_h_offs | Горизонтальная координата первого пикселя левого верхнего угла WinA, должна быть >=2. |
| wina_v_offs | Вертикальная координата первого пикселя левого верхнего угла WinA, должна быть >=1. |
| Имя члена | Описание |
|---|---|
| wina_h_size | Ширина WinA должна быть меньше ширины изображения -2-wina_h_offs и кратна 15. |
| wina_v_size | Высота WinA должна быть меньше высоты изображения -2-wina_v_offs и кратна 15. |
| winb_h_offs | Горизонтальная координата первого пикселя WinB, должна быть >=2. |
| winb_v_offs | Вертикальная координата первого пикселя WinB, должна быть >=1. |
| winb_h_size | Ширина WinB меньше ширины изображения -2-wina_h_offs; ссылка на смещение WinA сохранена и требует проверки. |
| winb_v_size | Высота WinB меньше высоты изображения -2-wina_v_offs; ссылка на WinA сохранена и требует проверки. |
| gamma_y | Значения y Gamma в диапазоне 0-1023; сегменты x от 0 до 1023: 16 16 16 16 32 32 32 32 64 64 64 128 128 128 128 128. |
| thres | Порог AF WinB: FV ниже порога обнуляется для подавления шума; диапазон 0-0xFFFF. |
| shift_sum_a | Пока недоступно, фиксировать 0. |
| shift_y_a | Пока недоступно, фиксировать 0. |
| v1_iir_coe[9] | Коэффициенты IIR 3X3 канала V1 по выходу инструмента AF. |
| v1_fir_coe[3] | Коэффициенты FIR 1x3 канала V1 по инструменту AF. |
| v2_iir_coe[3] | Коэффициенты IIR 1x3 канала V2 по инструменту AF. |
| v2_fir_coe[3] | Коэффициенты FIR 1x3 канала V2 по инструменту AF. |
| h1_iir1_coe[6] | Коэффициенты IIR1 1X6 канала H1 по инструменту AF. |
| h2_iir1_coe[6] | Коэффициенты IIR1 1X6 канала H2 по инструменту AF. |
| h1_iir2_coe[6] | Коэффициенты IIR2 1X6 канала H1 по инструменту AF. |
| h2_iir2_coe[6] | Коэффициенты IIR2 1X6 канала H2 по инструменту AF. |
| Имя члена | Описание |
|---|---|
| h_ldg_lumth[2] | Порог яркости LDG H1/H2: 0 — левая тёмная область, 1 — правая светлая; диапазон 0~255. |
| h_ldg_gain[2] | Минимальное усиление LDG H1/H2: 0 — тёмная, 1 — светлая область; диапазон 0~255. |
| h_ldg_gslp[2] | Наклон LDG H1/H2: 0 — тёмная, 1 — светлая область; диапазон 0~65535. |
| v_ldg_lumth[2] | Порог яркости LDG V1/V2: 0 — тёмная, 1 — светлая область; диапазон 0~255. |
| v_ldg_gain[2] | Минимальное усиление LDG V1/V2: 0 — тёмная, 1 — светлая область; диапазон 0~255. |
| v_ldg_gslp[2] | Минимальное усиление LDG V1/V2: 0 — тёмная, 1 — светлая область; диапазон 0~255. |
| v_fv_thresh | Порог AF V1/V2: FV ниже него обнуляется для подавления шума; диапазон 0-0x0FFF. |
| h_fv_thresh | Порог AF H1/H2: FV ниже него обнуляется для подавления шума; диапазон 0-0x0FFF. |
| v1_fv_shift | Правый сдвиг FV V1 для защиты от переполнения, диапазон 0-7; исходное shit bit — опечатка. |
| v2_fv_shift | Правый сдвиг FV V2 для защиты от переполнения, диапазон 0-7; в исходнике shit bit. |
| h1_fv_shift | Правый сдвиг FV H1 для защиты от переполнения, диапазон 0-7; в исходнике shit bit. |
| h2_fv_shift | Правый сдвиг FV H2 для защиты от переполнения, диапазон 0-7; в исходнике shit bit. |
| highlit_thresh | Порог ярких пикселей: значения выше него считаются яркими; в каждой области накапливается только их количество. Диапазон 0-0x0FFF. |
8.7.4 rk_aiq_af_attrib_t
【Описание】Конфигурация фокусировки.
【Определение】
typedef struct rk_aiq_af_attrib_s {
rk_aiq_uapi_sync_t sync;
RKAIQ_AF_MODE AfMode;
RKAIQ_AF_HWVER AfHwVer;
bool contrast_af;
bool laser_af;
bool pdaf;
int h_offs;
int v_offs;
unsigned int h_size;
unsigned int v_size;
short fixedModeDefCode;
short macroModeDefCode;
short infinityModeDefCode;
union {
rk_aiq_af_algo_meas_v20_t manual_meascfg;
rk_aiq_af_algo_meas_v30_t manual_meascfg_v30;
};
} rk_aiq_af_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Синхронные/асинхронные API: см. rk_aiq_uapi_sync_t в разделе «Обзор/Описание API». |
| AfMode | Режим фокусировки |
| contrast_af | Включение контрастного фокуса |
| laser_af | Включение лазерного фокуса |
| pdaf | Включение фазового фокуса |
| h_offs | Начальная горизонтальная координата окна |
| v_offs | Начальная вертикальная координата окна |
| h_size | Ширина окна фокуса |
| v_size | Высота окна фокуса |
| fixedModeDefCode | Код положения фокуса |
| macroModeDefCode | Код остановки макрофокуса, исходный диапазон 0-value. |
| infinityModeDefCode | Начальный код дальнего фокуса, исходный диапазон -64. |
| manual_meascfg | Пользовательская статистика AF2.0 |
| manual_meascfg_v30 | Пользовательская статистика AF3.0 |
8.8 Дополнительные указания
8.8.1 Проверка драйвера VCM
1. Правильны ли начальный и конечный токи VCM.
Сначала получите данные о начальном и конечном токах у производителя модуля.
Затем проверьте сведения на нескольких модулях:
В DTS задайте максимальный поддерживаемый VCM диапазон токов.
В ручном фокусе постепенно изменяйте позицию от 64; когда объектив начинает двигаться и объект дальше 10 метров резок, запишите позицию.
Начальный ток: (vcm_max_mA - vcm_min_mA) * (64 - curPos) / 64.
Продолжайте регулировку и запишите позицию резкого близкого объекта (10cm или 20cm).
Конечный ток: (vcm_max_mA - vcm_min_mA) * (64 - curPos) / 64.
2. Стабильно ли конечное положение VCM при движении с разных направлений.
В ручном режиме выберите позицию и подойдите к ней от 0 и от 64; сравните резкость изображений и близость статистики AF.
3. Правильно ли время перемещения объектива.
8.8.2 Проверка драйвера моторизованного модуля
1. Совпадает ли конечная позиция после отдельных шагов и одного многошагового перемещения.
1. Выберите наиболее резкое положение zoom/focus, запишите позицию двигателя и сохраните изображение A.
2. Отведите двигатель на несколько шагов и верните по одному шагу в записанную позицию; сохраните B.
3. Снова отведите двигатель на несколько шагов и верните одним перемещением; сохраните C.
4. Сравните резкость и поле зрения A, B и C.
2. Совпадает ли конечная позиция после случайных перемещений.
1. Выберите наиболее резкое положение zoom/focus, запишите позицию двигателя и сохраните изображение A.
2. Скриптом выполните 400–500 случайных перемещений zoom либо focus, верните исходную позицию и сохраните B.
3. Сравните резкость и поле зрения A и B.
3. Совпадает ли конечная позиция после одновременного движения двигателей.
1. Выберите наиболее резкое положение zoom/focus, запишите позицию двигателя и сохраните изображение A.
2. Скриптом одновременно выполните 400–500 случайных перемещений zoom и focus, верните исходные позиции и сохраните B.
3. Сравните резкость и поле зрения A и B.
9. IMGPROC
9.1 Обзор
imgproc обозначает модули, влияющие на вид изображения.
9.2 Merge
9.2.1 Описание функций
Merge объединяет несколько кадров в один.
9.2.2 Основные понятия
Действует только в режиме HDR.
9.2.3 Справочник функционального API
9.2.4 Справочник модульного API
9.2.4.1 rk_aiq_user_api2_amerge_SetAttrib
【Описание】Установка атрибутов merge.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_amerge_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
amerge_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров merge | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_amerge.h
Библиотека: librkaiq.so
9.2.4.2 rk_aiq_user_api2_amerge_GetAttrib
【Описание】Получение атрибутов merge.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_amerge_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
amerge_attrib_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров merge | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_amerge.h
Библиотека: librkaiq.so
9.2.5 Типы данных модульного API
9.2.5.1 merge_OpMode_t
【Описание】Определение режима merge.
【Определение】
typedef enum merge_OpModeV21_e {
MERGE_OPMODE_API_OFF = 0,
MERGE_OPMODE_MANU = 1,
} merge_OpModeV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| MERGE_OPMODE_API_OFF | Режим выключенного API; алгоритм находится в AUTO и использует параметр (исходная фраза незавершена). |
| MERGE_OPMODE_MANU | Ручной режим |
9.2.5.2 MergeBaseFrame_t
【Описание】Определение опорного кадра объединения.
【Определение】
typedef enum MergeBaseFrame_e {
BASEFRAME_LONG = 0,
BASEFRAME_SHORT = 1,
} MergeBaseFrame_t;
【Члены】
| Имя члена | Описание |
|---|---|
| BASEFRAME_LONG | Объединение с опорой на длинный кадр. |
| BASEFRAME_SHORT | Объединение с опорой на короткий кадр. |
9.2.5.3 MergeCurrCtlData_t
【Описание】Определение управляющих параметров Merge.
【Определение】
typedef struct MergeCurrCtlData_s {
float Envlv;
float MoveCoef;
} MergeCurrCtlData_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Envlv | Текущая яркость среды; исходная запись диапазона 0,1 и точности 0.000001 сохранена. |
| MoveCoef | Текущий коэффициент движения, диапазон [0,1], точность 0.000001; пока фиксирован. |
9.2.5.4 mMergeOECurveV21_t
【Описание】Определение ручной кривой пересвета Merge.
【Определение】
typedef struct mMergeOECurveV21_s {
float Smooth;
float Offset;
} mMergeOECurveV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Smooth | Наклон кривой пересвета, диапазон [0,1], по умолчанию 0.4, точность 0.01. |
| Offset | Смещение кривой пересвета, диапазон [108,280], по умолчанию 210, точность 0.1. |
9.2.5.5 mMergeMDCurveV21_t
【Описание】Определение кривой движения режима длинного кадра.
【Определение】
typedef struct mMergeMDCurveV21_s {
float LM_smooth;
float LM_offset;
float MS_smooth;
float MS_offset;
} mMergeMDCurveV21_t;
【Члены】
| Имя поля | Описание |
|---|---|
| LM_smooth | Наклон кривой движения длинного/среднего кадров, [0,1], по умолчанию 0.4, точность 0.01; не действует на RK356x. |
| LM_offset | Смещение кривой длинного/среднего кадров, [0.26,1], по умолчанию 0.38, точность 0.01; не действует на RK356x. |
| MS_smooth | Наклон кривой среднего/короткого кадров, [0,1], по умолчанию 0.4, точность 0.01. |
| MS_offset | Смещение кривой среднего/короткого кадров, [0.26,1], по умолчанию 0.38, точность 0.01. |
9.2.5.6 mMergeAttrV21_t
【Описание】Определение ручных атрибутов merge RK3588.
【Определение】
typedef struct mMergeAttrV21_s {
mMergeOECurveV21_t OECurve;
mMergeMDCurveV21_t MDCurve;
} mMergeAttrV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| OECurve | Параметры кривой пересвета |
| MDCurve | Параметры кривой движения |
9.2.5.7 mergeAttrV21_t
【Описание】Настройка атрибутов merge RK356x.
【Определение】
typedef struct mergeAttrV21_s {
merge_OpModeV21_t opMode;
mMergeAttrV21_t stManual;
MergeCurrCtlData_t CtlInfo;
} mergeAttrV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| opMode | Выбор режима |
| stManual | Ручные атрибуты merge |
| CtlInfo | Параметры управляющих величин |
9.2.5.8 mLongFrameModeData_t
【Описание】Определение управляющих параметров длинного кадра.
【Определение】
typedef struct mLongFrameModeData_s {
mMergeOECurveV21_t OECurve;
mMergeMDCurveV21_t MDCurve;
} mLongFrameModeData_t;
【Члены】
| Имя поля | Описание |
|---|---|
| OECurve | Параметры кривой пересвета |
| MDCurve | Параметры кривой движения |
9.2.5.9 mMergeMDCurveV30Short_t
【Описание】Определение кривой движения короткого кадра.
【Определение】
typedef struct mMergeMDCurveV30Short_s{
float Coef;
float ms_thd0;
float lm_thd0;
} mMergeMDCurveV30Short_t;
【Члены】
| Имя поля | Описание |
|---|---|
| Coef | Управляющий коэффициент, [0,1], по умолчанию 0.05, точность 0.0001. |
| ms_thd0 | Коэффициент среднего/короткого кадров, [0,1], по умолчанию 0.0, точность 0.1. |
| lm_thd0 | Коэффициент длинного/среднего кадров, [0,1], по умолчанию 0.0, точность 0.1. |
9.2.5.10 mShortFrameModeData_t
【Описание】Определение управляющих параметров короткого кадра.
【Определение】
typedef struct mShortFrameModeData_s {
mMergeOECurveV21_t OECurve;
mMergeMDCurveV30Short_t MDCurve;
} mShortFrameModeData_t;
【Члены】
| Имя поля | Описание |
|---|---|
| OECurve | Параметры кривой пересвета |
| MDCurve | Параметры кривой движения |
9.2.5.11 mMergeAttrV30_t
【Описание】Определение ручных атрибутов merge RK3588.
【Определение】
typedef struct mMergeAttrV30_s {
MergeBaseFrame_t BaseFrm;
mLongFrameModeData_t LongFrmModeData;
mShortFrameModeData_t ShortFrmModeData;
} mMergeAttrV30_t;
【Члены】
| Имя члена | Описание |
|---|---|
| BaseFrm | Опорный кадр объединения |
| LongFrmModeData | Управляющие данные при длинном опорном кадре (в исходнике повтор data). |
9.2.5.12 MergeOECurveV10_t
【Описание】Определение автоматической кривой пересвета Merge.
【Определение】
typedef struct MergeOECurveV10_s {
float EnvLv[MERGE_ENVLV_STEP_MAX];
float Smooth[MERGE_ENVLV_STEP_MAX];
float Offset[MERGE_ENVLV_STEP_MAX];
} MergeOECurveV10_t;
【Члены】
| Имя поля | Описание |
|---|---|
| EnvLv | Яркость среды, [0,1]: 0 — полная темнота, 1 — максимум. |
| Smooth | Наклон кривой пересвета, диапазон [0,1], по умолчанию 0.4, точность 0.01. |
| Offset | Смещение кривой пересвета, диапазон [108,280], по умолчанию 210, точность 0.1. |
9.2.5.13 MergeMDCurveV10_t
【Описание】Определение кривой движения режима длинного кадра.
【Определение】
typedef struct MergeMDCurveV10_s {
float MoveCoef[MERGE_ENVLV_STEP_MAX];
float LM_smooth[MERGE_ENVLV_STEP_MAX];
float LM_offset[MERGE_ENVLV_STEP_MAX];
float MS_smooth[MERGE_ENVLV_STEP_MAX];
float MS_offset[MERGE_ENVLV_STEP_MAX];
} MergeMDCurveV10_t;
【Члены】
| Имя поля | Описание |
|---|---|
| MoveCoef | Движение изображения, [0,1]: 0 — неподвижно, 1 — полное движение. |
| LM_smooth | Наклон кривой длинного/среднего кадров, [0,1], по умолчанию 0.4; не действует в HDR x2. |
| LM_offset | Смещение кривой длинного/среднего кадров, [0.26,1], по умолчанию 0.38; не действует в HDR x2. |
| MS_smooth | Наклон кривой среднего/короткого кадров, [0,1], по умолчанию 0.4. |
| MS_offset | Смещение кривой среднего/короткого кадров, [0.26,1], по умолчанию 0.38. |
9.2.5.14 MergeEachChnCurveV12_t
【Описание】Определение кривой обнаружения подканала в режиме длинного кадра.
【Определение】
typedef struct MergeEachChnCurveV12_s {
float EnvLv[MERGE_ENVLV_STEP_MAX];
float Smooth[MERGE_ENVLV_STEP_MAX];
float Offset[MERGE_ENVLV_STEP_MAX];
} MergeEachChnCurveV12_t;
【Члены】
| Имя члена | Описание |
|---|---|
| EnvLv | Яркость среды, [0,1]: 0 — полная темнота, 1 — максимум. |
| Smooth | Наклон кривой пересвета подканала, [0,1], по умолчанию 0.4, точность 0.01. |
| Offset | Смещение кривой пересвета подканала, [0,1], по умолчанию 0.38, точность 0.01. |
9.2.5.15 LongFrameModeDataV12_t
【Описание】Определение управляющих параметров длинного кадра.
【Определение】
typedef struct LongFrameModeDataV12_s {
bool EnableEachChn;
MergeOECurveV10_t OECurve;
MergeMDCurveV10_t MDCurve;
MergeEachChnCurveV12_t EachChnCurve;
float OECurve_damp;
float MDCurveLM_damp;
float MDCurveMS_damp;
} LongFrameModeDataV12_t;
【Члены】
| Имя поля | Описание |
|---|---|
| EnableEachChn | Включение обнаружения по отдельным каналам |
| OECurve | Параметры кривой пересвета |
| MDCurve | Параметры кривой движения |
| EachChnCurve | Параметры кривой обнаружения отдельных каналов |
| MDCurveLM_damp | Сглаживание кривой длинного/среднего кадров — доля параметра текущего кадра, [0,1], по умолчанию 0.9; не действует в HDR x2. |
| MDCurveMS_damp | Сглаживание кривой среднего/короткого кадров — доля параметра текущего кадра, [0,1], по умолчанию 0.9. |
9.2.5.16 MergeMDCurveV11Short_t
【Описание】Определение кривой движения короткого кадра.
【Определение】
typedef struct MergeMDCurveV11Short_s{
float Coef;
float ms_thd0;
float lm_thd0;
} MergeMDCurveV11Short_t;
【Члены】
| Имя поля | Описание |
|---|---|
| Coef | Управляющий коэффициент, [0,1], по умолчанию 0.05, точность 0.0001. |
| ms_thd0 | Коэффициент среднего/короткого кадров, [0,1], по умолчанию 0.0, точность 0.1. |
| lm_thd0 | Коэффициент длинного/среднего кадров, [0,1], по умолчанию 0.0, точность 0.1. |
9.2.5.17 ShortFrameModeData_t
【Описание】Определение управляющих параметров короткого кадра.
【Определение】
typedef struct ShortFrameModeData_s {
MergeOECurveV10_t OECurve;
MergeMDCurveV11Short_t MDCurve;
float OECurve_damp;
float MDCurve_damp;
} ShortFrameModeData_t;
【Члены】
| Имя поля | Описание |
|---|---|
| OECurve | Параметры кривой пересвета |
| MDCurve | Параметры кривой движения |
| OECurve_damp | Сглаживание кривой пересвета — доля параметра текущего кадра, [0,1], по умолчанию 0.9. |
| MDCurve_damp | Сглаживание кривой движения — доля параметра текущего кадра, [0,1], по умолчанию 0.9. |
9.2.5.18 CalibDbV2_merge_V12_t
【Описание】Определение автоматических атрибутов merge.
【Определение】
typedef struct CalibDbV2_merge_V12_s {
MergeBaseFrame_t BaseFrm;
float ByPassThr;
LongFrameModeDataV12_t LongFrmModeData;
ShortFrameModeData_t ShortFrmModeData;
} CalibDbV2_merge_V12_t;
【Члены】
| Имя члена | Описание |
|---|---|
| BaseFrm | Опорный кадр объединения |
| ByPassThr | Порог обхода модуля, [0,1]. Если процентное различие яркости среды текущего и предыдущего кадров меньше ByPassThr, параметры не обновляются. |
| LongFrmModeData | Управляющие данные при длинном опорном кадре (в исходнике повтор data). |
9.2.5.19 MergeCurrCtlData_t
【Описание】Настройка merge RK3588.
【Определение】
typedef struct mergeAttrV30_s {
merge_OpModeV21_t opMode;
mMergeAttrV30_t stManual;
MergeCurrCtlData_t CtlInfo;
} mergeAttrV30_t;
【Члены】
| Имя члена | Описание |
|---|---|
| opMode | Выбор режима |
| stManual | Ручные атрибуты merge |
| CtlInfo | Параметры управляющих величин |
9.2.5.20 mergeAttr_t
【Описание】Конфигурация атрибутов merge.
【Определение】
typedef struct mergeAttr_s {
rk_aiq_uapi_sync_t sync;
mergeAttrV21_t attrV21;
mergeAttrV30_t attrV30;
} mergeAttr_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| attrV21 | Атрибуты merge RK356x не действуют на RK3588. |
| attrV30 | Атрибуты merge RK3588 не действуют на RK356x. |
9.3 DRC
9.3.1 Описание функций
DRC (сжатие высокого динамического диапазона) переводит изображение большей разрядности в меньшую.
9.3.2 Основные понятия
DRC применяется в линейном режиме и HDR.
9.3.3 Справочник функционального API
9.3.3.1 rk_aiq_uapi2_setDrcGain
【Описание】
Быстрая установка параметров кривой DrcGain.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setDrcGain(const rk_aiq_sys_ctx_t* ctx, float Gain, float
Alpha, float Clip);
При этом API работает в DRC_OPMODE_DRC_GAIN. Параметры вызова сохраняются в stDrcGain, определяющем три параметра кривой DrcGain; остальные параметры DRC по-прежнему берутся из модуля DRC в JSON.
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| Gain | Диапазон Gain: [1,8]. | Вход |
| alpha | Диапазон Alpha: [0,1]. | Вход |
| Clip | Диапазон Clip: [0,64]. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.3.3.2 rk_aiq_uapi2_getDrcGain
【Описание】
Получение параметров быстрой кривой DrcGain.
API возвращает параметры stDrcGain; они являются реально используемыми только в режиме DRC_OPMODE_DRC_GAIN.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getDrcGain(const rk_aiq_sys_ctx_t* ctx, float Gain, float
Alpha, float Clip);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| Gain | Диапазон Gain: [1,8]. | Выход |
| alpha | Диапазон Alpha: [0,1]. | Выход |
| Clip | Диапазон Clip: [0,64]. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.3.3.3 rk_aiq_uapi2_setDrcHiLit
【Описание】
Быстрая установка DrcHiLit.
В режиме DRC_OPMODE_HILIT параметры вызова сохраняются в stHiLit и определяют HiLight; остальные параметры DRC по-прежнему берутся из JSON.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setDrcHiLit(const rk_aiq_sys_ctx_t* ctx, float Strength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| Strength | Диапазон Intensity: [0,1]. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.3.3.4 rk_aiq_uapi2_getDrcHiLit
【Описание】
Получение параметров быстрой настройки DrcHiLit.
API получает параметры stHiLit; они реально используются только в DRC_OPMODE_HILIT.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getDrcHiLit(const rk_aiq_sys_ctx_t* ctx, float Strength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| Strength | Диапазон Intensity: [0,1]. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.3.3.5 rk_aiq_uapi2_setDrcLocalData
【Описание】
Быстрая установка DrcLocalData.
В DRC_OPMODE_LOCAL_TMO параметры сохраняются в stLocalDataV30 и определяют LocalData; остальные параметры DRC берутся из JSON.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setDrcLocalData(const rk_aiq_sys_ctx_t* ctx, float
LocalWeit, float GlobalContrast, float LoLitContrast,int LocalAutoEnable, float
LocalAutoWeit);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| LocalWeit | Диапазон LocalWeit: [0,1]. | Вход |
| GlobalContrast | Диапазон GlobalContrast: [0,1]. | Вход |
| LoLitContrast | Диапазон LoLitContrast: [0,1]. | Вход |
| LocalAutoEnable | Переключатель автоматического Local, диапазон [0,1]. | Вход |
| LocalAutoWeit | Диапазон автоматического LocalWeit: [0,1]. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.3.3.6 rk_aiq_uapi2_getDrcLocalData
【Описание】
Получение параметров DrcLocalData.
API получает LocalData из stLocalDataV30; они применяются только в DRC_OPMODE_LOCAL_TMO.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getDrcLocalData(const rk_aiq_sys_ctx_t* ctx, float*
LocalWeit, float* GlobalContrast, float* LoLitContrast,int* LocalAutoEnable,
float* LocalAutoWeit);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| LocalWeit | Диапазон LocalWeit: [0,1]. | Выход |
| GlobalContrast | Диапазон GlobalContrast: [0,1]. | Выход |
| LoLitContrast | Диапазон LoLitContrast: [0,1]. | Выход |
| ocalAutoEnable | Переключатель автоматического Local, диапазон [0,1]. | Выход |
| LocalAutoWeit | Диапазон автоматического LocalWeit: [0,1]. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.3.4 Справочник модульного API
9.3.4.1 rk_aiq_user_api2_adrc_SetAttrib
【Описание】Установка программных атрибутов DRC.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_adrc_SetAttrib(RkAiqAlgoContext* ctx,
drc_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| attr | Структура программных атрибутов DRC | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_adrc.h
Библиотека: librkaiq.so
【Описание】
9.3.4.2 rk_aiq_user_api2_adrc_GetAttrib
【Описание】Получение программных атрибутов DRC.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_adrc_GetAttrib(RkAiqAlgoContext* ctx,
drc_attrib_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| attr | Структура программных атрибутов DRC | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_adrc.h
Библиотека: librkaiq.so
【Описание】
9.3.5 Типы данных модульного API
9.3.5.1 AdrcVersion_t
【Описание】Определение версии DRC.
【Определение】
typedef enum AdrcVersion_e {
ADRC_VERSION_356X = 0,
ADRC_VERSION_3588 = 1,
ADRC_VERSION_MAX
} AdrcVersion_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ADRC_VERSION_356X | RK356x |
| ADRC_VERSION_3588 | RK3588 |
| ADRC_VERSION_MAX | Максимальный режим версии |
9.3.5.2 drc_OpMode_t
【Описание】Определение режима DRC.
【Определение】
typedef enum drc_OpMode_e {
DRC_OPMODE_API_OFF = 0,
DRC_OPMODE_MANU = 1,
DRC_OPMODE_DRC_GAIN = 2,
DRC_OPMODE_HILIT = 3,
DRC_OPMODE_LOCAL_TMO = 4,
} drc_OpMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| DRC_OPMODE_API_OFF | Автоматический режим: все параметры Drc определяются JSON. |
| DRC_OPMODE_MANU | Ручной режим: все параметры Drc задаёт stManualV30. |
| DRC_OPMODE_DRC_GAIN | DrcGain: соответствующие параметры задаёт stDrcGain, остальные берутся из JSON. |
| DRC_OPMODE_HILIT | HiLit: параметры HiLight задаёт stHiLit, остальные берутся из JSON. |
| DRC_OPMODE_LOCAL_TMO | LocalTMO: параметры LocalData задаёт stLocalDataV30, остальные берутся из JSON. |
9.3.5.3 mDrcGain_t
【Описание】Определение ручного DrcGain.
【Определение】
typedef struct mDrcGain_s {
float DrcGain;
float Alpha;
float Clip;
} mDrcGain_t;
【Члены】
| Имя члена | Описание |
|---|---|
| DrcGain | Ручной DrcGain, [1,8], по умолчанию 1, точность 0.01. |
| alpha | Ручной alpha, [0,1], по умолчанию 0.2, точность 0.01. |
| Clip | Ручной Clip, [0,64], по умолчанию 16, точность 0.01. |
9.3.5.4 mDrcHiLit_t
【Описание】Определение ручного Drc HiLit.
【Определение】
typedef struct mDrcHiLit_s {
float Strength;
} mDrcHiLit_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Strength | Ручной Strength, [0,1], по умолчанию 0, точность 0.01. |
9.3.5.5 mLocalDataV21_t
【Описание】Определение DRC Local RK356x.
【Определение】
typedef struct mLocalDataV21_s {
float LocalWeit;
float GlobalContrast;
float LoLitContrast;
} mLocalDataV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| LocalWeit | Ручной LocalWeit, исходный диапазон 0,1, по умолчанию 1, точность 0.01. |
| GlobalContrast | Ручной GlobalContrast, исходный диапазон 0,1, по умолчанию 0, точность 0.01. |
| LoLitContrast | Ручной LoLitContrast, исходный диапазон 0,1, по умолчанию 0, точность 0.01. |
9.3.5.6 mLocalDataV30_t
【Описание】Определение DRC Local RK356x.
【Определение】
typedef struct mLocalDataV30_s {
float LocalWeit;
int LocalAutoEnable;
float LocalAutoWeit;
float GlobalContrast;
float LoLitContrast;
} mLocalDataV30_t;
【Члены】
| Имя члена | Описание |
|---|---|
| LocalWeit | Ручной LocalWeit, [0,1], по умолчанию 1, точность 0.01. |
| LocalAutoEnable | Переключатель автоматического LocalWeit, [0,1], по умолчанию 1, точность 1. |
| LocalAutoWeit | Автоматический LocalWeit, [0,1], по умолчанию 0.4, точность 0.01. |
| GlobalContrast | Ручной GlobalContrast, [0,1], по умолчанию 0, точность 0.01. |
| LoLitContrast | Ручной LoLitContrast, [0,1], по умолчанию 0, точность 0.01. |
9.3.5.7 mDrcLocalV21_t
【Описание】Определение DRC Local RK356x.
【Определение】
typedef struct mDrcLocalV21_s {
mLocalDataV21_t LocalData;
float curPixWeit;
float preFrameWeit;
float Range_force_sgm;
float Range_sgm_cur;
float Range_sgm_pre;
int Space_sgm_cur;
int Space_sgm_pre;
} mDrcLocalV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| LocalData | Ручная настройка LocalData (фраза исходника незавершена). |
| curPixWeit | Билатеральный вес текущей точки, [0,1], по умолчанию 0.37, точность 0.001. |
| preFrameWeit | Билатеральный вес предыдущего кадра, [0,1], по умолчанию 0.8, точность 0.001. |
| Range_force_sgm | Обратная sigma диапазона значений билатерального фильтра, [0,1], по умолчанию 0, точность 0.0001. |
| Range_sgm_cur | Обратная пространственная sigma предыдущего кадра, исходный диапазон 0,1, по умолчанию 0.2, точность 0.0001. |
| Range_sgm_pre | Обратная пространственная sigma предыдущего кадра, [0,1], по умолчанию 0.2, точность 0.0001. |
| Space_sgm_cur | Обратная величина диапазона значений текущего кадра, [0,4095], по умолчанию 4068, точность 1. |
| Space_sgm_pre | Обратная sigma диапазона значений предыдущего кадра, [0,4095], по умолчанию 3068, точность 1. |
9.3.5.8 mDrcLocalV30_t
【Описание】Определение DRC Local RK3588.
【Определение】
typedef struct mDrcLocalV30_s {
mLocalDataV30_t LocalData;
float curPixWeit;
float preFrameWeit;
float Range_force_sgm;
float Range_sgm_cur;
float Range_sgm_pre;
int Space_sgm_cur;
int Space_sgm_pre;
} mDrcLocalV30_t;
【Члены】
| Имя члена | Описание |
|---|---|
| LocalData | Ручная настройка LocalData |
| curPixWeit | Билатеральный вес текущей точки, [0,1], по умолчанию 0.37, точность 0.001. |
| preFrameWeit | Билатеральный вес предыдущего кадра, [0,1], по умолчанию 0.8, точность 0.001. |
| Range_force_sgm | Обратная sigma диапазона значений, [0,1], по умолчанию 0, точность 0.0001. |
| Range_sgm_cur | Обратная пространственная sigma предыдущего кадра, [0,1], по умолчанию 0.2, точность 0.0001. |
| Range_sgm_pre | Обратная пространственная sigma предыдущего кадра, [0,1], по умолчанию 0.2, точность 0.0001. |
| Space_sgm_cur | Обратная sigma диапазона значений текущего кадра, [0,4095], по умолчанию 4068, точность 1. |
| Space_sgm_pre | Обратная sigma диапазона значений предыдущего кадра, [0,4095], по умолчанию 3068, точность 1. |
9.3.5.9 CompressMode_t
【Описание】Определение режима кривой DrcCompress при ручном управлении.
【Определение】
typedef enum CompressMode_s {
COMPRESS_AUTO = 0,
COMPRESS_MANUAL = 1,
} CompressMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| COMPRESS_AUTO | Ручной режим, автоматическая кривая Compress. |
| COMPRESS_MANUAL | Ручной режим, ручная кривая Compress. |
9.3.5.10 mDrcCompress_t
【Описание】Определение ручного DrcCompress.
【Определение】
typedef struct mDrcCompress_s {
CompressMode_t Mode;
uint16_t Manual_curve[17];
} mDrcCompress_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Mode | Включение функции |
| Manual_curve | Ручная кривая Compress в ручном режиме. |
9.3.5.11 mdrcAttr_V21_t
【Описание】Определение ручного DRC RK356x.
【Определение】
typedef struct mdrcAttr_V21_s {
bool Enable;
mDrcGain_t DrcGain;
mDrcHiLit_t HiLight;
mDrcLocalV21_t LocalSetting;
mDrcCompress_t CompressSetting;
int Scale_y[ADRC_Y_NUM];
float Edge_Weit;
bool OutPutLongFrame;
int IIR_frame;
} mdrcAttr_V21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Enable | Включение ручного DRC |
| DrcGain | Ручные настройки DrcGain |
| HiLight | Ручные настройки HiLit |
| LocalSetting | Ручные настройки Local |
| CompressSetting | Настройка кривой сжатия |
| Scale_y | Таблица масштаба коррекции усиления, [0,2048], точность 1. |
| Edge_Weit | Масштаб отклика границ, [0,1], по умолчанию 0.02, точность 0.01; уменьшает артефакты контрастных границ. |
| OutPutLongFrame | Вывод только длинного кадра: 0 — выключено, 1 — включено. |
| IIR_frame | Количество кадров фильтра IIR, [1,1000], по умолчанию 2. |
9.3.5.12 mdrcAttr_V30_t
【Описание】Определение ручного DRC RK3588.
【Определение】
typedef struct mdrcAttr_V30_s {
bool Enable;
mDrcGain_t DrcGain;
mDrcHiLit_t HiLight;
mDrcLocalV30_t LocalSetting;
mDrcCompress_t CompressSetting;
int Scale_y[ADRC_Y_NUM];
float Edge_Weit;
bool OutPutLongFrame;
int IIR_frame;
} mdrcAttr_V30_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Enable | Включение ручного DRC |
| DrcGain | Ручные настройки DrcGain |
| HiLight | Ручные настройки HiLit |
| LocalSetting | Ручные настройки Local |
| CompressSetting | Настройка кривой сжатия |
| Scale_y | Таблица масштаба коррекции усиления, [0,2048], точность 1. |
| Edge_Weit | Масштаб отклика границ, [0,1], по умолчанию 0.02, точность 0.01; уменьшает артефакты контрастных границ. |
| OutPutLongFrame | Вывод только длинного кадра: 0 — выключено, 1 — включено. |
| IIR_frame | Количество кадров фильтра IIR, [1,1000], по умолчанию 2. |
9.3.5.13 DrcInfo_t
【Описание】Определение управляющих параметров DRC.
【Определение】
typedef struct DrcInfo_s {
float EnvLv;
float ISO;
} DrcInfo_t;
【Члены】
| Имя члена | Описание |
|---|---|
| EnvLv | Текущая яркость среды |
| ISO | Текущее ISO |
9.3.5.14 drcAttr_t
【Описание】Определение атрибутов DRC.
【Определение】
typedef struct drcAttr_s {
rk_aiq_uapi_sync_t sync;
AdrcVersion_t Version;
drc_OpMode_t opMode;
mdrcAttr_V21_t stManualV21;
mdrcAttr_V30_t stManualV30;
mDrcGain_t stDrcGain;
mDrcHiLit_t stHiLit;
mLocalDataV21_t stLocalDataV21;
mLocalDataV30_t stLocalDataV30;
DrcInfo_t Info;
} drcAttr_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| Версия | Сведения о версии |
| opMode | Режим API |
| stManualV21 | Ручные атрибуты DRC RK356x; действуют при opMode = DRC_OPMODE_MANU. |
| stManualV30 | Ручные атрибуты DRC RK3588; параметры действуют при opMode = DRC_OPMODE_MANU. |
| stDrcGain | Атрибут DrcGain, действует при opMode = DRC_OPMODE_DRC_GAIN. |
| stHiLit | Атрибут Hillitt действует при Optmod = Dirk_Optmod_Hillit; написание идентификаторов сохранено из оригинала. |
| stLocalDataV21 | Атрибут LocalData RK356x, действует при opMode = DRC_OPMODE_LOCAL_TMO. |
| stLocalDataV30 | Атрибут LocalData RK3588, действует при opMode = DRC_OPMODE_LOCAL_TMO. |
| Info | Информация управляющих параметров |
9.4 Подавление шума
9.4.1 Описание функции
Шум изображения — ненужные или нежелательные помехи в данных изображения. Шумоподавление уменьшает шум цифрового изображения.
9.4.2 API функционального уровня
9.4.2.1 rk_aiq_uapi2_setNRMode
【Описание】Установить режим шумоподавления.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setNRMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| mode | Режим работы | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.4.2.2 rk_aiq_uapi2_getNRMode
【Описание】Получить текущий режим шумоподавления.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getNRMode(const rk_aiq_sys_ctx_t* ctx, opMode_t* mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| mode | Режим работы | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.4.2.3 rk_aiq_uapi2_setANRStrth
【Описание】Установить обычную интенсивность шумоподавления.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| level | Интенсивность шумоподавления, диапазон 0.0–100.0, по умолчанию 50. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.4.2.4 rk_aiq_uapi2_getANRStrth
【Описание】Получить обычную интенсивность шумоподавления.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int*
level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| level | Интенсивность шумоподавления, диапазон 0.0–100.0, по умолчанию 50. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.4.2.5 rk_aiq_uapi2_setMSpaNRStrth
【Описание】Установить интенсивность пространственного шумоподавления.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setMSpaNRStrth(const rk_aiq_sys_ctx_t* ctx, bool on,
unsigned int level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| on | Переключатель | Вход |
| level | Интенсивность шумоподавления, диапазон 0.0–100.0, по умолчанию 50. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.4.2.6 rk_aiq_uapi2_getMSpaNRStrth
【Описание】Получить интенсивность пространственного шумоподавления.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getMSpaNRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on,
unsigned int *level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| on | Переключатель | Выход |
| level | Интенсивность шумоподавления, диапазон 0.0–100.0, по умолчанию 50. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.4.2.7 rk_aiq_uapi2_setMTNRStrth
【Описание】Установить интенсивность временного шумоподавления.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setMTNRStrth(const rk_aiq_sys_ctx_t* ctx, bool on,
unsigned int level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| on | Переключатель | Вход |
| level | Интенсивность шумоподавления, диапазон 0.0–100.0, по умолчанию 50. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.4.2.8 rk_aiq_uapi2_getMTNRStrth
【Описание】Получить интенсивность временного шумоподавления.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getMTNRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on,
unsigned int *level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| on | Переключатель | Выход |
| level | Интенсивность шумоподавления, диапазон 0.0–100.0, по умолчанию 50. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.4.3 API уровня модуля
9.4.3.1 rk_aiq_user_api2_abayer2dnrV2_SetAttrib
【Описание】Установить атрибуты алгоритма шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_abayer2dnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_attrib_v2_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров шумоподавления | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_abayer2dnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.2 rk_aiq_user_api2_abayer2dnrV2_GetAttrib
【Описание】Получить атрибуты алгоритма шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_abayer2dnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_attrib_v2_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров шумоподавления | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_abayer2dnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.3 rk_aiq_user_api2_abayer2dnrV2_SetStrength
【Описание】Установить интенсивность шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_abayer2dnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_strength_v2_t *pStrength)
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pStrength | Структура интенсивности шумоподавления; диапазон percent в структуре 0.0–1.0. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_abayer2dnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.4 rk_aiq_user_api2_abayer2dnrV2_GetStrength
【Описание】Получить интенсивность шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_abayer2dnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_strength_v2_t *pStrength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pPercnt | Указатель структуры интенсивности шумоподавления; диапазон percentage в структуре 0.0–1.0. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_abayer2dnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.5 rk_aiq_user_api2_abayertnrV2_SetAttrib
【Описание】Установить атрибуты алгоритма шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_abayertnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_attrib_v2_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров шумоподавления | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_abayertnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.6 rk_aiq_user_api2_abayertnrV2_GetAttrib
【Описание】Получить атрибуты алгоритма шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_abayertnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_attrib_v2_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров шумоподавления | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_abayertnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.7 rk_aiq_user_api2_abayertnrV2_SetStrength
【Описание】Установить интенсивность шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_abayertnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_strength_v2_t *pStrength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pStrength | Указатель структуры интенсивности шумоподавления; диапазон percentage в структуре 0.0–1.0. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_abayertnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.8 rk_aiq_user_api2_abayertnrV2_GetStrength
【Описание】Получить интенсивность шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_abayertnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_strength_v2_t *pStrength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pStrength | Указатель структуры интенсивности шумоподавления; диапазон percentage в структуре 0.0–1.0. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_abayertnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.9 rk_aiq_user_api2_aynrV3_SetAttrib
【Описание】Установить атрибуты алгоритма шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_aynrV3_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_attrib_v3_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров шумоподавления | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_aynr_v3.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.10 rk_aiq_user_api2_aynrV3_GetAttrib
【Описание】Получить атрибуты алгоритма шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_aynrV3_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_attrib_v3_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров шумоподавления | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_aynr_v3.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.11 rk_aiq_user_api2_aynrV3_SetStrength
【Описание】Установить интенсивность шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_aynrV3_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_strength_v3_t* pStrength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pStrength | Указатель структуры интенсивности шумоподавления; диапазон percentage в структуре 0.0–1.0. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_aynr_v3.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.12 rk_aiq_user_api2_aynrV3_GetStrength
【Описание】Получить интенсивность шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_aynrV3_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_strength_v3_t* pStrength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pStrength | Указатель структуры интенсивности шумоподавления; диапазон percentage в структуре 0.0–1.0. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_aynr_v3.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.13 rk_aiq_user_api2_acnrV2_SetAttrib
【Описание】Установить атрибуты алгоритма шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_acnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_attrib_v2_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров шумоподавления | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_acnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.14 rk_aiq_user_api2_acnrV2_GetAttrib
【Описание】Получить атрибуты алгоритма шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_acnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_attrib_v2_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров шумоподавления | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_acnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.15 rk_aiq_user_api2_acnrV2_SetStrength
【Описание】Установить интенсивность шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_acnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_strength_v2_t *pStrength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pStrength | Указатель структуры интенсивности шумоподавления; диапазон percentage в структуре 0.0–1.0. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_acnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.3.16 rk_aiq_user_api2_acnrV2_GetStrength
【Описание】Получить интенсивность шумоподавления.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_acnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_strength_v2_t *pStrength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pStrength | Указатель структуры интенсивности шумоподавления; диапазон percentage в структуре 0.0–1.0. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_acnr_v2.h, RkAiqHandleIntV3x.h
Библиотека: librkaiq.so
9.4.4 Типы данных API уровня модуля
9.4.4.1 rk_aiq_bayer2dnr_attrib_v2_t
【Описание】Определить параметры модуля шумоподавления.
【Определение】
typedef struct rk_aiq_bayer2dnr_attrib_v2_s {
rk_aiq_uapi_sync_t sync;
Abayer2dnr_OPMode_V2_t eMode;
Abayer2dnr_Auto_Attr_V2_t stAuto;
Abayer2dnr_Manual_Attr_V2_t stManual;
} rk_aiq_bayer2dnr_attrib_v2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| eMode | Режим модуля шумоподавления Bayer2DNR |
| stAuto | Параметры автоматического режима Bayer2DNR |
| stManual | Параметры ручного режима Bayer2DNR |
9.4.4.2 Abayer2dnr_OPMode_V2_t
【Описание】Определить режим модуля шумоподавления.
【Определение】
typedef enum Abayer2dnr_OPMode_V2_e {
ABAYER2DNR_OP_MODE_INVALID = 0,
ABAYER2DNR_OP_MODE_AUTO = 1,
ABAYER2DNR_OP_MODE_MANUAL = 2,
ABAYER2DNR_OP_MODE_REG_MANUAL = 3,
ABAYER2DNR_OP_MODE_MAX
} Abayer2dnr_OPMode_V2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ABAYER2DNR_OP_MODE_INVALID | Недопустимый режим шумоподавления 2DNR в области Bayer |
| ABAYER2DNR_OP_MODE_AUTO | Автоматический режим шумоподавления 2DNR в области Bayer |
| ABAYER2DNR_OP_MODE_MANUAL | Настройки алгоритма ручного режима 2DNR в области Bayer |
| ABAYER2DNR_OP_MODE_REG_MANUAL | Настройки регистров ручного режима 2DNR в области Bayer |
| ABAYER2DNR_OP_MODE_MAX | Максимум перечисления режимов 2DNR Bayer; недопустимый режим. |
9.4.4.3 Abayer2dnr_Auto_Attr_V2_t
【Описание】Определить автоматические атрибуты модуля шумоподавления.
【Определение】
typedef struct Abayer2dnr_Auto_Attr_V2_s
{
RK_Bayer2dnr_Params_V2_t st2DParams;
RK_Bayer2dnr_Params_V2_Select_t st2DSelect;
} Abayer2dnr_Auto_Attr_V2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| st2DParams | Параметры алгоритма Bayer2DNR для каждого ISO |
| st2DSelect | Рассчитанные параметры атрибутов Bayer2DNR |
9.4.4.4 Abayer2dnr_Manual_Attr_V2_t
【Описание】Определить ручные атрибуты модуля шумоподавления.
【Определение】
typedef struct Abayer2dnr_Manual_Attr_V2_s
{
RK_Bayer2dnr_Params_V2_Select_t st2DSelect;
RK_Bayer2dnr_Fix_V2_t st2Dfix;
} Abayer2dnr_Manual_Attr_V2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| st2DSelect | Значения параметров алгоритма Bayer2DNR |
| st2Dfix | Значения регистров Bayer2DNR в ручном режиме |
9.4.4.5 RK_Bayer2dnr_Params_V2_t
【Описание】Определить автоматический режим шумоподавления и параметры алгоритма для каждого ISO.
【Определение】
typedef struct RK_Bayer2dnr_Params_V2_s
{
int enable;
float iso[RK_BAYER2DNR_V2_MAX_ISO_NUM];
int lumapoint[16];
int sigma[RK_BAYER2DNR_V2_MAX_ISO_NUM][16];
float filter_strength[RK_BAYER2DNR_V2_MAX_ISO_NUM];
float edgesofts[RK_BAYER2DNR_V2_MAX_ISO_NUM];
float ratio[RK_BAYER2DNR_V2_MAX_ISO_NUM];
float weight[RK_BAYER2DNR_V2_MAX_ISO_NUM];
int gauss_guide[RK_BAYER2DNR_V2_MAX_ISO_NUM];
int pix_diff[RK_BAYER2DNR_V2_MAX_ISO_NUM];
int diff_thld[RK_BAYER2DNR_V2_MAX_ISO_NUM];
} RK_Bayer2dnr_Params_V2_t;
【Члены】
| Имя члена | Тип параметра | Описание |
|---|---|---|
| enable | Параметр настройки | Переключатель модуля: 1 — включён, 0 — выключен. |
| ISO | Параметр настройки | Разным ступеням ISO соответствуют разные параметры настройки; поддерживаются только 13 ступеней. |
| lumapoint | Калибровочные данные | Точки кривой sigma шума для разных яркостей пикселей; всего 16. |
| sigma | Калибровочные данные | Точки кривой sigma шума для разных яркостей пикселей; всего 16. |
| gauss_guide | Параметр настройки | Включение гауссовского направляющего фильтра: 1 — включить, 0 — выключить. |
| filter_strength | Параметр настройки | Параметр интенсивности шумоподавления, диапазон [0, 16]; большее значение усиливает подавление. |
| edgesofts | Параметр настройки | Влияет на пространственные веса; диапазон 1–16, по умолчанию 1. |
| ratio | Параметр настройки | Вес мягкого порога, диапазон 0–1.0; меньшее значение усиливает подавление. |
| weight | Параметр настройки | Чем больше вес выхода фильтра, тем сильнее шумоподавление. |
| pix_diff | Параметр настройки | Порог разности пикселей окна 5x5 двустороннего фильтра; по умолчанию 0x3fff. |
| diff_thld | Параметр настройки | Порог квадрата разности для евклидова расстояния двустороннего фильтра — 0x3ff. |
9.4.4.6 RK_Bayer2dnr_Params_V2_Select_t
【Описание】Определить атрибуты алгоритма шумоподавления в ручном режиме.
【Определение】
typedef struct RK_Bayer2dnr_Params_V2_Select_s
{
int enable;
int lumapoint[16];
int sigma[16];
float filter_strength;
float edgesofts;
float ratio;
float weight;
int gauss_guide;
int pix_diff;
int diff_thld;
} RK_Bayer2dnr_Params_V2_Select_t;
【Поля】
| Имя поля | Тип параметра | Описание |
|---|---|---|
| enable | Параметры настройки | Переключатель модуля: 1 — включён, 0 — выключен. |
| lumapoint | Калибровочные данные | Разным яркостям пикселей соответствуют точки кривой SIGMA шума; всего 16. |
| sigma | Калибровочные данные | Разным яркостям пикселей соответствуют точки кривой SIGMA шума; всего 16. |
| gauss_guide | Параметры настройки | Включение гауссовского направляющего фильтра: 1 — включить, 0 — выключить. |
| filter_strength | Параметры настройки | Параметр интенсивности шумоподавления, диапазон [0, 16]; большее значение усиливает подавление. |
| edgesofts | Параметры настройки | Влияет на пространственные веса; диапазон [1, 16], по умолчанию 1. |
| ratio | Параметры настройки | Вес мягкого порога, диапазон [0, 1.0]; меньшее значение усиливает подавление. |
| weight | Параметр настройки | Чем больше вес выхода фильтра, тем сильнее шумоподавление. |
| pix_diff | Параметр настройки | Порог разности пикселей окна 5x5 двустороннего фильтра; по умолчанию 0x3fff. |
| diff_thld | Параметр настройки | Порог квадрата разности для евклидова расстояния двустороннего фильтра — 0x3ff. |
9.4.4.7 RK_Bayer2dnr_Fix_V2_t
【Описание】Определить настройки регистров шумоподавления в ручном режиме.
【Определение】
typedef struct RK_Bayer2dnr_Fix_V2_s {
//ISP_BAYNR_3A00_CTRL
uint8_t baynr_lg2_mode;
uint8_t baynr_gauss_en;
uint8_t baynr_log_bypass;
uint8_t baynr_en;
// ISP_BAYNR_3A00_DGAIN0-2
uint16_t baynr_dgain[3];
// ISP_BAYNR_3A00_PIXDIFF
uint16_t baynr_pix_diff;
// ISP_BAYNR_3A00_THLD
uint16_t baynr_diff_thld;
uint16_t baynr_softthld;
// ISP_BAYNR_3A00_W1_STRENG
uint16_t bltflt_streng;
uint16_t baynr_reg_w1;
// ISP_BAYNR_3A00_SIGMAX0-15
uint16_t sigma_x[16];
// ISP_BAYNR_3A00_SIGMAY0-15
uint16_t sigma_y[16];
// ISP_BAYNR_3A00_WRIT_D
uint16_t weit_d[3];
uint16_t lg2_lgoff;
uint16_t lg2_off;
uint32_t dat_max;
} RK_Bayer2dnr_Fix_V2_t;
} RK_Bayer2dnr_Fix_V23_t;
【Поля】
| Параметр | Разрядность | Описание параметра |
|---|---|---|
| baynr_gauss_en | 1 | Бит включения направляющего гауссовского фильтра 3x3: 1 — включить, 0 — выключить; по умолчанию 0. |
| baynr_log_bypass | 1 | Бит управления log-преобразованием; внутри HDR аппаратно принудительно отключается. 1 включает обход log, то есть выключает преобразование; 0 выключает обход и включает преобразование. По умолчанию 0. |
| baynr_en | 1 | Бит включения шумоподавления Bayer: 1 — включить, 0 — выключить; по умолчанию 0. |
| baynr_dgain | 18 | Параметры усиления трёх кадров HDR; дробная часть 10bit. |
| baynr_pix_diff | 14 | Порог разности пикселей окна 5x5 двустороннего фильтра; по умолчанию 0x3fff. |
| baynr_diff_thld | 10 | Порог квадрата разности для евклидова расстояния двустороннего фильтра; по умолчанию 0x3ff. |
| baynr_softthld | 10 | Вес мягкого порога: большее значение повышает порог и сохраняет больше шума. Дробная часть 10bit, по умолчанию 0xa. |
| bltflt_streng | 12 | Интенсивность шумоподавления двустороннего фильтра; дробная часть 8bit, по умолчанию 0xa3. |
| baynr_reg_w1 | 10 | Вес выхода фильтра: большее значение усиливает вклад фильтрованного результата, меньшее — исходного. Дробная часть 10bit, по умолчанию 0x3ff. |
| sigma_x | 16 | 16 уровней яркости кривой шума; интервал интерполяции между двумя значениями должен быть степенью 2. |
| sigma_y | 16 | 16 уровней sigma кривой шума; параметры получаются калибровкой. |
| weit_d | 10 | Пространственные веса разных позиций; дробная часть 10bit. По умолчанию 0x178, 0x249, 0x31d. |
9.4.4.8 rk_aiq_bayer2dnr_strength_v2_t
【Описание】Определить структуру настройки интенсивности шумоподавления.
【Определение】
typedef struct rk_aiq_bayer2dnr_strength_v2_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_bayer2dnr_strength_v2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| percent | Интенсивность шумоподавления, диапазон 0.0–1.0. |
9.4.4.9 rk_aiq_bayertnr_attrib_v2_t
【Описание】Определить параметры модуля шумоподавления.
【Определение】
typedef struct rk_aiq_bayertnr_attrib_v2_s {
rk_aiq_uapi_sync_t sync;
Abayertnr_OPMode_V2_t eMode;
Abayertnr_Auto_Attr_V2_t stAuto;
Abayertnr_Manual_Attr_V2_t stManual;
} rk_aiq_bayertnr_attrib_v2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| eMode | Режим модуля шумоподавления BayerTNR |
| stAuto | Параметры автоматического режима BayerTNR |
| stManual | Параметры ручного режима BayerTNR |
9.4.4.10 Abayertnr_OPMode_V2_t
【Описание】Определить режим модуля шумоподавления.
【Определение】
typedef enum Abayertnr_OPMode_V2_e {
ABAYERTNRV2_OP_MODE_INVALID = 0,
ABAYERTNRV2_OP_MODE_AUTO = 1,
ABAYERTNRV2_OP_MODE_MANUAL = 2,
ABAYERTNRV2_OP_MODE_REG_MANUAL = 3,
ABAYERTNRV2_OP_MODE_MAX
} Abayertnr_OPMode_V2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ABAYERTNRV2_OP_MODE_INVALID | Недопустимый режим TNR в области Bayer |
| ABAYERTNRV2_OP_MODE_AUTO | Автоматический режим TNR в области Bayer |
| ABAYERTNRV2_OP_MODE_MANUAL | Настройки алгоритма ручного режима TNR в области Bayer |
| ABAYERTNRV2_OP_MODE_MAX | Максимум перечисления режимов TNR Bayer; недопустимый режим. |
9.4.4.11 Abayertnr_Auto_Attr_V2_t
【Описание】Определить автоматические атрибуты модуля шумоподавления.
【Определение】
typedef struct Abayertnr_Auto_Attr_V2_s
{
int bayernr3DEn;
RK_Bayertnr_Params_V2_t st3DParams;
RK_Bayertnr_Params_V2_Select_t st3DSelect;
} Abayertnr_Auto_Attr_V2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| bayernr3DEn | Переключатель Bayer3DNR |
| st3DParams | Параметры алгоритма Bayer3DNR для каждого ISO в автоматическом режиме |
| st3DSelect | Рассчитанные параметры атрибутов Bayer3DNR |
9.4.4.12 Abayertnr_Manual_Attr_V23_t
【Описание】Определить ручные атрибуты модуля шумоподавления.
【Определение】
typedef struct Abayertnr_Manual_Attr_V2_s
{
int bayernr3DEn;
RK_Bayertnr_Params_V2_Select_t st3DSelect;
RK_Bayertnr_Fix_V2_t st3DFix;
} Abayertnr_Manual_Attr_V2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| bayernr3DEn | Переключатель Bayer3DNR |
| st3DSelect | Значения параметров алгоритма Bayer3DNR в ручном режиме |
| st3Dfix | Значения регистров Bayer3DNR в ручном режиме |
9.4.4.13 RK_Bayertnr_Params_V2_t
【Описание】Определить автоматический режим шумоподавления и параметры алгоритма для каждого ISO.
【Определение】
typedef struct RK_Bayertnr_Params_V2_s
{
int enable;
float iso[RK_BAYERNR_V2_MAX_ISO_NUM];
//calib
int lumapoint[16];
int sigma[RK_BAYERNR_V2_MAX_ISO_NUM][16];
int lumapoint2[16];
int lo_sigma[RK_BAYERNR_V2_MAX_ISO_NUM][16];
int hi_sigma[RK_BAYERNR_V2_MAX_ISO_NUM][16];
//tuning
int thumbds[RK_BAYERNR_V2_MAX_ISO_NUM];
int lo_enable[RK_BAYERNR_V2_MAX_ISO_NUM];
int hi_enable[RK_BAYERNR_V2_MAX_ISO_NUM];
int lo_med_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int lo_gsbay_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int lo_gslum_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int hi_med_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int hi_gslum_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int global_pk_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int global_pksq[RK_BAYERNR_V2_MAX_ISO_NUM];
float lo_filter_strength[RK_BAYERNR_V2_MAX_ISO_NUM];
float hi_filter_strength[RK_BAYERNR_V2_MAX_ISO_NUM];
float soft_threshold_ratio[RK_BAYERNR_V2_MAX_ISO_NUM];
float hi_wgt_comp[RK_BAYERNR_V2_MAX_ISO_NUM];
float clipwgt[RK_BAYERNR_V2_MAX_ISO_NUM];
float hidif_th[RK_BAYERNR_V2_MAX_ISO_NUM];
} RK_Bayertnr_Params_V2_t;
【Члены】
| Имя члена | Тип параметра | Описание |
|---|---|---|
| Enable | Параметры настройки | Переключатель модуля |
| iso | Параметр настройки | Разным ступеням ISO соответствуют разные параметры настройки; сейчас только 13 ступеней. |
| lumapoint / sigma | Параметр калибровки | Значения кривой шума для разных яркостей, всего 16 точек. lumapoint — яркость пикселя, sigma — значение кривой шума. |
| lumapoint2 / lo_sigma | Параметр калибровки | Значения кривой шума для разных яркостей, всего 16 точек. lumapoint2 — яркость пикселя, lo_sigma — значение кривой шума. |
| lumapoint2 / hi_sigma | Параметр калибровки | Значения кривой шума для разных яркостей, всего 16 точек. lumapoint2 — яркость пикселя, hi_sigma — значение кривой шума. |
| thumbds | Параметр настройки | Коэффициент уменьшения разрешения |
| lo_enable | Параметр настройки | Включение низкочастотного обнаружения движения: 1 — вкл., 0 — выкл.; по умолчанию включено. |
| hi_enable | Параметр настройки | Включение высокочастотного обнаружения движения: 1 — вкл., 0 — выкл.; по умолчанию включено. |
| lo_med_en | Параметр настройки | Переключатель внутреннего низкочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| lo_gsbay_en | Параметр настройки | Переключатель внутреннего низкочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| lo_gslum_en | Параметр настройки | Переключатель внутреннего низкочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| hi_med_en | Параметр настройки | Переключатель внутреннего высокочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| hi_gslum_en | Параметр настройки | Переключатель внутреннего высокочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| global_pk_en | Параметр настройки | Использование глобального PK для временного шумоподавления: 1 — да, 0 — нет; сейчас допустим только 0. |
| Имя члена | Тип параметра | Описание |
|---|---|---|
| global_pksq | Параметр настройки | Квадрат глобального PK, используется при global_pk_en = 1. По умолчанию 1024, диапазон [0, 268435455]. |
| lo_filter_strength | Параметр настройки | Интенсивность высокочастотного обнаружения движения; влияет на hi_sigma и тем самым на временное шумоподавление. По умолчанию 1, диапазон [0.0, 16.0]. |
| hi_filter_strength | Параметр настройки | Интенсивность высокочастотного обнаружения движения; влияет на hi_sigma и тем самым на временное шумоподавление. По умолчанию 1, диапазон [0.0, 16.0]. |
| soft_threshold_ratio | Параметр настройки | Вес мягкого порога: большее значение сохраняет больше шума. Диапазон [0.0 1.0], по умолчанию 0. |
| hi_wgt_comp | Параметр настройки | Коэффициент компенсации веса наложения; действует только при включённой высокочастотной обработке. По умолчанию 0.16, диапазон [0.0, 1.0]. |
| clipwgt | Параметр настройки | Предел веса наложения изображений; по умолчанию 0.03215, диапазон [0.0, 1.0]. |
| hidif_th | Параметр настройки | Порог высокочастотной разности; по умолчанию 32767, диапазон [0, 65535]. |
9.4.4.14 RK_Bayertnr_Params_V2_Select_t
【Описание】Определить структуру атрибутов алгоритма шумоподавления в ручном режиме.
【Определение】
typedef struct RK_Bayertnr_Params_V2_Select_s
{
int enable;
//calib
int lumapoint[16];
int sigma[16];
int lumapoint2[16];
int lo_sigma[16];
int hi_sigma[16];
//tuning
int thumbds;
int lo_enable;
int hi_enable;
int lo_med_en;
int lo_gsbay_en;
int lo_gslum_en;
int hi_med_en;
int hi_gslum_en;
int global_pk_en;
int global_pksq;
float lo_filter_strength;
float hi_filter_strength;
float soft_threshold_ratio;
float clipwgt;
float hi_wgt_comp;
float hidif_th;
} RK_Bayertnr_Params_V2_Select_t;
【Члены】
| Имя члена | Тип параметра | Описание |
|---|---|---|
| Enable | Параметры настройки | Переключатель модуля |
| lumapoint / sigma | Параметры калибровки | Значения кривой шума для разных яркостей, всего 16 точек. lumapoint — яркость пикселя, sigma — значение кривой шума. |
| lumapoint2 / lo_sigma | Параметры калибровки | Значения кривой шума для разных яркостей, всего 16 точек. lumapoint2 — яркость пикселя, lo_sigma — значение кривой шума. |
| lumapoint2 / hi_sigma | Параметры калибровки | Значения кривой шума для разных яркостей, всего 16 точек. lumapoint2 — яркость пикселя, hi_sigma — значение кривой шума. |
| thumbds | Параметры настройки | Коэффициент уменьшения разрешения |
| lo_enable | Параметры настройки | Включение низкочастотного обнаружения движения: 1 — вкл., 0 — выкл.; по умолчанию включено. |
| hi_enable | Параметры настройки | Включение высокочастотного обнаружения движения: 1 — вкл., 0 — выкл.; по умолчанию включено. |
| lo_med_en | Параметры настройки | Переключатель внутреннего низкочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| lo_gsbay_en | Параметры настройки | Переключатель внутреннего низкочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| lo_gslum_en | Параметры настройки | Переключатель внутреннего низкочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| hi_med_en | Параметры настройки | Переключатель внутреннего высокочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| hi_gslum_en | Параметры настройки | Переключатель внутреннего высокочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| global_pk_en | Параметры настройки | Использование глобального PK для временного шумоподавления: 1 — да, 0 — нет; сейчас допустим только 0. |
| global_pksq | Параметры настройки | Квадрат глобального PK, используется при global_pk_en = 1. По умолчанию 1024, диапазон [0, 268435455]. |
| Имя члена | Тип параметра | Описание |
|---|---|---|
| lo_filter_strength | Параметры настройки | Интенсивность высокочастотного обнаружения движения влияет на hi_sigma и временное шумоподавление. По умолчанию 1, диапазон [0.0, 16.0]. |
| hi_filter_strength | Параметры настройки | Интенсивность высокочастотного обнаружения движения влияет на hi_sigma и временное шумоподавление. По умолчанию 1, диапазон [0.0, 16.0]. |
| soft_threshold_ratio | Параметры настройки | Вес мягкого порога: большее значение сохраняет больше шума. Диапазон [0.0 1.0], по умолчанию 0. |
| hi_wgt_comp | Параметры настройки | Коэффициент компенсации веса наложения; действует только при включённой высокочастотной обработке. По умолчанию 0.16, диапазон [0.0, 1.0]. |
| clipwgt | Параметры настройки | Предел веса наложения изображений; по умолчанию 0.03215, диапазон 0.0–1.0. |
| hidif_th | Параметры настройки | Порог высокочастотной разности; по умолчанию 32767, диапазон 0–65535. |
9.4.4.15 RK_Bayertnr_Params_V23_Select_t
【Описание】Определить структуру атрибутов алгоритма шумоподавления в ручном режиме.
【Определение】
typedef struct RK_Bayertnr_Params_V23_Select_s
{
int enable;
//calib
int lumapoint[16];
int sigma[16];
int lumapoint2[16];
int lo_sigma[16];
int hi_sigma[16];
//tuning
int thumbds_w;
int thumbds_h;
int lo_enable;
int hi_enable;
int lo_med_en;
int lo_gsbay_en;
int lo_gslum_en;
int hi_med_en;
int hi_gslum_en;
int trans_en;
int wgt_use_mode;
int wgt_mge_mode;
int hi_guass;
int kl_guass;
bool global_pk_en;
int global_pksq;
float lo_filter_strength;
float hi_filter_strength;
float soft_threshold_ratio;
float lo_clipwgt;
float hi_wgt_comp;
int hidif_th;
float lo_filter_rat0;
int lo_filter_thed0;
int hi_filter_abs_ctrl;
int hi_filter_filt_bay;
int hi_filter_filt_avg;
int hi_filter_filt_mode;
float hi_filter_rat0;
int hi_filter_thed0;
float hi_filter_rat1;
int hi_filter_thed1;
int guass_guide_coeff0;
int guass_guide_coeff1;
int guass_guide_coeff2;
int guass_guide_coeff3;
} RK_Bayertnr_Params_V23_Select_t;
【Поля】
| Имя члена | Тип параметра | Описание |
|---|---|---|
| Enable | Параметры настройки | Переключатель модуля |
| lumapoint / sigma | Параметры калибровки | Значения кривой шума для разных яркостей, всего 16 точек. LumaPoint — яркость пикселя, Sigma — значение кривой шума. |
| lumapoint2 / lo_sigma | Параметры калибровки | Значения кривой шума для разных яркостей, всего 16 точек. lumapoint2 — яркость пикселя, lo_sigma — значение кривой шума. |
| lumapoint2 / hi_sigma | Параметры калибровки | Значения кривой шума для разных яркостей, всего 16 точек. lumapoint2 — яркость пикселя, hi_sigma — значение кривой шума. |
| thumbds_w thumbds_h | Параметры настройки | Поддерживаются только коэффициенты уменьшения разрешения 4x4, 8x4 и 8x8; по умолчанию 8x4. |
| lo_enable | Параметры настройки | Включение низкочастотного обнаружения движения: 1 — вкл., 0 — выкл.; по умолчанию включено. |
| hi_enable | Параметры настройки | Включение высокочастотного обнаружения движения: 1 — вкл., 0 — выкл.; по умолчанию включено. |
| lo_med_en | Параметры настройки | Переключатель внутреннего низкочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| lo_gsbay_en | Параметры настройки | Переключатель внутреннего низкочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| lo_gslum_en | Параметры настройки | Переключатель внутреннего низкочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| hi_med_en | Параметры настройки | Переключатель внутреннего высокочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| hi_gslum_en | Параметры настройки | Переключатель внутреннего высокочастотного подмодуля: 1 — вкл., 0 — выкл.; по умолчанию включён. |
| global_pk_en | Параметры настройки | Использование глобального PK для временного шумоподавления: 1 — да, 0 — нет; сейчас допустим только 0. |
| global_pksq | Параметры настройки | Квадрат глобального PK; используется только при global_pk_en = 1. По умолчанию 1024, диапазон [0, 268435455]. |
| Имя члена | Тип параметра | Описание |
|---|---|---|
| lo_filter_strength | Параметры настройки | Интенсивность высокочастотного обнаружения движения влияет на hi_sigma и временное шумоподавление. По умолчанию 1, диапазон [0.0, 16.0]. |
| hi_filter_strength | Параметры настройки | Интенсивность высокочастотного обнаружения движения влияет на hi_sigma и временное шумоподавление. По умолчанию 1, диапазон [0.0, 16.0]. |
| soft_threshold_ratio | Параметры настройки | Вес мягкого порога: большее значение сохраняет больше шума. Диапазон [0.0 1.0], по умолчанию 0. |
| hi_wgt_comp | Параметры настройки | Коэффициент компенсации веса наложения, действует только при включённой высокочастотной обработке. По умолчанию 0.16, диапазон [0.0, 1.0]. |
| lo_clipwgt | Параметры настройки | Предел веса наложения изображений; по умолчанию 0.03215, диапазон [0.0, 1.0]. |
| hidif_th | Параметры настройки | Порог высокочастотной разности; по умолчанию 32767, диапазон [0, 65535]. |
| trans_en | Параметры настройки | Экономия полосы пропускания: 0 — выключена, 1 — включена. Можно задать в линейном режиме; для HDR рекомендуется 0. |
| wgt_use_mode | Параметры настройки | Оптимизация при слиянии весов: 0 — выключена, 1 — включена. |
| wgt_mge_mode | Параметры настройки | Оптимизация вычисления высокочастотных весов: 0 — выключена, 1 — включена. |
| hi_guass | Параметры настройки | Данные для высокочастотной SIGMA: 0 — исходные нефильтрованные, 1 — фильтрованные. |
| kl_guass | Параметры настройки | Данные для поиска PK sigma: 0 — исходные нефильтрованные, 1 — фильтрованные. |
| lo_filter_rat0 | Параметры настройки | Коэффициент данных, вычитаемых из разности при вычислении веса низкочастотного обнаружения движения. Диапазон [0.0, 16.0], по умолчанию 1. |
| lo_filter_thed0 | Параметры настройки | Смещение данных, вычитаемое из разности при вычислении веса низкочастотного обнаружения движения. Диапазон [0, 4095], по умолчанию 0. |
| Имя члена | Тип параметра | Описание |
|---|---|---|
| hi_filter_rat0 | Параметры настройки | Коэффициент вычитаемых данных при расчёте первого веса высокочастотного движения; диапазон [0.0, 16.0], по умолчанию 1. |
| hi_filter_thed0 | Параметры настройки | Смещение, вычитаемое из разности при расчёте первого веса высокочастотного обнаружения движения; диапазон [0, 4095], по умолчанию 256. |
| hi_filter_rat1 | Параметры настройки | Коэффициент данных, вычитаемых из разности при расчёте второго веса высокочастотного обнаружения движения; диапазон [0.0, 16.0], по умолчанию 1. |
| hi_filter_thed1 | Параметры настройки | Смещение, вычитаемое из разности при расчёте второго веса высокочастотного обнаружения движения; диапазон [0, 4095], по умолчанию 1024. |
| hi_filter_abs_ctrl | Параметры настройки | Позиция взятия модуля при расчёте высокочастотного веса: 0 — разность→медиана→Гаусс→abs; 1 — разность→медиана→abs→Гаусс. По умолчанию 0. |
| hi_filter_filt_bay | Параметры настройки | Раздельная гауссовская обработка четырёх Bayer-каналов при расчёте высокочастотных весов: 1 — отдельно, 3x3 на канал; 0 — совместно, Гаусс 5x7. По умолчанию 0. |
| hi_filter_filt_avg | Параметры настройки | Фильтрация 5x5 при расчёте высокочастотного веса: 0 — выкл., 1 — вкл.; по умолчанию 0. |
| hi_filter_filt_mode | Параметры настройки | Режим фильтра при расчёте высокочастотных весов; диапазон [0, 4], по умолчанию 4. |
| guass_guide_coeff0 | Параметры настройки | Коэффициенты гауссовского фильтра; диапазон [0, 64], по умолчанию 16,8,16,8. |
9.4.4.16 RK_Bayertnr_Fix_V2_t
【Описание】Определить настройки регистров шумоподавления в ручном режиме.
【Определение】
typedef struct RK_Bayertnr_Fix_V2_s {
// BAY3D_BAY3D_CTRL 0x2c00
uint8_t bay3d_exp_sel;
uint8_t bay3d_soft_st;
uint8_t bay3d_soft_mode;
uint8_t bay3d_bwsaving_en;
uint8_t bay3d_loswitch_protect;
uint8_t bay3d_glbpk_en;
uint8_t bay3d_logaus3_bypass_en;
uint8_t bay3d_logaus5_bypass_en;
uint8_t bay3d_lomed_bypass_en;
uint8_t bay3d_hichnsplit_en;
uint8_t bay3d_hiabs_pssel;
uint8_t bay3d_higaus_bypass_en;
uint8_t bay3d_himed_bypass_en;
uint8_t bay3d_lobypass_en;
uint8_t bay3d_hibypass_en;
uint8_t bay3d_bypass_en;
uint8_t bay3d_en_i;
// BAY3D_BAY3D_KALRATIO 0x2c04
uint16_t bay3d_softwgt;
uint16_t bay3d_hidif_th;
// BAY3D_BAY3D_GLBPK2 0x2c08
uint32_t bay3d_glbpk2;
// BAY3D_BAY3D_WGTLMT 0x2c10
uint16_t bay3d_wgtlmt;
uint16_t bay3d_wgtratio;
// BAY3D_BAY3D_SIG_X0 0x2c14 - 0x2c30
uint16_t bay3d_sig0_x[16];
// BAY3D_BAY3D_SIG0_Y0 0x2c34 - 0x2c50
uint16_t bay3d_sig0_y[16];
// BAY3D_BAY3D_SIG_X0 0x2c54 - 0x2c70
uint16_t bay3d_sig1_x[16];
// BAY3D_BAY3D_SIG1_Y0 0x2c74 - 0x2c90
uint16_t bay3d_sig1_y[16];
// BAY3D_BAY3D_SIG2_Y0 0x2c94 - 0x2cb0
uint16_t bay3d_sig2_y[16];
//BAY3D_BAY3D_LODIF_STAT0 0x2cb4 -0x2cb8
uint64_t ro_sum_lodif;
//BAY3D_BAY3D_LODIF_STAT0 0x2cbc -0x2cc0
uint64_t ro_sum_hidif0;
//BAY3D_BAY3D_MI_ST 0x2CC8
uint8_t sw_bay3dmi_st_linemode;
uint8_t sw_bay3d_mi2cur_linecnt;
} RK_Bayertnr_Fix_V2_t;
【Члены】
| Параметр | Разрядность | Описание параметра |
|---|---|---|
| bay3d_soft_st | 1 | Бит стартового импульса программного режима; для запуска записать 1. |
| bay3d_soft_mode | 1 | Бит включения программного режима: 1 — вкл., 0 — выкл.; по умолчанию 0x0. |
| bay3d_bwsaving_en | 1 | Бит оптимизации полосы пропускания, действует вне HDR: 1 — вкл., 0 — выкл.; по умолчанию 0x0. |
| bay3d_loswitch_protect | 1 | Сейчас не поддерживается. |
| bay3d_glbpk_en | 1 | Использование глобального PK во временном шумоподавлении Bayer: 1 — глобальный, 0 — локальный; по умолчанию 1. |
| bay3d_logaus3_bypass_en | 1 | Гауссовская фильтрация низких частот в последующей области яркости: 1 — не выполнять, 0 — выполнять; по умолчанию 0x0. |
| bay3d_logaus5_bypass_en | 1 | Гауссовская фильтрация низких частот в предварительной области Bayer: 1 — не выполнять, 0 — выполнять; по умолчанию 0x0. |
| bay3d_lomed_bypass_en | 1 | Медианная фильтрация низких частот: 1 — не выполнять, 0 — выполнять; по умолчанию 0x0. |
| bay3d_hichnsplit_en | 1 | Выбор области гауссовской фильтрации высокочастотного обнаружения; бит включается, когда используется только высокочастотное обнаружение движения. 1 — Bayer, 0 — яркость; по умолчанию 0x0. |
| Параметр | Разрядность | Описание параметра |
|---|---|---|
| bay3d_hiabs_pssel | 1 | Брать ли модуль перед гауссовской фильтрацией высокочастотного обнаружения; бит включается при использовании только высокочастотного обнаружения движения. 1 — да, 0 — нет; по умолчанию 0x0. |
| bay3d_higaus_bypass_en | 1 | Гауссовская фильтрация высоких частот: 1 — не выполнять, 0 — выполнять; по умолчанию 0x0. |
| bay3d_himed_bypass_en | 1 | Медианная фильтрация высоких частот: 1 — не выполнять, 0 — выполнять; по умолчанию 0x0. |
| bay3d_lobypass_en | 1 | Переключатель высокочастотного обнаружения движения: 1 — выкл., 0 — вкл.; по умолчанию 0x0. Динамическое изменение не поддерживается, бит всегда остаётся 0. |
| bay3d_hibypass_en | 1 | Переключатель высокочастотного обнаружения движения: 1 — выкл., 0 — вкл.; по умолчанию 0x0. |
| bay3d_bypass_en | 1 | Обход временного шумоподавления Bayer: 1 — включить обход, Bayer3D ничего не делает; 0 — выключить обход. По умолчанию 0. |
| bay3d_en_i | 1 | Временное шумоподавление Bayer: 1 — включить, 0 — выключить; по умолчанию 0. |
| bay3d_softwgt | 10 | Вес мягкого порога: большее значение повышает порог и сохраняет больше шума. Дробная часть 10bit, по умолчанию 0x100. |
| bay3d_hidif_th | 16 | Порог подсчёта высокочастотных разностей; по умолчанию 0xffff. |
| bay3d_glbpk2 | 28 | Квадрат глобального PK, используется только при pk_en = 0; по умолчанию 0x800. |
| bay3d_wgtlmt | 10 | Предел веса наложения изображений; дробная часть 10 разрядов, по умолчанию 0x380. |
| Параметр | Разрядность | Описание параметра |
|---|---|---|
| bay3d_wgtratio | 10 | Коэффициент компенсации веса наложения, действует только при включённой высокочастотной обработке. Дробная часть 10 разрядов, по умолчанию 0x0. |
| bay3d_sig0_x0-15 | 16 | 16 уровней яркости кривой шума; разность двух значений должна быть степенью 2. |
| bay3d_sig0_y0-15 | 14 | 16 уровней sigma кривой шума; параметры получаются калибровкой. |
| bay3d_sig1_x0-15 | 16 | 16 уровней яркости высоко- и низкочастотных кривых шума; разность двух значений должна быть степенью 2. |
| bay3d_sig1_y0-15 | 14 | 16 уровней SIGMA высокочастотной кривой шума; параметры получают калибровкой. |
| bay3d_sig2_y0-15 | 14 | 16 уровней sigma низкочастотной кривой шума; параметры получают калибровкой. |
9.4.4.17 rk_aiq_bayertnr_strength_v2_t
【Описание】Определить структуру настройки интенсивности шумоподавления.
【Определение】
typedef struct rk_aiq_bayertnr_strength_v2_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_bayertnr_strength_v2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| percent | Интенсивность шумоподавления, диапазон 0.0–1.0. |
9.4.4.18 rk_aiq_ynr_attrib_v3_t
【Описание】Определить параметры модуля шумоподавления.
【Определение】
typedef struct rk_aiq_ynr_attrib_v3_s {
rk_aiq_uapi_sync_t sync;
Aynr_OPMode_V3_t eMode;
Aynr_Auto_Attr_V3_t stAuto;
Aynr_Manual_Attr_V3_t stManual;
} rk_aiq_ynr_attrib_v3_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| eMode | Режим модуля шумоподавления YNR |
| stAuto | Параметры автоматического режима YNR |
| stManual | Параметры ручного режима YNR |
9.4.4.19 Aynr_OPMode_V3_t
【Описание】Определить режим модуля шумоподавления.
【Определение】
typedef enum Aynr_OPMode_V3_e {
AYNRV3_OP_MODE_INVALID = 0,
AYNRV3_OP_MODE_AUTO = 1,
AYNRV3_OP_MODE_MANUAL = 2,
AYNRV3_OP_MODE_REG_MANUAL = 3,
AYNRV3_OP_MODE_MAX
} Aynr_OPMode_V3_t;
【Члены】
| Имя члена | Описание |
|---|---|
| AYNRV3_OP_MODE_INVALID | Недопустимый режим YNR в области Y |
| AYNRV3_OP_MODE_AUTO | Автоматический режим YNR в области Y |
| AYNRV3_OP_MODE_MANUAL | Настройки алгоритма ручного режима YNR в области Y |
| AYNRV3_OP_MODE_REG_MANUAL | Настройки регистров ручного режима YNR в области Y |
| AYNRV3_OP_MODE_MAX | Максимум перечисления режимов YNR области Y; недопустимый режим. |
9.4.4.20 Aynr_Auto_Attr_V3_t
【Описание】Определить автоматические атрибуты модуля шумоподавления.
【Определение】
typedef struct Aynr_Auto_Attr_V3_s
{
RK_YNR_Params_V3_t stParams;
RK_YNR_Params_V3_Select_t stSelect;
} Aynr_Auto_Attr_V3_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stParams | Параметры алгоритма YNR для каждого ISO |
| stSelect | Рассчитанные параметры атрибутов YNR |
9.4.4.21 Aynr_Manual_Attr_V3_t
【Описание】Определить ручные атрибуты модуля шумоподавления.
【Определение】
typedef struct Aynr_Manual_Attr_V3_s
{
RK_YNR_Params_V3_Select_t stSelect;
RK_YNR_Fix_V3_t stFix;
} Aynr_Manual_Attr_V3_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stSelect | Значения параметров алгоритма |
| stFix | Значения регистров YNNR |
9.4.4.22 RK_YNR_Params_V3_t
【Описание】Определить параметры алгоритма YNR для каждого ISO в автоматическом режиме.
【Определение】
typedef struct RK_YNR_Params_V3_s
{
int enable;
char version[64];
float iso[RK_YNR_V3_MAX_ISO_NUM];
RK_YNR_Params_V3_Select_t arYnrParamsISO[RK_YNR_V3_MAX_ISO_NUM];
} RK_YNR_Params_V3_t;
【Члены】
| Имя члена | Описание |
|---|---|
| enable | Переключатель YNR |
| Версия | Версия модуля YNR |
| iso | Разным ступеням ISO соответствуют разные параметры настройки; сейчас поддерживаются только 13 ступеней. |
| RK_YNR_Params_V3_Select_t | Параметры алгоритма YYNR |
9.4.4.23 RK_YNR_Params_V3_Select_t
【Описание】Определить атрибуты алгоритма шумоподавления в ручном режиме.
【Определение】
typedef struct RK_YNR_Params_V3_Select_s
{
int enable;
float lci;
float hci;
float sigma[YNR_V3_ISO_CURVE_POINT_NUM];
short lumaPoint[YNR_V3_ISO_CURVE_POINT_NUM];
float lo_lumaPoint[6];
float lo_ratio[6];
float hi_lumaPoint[6];
float hi_ratio[6];
// low frequency
float rnr_strength[17];
int ynr_bft3x3_bypass;
int ynr_lbft5x5_bypass;
int ynr_lgft3x3_bypass;
int ynr_flt1x1_bypass;
int ynr_sft5x5_bypass;
float low_bf1;
float low_bf2;
float low_thred_adj;
float low_peak_supress;
float low_edge_adj_thresh;
float low_lbf_weight_thresh;
float low_center_weight;
float low_dist_adj;
float low_weight;
float low_filt1_strength;
float low_filt2_strength;
float low_bi_weight;
// high frequency
float base_filter_weight1;
float base_filter_weight2;
float base_filter_weight3;
float high_thred_adj;
float high_weight;
float high_direction_weight[8];
float hi_min_adj;
float hi_edge_thed;
//local gain control
float ynr_global_gain_alpha;
float ynr_global_gain;
float ynr_adjust_thresh;
float ynr_adjust_scale;
} RK_YNR_Params_V3_Select_t;
【Поля】
| Имя члена | Тип параметра | Описание |
|---|---|---|
| enable | Параметры настройки | Переключатель YNR: 1 — вкл., 0 — выкл. |
| lci | Калибровочные данные | Коэффициент низкочастотной sigma шума; большее значение увеличивает sigma и усиливает шумоподавление. |
| hci | Калибровочные данные | Коэффициент высокочастотной sigma шума; большее значение увеличивает sigma и усиливает шумоподавление. |
| sigma | Калибровочные данные | Кривая sigma шума. |
| lumaPoint | Калибровочные данные | Разным яркостям пикселей соответствуют точки кривой SIGMA шума; всего 16. |
| rnr_strength | Параметры настройки | Задать разную интенсивность шумоподавления вдоль радиуса r от центра изображения, главным образом для шума LSC. Диапазон [0, 16.0], по умолчанию 1. |
| ynr_bft3x3_bypass | Параметры настройки | Обход внутренних подмодулей: 0 — функция включена, 1 — обход. Обычно все подмодули включены, значения равны 0. |
| ynr_lbft5x5_bypass | Параметры настройки | Обход внутренних подмодулей: 0 — функция включена, 1 — обход. Обычно все подмодули включены, значения равны 0. |
| ynr_lgft3x3_bypass | Параметры настройки | Обход внутренних подмодулей: 0 — функция включена, 1 — обход. Обычно все подмодули включены, значения равны 0. |
| ynr_flt1x1_bypass | Параметры настройки | Обход внутренних подмодулей: 0 — функция включена, 1 — обход. Обычно все подмодули включены, значения равны 0. |
| Имя члена | Тип параметра | Описание |
|---|---|---|
| ynr_sft5x5_bypass | Параметры настройки | Обход внутренних подмодулей: 0 — функция включена, 1 — обход. Обычно все подмодули включены, значения равны 0. |
| low_bf1 | Параметры настройки | Интенсивность двустороннего фильтра 3x3 исходного изображения: больше — сильнее подавление. Диапазон [0.01, 32], по умолчанию 1. |
| low_bf2 | Параметры настройки | Интенсивность двустороннего фильтра 5x5 уменьшенного предыдущего кадра: больше — сильнее подавление. Диапазон [0.01, 32], по умолчанию 1. |
| low_thred_adj | Параметры настройки | Чем выше низкочастотный мягкий порог, тем сильнее подавление низкочастотного шума. Диапазон [0, 31], по умолчанию 0.5. |
| low_peak_supress | Параметры настройки | Управление удалением изолированного шума: меньшее значение усиливает подавление. Диапазон [0, 1], по умолчанию 0.5. |
| low_edge_adj_thresh | Параметры настройки | Порог коэффициента коррекции обнаружения границ уменьшенного изображения, ограничивающий его максимум. Меньше — сильнее подавление и размытие. Целое [0, 1023], по умолчанию 7. |
| low_lbf_weight_thresh | Параметры настройки | Ограничение веса двустороннего фильтра 5x5: большее значение ослабляет низкочастотное подавление. Диапазон [0.0, 1.0], по умолчанию 0.25. |
| low_center_weight | Параметры настройки | Вес центральной точки двустороннего фильтра 5x5: меньше — сильнее подавление. Диапазон [0,1], по умолчанию 0.5. |
| low_dist_adj | Параметры настройки | Коэффициент коррекции пространственного веса двустороннего фильтра: меньше — сильнее подавление. Диапазон [0, 127.0], по умолчанию 8.0. |
| low_weight | Параметры настройки | Вес результата низкочастотного подавления: больше — сильнее подавление. Диапазон [0, 1], по умолчанию 0.5. |
| Имя члена | Тип параметра | Описание |
|---|---|---|
| low_filt1_strength | Параметры настройки | Вес ядра гауссовского фильтра исходного изображения; диапазон [0,1.0], по умолчанию 0.7. |
| low_filt2_strength | Параметры настройки | Вес ядра гауссовского фильтра результата двусторонней фильтрации; диапазон [0,1.0], по умолчанию 0.85. |
| low_bi_weight | Параметры настройки | Вес первого двустороннего фильтра в обработке мягкого порога: больше — сильнее подавление. Диапазон [0, 1], по умолчанию 0.3. |
| base_filter_weight1 | Параметр настройки | Коэффициенты направленного фильтра; обычно почти не требуют настройки. |
| high_thred_adj | Параметр настройки | Большее значение усиливает высокочастотное шумоподавление. Диапазон 0–31.0, по умолчанию 1.0. |
| high_weight | Параметр настройки | Вес высокочастотного подавления означает долю сохраняемых высоких частот: меньше — сильнее подавление. Диапазон 0–1, по умолчанию 0.78. |
| high_direction_weight | Параметр настройки | Чем больше значение для направления, тем сильнее подавление вдоль него. |
| hi_min_adj | Параметр настройки | Доля вычитания минимальной дисперсии из всех дисперсий: большее значение делает границы резче. Диапазон 0.0–1.0, по умолчанию 0.9. |
| hi_edge_thed | Параметр настройки | Чем меньше порог, тем сильнее высокочастотное шумоподавление. Целое значение в диапазоне 0, 255; по умолчанию 100. |
| ynr_global_gain_alpha | Параметры настройки | Настройка силы интерполяции локального и глобального режимов YNR. Обычно оставляют значение по умолчанию без настройки и используют локальное усиление. Диапазон [0.0 1.0], по умолчанию 0. |
| ynr_global_gain | Параметры настройки | Настройка силы интерполяции локального и глобального режимов YNR. Обычно оставляют значение по умолчанию без настройки и используют локальное усиление. Диапазон усиления [0.0 64.0], по умолчанию 1. |
| Имя члена | Тип параметра | Описание |
|---|---|---|
| ynr_adjust_thresh | Параметры настройки | Управляет шумоподавлением при шуме выше порога ynr_adjust_thresh. В движущихся областях шум сильнее; подходящий порог усиливает там YNR. Диапазон [0.0, 1.0], по умолчанию 1. |
| ynr_adjust_scale | Параметры настройки | Управляет шумоподавлением при шуме выше порога ynr_adjust_thresh. В движущихся областях шум сильнее; подходящий порог усиливает там YNR. Диапазон [0, 16.0], по умолчанию 1. |
| lo_lumaPoint / lo_ratio | Параметры настройки | Точная настройка низкочастотной Sigma для разной яркости пикселей. |
| hi_lumaPoint / hi_ratio | Параметры настройки | Точная настройка высокочастотной Sigma для разной яркости пикселей. |
9.4.4.24 RK_YNR_Fix_V3_t
【Описание】Определить настройки регистров шумоподавления в ручном режиме.
【Определение】
typedef struct RK_YNR_Fix_V3_s {
// YNR_2700_GLOBAL_CTRL (0x0000)
uint8_t ynr_rnr_en;
uint8_t ynr_gate_dis;
uint8_t ynr_thumb_mix_cur_en;
uint8_t ynr_global_gain_alpha;
uint16_t ynr_global_gain;
uint8_t ynr_flt1x1_bypass_sel;
uint8_t ynr_sft5x5_bypass;
uint8_t ynr_flt1x1_bypass;
uint8_t ynr_lgft3x3_bypass;
uint8_t ynr_lbft5x5_bypass;
uint8_t ynr_bft3x3_bypass;
uint8_t ynr_en;
// YNR_2700_RNR_MAX_R (0x0004)
uint8_t ynr_local_gainscale;
uint16_t ynr_rnr_max_r;
// YNR_2700_RNR_MAX_R (0x0008)
uint16_t ynr_rnr_center_coorv;
uint16_t ynr_rnr_center_coorh;
// YNR_2700_RNR_MAX_R (0x000c)
uint8_t ynr_localgain_adj;
uint16_t ynr_localgain_adj_thresh;
// YNR_2700_LOWNR_CTRL0 (0x0010)
uint16_t ynr_low_bf_inv[2];
// YNR_2700_LOWNR_CTRL1 (0x0014)
uint8_t ynr_low_peak_supress;
uint16_t ynr_low_thred_adj;
// YNR_2700_LOWNR_CTRL2 (0x0018)
uint16_t ynr_low_dist_adj;
uint16_t ynr_low_edge_adj_thresh;
// YNR_2700_LOWNR_CTRL3 (0x001c)
uint8_t ynr_low_bi_weight;
uint8_t ynr_low_weight;
uint16_t ynr_low_center_weight;
// YNR_2700_HIGHNR_CTRL0 (0x0020)
uint8_t ynr_hi_min_adj;
uint16_t ynr_high_thred_adj;
// YNR_2700_HIGHNR_CTRL1 (0x0024)
uint8_t ynr_high_retain_weight;
uint8_t ynr_hi_edge_thed;
// YNR_2700_HIGHNR_BASE_FILTER_WEIGHT (0x0028)
uint8_t ynr_base_filter_weight[3];
// YNR_2700_HIGHNR_BASE_FILTER_WEIGHT (0x002c)
uint32_t ynr_frame_full_size;
uint16_t ynr_lbf_weight_thres;
// YNR_2700_GAUSS1_COEFF (0x0030)
uint16_t ynr_low_gauss1_coeff[3];
// YNR_2700_GAUSS2_COEFF (0x0034)
uint16_t ynr_low_gauss2_coeff[3];
// YNR_2700_DIRECTION_W_0_3 (0x0038 - 0x003c)
uint8_t ynr_direction_weight[8];
// YNR_2700_SGM_DX_0_1 (0x0040 - 0x0060)
uint16_t ynr_luma_points_x[17];
// YNR_2700_LSGM_Y_0_1 (0x0070- 0x0090)
uint16_t ynr_lsgm_y[17];
// YNR_2700_HSGM_Y_0_1 (0x00a0- 0x00c0)
uint16_t ynr_hsgm_y[17];
// YNR_2700_RNR_STRENGTH03 (0x00d0- 0x00e0)
uint16_t ynr_rnr_strength[17];
} RK_YNR_Fix_V3_t;
【Поля】
| Имя члена | Разрядность (целая часть.дробная часть) | Описание |
|---|---|---|
| ynr_low_bf_inv[0] | 5.9 | Управляет силой шумоподавления. В регистре задается обратная величина, поэтому меньшее значение усиливает подавление. 512 соответствует силе 1x, 256 — 2x. Диапазон [1, 16383]. |
| ynr_low_bf[1] | 5.9 | Управляет силой шумоподавления. Используется обратная величина настроенного значения регистра, поэтому меньшее значение усиливает подавление. 512 соответствует 1x, 256 — 2x. |
| ynr_low_thred_adj | 5.6 | Сила корректировки низкочастотного мягкого порога: большее значение усиливает низкочастотное шумоподавление. Диапазон [0, 2047]. |
| ynr_low_peak_supress | 1.7 | Сила удаления крупных изолированных шумовых выбросов: чем больше значение, тем сильнее удаление. Диапазон [0, 128]. |
| ynr_low_edge_adj_thresh | 11.0 | Порог коэффициента корректировки обнаружения границ на уменьшенном изображении, ограничивающий его максимальное значение. Диапазон [1, 1024]. |
| ynr_low_center_weight | 1.10 | Вес центральной точки двустороннего фильтра 5x5: меньшее значение усиливает шумоподавление. Диапазон [1, 1024]. |
| sw_ynr_lbf_weight_thres | 10.0 | Вес, ограничивающий значение двусторонней фильтрации 5x5: большее значение ослабляет низкочастотное шумоподавление. Диапазон [0, 1023]. |
| ynr_low_dist_adj | 7.2 | Коэффициент корректировки весов расстояния двустороннего фильтра. Диапазон [1, 511]. |
| ynr_low_weight | 1.7 | Вес результата низкочастотного шумоподавления: большее значение усиливает подавление. Диапазон [0, 128]. |
| ynr_low_gauss1_coeff[3] | 1.8 | Вес ядра гауссовой фильтрации исходного изображения. Диапазон [0, 256]. |
| ynr_low_gauss2_coeff[3] | 1.8 | Вес гауссова ядра при фильтрации результата двустороннего фильтра. Диапазон [0, 256]. |
| Имя члена | Разрядность (целая часть.дробная часть) | Описание |
|---|---|---|
| ynr_low_bi_weight | 1.7 | Вес первого двустороннего фильтра при обработке мягкого порога: большее значение усиливает подавление. Диапазон [0, 128]. |
| ynr_base_filter_weight[3] | 1.6 | Коэффициент направленного фильтра. Диапазон [0, 64]. |
| ynr_high_thred_adj | 5.6 | Чем больше значение, тем сильнее высокочастотное шумоподавление. Диапазон [0, 2047]. |
| ynr_high_retain_weight | 1.7 | Вес высокочастотного шумоподавления. Значение задает долю сохраняемой высокочастотной составляющей, поэтому его увеличение ослабляет подавление. Диапазон [0, 128]. |
| ynr_direction_weight[8] | 1.4 | Чем больше значение для направления, тем сильнее шумоподавление вдоль него. Диапазон [0,16]. |
| ynr_hi_min_adj | 0.6 | Отношение всех значений дисперсии за вычетом минимальной дисперсии: большее значение делает границы резче. Диапазон [6,60]. |
| ynr_hi_edge_thed | 10.0 | Чем меньше порог, тем сильнее высокочастотное шумоподавление. Диапазон [0,1023]. |
| ynr_rnr_max_r | 14.0 | Корректирует радиальную силу шумоподавления и хранит 1/((rows/2)^2+(cols/2)^2): первые 9 бит — мантисса M, последние 5 бит — показатель E. Диапазон [1, 16383]. |
| ynr_rnr_strength[17] | 4.4 | Управляет радиальным шумоподавлением: 17 точек образуют 16 сегментов, задающих силу от центра к четырем углам изображения. Диапазон [0, 15]. |
| ynr_global_gain | 6.4 | Внешнее глобальное усиление управляет общей силой YNR: чем больше значение, тем сильнее шумоподавление. Диапазон [0, 1023]. |
| Имя члена | Разрядность (целая часть.дробная часть) | Описание |
|---|---|---|
| ynr_global_gain_alpha | 1.3 | Задает соотношение усиления от модуля gain и внешнего усиления: большее значение увеличивает долю внешнего глобального усиления. Диапазон [0, 8]. |
| ynr_bft3x3_bypass | 1 | При 1 отключает двустороннюю фильтрацию 3x3. Значение 0 или 1. |
| ynr_lbft5x5_bypass | 1 | При 1 отключает двустороннюю фильтрацию 5x5. Значение 0 или 1. |
| ynr_lgft3x3_bypass | 1 | При 1 отключает гауссову фильтрацию 3x3. |
| ynr_flt1x1_bypass | 1 | При 1 отключает низкочастотную обработку мягкого порога. Значение 0 или 1. |
| ynr_sft5x5_bypass | 1 | При 5 отключает высокочастотное подавление 1x5; диапазон 0 или 1 (так в оригинале: условие противоречит диапазону). |
9.4.4.25 rk_aiq_ynr_strength_v3_t
【Описание】Определить структуру настройки интенсивности шумоподавления.
【Определение】
typedef struct rk_aiq_ynr_strength_v3_s {
rk_aiq_uapi_sync_t sync;
float percent;
bool strength_enable;
} rk_aiq_ynr_strength_v3_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| percent | Интенсивность шумоподавления, диапазон 0.0–1.0. |
9.4.4.26 rk_aiq_cnr_attrib_v2_t
【Описание】Определить параметры модуля шумоподавления.
【Определение】
typedef struct rk_aiq_cnr_attrib_v2_s {
rk_aiq_uapi_sync_t sync;
AcnrV2_OPMode_t eMode;
Acnr_Auto_Attr_V2_t stAuto;
Acnr_Manual_Attr_V2_t stManual;
} rk_aiq_cnr_attrib_v2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| eMode | Режим модуля шумоподавления CNR |
| stAuto | Параметры автоматического режима CNR |
| stManual | Параметры ручного режима CNR |
9.4.4.27 AcnrV2_OPMode_t
【Описание】 Определяет свойства режима модуля шумоподавления.
【Определение】
typedef enum AcnrV2_OPMode_e {
ACNRV2_OP_MODE_INVALID = 0,
ACNRV2_OP_MODE_AUTO = 1,
ACNRV2_OP_MODE_MANUAL = 2,
ACNRV2_OP_MODE_REG_MANUAL = 3,
ACNRV2_OP_MODE_MAX
} AcnrV2_OPMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ACNRV2_OP_MODE_INVALID | Недопустимый режим CNR в области UV |
| ACNRV2_OP_MODE_AUTO | Автоматический режим CNR в области UV |
| ACNRV2_OP_MODE_MANUAL | Настройки алгоритма ручного режима CNR в области UV |
| ACNRV2_OP_MODE_REG_MANUAL | Настройки регистров ручного режима CNR в области UV |
| ACNRV2_OP_MODE_MAX | Максимальное значение режима CNR в области UV; недопустимый режим |
9.4.4.28 Acnr_Auto_Attr_V2_t
【Описание】Определить автоматические атрибуты модуля шумоподавления.
【Определение】
typedef struct Acnr_Auto_Attr_V2_s
{
all ISO params and select param
RK_CNR_Params_V2_t stParams;
RK_CNR_Params_V2_Select_t stSelect;
} Acnr_Auto_Attr_V2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stParams | Параметры свойств алгоритма CNR для каждого ISO |
| stSelect | Расчетные параметры свойств модуля CNR |
9.4.4.29 Acnr_Manual_Attr_V2_t
【Описание】Определить ручные атрибуты модуля шумоподавления.
【Определение】
typedef struct Acnr_Manual_Attr_V2_s
{
RK_CNR_Params_V2_Select_t stSelect;
RK_CNR_Fix_V2_t stFix;
} Acnr_Manual_Attr_V2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stSelect | Значение параметра алгоритма |
| stSelect | Значение регистра |
9.4.4.30 RK_CNR_Params_V2_t
【Описание】Определить автоматический режим шумоподавления и параметры алгоритма для каждого ISO.
【Определение】
typedef struct RK_CNR_Params_V2_s
{
int enable;
float iso[RK_CNR_V2_MAX_ISO_NUM];
int hf_bypass[RK_CNR_V2_MAX_ISO_NUM];
int lf_bypass[RK_CNR_V2_MAX_ISO_NUM];
// gain
float global_gain[RK_CNR_V2_MAX_ISO_NUM];
float global_gain_alpha[RK_CNR_V2_MAX_ISO_NUM];
float local_gain_scale[RK_CNR_V2_MAX_ISO_NUM];
// strength adj by gain
int gain_adj_strength_ratio[RK_CNR_V2_MAX_ISO_NUM]
[RKCNR_V2_SGM_ADJ_TABLE_LEN];
//
float color_sat_adj[RK_CNR_V2_MAX_ISO_NUM];
float color_sat_adj_alpha[RK_CNR_V2_MAX_ISO_NUM];
// step1
// median filter
float hf_spikes_reducion_strength[RK_CNR_V2_MAX_ISO_NUM];
// bilateral filter
float hf_denoise_strength[RK_CNR_V2_MAX_ISO_NUM];
float hf_color_sat[RK_CNR_V2_MAX_ISO_NUM];
float hf_denoise_alpha[RK_CNR_V2_MAX_ISO_NUM];
int hf_bf_wgt_clip[RK_CNR_V2_MAX_ISO_NUM];
// step2
// median filter
float thumb_spikes_reducion_strength[RK_CNR_V2_MAX_ISO_NUM];
// bilateral filter
float thumb_denoise_strength[RK_CNR_V2_MAX_ISO_NUM];
float thumb_color_sat[RK_CNR_V2_MAX_ISO_NUM];
// step3
// bilateral filter
float lf_denoise_strength[RK_CNR_V2_MAX_ISO_NUM];
float lf_color_sat[RK_CNR_V2_MAX_ISO_NUM];
float lf_denoise_alpha[RK_CNR_V2_MAX_ISO_NUM];
// bilateral filter kernels
float kernel_5x5[5];
} RK_CNR_Params_V2_t;
【Члены】
| Имя параметра | Тип параметра | Описание параметра |
|---|---|---|
| Enable | Параметры настройки | Переключатель модуля: 1 — включён, 0 — выключен. |
| iso | Параметры настройки | Разным ступеням ISO соответствуют разные параметры настройки. Сейчас поддерживаются только 13 ступеней. |
| hf_bypass | Параметры настройки | Обход высокочастотного шумоподавления. 0: без обхода; 1: обход. |
| lf_bypass | Параметры настройки | Обход низкочастотного шумоподавления. 0: без обхода; 1: обход. |
| global_gain | Параметры настройки | Сила интерполяции локального и глобального режимов CNR. Обычно оставляют значение по умолчанию и используют локальное усиление без настройки. Диапазон от 0.0 до 64.0, по умолчанию 1. |
| global_gain_alpha | Параметры настройки | Сила интерполяции локального и глобального режимов CNR. Обычно оставляют значение по умолчанию и используют локальное усиление без настройки. Диапазон 0.0 1.0, по умолчанию 0. |
| global_gain_scale | Параметры настройки | Усиливает шумоподавление CNR; обычно используют значение по умолчанию, корректировать не рекомендуется. Диапазон 0, 128; по умолчанию 1. |
| gain_adj_strength_ratio | Параметры настройки | Корректирует фильтрацию по локальному усилению: меньшее значение усиливает подавление. Диапазон [1, 255], по умолчанию 255. |
| color_sat_adj | Параметры настройки | Отношение UV двустороннего фильтра с корректировкой по градиенту, 1~255. Меньшее значение улучшает удаление цветового шума. Диапазон [1, 255], по умолчанию 40. |
| color_sat_adj_alpha | Параметры настройки | Коэффициент корректировки color_sat_adj: большее значение улучшает удаление цветового шума. Диапазон 0, 1.0; по умолчанию 0.8. |
| hf_spikes_reducion_strength | Параметры настройки | Сила высокочастотной медианной фильтрации: чем больше значение, тем сильнее фильтрация. Диапазон 0, 1.0; по умолчанию 0.5. |
| Имя параметра | Тип параметра | Описание параметра |
|---|---|---|
| hf_denoise_strength | Параметры настройки | Сила высокочастотной двусторонней фильтрации: большее значение улучшает удаление цветового шума. Диапазон [1, 1023], по умолчанию 10. |
| hf_color_sat | Параметры настройки | Масштаб UV высокочастотного двустороннего фильтра: меньшее значение сильнее снижает насыщенность. Диапазон 0.0, 7.9; по умолчанию 1.5. |
| hf_denoise_alpha | Параметры настройки | Вес центральной точки высокочастотного двустороннего фильтра. Диапазон 0.0, 1.0; по умолчанию 0. |
| hf_bf_wgt_clip | Параметры настройки | Минимальное высокочастотное шумоподавление: большее значение усиливает подавление. Диапазон 0, 255; по умолчанию 0. |
| thumb_spikes_reducion_strength | Параметры настройки | Сила медианной фильтрации миниатюры: большее значение усиливает фильтрацию. Диапазон 0.0, 1.0; по умолчанию 0.5. |
| thumb_denoise_strength | Параметры настройки | Сила двусторонней фильтрации миниатюры: большее значение улучшает удаление цветового шума. Диапазон [1, 1023], по умолчанию 8. |
| thumb_color_sat | Параметры настройки | Масштаб UV двусторонней фильтрации миниатюры, сильнее снижает насыщенность (направление изменения в оригинале не указано). Диапазон 0.0, 7.9; по умолчанию 4. |
| lf_denoise_strength | Параметры настройки | Сила низкочастотной двусторонней фильтрации: большее значение улучшает удаление цветового шума. Диапазон [1, 1023], по умолчанию 8. |
| lf_color_sat | Параметры настройки | Коэффициент UV низкочастотной двусторонней фильтрации: меньшее значение сильнее снижает насыщенность. Диапазон 0.0, 7.9; по умолчанию 4. |
| lf_denoise_alpha | Параметры настройки | Вес центральной точки низкочастотного двустороннего фильтра. Диапазон 0.0, 1.0; по умолчанию 0.5. |
| kernel_5x5 | Параметры настройки | Ядро двустороннего фильтра 5x5. |
9.4.4.31 RK_CNR_Params_V2_Select_t
【Описание】Определить атрибуты алгоритма шумоподавления в ручном режиме.
【Определение】
typedef struct RK_CNR_Params_V2_Select_s
{
int enable;
// bypass
int hf_bypass;
int lf_bypass;
// gain
// gain
float global_gain;
float global_gain_alpha;
float local_gain_scale;
// strength adj by gain
int gain_adj_strength_ratio[RKCNR_V2_SGM_ADJ_TABLE_LEN];
//
float color_sat_adj;
float color_sat_adj_alpha;
// step1
// median filter
float hf_spikes_reducion_strength;
// bilateral filter
float hf_denoise_strength;
float hf_color_sat;
float hf_denoise_alpha;
int hf_bf_wgt_clip;
// step2
// median filter
float thumb_spikes_reducion_strength;
// bilateral filter
float thumb_denoise_strength;
float thumb_color_sat;
// step3
// bilateral filter
float lf_denoise_strength;
float lf_color_sat;
float lf_denoise_alpha;
// bilateral filter kernels
float kernel_5x5[5];
} RK_CNR_Params_V2_Select_t;
【Члены】
| Имя параметра | Тип параметра | Описание параметра |
|---|---|---|
| Enable | Параметры настройки | Переключатель модуля: 1 — включён, 0 — выключен. |
| iso | Параметры настройки | Разным ступеням ISO соответствуют разные параметры настройки. Сейчас поддерживаются только 13 ступеней. |
| hf_bypass | Параметры настройки | Обход высокочастотного шумоподавления. 0: без обхода; 1: обход. |
| lf_bypass | Параметры настройки | Обход низкочастотного шумоподавления. 0: без обхода; 1: обход. |
| global_gain | Параметры настройки | Сила интерполяции локального и глобального режимов CNR. Обычно оставляют значение по умолчанию и используют локальное усиление без настройки. Диапазон от 0.0 до 64.0, по умолчанию 1. |
| global_gain_alpha | Параметры настройки | Сила интерполяции локального и глобального режимов CNR. Обычно оставляют значение по умолчанию и используют локальное усиление без настройки. Диапазон 0.0 1.0, по умолчанию 0. |
| global_gain_scale | Параметры настройки | Усиливает шумоподавление CNR; обычно используют значение по умолчанию, корректировать не рекомендуется. Диапазон 0, 128; по умолчанию 1. |
| gain_adj_strength_ratio | Параметры настройки | Корректирует фильтрацию по локальному усилению: меньшее значение усиливает подавление. Диапазон [1, 255], по умолчанию 255. |
| color_sat_adj | Параметры настройки | Отношение UV двустороннего фильтра с корректировкой по градиенту, 1~255. Меньшее значение улучшает удаление цветового шума. Диапазон [1, 255], по умолчанию 40. |
| color_sat_adj_alpha | Параметры настройки | Коэффициент корректировки color_sat_adj: большее значение улучшает удаление цветового шума. Диапазон 0, 1.0; по умолчанию 0.8. |
| hf_spikes_reducion_strength | Параметры настройки | Сила высокочастотной медианной фильтрации: чем больше значение, тем сильнее фильтрация. Диапазон 0, 1.0; по умолчанию 0.5. |
| Имя параметра | Тип параметра | Описание параметра |
|---|---|---|
| hf_denoise_strength | Параметры настройки | Сила высокочастотной двусторонней фильтрации: большее значение улучшает удаление цветового шума. Диапазон [1, 1023], по умолчанию 10. |
| hf_color_sat | Параметры настройки | Масштаб UV высокочастотного двустороннего фильтра: меньшее значение сильнее снижает насыщенность. Диапазон 0.0, 7.9; по умолчанию 1.5. |
| hf_denoise_alpha | Параметры настройки | Вес центральной точки высокочастотного двустороннего фильтра. Диапазон 0.0, 1.0; по умолчанию 0. |
| hf_bf_wgt_clip | Параметры настройки | Минимальное высокочастотное шумоподавление: большее значение усиливает подавление. Диапазон 0, 255; по умолчанию 0. |
| thumb_spikes_reducion_strength | Параметры настройки | Сила медианной фильтрации миниатюры: большее значение усиливает фильтрацию. Диапазон 0.0, 1.0; по умолчанию 0.5. |
| thumb_denoise_strength | Параметры настройки | Сила двусторонней фильтрации миниатюры: большее значение улучшает удаление цветового шума. Диапазон [1, 1023], по умолчанию 8. |
| thumb_color_sat | Параметры настройки | Масштаб UV двусторонней фильтрации миниатюры, сильнее снижает насыщенность (направление изменения в оригинале не указано). Диапазон 0.0, 7.9; по умолчанию 4. |
| lf_denoise_strength | Параметры настройки | Сила низкочастотной двусторонней фильтрации: большее значение улучшает удаление цветового шума. Диапазон [1, 1023], по умолчанию 8. |
| lf_color_sat | Параметры настройки | Коэффициент UV низкочастотной двусторонней фильтрации: меньшее значение сильнее снижает насыщенность. Диапазон 0.0, 7.9; по умолчанию 4. |
| lf_denoise_alpha | Параметры настройки | Вес центральной точки низкочастотного двустороннего фильтра. Диапазон 0.0, 1.0; по умолчанию 0.5. |
| kernel_5x5 | Параметры настройки | Ядро двустороннего фильтра 5x5. |
9.4.4.32 RK_CNR_Fix_V2_t
【Описание】Определить настройки регистров шумоподавления в ручном режиме.
【Определение】
typedef struct RK_CNR_Fix_V2_s {
//ISP_CNR_2800_CTRL
uint8_t cnr_thumb_mix_cur_en;
uint8_t cnr_lq_bila_bypass;
uint8_t cnr_hq_bila_bypass;
uint8_t cnr_exgain_bypass;
uint8_t cnr_en_i;
// ISP_CNR_2800_EXGAIN
uint8_t cnr_global_gain_alpha;
uint16_t cnr_global_gain;
// ISP_CNR_2800_GAIN_PARA
uint8_t cnr_gain_iso;
uint8_t cnr_gain_offset;
uint8_t cnr_gain_1sigma;
// ISP_CNR_2800_GAIN_UV_PARA
uint8_t cnr_gain_uvgain1;
uint8_t cnr_gain_uvgain0;
// ISP_CNR_2800_LMED3
uint8_t cnr_lmed3_alpha;
// ISP_CNR_2800_LBF5_GAIN
uint8_t cnr_lbf5_gain_y;
uint8_t cnr_lbf5_gain_c;
// ISP_CNR_2800_LBF5_WEITD0_4
uint8_t cnr_lbf5_weit_d[5];
// ISP_CNR_2800_HMED3
uint8_t cnr_hmed3_alpha;
// ISP_CNR_2800_HBF5
uint8_t cnr_hbf5_weit_src;
uint8_t cnr_hbf5_min_wgt;
uint16_t cnr_hbf5_sigma;
// ISP_CNR_2800_LBF3
uint8_t cnr_lbf5_weit_src;
uint16_t cnr_lbf3_sigma;
//ISP_CNR_2800_SIGMA0-SIGMA3
uint8_t cnr_sigma_y[13];
} RK_CNR_Fix_V2_t;
【Поля】
| Имя параметра | Описание параметра |
|---|---|
| cnr_thumb_mix_cur_en | Разрешение смешивания миниатюры текущего кадра с предыдущим изображением: 1’b1: смешивание включено; 1’b0: выключено. Это считываемые регистры отображения. |
| cnr_lq_bila_bypass | Разрешение обхода низкочастотного двустороннего фильтра 3x3: 1’b1: обход включен, out_data равен in_data этого фильтра; 1’b0: обход выключен. Это считываемые регистры отображения. |
| cnr_hq_bila_bypass | Сигнал обхода высокочастотного двустороннего фильтра 5x5: 1: обход включен, out_data равен in_data; 0: обход выключен. Это считываемые регистры отображения. |
| cnr_exgain_bypass | sw_cnr_exgain_bypass — разрешение обхода внешнего усиления. 1: обход включен, внешнее усиление фиксировано на sw_cnr_egain_mux; 0: обход выключен, используется внешнее усиление. Текущая версия не поддерживает отключение обхода. Это считываемые регистры отображения. |
| cnr_en_i | Разрешение CNR: 1: включено; 0: выключено. |
| cnr_global_gain | Сила интерполяции локального и глобального режимов CNR. Обычно оставляют значение по умолчанию и используют локальное усиление без настройки. Диапазон от 0.0 до 64.0, по умолчанию 1. |
| cnr_global_gain_alpha | Сила интерполяции локального и глобального режимов CNR. Обычно оставляют значение по умолчанию и используют локальное усиление без настройки. Диапазон 0.0 1.0, по умолчанию 0. |
| cnr_gain_iso | Усиливает внешнее усиление, диапазон 0~128. |
| cnr_gain_offset | Смещение усиления ФНЧ при калибровке усиления, диапазон 0~16. |
| cnr_gain_1sigma | Усиливает выходные данные ФВЧ при калибровке усиления. |
| cnr_gain_uvgain1 | Параметр uvgain 1 |
| cnr_gain_uvgain0 | Параметр uvgain 0 |
| cnr_lmed3_alpha | Вес in_data в низкочастотном медианном фильтре, диапазон 0~16. |
| cnr_lbf5_gain_y; | Усиление Y двустороннего фильтра lbf5x5. |
| cnr_lbf5_gain_c; | Усиление UV двустороннего фильтра lbf5x5. |
| cnr_lbf5_weit_d[0] | Пространственный вес pix12, диапазон 1~128. |
| Имя параметра | Описание параметра |
|---|---|
| cnr_lbf5_weit_d[1] | Пространственный вес pix7,11,13,17, диапазон 0~128. |
| cnr_lbf5_weit_d[2] | Пространственный вес pix6,8,16,18, диапазон 0~128. |
| cnr_lbf5_weit_d[3] | Пространственный вес при расстоянии 4 или 5, диапазон 0~128. |
| cnr_lbf5_weit_d[4] | Пространственный вес pix0,4,20,24, диапазон 0~128. |
| cnr_hmed3_alpha | Вес in_data в высокочастотном медианном фильтре, диапазон 0~16. |
| cnr_hbf5_weit_src | Вес in_data фильтра hbf5x5, диапазон 0~128. |
| cnr_hbf5_min_wgt | Нижний предел weit_r фильтра hbf5x5. |
| cnr_hbf5_sigma | Значение Sigma фильтра hbf5x5. |
| cnr_lbf5_weit_src | Вес in_data фильтра lbf3x3, диапазон 0~128. |
| cnr_lbf3_sigma | Значение sigma фильтра lbf3x3. |
9.4.4.33 rk_aiq_cnr_strength_v2_t
【Описание】Определить структуру настройки интенсивности шумоподавления.
【Определение】
typedef struct rk_aiq_cnr_strength_v2_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_cnr_strength_v2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| percent | Интенсивность шумоподавления, диапазон 0.0–1.0. |
9.5 BLC
9.5.1 Описание функций
9.5.2 Справочник функционального API
9.5.2.1 rk_aiq_user_api2_ablc_SetAttrib
【Описание】 Устанавливает свойства параметров BLC.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ablc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_blc_attrib_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства параметров BLC | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_ablc.h, RkAiqHandleInt.h, rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
9.5.2.2 rk_aiq_user_api2_ablc_GetAttrib
【Описание】 Получает свойства параметров BLC.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_ablc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_blc_attrib_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства параметров BLC | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_ablc.h, RkAiqHandleInt.h, rk_aiq_user_api2_sysctl.h
Библиотека: librkaiq.so
9.5.3 Типы данных модульного API
9.5.3.1 rk_aiq_blc_attrib_t
【Описание】 Параметры модуля BLC.
【Определение】
typedef struct rk_aiq_blc_attrib_s {
rk_aiq_uapi_sync_t sync;
AblcOPMode_t eMode;
AblcParams_t stBlc0Auto;
AblcParams_t stBlc1Auto;
AblcManualAttr_t stBlc0Manual;
AblcManualAttr_t stBlc1Manual;
} rk_aiq_blc_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| eMode | Режим модуля BLC |
| stBlc0Auto | Параметр автоматического режима blc0 |
| stBlc0Manual | Параметр ручного режима blc0 |
| stBlc1Auto | Параметр автоматического режима blc1 |
| stBlc1Manual | Параметр ручного режима blc1 |
9.5.3.2 AblcOPMode_t
【Описание】 Определяет свойства режима модуля шумоподавления.
【Определение】
typedef enum AblcOPMode_e {
ABLC_OP_MODE_OFF = 0,
ABLC_OP_MODE_AUTO = 1,
ABLC_OP_MODE_MANUAL = 2,
ABLC_OP_MODE_MAX
} AblcOPMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ABLC_OP_MODE_OFF | Недопустимый режим BLC |
| ABLC_OP_MODE_AUTO | Автоматический режим BLC |
| ABLC_OP_MODE_MANUAL | Настройки алгоритма ручного режима BLC |
| ABLC_OP_MODE_MAX | Максимальное значение режима BLC; недопустимый режим. |
9.5.3.3 AblcParams_t
【Описание】 Параметры автоматического режима BLC.
【Определение】
typedef struct AblcParams_s {
bool enable;
int len;
float* iso;
float* blc_r;
float* blc_gr;
float* blc_gb;
float* blc_b;
} AblcParams_t;
【Члены】
| Имя члена | Описание |
|---|---|
| enable | Переключатель модуля: 1: включен; 0: выключен. |
| len | Длина массива, соответствующая iso |
| iso | Ступень ISO |
| blc_r | Значения BLC для разных ISO; указатель массива. |
| blc_gr | Значения BLC для разных ISO; указатель массива. |
| blc_gb | Значения BLC для разных ISO; указатель массива. |
| blc_b | Значения BLC для разных ISO; указатель массива. |
9.5.3.4 AblcManualAttr_t
【Описание】 Параметры ручного режима BLC.
【Определение】
typedef struct AblcSelect_s {
bool enable;
short int blc_r;
short int blc_gr;
short int blc_gb;
short int blc_b;
} AblcSelect_t;
typedef AblcSelect_t AblcManualAttr_t;
【Члены】
| Имя члена | Описание |
|---|---|
| enable | Переключатель модуля: 1: включен; 0: выключен. |
| blc_r | Свойства канала R модуля BLC |
| blc_gr | Свойства канала gr модуля BLC |
| blc_gb | Свойства канала GB модуля BLC |
| blc_b | Свойства канала B модуля BLC |
9.6 Удаление дымки и усиление
9.6.1 Описание функций
Удаление дымки и усиление включают 2 режима:
Удаление дымки улучшает изображение динамическим изменением контраста и яркости.
Усиление контраста локальных областей изображения.
Удаление дымки и усиление взаимоисключающие.
9.6.2 Справочник функционального API
9.6.2.1 rk_aiq_uapi2_setDehazeModuleEnable
【Описание】
Задает переключатель модуля удаления дымки, управляя stAuto.DehazeTuningPara.Enable или stManual.Enable (изменяется автоматически согласно текущему режиму API).
【Синтаксис】
XCamReturn rk_aiq_uapi2_setDehazeModuleEnable(const rk_aiq_sys_ctx_t* ctx, bool
on);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| on | Функция переключения. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок. |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.6.2.2 rk_aiq_uapi2_setDehazeEnable
【Описание】
Задает переключатель функции удаления дымки: stAuto.DehazeTuningPara.dehaze_setting.en или stManual.dehaze_setting.en (автоматически согласно текущему режиму API).
【Синтаксис】
XCamReturn rk_aiq_uapi2_setDehazeEnable(const rk_aiq_sys_ctx_t* ctx, bool on);
【Параметр】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| on | Функция переключения. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок. |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.6.2.3 rk_aiq_uapi2_setMDehazeStrth
【Описание】
Задает ручную силу удаления дымки относительно 50: выше 50 усиливает удаление, ниже 50 ослабляет.
DEHAZE_API_AUTO и DEHAZE_API_MANUAL устанавливаются как режим API.
Перед этим API убедитесь, что удаление дымки действует, либо вызовите rk_aiq_uapi2_setDehazeModuleEnable и rk_aiq_uapi2_setDehazeEnable (порядок см. в Case 6 файла sample_adehaze_module.cpp).
【Синтаксис】
XCamReturn rk_aiq_uapi2_setMDehazeStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| level | Уровень, диапазон [1,100], по умолчанию 50, точность 1. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.6.2.4 rk_aiq_uapi2_getMDehazeStrth
【Описание】
Получает ручную силу удаления дымки.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getMDehazeStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
int* level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| level | Уровень, диапазон [1,100], по умолчанию 50, точность 1. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.6.2.5 rk_aiq_uapi2_setEnhanceEnable
【Описание】
Задает переключатель функции Dehaze через stAuto.DehazeTuningPara.enhance_setting.en или stManual.enhance_setting.en (автоматически согласно текущему режиму API; в оригинале указано Dehaze).
【Синтаксис】
XCamReturn rk_aiq_uapi2_setEnhanceEnable(const rk_aiq_sys_ctx_t* ctx, bool on);
【Параметры】
| Возвращаемое значение | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| on | Функция переключения. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.6.2.6 rk_aiq_uapi2_setMEnhanceStrth
【Описание】
Задает ручную силу усиления контраста относительно 50: выше 50 увеличивает контраст, ниже 50 уменьшает.
DEHAZE_API_AUTO и DEHAZE_API_MANUAL устанавливаются как режим API.
Перед этим API убедитесь, что усиление действует, либо вызовите rk_aiq_uapi2_setDehazeModuleEnable и rk_aiq_uapi2_setEnhanceEnable (порядок см. в Case 9 файла sample_adehaze_module.cpp).
【Синтаксис】
XCamReturn rk_aiq_uapi2_setMEnhanceStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
int level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| level | Уровень, диапазон [1,100], по умолчанию 50, точность 1. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.6.2.7 rk_aiq_uapi2_getMEnhanceStrth
【Описание】
Получает ручную силу усиления контраста.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getMEnhanceStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
int *level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| level | Уровень, диапазон [1,100], по умолчанию 50, точность 1. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.6.3 Справочник модульного API
9.6.3.1 rk_aiq_user_api2_adehaze_v12_setSwAttrib
【Описание】
Устанавливает параметры удаления дымки.
【Синтаксис】
XCamReturn rk_aiq_user_api2_adehaze_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
const adehaze_sw_v2_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры удаления дымки | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
9.6.3.2 rk_aiq_user_api2_adehaze_getSwAttrib
【Описание】
Получает текущие параметры удаления дымки.
【Синтаксис】
XCamReturn rk_aiq_user_api2_adehaze_getSwAttrib(const rk_aiq_sys_ctx_t*
sys_ctx,adehaze_sw_v2_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры удаления дымки | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
9.6.4 Типы данных модульного API
9.6.4.1 dehaze_api_mode_t
【Описание】 Определяет режим работы модуля удаления дымки.
【Определение】
typedef enum dehaze_api_mode_e {
DEHAZE_API_AUTO = 0,
DEHAZE_API_MANUAL = 1,
} dehaze_api_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| DEHAZE_API_AUTO | Автоматический режим удаления дымки |
| DEHAZE_API_MANUAL | Ручной режим удаления дымки |
9.6.4.2 DehazeDataV21_t
【Описание】 Определяет свойства параметров настройки автоматического удаления дымки.
【Определение】
typedef struct DehazeDataV21_s{
float* EnvLv;
int EnvLv_len;
float* dc_min_th;
int dc_min_th_len;
float* dc_max_th;
int dc_max_th_len;
float* yhist_th;
int yhist_th_len;
float* yblk_th;
int yblk_th_len;
float* dark_th;
int dark_th_len;
float* bright_min;
int bright_min_len;
float* bright_max;
int bright_max_len;
float* wt_max;
int wt_max_len;
float* air_min;
int air_min_len;
float* air_max;
int air_max_len;
float* tmax_base;
int tmax_base_len;
float* tmax_off;
int tmax_off_len;
float* tmax_max;
int tmax_max_len;
float* cfg_wt;
int cfg_wt_len;
float* cfg_air;
int cfg_air_len;
float* cfg_tmax;
int cfg_tmax_len;
float* dc_weitcur;
int dc_weitcur_len;
float* bf_weight;
int bf_weight_len;
float* range_sigma;
int range_sigma_len;
float* space_sigma_pre;
int space_sigma_pre_len;
float* space_sigma_cur;
int space_sigma_cur_len;
} DehazeDataV21_t;
【Поля】
| Имя поля | Описание |
|---|---|
| EnvLv | Яркость окружающей среды |
| EnvLv_len | Длина массива EnvLv |
| dc_min_th | Диапазон статистики адаптивного WT: [16, 120], по умолчанию 64. |
| dc_min_th_len | Длина массива dc_min_th |
| dc_max_th | Диапазон статистики областей высокой экспозиции адаптивного WT: [170, 255], по умолчанию 192. |
| dc_max_th_len | Длина массива dc_max_th |
| yhist_th | Диапазон статистики областей высокой экспозиции компоненты Y: [170, 255], по умолчанию 249. |
| yhist_th_len | Длина массива yhist_th |
| yblk_th | Порог доли числа блоков компоненты Y: 0.002, 0.01; по умолчанию 0.002. |
| yblk_th_len | Длина массива yblk_th |
| dark_th | Минимальный порог блока компоненты Y для адаптивного WT, диапазон [230, 250], по умолчанию 250. |
| dark_th_len | Длина массива dark_th |
| bright_min | Минимальный адаптивный порог AIR, диапазон от 160 до 200, по умолчанию 180. |
| bright_min_len | Длина массива bright_min |
| bright_max | Максимальный адаптивный порог AIR, диапазон от 210 до 250, по умолчанию 240. |
| bright_max_len | Длина массива bright_max |
| wt_max | Максимум WT: 0.75, 0.9; по умолчанию 0.9. |
| wt_max_len | Длина массива wt_max |
| air_min | Минимальное адаптивное значение AIR, диапазон от 200 до 220, по умолчанию 200. |
| air_min_len | Длина массива air_min |
| air_max | Максимальное адаптивное значение AIR: 230, 250; по умолчанию 250. |
| air_max_len | Длина массива air_max |
| tmax_base | По умолчанию tmax равен 125; соответствующие настройки: 200 (131), 210 (125), 220 (119), 230 (114), 240 (109), 250 (105); рекомендуется 131-105. |
| Имя поля | Описание |
|---|---|
| tmax_base_len | Длина массива tmax_base |
| tmax_off | Фиксированное значение адаптивного tmax, диапазон [0.1, 0.5], по умолчанию 0.1. |
| tmax_off_len | Длина массива tmax_off |
| tmax_max | Максимум tmax: 0.1, 0.5; по умолчанию 0.5. |
| tmax_max_len | Длина массива tmax_max |
| cfg_wt | Программно заданный wt — сила удаления дымки, диапазон [0, 1], по умолчанию 0.8. |
| cfg_wt_len | Длина массива cfg_wt |
| cfg_air | Программно заданный air — коэффициент атмосферного света, диапазон [0, 255], по умолчанию 210. |
| cfg_air_len | Длина массива cfg_air |
| cfg_tmax | Программно заданный tmax — максимальное значение удаления дымки, диапазон [0, 1], по умолчанию 0.2. |
| cfg_tmax_len | Длина массива cfg_tmax |
| bf_weight | Вес объединения двух двусторонних фильтров, диапазон [0, 1], по умолчанию 0.5. |
| bf_weight_len | Длина массива bf_weight |
| dc_weitcur | Вес темного канала, диапазон [0, 1]; значение по умолчанию упомянуто, но не приведено. |
| dc_weitcur_len | Длина массива dc_weitcur |
| range_sigma | Sigma диапазона двустороннего фильтра, диапазон [0, 1], по умолчанию 0.4. |
| range_sigma_len | Длина массива range_sigma |
| space_sigma_pre | Пространственная sigma двустороннего фильтра при опоре на данные IIR, диапазон [0, 1], по умолчанию 0.4. |
| space_sigma_pre_len | Длина массива space_sigma_pre |
| space_sigma_cur | Пространственная sigma двустороннего фильтра при опоре на текущие данные, диапазон [0, 1], по умолчанию 0.8. |
| space_sigma_cur_len | Длина массива space_sigma_cur |
9.6.4.3 Dehaze_Setting_V21_t
【Описание】 Определяет параметры автоматического удаления дымки.
【Определение】
typedef struct Dehaze_Setting_V21_s{
bool en;
bool air_lc_en;
float stab_fnum;
float sigma;
float wt_sigma;
float air_sigma;
float tmax_sigma;
float pre_wet;
DehazeDataV21_t DehazeData;
} Dehaze_Setting_V21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| en | Включение функции |
| air_lc_en | Использовать ли Airlight Base для переключения минимального значения Airlight (формулировка оригинала неясна). |
| stab_fnum | Максимальное значение стабилизации кадров. |
| sigma | Sigma управления IIR. |
| wt_sigma | Коэффициент межкадровой фильтрации WT. |
| air_sigma | Коэффициент межкадровой фильтрации AIR. |
| tmax_sigma | Коэффициент межкадровой фильтрации Tmax. |
| pre_wet | Коэффициент IIR-фильтрации опорных данных. |
| DehazeData | Параметры настройки удаления дымки. |
9.6.4.4 EnhanceDataV21_t
【Описание】 Определяет свойства параметров настройки автоматического усиления.
【Определение】
typedef struct EnhanceDataV21_s{
float* EnvLv;
int EnvLv_len;
float* enhance_value;
int enhance_value_len;
float* enhance_chroma;
int enhance_chroma_len;
} EnhanceDataV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| EnvLv | Яркость окружающей среды |
| EnvLv_len | Длина массива яркости окружающей среды. |
| enhance_value | Общая сила контраста, диапазон [0,16], рекомендуется [1, 2]. |
| enhance_value_len | Длина массива enhance_value |
| enhance_chroma | Параметр корректировки усиления цветности, диапазон [0, 16], рекомендуется [1, 2]. |
| enhance_chroma_len | Длина массива enhance_chroma |
9.6.4.5 Enhance_Setting_V21_t
【Описание】 Определяет свойства параметров автоматического усиления.
【Определение】
typedef struct Enhance_Setting_V21_s{
bool en;
float enhance_curve[CALIBDB_ADEHAZE_ENHANCE_CURVE_KNOTS_NUM];
EnhanceDataV21_t EnhanceData;
} Enhance_Setting_V21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| en | Переключатель усиления. 0: выключено; 1: включено. |
| enhance_curve | Низкочастотная кривая. |
| EnhanceData | Параметры настройки усиления. |
9.6.4.6 Hist_setting_V21_t
【Описание】 Определяет свойства параметров настройки автоматического hist.
【Определение】
typedef struct HistDataV21_s{
float* EnvLv;
int EnvLv_len;
float* hist_gratio;
int hist_gratio_len;
float* hist_th_off;
int hist_th_off_len;
float* hist_k;
int hist_k_len;
float* hist_min;
int hist_min_len;
float* hist_scale;
int hist_scale_len;
float* cfg_gratio;
int cfg_gratio_len;
} HistDataV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| EnvLv | Яркость окружающей среды |
| EnvLv_len | Длина массива EnvLv |
| hist_gratio | Кратность растяжения гистограммы, коэффициент управления выравниванием гистограммы; диапазон [0, 32]. |
| hist_gratio_len | Длина массива hist_gratio |
| hist_th_off | Порог статистики гистограммы, диапазон от 0 до 255, по умолчанию 64. |
| hist_th_off_len | Длина массива hist_th_off |
| hist_k | Множитель адаптивного порога гистограммы, диапазон от 0 до 7, значение 2. |
| hist_k_len | Длина массива hist_k |
| hist_min | Минимум статистического порога гистограммы: в оригинале диапазон «0,2 to 0.016»; сохранен для проверки. |
| hist_min_len | Длина массива hist_min |
| hist_scale | Коэффициенты управления выравниванием гистограммы, диапазон [0, 32]. |
| hist_scale_len | Длина массива hist_scale |
| cfg_gratio | Программно заданные кратность растяжения и коэффициент управления выравниванием гистограммы, диапазон [0, 32]. |
| cfg_gratio_len | Длина массива cfg_gratio |
9.6.4.7 Hist_setting_V21_t
【Описание】 Определяет свойства параметров автоматической функции hist.
【Определение】
typedef struct Hist_setting_V21_s{
bool en;
bool hist_para_en;
HistDataV21_t HistData;
} Hist_setting_V21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| en | Переключатель функции Hist. |
| hist_para_en | Переключатель управления растяжением гистограммы. |
| HistData | Параметры настройки hist. |
9.6.4.8 CalibDbDehazeV21_t
【Описание】 Определяет свойства параметров настройки автоматического модуля удаления дымки.
【Определение】
typedef struct CalibDbDehazeV21_s{
bool Enable;
float cfg_alpha;
float ByPassThr;
Dehaze_Setting_V21_t dehaze_setting;
Enhance_Setting_V21_t enhance_setting;
Hist_setting_V21_t hist_setting;
} CalibDbDehazeV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Enable | Включение функции |
| cfg_alpha | Доля ручной программной настройки, диапазон 0, 1; по умолчанию 1, точность 0.01. |
| dehaze_setting | Параметр автоматического удаления дымки. |
| enhance_setting | Параметр автоматического усиления. |
| hist_setting | Параметр автоматической функции hist |
9.6.4.9 CalibDbV2_dehaze_v21_t
【Описание】 Определяет свойства автоматического модуля удаления дымки.
【Определение】
typedef struct CalibDbV2_dehaze_V21_s{
CalibDbDehazeV21_t DehazeTuningPara;
} CalibDbV2_dehaze_V21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| DehazeTuningPara | Параметры настройки автоматического модуля удаления дымки |
9.6.4.10 mDehazeDataV21_t
【Описание】 Определяет свойства ручного DehazeData.
【Определение】
typedef struct mDehazeDataV21_s {
float dc_min_th;
float dc_max_th;
float yhist_th;
float yblk_th;
float dark_th;
float bright_min;
float bright_max;
float wt_max;
float air_min;
float air_max;
float tmax_base;
float tmax_off;
float tmax_max;
float cfg_wt;
float cfg_air;
float cfg_tmax;
float dc_weitcur;
float bf_weight;
float range_sigma;
float space_sigma_pre;
float space_sigma_cur;
} mDehazeDataV21_t;
【Члены】
| Имя поля | Описание |
|---|---|
| dc_min_th | Диапазон статистики адаптивного WT: [16, 120], по умолчанию 64, точность 0.1. |
| dc_max_th | Диапазон статистики высокоэкспонированных областей адаптивного WT: [170, 255], по умолчанию 192, точность 0.1. |
| yhist_th | Диапазон статистики высокоэкспонированных областей компоненты Y: [170, 255], по умолчанию 249, точность 0.1. |
| yblk_th | Порог доли числа блоков компоненты Y, диапазон [0.002, 0.01], по умолчанию 0.002, точность 0.1. |
| dark_th | Минимальный порог блока Y адаптивного WT, диапазон [230, 250], по умолчанию 250, точность 0.1. |
| bright_min | Минимальный адаптивный порог AIR, диапазон [160, 200], по умолчанию 180, точность 0.1. |
| bright_max | Максимальный адаптивный порог AIR, диапазон [210, 250], по умолчанию 240, точность 0.1. |
| wt_max | Верхний предел адаптивного wt, диапазон [0.75, 0.9], по умолчанию 0.9, точность 0.001. |
| air_min | Нижний предел адаптивного air, диапазон [200, 220], по умолчанию 200, точность 0.001. |
| air_max | Верхний предел адаптивного AIR, диапазон [230, 250], по умолчанию 250, точность 0.001. |
| tmax_base | Базовое значение адаптивного tmax, по умолчанию 125; настройки: 200 (131), 210 (125), 220 (119), 230 (114), 240 (109), 250 (105); рекомендуется 131-105. |
| tmax_off | Фиксированное значение адаптивного Tmax, диапазон [0.1, 0.5], по умолчанию 0.1, точность 0.1. |
| tmax_max | Максимум адаптивного tmax, диапазон [0.1, 0.5], по умолчанию 0.5, точность 0.1. |
| cfg_wt | Программно заданный wt (сила удаления дымки), диапазон [0, 1], по умолчанию 0.8, точность 0.001. |
| cfg_air | Программно заданный air (коэффициент атмосферного света), диапазон [0, 255], по умолчанию 210, точность 0.001. |
| cfg_tmax | Программно заданный tmax (максимум удаления дымки), диапазон [0, 1], по умолчанию 0.2, точность 0.001. |
| bf_weight | Вес объединения двух двусторонних фильтров, диапазон [0, 1], по умолчанию 0.5, точность 0.1. |
| dc_weitcur | Двусторонний вес темного канала, диапазон [0, 1], по умолчанию 1, точность 0.1. |
| range_sigma | Sigma диапазона двустороннего фильтра, диапазон [0, 1], по умолчанию 0.4, точность 0.1. |
| Имя поля | Описание |
|---|---|
| space_sigma_pre | Пространственная sigma двустороннего фильтра при опоре на IIR, диапазон [0, 1], по умолчанию 0.4, точность 0.1. |
| space_sigma_cur | Пространственная sigma двустороннего фильтра при опоре на текущие данные, диапазон [0, 1], по умолчанию 0.8, точность 0.1. |
9.6.4.11 mDehaze_setting_v21_t
【Описание】 Определяет свойства ручной функции удаления дымки.
【Определение】
typedef struct mDehaze_setting_v21_s {
bool en;
bool air_lc_en;
float stab_fnum;
float sigma;
float wt_sigma;
float air_sigma;
float tmax_sigma;
float pre_wet;
mDehazeDataV21_t DehazeData;
} mDehaze_setting_V21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| en | Включение функции |
| air_lc_en | Переключатель использования Airlight Base для отсечения минимального значения. |
| stab_fnum | Максимум стабилизации кадров, диапазон [0,31], по умолчанию 8, точность 0.01. |
| sigma | Sigma управления IIR, диапазон 0,255, по умолчанию 6, точность 1. |
| wt_sigma | Коэффициент межкадровой фильтрации wt, диапазон [0,255], по умолчанию 8, точность 1. |
| air_sigma | Коэффициент межкадровой фильтрации air, диапазон 0,255, по умолчанию 12, точность 1. |
| tmax_sigma | Коэффициент межкадровой фильтрации Tmax, диапазон [0,1], по умолчанию 0.01, точность 0.0001. |
| pre_wet | Коэффициент IIR-фильтрации опорных данных, диапазон [0,1], по умолчанию 0.01, точность 0.0001. |
| DehazeData | Параметр настройки удаления дымки |
9.6.4.12 mEnhanceDataV21_t
【Описание】 Определяет свойства ручного EnhanceData.
【Определение】
typedef struct mEnhanceDataV21_s {
float enhance_value;
float enhance_chroma;
} mEnhanceDataV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| enhance_value | Общая сила контраста, диапазон [0,16], по умолчанию 1.0, точность 0.001. |
| enhance_chroma | Корректировка усиления цветности, диапазон [0,16], по умолчанию 1.0, точность 0.001. |
9.6.4.13 mEnhance_setting_v21_t
【Описание】 Определяет свойства ручной функции усиления.
【Определение】
typedef struct mEnhance_Setting_V21_s {
bool en;
float enhance_curve[CALIBDB_ADEHAZE_ENHANCE_CURVE_KNOTS_NUM];
mEnhanceDataV21_t EnhanceData;
} mEnhance_Setting_V21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| en | Переключатель усиления |
| enhance_curve | Низкочастотная кривая |
| EnhanceData | Параметры настройки усиления |
9.6.4.14 mHistDataV21_t
【Описание】 Определяет свойства ручного HistData.
【Определение】
typedef struct mHistDataV21_s {
float hist_gratio;
float hist_th_off;
float hist_k;
float hist_min;
float hist_scale;
float cfg_gratio;
} mHistDataV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| hist_gratio | Кратность растяжения и коэффициент выравнивания гистограммы, диапазон [0, 32], точность 0.01; значение по умолчанию не приведено. |
| hist_th_off | Статистический порог гистограммы, диапазон [0, 255], по умолчанию 64, точность 0.01. |
| hist_k | Множитель адаптивного порога гистограммы, диапазон [0, 7), по умолчанию 2, точность 0.01. |
| hist_min | Минимум статистического порога гистограммы, диапазон [0,2), по умолчанию 0.016, точность 0.01. |
| hist_scale | Коэффициент выравнивания гистограммы, диапазон [0, 32], по умолчанию 0.9, точность 0.01. |
| cfg_gratio | Программно заданные кратность растяжения и коэффициент выравнивания гистограммы, диапазон [0, 32), по умолчанию 1, точность 0.01. |
9.6.4.15 mHist_setting_v21_t
【Описание】 Определяет свойства ручной функции Hist.
【Определение】
typedef struct mHist_setting_V21_s {
bool en;
bool hist_para_en;
mHistDataV21_t HistData;
} mHist_setting_V21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| en | Переключатель функции Hist. |
| hist_para_en | Переключатель управления растяжением гистограммы. |
| HistData | Параметры настройки Hist. |
9.6.4.16 mDehazeAttr_t
【Описание】 Определяет свойства ручного модуля удаления дымки.
【Определение】
typedef struct mDehazeAttr_s {
bool Enable;
float cfg_alpha;
mDehaze_Setting_V21_t dehaze_setting;
mEnhance_Setting_V21_t enhance_setting;
mHist_setting_V21_t hist_setting;
} mDehazeAttr_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Enable | Функция переключения. |
| cfg_alpha | Доля ручной программной настройки, диапазон [0,1], по умолчанию 1, точность 0.01. |
| dehaze_setting | Параметры ручного удаления дымки |
| enhance_setting | Параметр ручного усиления |
| hist_setting | Параметры ручной функции Hist |
9.6.4.17 adehaze_sw_v2_t
【Описание】 Определяет свойства удаления дымки.
【Определение】
typedef struct adehaze_sw_V2_s {
rk_aiq_uapi_sync_t sync;
dehaze_api_mode_t mode;
CalibDbV2_dehaze_V21_t stAuto;
mDehazeAttr_t stManual;
DehazeManuAttr_t stDehazeManu;
EnhanceManuAttr_t stEnhanceManu;
} adehaze_sw_V2_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в «Обзор/Описание API». |
| mode | Режим API. |
| stAuto | Параметры автоматического модуля удаления дымки. |
| stManual | Параметры ручного модуля удаления дымки. |
| stDehazeManu | Параметр уровня удаления дымки; не использовать. |
| stEnhanceManu | Параметр уровня контраста; не использовать. |
9.7 CPROC
9.7.1 Описание функций
CPRO (обработка цвета) обеспечивает базовую корректировку цвета: изменением яркости, контраста, насыщенности и цветности в определенных пределах получают желаемую цветопередачу. Модуль работает с изображениями в области YUV.
9.7.2 Справочник функционального API
9.7.3 Справочник модульного API
9.7.3.1 rk_aiq_user_api2_acp_SetAttrib
【Описание】
Устанавливает свойства модуля CPRO.
【Синтаксис】
XCamReturn rk_aiq_user_api2_acp_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства модуля CPROC | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_acp.h
Библиотека: librkaiq.so
9.7.3.2 rk_aiq_user_api2_acp_GetAttrib
【Описание】
Получает текущие свойства модуля CPRO.
【Синтаксис】
XCamReturn rk_aiq_user_api2_acp_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
acp_attrib_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства модуля CPROC | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_acp.h
Библиотека: librkaiq.so
9.7.4 Типы данных модульного API
9.7.4.1 acp_attrib_t
【Описание】 Определяет параметры модуля CPROC.
【Определение】
typedef struct acp_attrib_s {
uint8_t brightness; /* 0 ~ 255 */
uint8_t contrast; /* 0 ~ 255 */
uint8_t saturation; /* 0 ~ 255 */
uint8_t hue; /* 0 ~ 255 */
} acp_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| brightness | Яркость, диапазон [0,255], соответствующий диапазон [-128,127], по умолчанию 128. |
| contrast | Контраст, диапазон [0,255], соответствующий множитель [0, 1.992], по умолчанию 128. |
| saturation | Насыщенность, диапазон [0,255], соответствующий множитель [0, 1.992], по умолчанию 128. |
| hue | Цветность, диапазон [0,255], соответствующий угол [-90,87.188], по умолчанию 128. |
9.8 IE
9.8.1 Описание функций
IE (эффекты изображения) задает специальные эффекты, например черно-белый. Модуль работает с изображениями в области YUV.
9.8.2 Справочник функционального API
9.8.3 Справочник модульного API
9.8.3.1 rk_aiq_user_api2_aie_SetAttrib
【Описание】
Устанавливает свойства модуля IE.
【Синтаксис】
XCamReturn rk_aiq_user_api2_aie_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
aie_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства модуля IE | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_aie.h
Библиотека: librkaiq.so
9.8.3.2 rk_aiq_user_api2_aie_GetAttrib
【Описание】
Получает текущие свойства модуля IE.
【Синтаксис】
XCamReturn rk_aiq_user_api2_aie_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
aie_attrib_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства модуля IE | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_aie.h
Библиотека: librkaiq.so
9.8.4 Типы данных модульного API
9.8.4.1 aie_attrib_t
【Описание】 Определяет параметры модуля IE.
【Определение】
typedef struct aie_attrib_s {
rk_aiq_ie_effect_t mode;
} aie_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| mode | Тип эффекта |
9.8.4.2 rk_aiq_ie_effect_t
【Описание】 Определяет тип эффекта IE.
【Определение】
typedef enum rk_aiq_ie_effect_e {
RK_AIQ_IE_EFFECT_NONE,
RK_AIQ_IE_EFFECT_BW,
RK_AIQ_IE_EFFECT_NEGATIVE,
RK_AIQ_IE_EFFECT_SEPIA,
RK_AIQ_IE_EFFECT_EMBOSS,
RK_AIQ_IE_EFFECT_SKETCH,
RK_AIQ_IE_EFFECT_SHARPEN, /*!< deprecated */
} rk_aiq_ie_effect_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_AIQ_IE_EFFECT_NONE | Без эффектов |
| RK_AIQ_IE_EFFECT_BW | Черно-белый эффект |
| RK_AIQ_IE_EFFECT_NEGATIVE | Негатив, не поддерживается |
| RK_AIQ_IE_EFFECT_SEPIA | Эффект темно-коричневого тона |
| RK_AIQ_IE_EFFECT_EMBOSS | Эффект тиснения |
| RK_AIQ_IE_EFFECT_SKETCH | Эффект эскиза |
| RK_AIQ_IE_EFFECT_SHARPEN | Не поддерживается |
9.9 CSM
9.9.1 Описание функций
CSM (матрица цветового пространства) позволяет задавать параметры преобразования RGB в YUV.
9.9.2 Справочник функционального API
9.9.3 Справочник модульного API
9.9.3.1 rk_aiq_user_api2_acsm_SetAttrib
【Описание】
Устанавливает свойства модуля CSM.
【Синтаксис】
XCamReturn rk_aiq_user_api2_acsm_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapi_acsm_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойство модуля CSM | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_acsm.h
Библиотека: librkaiq.so
【Меры предосторожности】
При attr.param.op_mode = RK_AIQ_OP_MODE_AUTO используются встроенные параметры CSM по умолчанию AIQ; при attr.param.op_mode = RK_AIQ_OP_MODE_MANUAL параметры CSM можно настраивать.
attr.param.full_range допускает только TRUE; ограниченный диапазон настраивается в модуле CGC.
9.9.3.2 rk_aiq_user_api2_acsm_GetAttrib
【Описание】
Получает текущие свойства модуля CSM.
【Синтаксис】
XCamReturn rk_aiq_user_api2_acsm_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapi_acsm_attrib_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойство модуля CSM | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_acsm.h
Библиотека: librkaiq.so
9.9.4 Типы данных API уровня модуля
9.9.4.1 rk_aiq_uapi_acsm_attrib_t
【Описание】Определяет параметры модуля CSM.
【Определение】
typedef struct rk_aiq_uapi_acsm_attrib_s {
rk_aiq_uapi_sync_t sync;
rk_aiq_acsm_params_t param;
} rk_aiq_uapi_acsm_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| rk_aiq_acsm_params_t | Параметр CSM. |
9.9.4.2 rk_aiq_acsm_params_t
【Описание】Определяет параметры модуля CSM.
【Определение】
typedef struct __csm_param {
RKAiqOPMode_t op_mode;
bool full_range;
uint8_t y_offset;
uint8_t c_offset;
float coeff[RK_AIQ_CSM_COEFF_NUM];
} Csm_Param_t;
【Члены】
| Имя члена | Описание |
|---|---|
| op_mode | Режим: RK_AIQ_OP_MODE_AUTO либо RK_AIQ_OP_MODE_MANUAL. |
| full_range | Вывод полного диапазона, по умолчанию TRUE. Для ISP30 допускается только TRUE; ограниченный диапазон рекомендуется настраивать API модуля CGC. |
| y_offset | Смещение яркости, [0,63], по умолчанию 0. |
| c_offset | Смещение цветности, [0,255], по умолчанию 0. |
| coeff | Матрица 3×3 преобразования RGB в YUV, диапазон [-2,1.992], по умолчанию [0.299,0.587,0.114,-0.169,-0.331,0.5,0.5,-0.419,-0.081]. |
9.10 Повышение резкости
9.10.1 Описание функции
Модуль Sharpen повышает чёткость изображения, регулируя резкость краёв и усиливая детали и текстуры.
9.10.2 API уровня функций
9.10.2.1 rk_aiq_uapi2_setSharpness
【Описание】
Задаёт уровень резкости.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setSharpness(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| level | Уровень резкости [0,100], по умолчанию 50. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.10.2.2 rk_aiq_uapi2_getSharpness
【Описание】
Получает уровень резкости.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getSharpness(const rk_aiq_sys_ctx_t* ctx, unsigned int*
level);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| level | Уровень резкости. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.10.3 API уровня модуля
9.10.3.1 rk_aiq_user_api2_asharpV4_SetAttrib
【Описание】Задаёт свойства алгоритма повышения резкости.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_asharpV4_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_attrib_v4_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров шумоподавления | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_asharp_v4.h, RkAiqHandleIntV3x.h.
Библиотека: librkaiq.so
9.10.3.2 rk_aiq_user_api2_asharpV4_GetAttrib
【Описание】Получает свойства алгоритма повышения резкости.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_asharpV4_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_attrib_v4_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Атрибуты параметров шумоподавления | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_asharp_v4.h, RkAiqHandleIntV3x.h.
Библиотека: librkaiq.so
9.10.3.3 rk_aiq_user_api2_asharpV4_SetStrength
【Описание】Задаёт интенсивность повышения резкости.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_asharpV4_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_strength_v4_t *pStrength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pStrength | Указатель структуры интенсивности резкости; диапазон percentage в структуре 0.0-1.0. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_asharp_v4.h, RkAiqHandleIntV3x.h.
Библиотека: librkaiq.so
9.10.3.4 rk_aiq_user_api2_asharpV4_GetStrength
【Описание】Получает интенсивность повышения резкости.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_asharpV4_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_strength_v4_t *pStrength);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| pStrength | Указатель структуры интенсивности резкости; диапазон percentage в структуре 0.0-1.0. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_asharp_v4.h, RkAiqHandleIntV3x.h.
Библиотека: librkaiq.so
9.10.4 Типы данных API уровня модуля
9.10.4.1 rk_aiq_sharp_attrib_v4_t
【Описание】Определяет параметры модуля повышения резкости.
【Определение】
typedef struct rk_aiq_sharp_attrib_v4_s {
rk_aiq_uapi_sync_t sync;
Asharp4_OPMode_t eMode;
Asharp_Auto_Attr_V4_t stAuto;
Asharp_Manual_Attr_V4_t stManual;
} rk_aiq_sharp_attrib_v4_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| eMode | Свойства модуля Sharpen. |
| stAuto | Параметры автоматического режима Sharpen. |
9.10.4.2 Asharp4_OPMode_t
【Описание】
【Определение】
typedef enum Asharp4_OPMode_e {
ASHARP4_OP_MODE_INVALID = 0,
ASHARP4_OP_MODE_AUTO = 1,
ASHARP4_OP_MODE_MANUAL = 2,
ASHARP4_OP_MODE_REG_MANUAL = 3,
ASHARP4_OP_MODE_MAX
} Asharp4_OPMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ASHARP4_OP_MODE_INVALID | Недействительный режим Sharpen. |
| ASHARP4_OP_MODE_AUTO | Автоматический режим Sharpen. |
| ASHARP4_OP_MODE_MANUAL | Настройки алгоритма ручного режима повышения резкости. |
| ASHARP4_OP_MODE_REG_MANUAL | Настройки регистров. |
| ASHARP4_OP_MODE_MAX | Максимальное значение режима Sharpen, недействительный режим. |
9.10.4.3 Asharp_Auto_Attr_V4_t
【Описание】Определяет свойства алгоритма автоматического режима повышения резкости для каждого ISO.
【Определение】
typedef struct Asharp_Auto_Attr_V4_s
{
RK_SHARP_Params_V4_t stParams;
RK_SHARP_Params_V4_Select_t stSelect;
} Asharp_Auto_Attr_V4_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stParams | Свойства алгоритма SHARP для каждого ISO. |
| stSelect | Вычисленные параметры свойств Sharp. |
9.10.4.4 Asharp_Manual_Attr_V4_t
【Описание】Определяет ручные свойства модуля повышения резкости.
【Определение】
typedef struct Asharp_Manual_Attr_V4_s
{
RK_SHARP_Params_V4_Select_t stSelect;
RK_SHARP_Fix_V4_t stFix;
} Asharp_Manual_Attr_V4_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stSelect | Ручные параметры алгоритма Sharp. |
| stFix | Значения регистров Sharp. |
9.10.4.5 RK_SHARP_Params_V4_t
【Описание】Определяет ручные свойства модуля повышения резкости.
【Определение】
typedef struct RK_SHARP_Params_V4_s
{
int enable;
int iso[RK_SHARP_V4_MAX_ISO_NUM];
short luma_point [RK_SHARP_V4_LUMA_POINT_NUM];
short luma_sigma [RK_SHARP_V4_MAX_ISO_NUM]
[RK_SHARP_V4_LUMA_POINT_NUM];
float pbf_gain [RK_SHARP_V4_MAX_ISO_NUM];
float pbf_add [RK_SHARP_V4_MAX_ISO_NUM];
float pbf_ratio [RK_SHARP_V4_MAX_ISO_NUM];
float gaus_ratio [RK_SHARP_V4_MAX_ISO_NUM];
float sharp_ratio [RK_SHARP_V4_MAX_ISO_NUM];
short hf_clip [RK_SHARP_V4_MAX_ISO_NUM][RK_SHARP_V4_LUMA_POINT_NUM];
float bf_gain [RK_SHARP_V4_MAX_ISO_NUM];
float bf_add [RK_SHARP_V4_MAX_ISO_NUM];
float bf_ratio [RK_SHARP_V4_MAX_ISO_NUM];
short local_sharp_strength [RK_SHARP_V4_MAX_ISO_NUM]
[RK_SHARP_V4_LUMA_POINT_NUM];
float prefilter_coeff[RK_SHARP_V4_MAX_ISO_NUM][RK_SHARP_V4_PBF_DIAM *
RK_SHARP_V4_PBF_DIAM];
float GaussianFilter_coeff [RK_SHARP_V4_MAX_ISO_NUM][RK_SHARP_V4_RF_DIAM *
RK_SHARP_V4_RF_DIAM];
float hfBilateralFilter_coeff [RK_SHARP_V4_MAX_ISO_NUM]
[RK_SHARP_V4_BF_DIAM * RK_SHARP_V4_BF_DIAM];
} RK_SHARP_Params_V4_t;
【Члены】
| Имя параметра | Тип параметра | Краткое описание. |
|---|---|---|
| Enable | Параметры настройки | Переключатель Sharp: 1 включает, 0 отключает. |
| iso | Параметры настройки | Разные уровни ISO используют разные параметры настройки; поддерживаются только 13 уровней. |
| pbf_gain | Параметры настройки | Множитель sigma предварительного фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0.0,2.0], по умолчанию 1.0. |
| pbf_add | Параметры настройки | Добавочное смещение sigma предварительного фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0,1023], по умолчанию 0. |
| pbf_ratio | Параметры настройки | Вес смешивания предварительного фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0.0,1.0], по умолчанию 0.5. |
| gaus_ratio | Параметры настройки | Направляющее изображение высокочастотного двустороннего фильтра — смесь гауссовой фильтрации и оригинала. Большее значение повышает направляющий вес гауссова двустороннего фильтра. [0.0,1.0], по умолчанию 0. |
| sharp_ratio | Параметры настройки | Интенсивность повышения резкости; большее значение усиливает резкость. [0.0,16], по умолчанию 6. |
| bf_gain | Параметры настройки | Множитель sigma высокочастотного двустороннего фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0.0,2.0], по умолчанию 1.0. |
| bf_add | Параметры настройки | Добавочное смещение sigma высокочастотного двустороннего фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0,1023], по умолчанию 0. |
| bf_add | Параметры настройки | Вес смешивания высокочастотного двустороннего фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0.0,1.0], по умолчанию 0.5. |
| Имя параметра | Тип параметра | Краткое описание. |
|---|---|---|
| luma_point / luma_sigma | Параметры настройки | Разной яркости пикселя соответствует кривая SIGMA шума. luma_point — яркость [0,1023]; luma_sigma — интенсивность шума [0,1023]. |
| luma_point / hf_clip | Параметры настройки | Ограничение высокочастотных значений по яркости пикселя. Большее значение повышает максимально допустимую резкость. [0,1023], по умолчанию 256. |
| luma_point / local_sharp_strength | Параметры настройки | Вес наложения высоких частот по яркости пикселя. Большее значение допускает больше высоких частот, повышая резкость. [0,1023], по умолчанию 512. |
| prefilter_coeff | Параметры настройки | Оператор предварительной фильтрации. |
| GaussianFilter_coeff | Параметры настройки | Оператор гауссовой фильтрации. |
| hfBilateralFilter_coeff | Параметры настройки | Оператор высокочастотной двусторонней фильтрации. |
9.10.4.6 RK_SHARP_Params_V4_Select_t
【Описание】Определяет свойства алгоритма ручного режима повышения резкости.
【Определение】
typedef struct RK_SHARP_Params_V4_Select_s
{
int enable;
short luma_point [RK_SHARP_V4_LUMA_POINT_NUM];
short luma_sigma [RK_SHARP_V4_LUMA_POINT_NUM];
float pbf_gain ;
float pbf_add ;
float pbf_ratio ;
float gaus_ratio ;
float sharp_ratio ;
short hf_clip [RK_SHARP_V4_LUMA_POINT_NUM];
float bf_gain ;
float bf_add ;
float bf_ratio ;
short local_sharp_strength [RK_SHARP_V4_LUMA_POINT_NUM];
float prefilter_coeff[RK_SHARP_V4_PBF_DIAM * RK_SHARP_V4_PBF_DIAM];
float GaussianFilter_coeff [RK_SHARP_V4_RF_DIAM * RK_SHARP_V4_RF_DIAM];
float hfBilateralFilter_coeff [RK_SHARP_V4_BF_DIAM * RK_SHARP_V4_BF_DIAM];
} RK_SHARP_Params_V4_Select_t;
【Члены】
| Имя параметра | Тип параметра | Краткое описание. |
|---|---|---|
| Enable | Параметры настройки | Переключатель Sharp: 1 включает, 0 отключает. |
| iso | Параметры настройки | Разные уровни ISO используют разные параметры настройки; поддерживаются только 13 уровней. |
| pbf_gain | Параметры настройки | Множитель sigma предварительного фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0.0,2.0], по умолчанию 1.0. |
| pbf_add | Параметры настройки | Добавочное смещение sigma предварительного фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0,1023], по умолчанию 0. |
| pbf_ratio | Параметры настройки | Вес смешивания предварительного фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0.0,1.0], по умолчанию 0.5. |
| gaus_ratio | Параметры настройки | Направляющее изображение высокочастотного двустороннего фильтра — смесь гауссовой фильтрации и оригинала. Большее значение повышает направляющий вес гауссова двустороннего фильтра. [0.0,1.0], по умолчанию 0. |
| sharp_ratio | Параметры настройки | Интенсивность повышения резкости; большее значение усиливает резкость. [0.0,16], по умолчанию 6. |
| bf_gain | Параметры настройки | Множитель sigma высокочастотного двустороннего фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0.0,2.0], по умолчанию 1.0. |
| bf_add | Параметры настройки | Добавочное смещение sigma высокочастотного двустороннего фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0,1023], по умолчанию 0. |
| bf_add | Параметры настройки | Вес смешивания высокочастотного двустороннего фильтра. Большее значение усиливает фильтрацию, уменьшая шум и детали. [0.0,1.0], по умолчанию 0.5. |
| Имя параметра | Тип параметра | Краткое описание. |
|---|---|---|
| luma_point / luma_sigma | Параметры настройки | Разной яркости пикселя соответствует кривая SIGMA шума. luma_point — яркость [0,1023]; luma_sigma — интенсивность шума [0,1023]. |
| luma_point / hf_clip | Параметры настройки | Ограничение высокочастотных значений по яркости пикселя. Большее значение повышает максимально допустимую резкость. [0,1023], по умолчанию 256. |
| luma_point / local_sharp_strength | Параметры настройки | Вес наложения высоких частот по яркости пикселя. Большее значение допускает больше высоких частот, повышая резкость. [0,1023], по умолчанию 512. |
| prefilter_coeff | Параметры настройки | Оператор предварительной фильтрации. |
| GaussianFilter_coeff | Параметры настройки | Оператор гауссовой фильтрации. |
| hfBilateralFilter_coeff | Параметры настройки | Оператор высокочастотной двусторонней фильтрации. |
9.10.4.7 RK_SHARP_Fix_V4_t
【Описание】Определяет конфигурацию регистров ручного режима повышения резкости.
【Определение】
typedef struct RK_SHARP_Fix_V4_s
{
// SHARP_SHARP_EN (0x0000)
uint8_t sharp_clk_dis;
uint8_t sharp_exgain_bypass;
uint8_t sharp_center_mode;
uint8_t sharp_bypass;
uint8_t sharp_en;
// SHARP_SHARP_RATIO (0x0004)
uint8_t sharp_sharp_ratio;
uint8_t sharp_bf_ratio;
uint8_t sharp_gaus_ratio;
uint8_t sharp_pbf_ratio;
// SHARP_SHARP_LUMA_DX (0x0008)
uint8_t sharp_luma_dx[7];
// SHARP_SHARP_PBF_SIGMA_INV_0 (0x000c - 0x0014)
uint16_t sharp_pbf_sigma_inv[8];
// SHARP_SHARP_BF_SIGMA_INV_0 (0x0018 - 0x0020)
uint16_t sharp_bf_sigma_inv[8];
// SHARP_SHARP_SIGMA_SHIFT (0x00024)
uint8_t sharp_bf_sigma_shift;
uint8_t sharp_pbf_sigma_shift;
// SHARP_SHARP_EHF_TH_0 (0x0028 - 0x0030)
uint16_t sharp_ehf_th[8];
// SHARP_SHARP_CLIP_HF_0 (0x0034 - 0x003c)
uint16_t sharp_clip_hf[8];
// SHARP_SHARP_PBF_COEF (0x00040)
uint8_t sharp_pbf_coef[3];
// SHARP_SHARP_BF_COEF (0x00044)
uint8_t sharp_bf_coef[3];
// SHARP_SHARP_GAUS_COEF (0x00048 - 0x0004c)
uint8_t sharp_gaus_coef[6];
} RK_SHARP_Fix_V4_t;
【Члены】
| Имя параметра | Описание параметра |
|---|---|
| sharp_clk_dis | Управление тактированием Sharp, пока не поддерживается, по умолчанию 0. |
| sharp_exgain_bypass | Обход внешнего модуля локального усиления, пока не поддерживается, по умолчанию 0. |
| sharp_center_mode | Повышение резкости относительно центра изображения; настройка пока не поддерживается, по умолчанию 0. |
| sharp_bypass | Обход модуля резкости: 1 — обход, 0 — без обхода. |
| sharp_en | Включение Sharpen: 1 включает, 0 отключает. |
| sharp_sharp_ratio | sharp_ratio: интенсивность резкости, 0~15.9. |
| sharp_bf_ratio | Вес смешивания двустороннего фильтра, 0~1.0. |
| sharp_gaus_ratio | gaus_ratio: вес смешивания гауссова фильтра, [0.0,1.0]. |
| sharp_pbf_ratio | Вес смешивания двустороннего предварительного фильтра, [0.0,1.0], по умолчанию 0.5. |
| sharp_luma_dx7 | Расстояние между точками 6 и 7 равно 2^sw_sharp_luma_dx7. |
| sharp_luma_dx6 | Расстояние между точками 5 и 6 равно 2^sw_sharp_luma_dx6. |
| sharp_luma_dx5 | Расстояние между точками 4 и 5 равно 2^sw_sharp_luma_dx5. |
| sharp_luma_dx4 | Расстояние между точками 3 и 4 равно 2^sw_sharp_luma_dx4. |
| sharp_luma_dx3 | Расстояние между точками 2 и 3 равно 2^sw_sharp_luma_dx3. |
| sharp_luma_dx2 | Расстояние между точками 1 и 2 равно 2^sw_sharp_luma_dx2. |
| sharp_luma_dx1 | Расстояние между точками 0 и 1 равно 2^sw_sharp_luma_dx1. Суммарное расстояние должно быть 1024. |
| sharp_pbf_sigma_inv | Обратное значение sigma pbf Sharp. |
| sharp_bf_sigma_inv | Обратное значение sigma bf Sharp. |
| sharp_pbf_coef | Ядро двустороннего фильтра модуля резкости. |
| sharp_bf_coef | Ядро двустороннего фильтра. |
| sharp_gaus_coef | Ядро гауссова фильтра. |
9.10.4.8 rk_aiq_sharp_strength_v4_t
【Описание】Определяет структуру настройки интенсивности подавления шума модуля резкости.
【Определение】
typedef struct rk_aiq_sharp_strength_v4_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_sharp_strength_v4_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Выбор синхронного/асинхронного режима см. в обзоре и описании API. |
| percent | Интенсивность резкости, диапазон 0.0-1.0. |
9.11 Gamma
9.11.1 Описание функции
Модуль gamma нелинейно преобразует яркость изображения для выходного устройства. RK3588 поддерживает 49-точечную кривую gamma в логарифмической области со следующими абсциссами:
int X_isp30[49] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32,
40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 640,
768, 896, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584, 3840,
4095};
9.11.2 API уровня функций
9.11.2.1 rk_aiq_uapi2_setGammaCoef
【Описание】
Быстро задаёт gamma через GammaCoef и SlopeAtZero. Кривая формируется следующим образом:
for(int i = 0; i < 49; i++) {
Y_isp30[i] = 4095 * pow(X_isp30[i] / 4095, 1 / GammaCoef + SlopeAtZero);
Y_isp30[i] = LIMIT_VALUE(Y_isp30[i], 4095, 0);
}
【Синтаксис】
XCamReturn rk_aiq_uapi2_setGammaCoef(const rk_aiq_sys_ctx_t* ctx, float
GammaCoef, float SlopeAtZero);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| GammaCoef | Коэффициент gamma, [0,100], по умолчанию 2.2, точность 0.01. | Вход |
| SlopeAtZero | Наклон тёмной области, [-0.05,0.05], по умолчанию 0, точность 0.001. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Описание】
Кривая Gamma API не переключается по сцене; при её изменении задайте кривую заново через API.
9.11.3 Типы данных API уровня функций
9.11.4 API уровня модуля
9.11.4.1 rk_aiq_user_api2_agamma_SetAttrib
【Описание】Задаёт программные свойства gamma.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_agamma_v11_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const
rk_aiq_gamma_v11_attrib_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Структура программных свойств Gamma. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_agamma.h.
Библиотека: librkaiq.so
【Описание】
Кривая Gamma API не переключается по сцене; при её изменении задайте кривую заново через API.
9.11.4.2 rk_aiq_user_api2_agamma_GetAttrib
【Описание】Получает программные свойства gamma.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_agamma_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_gamma_attrib_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Структура программных свойств Gamma. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_agamma.h.
Библиотека: librkaiq.so
【Описание】
9.11.5 Типы данных API уровня модуля
9.11.5.1 rk_aiq_gamma_op_mode_t
【Описание】Определяет режим работы Gamma.
【Определение】
typedef enum rk_aiq_gamma_op_mode_s {
RK_AIQ_GAMMA_MODE_OFF = 0,
RK_AIQ_GAMMA_MODE_MANUAL = 1,
RK_AIQ_GAMMA_MODE_FAST = 2,
} rk_aiq_gamma_op_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_AIQ_GAMMA_MODE_OFF | Режим отключения API. |
| RK_AIQ_GAMMA_MODE_MANUAL | Ручной режим API. |
| RK_AIQ_GAMMA_MODE_FAST | Быстрый режим API. |
9.11.5.2 Agamma_api_Fast_t
【Описание】Определяет свойства Gamma быстрого режима.
Быстро задаёт gamma через GammaBeef и SlopeAtZero; формирование кривой ниже. GammaBeef — написание оригинала.
for(int i = 0; i < 49; i++) {
Y_isp30[i] = 4095 * pow(X_isp30[i] / 4095, 1 / GammaCoef + SlopeAtZero);
Y_isp30[i] = LIMIT_VALUE(Y_isp30[i], 4095, 0);
}
【Определение】
typedef struct Agamma_api_Fast_s {
bool en;
float GammaCoef;
float SlopeAtZero;
} Agamma_api_Fast_t;
【Члены】
| Имя члена | Описание |
|---|---|
| en | Включение функции |
| GammaCoef | Коэффициент gamma; диапазон в оригинале записан 0, 100, по умолчанию 2.2, точность 0.01. |
| SlopeAtZero | Наклон тёмной области; оригинал указывает границы 0.05 и 0.05, по умолчанию 0, точность 0.001. Следует проверить возможный пропуск минуса. |
9.11.5.3 GammaType_t
【Описание】Определяет тип шага по X кривой Gamma.
【Определение】
typedef enum GammaType_e {
GAMMATYPE_LOG = 0,
GAMMATYPE_EQU = 1,
} GammaType_t;
【Члены】
| Имя члена | Описание |
|---|---|
| GAMMATYPE_LOG | Неравномерный шаг. |
| GAMMATYPE_EQU | Равномерный шаг. |
9.11.5.4 Agamma_api_manualV21_t
【Описание】Определяет ручные свойства gamma RK356x.
【Определение】
typedef struct Agamma_api_manualV21_s {
bool Gamma_en;
GammaType_t Gamma_out_segnum;
uint16_t Gamma_out_offset;
uint16_t Gamma_curve[CALIBDB_AGAMMA_KNOTS_NUM];
} Agamma_api_manualV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Gamma_en | Включение функции |
| Gamma_out_segnum | Тип шага по X ручной кривой Gamma, по умолчанию GAMMATYPE_LOG. |
| Gamma_out_offset | Коэффициент коррекции ручной кривой Gamma, [-2048,2048], по умолчанию 0, точность 1. |
| Gamma_curve | Ручная кривая Gamma, [0,4095], точность 1. |
9.11.5.5 Agamma_api_manualV30_t
【Описание】Определяет ручные свойства gamma RK3588.
【Определение】
typedef struct Agamma_api_manualV30_s {
bool Gamma_en;
uint16_t Gamma_out_offset;
uint16_t Gamma_curve[CALIBDB_AGAMMA_KNOTS_NUM_V30];
} Agamma_api_manualV30_t;
【Члены】
| Имя члена | Описание |
|---|---|
| Gamma_en | Включение функции |
| Gamma_out_offset | Коэффициент коррекции ручной кривой Gamma, [-2048,2048], по умолчанию 0, точность 1. |
| Gamma_curve | Ручная кривая Gamma, [0,4095], точность 1. |
9.11.5.6 rk_aiq_gamma_attrV21_t
【Описание】Определяет свойства Gamma RK356x.
【Определение】
typedef struct rk_aiq_gamma_attrV21_s {
rk_aiq_gamma_op_mode_t mode;
Agamma_api_manualV21_t stManual;
Agamma_api_Fast_t stFast;
} rk_aiq_gamma_attrV21_t;
【Члены】
| Имя члена | Описание |
|---|---|
| mode | Режим API. |
| stManual | Параметры ручной Gamma. |
| stFast | Параметры быстрого режима. |
9.11.5.7 rk_aiq_gamma_attrV30_t
【Описание】Определяет свойства Gamma RK3588.
【Определение】
typedef struct rk_aiq_gamma_attrV30_s {
rk_aiq_gamma_op_mode_t mode;
Agamma_api_manualV30_t stManual;
Agamma_api_Fast_t stFast;
} rk_aiq_gamma_attrV30_t;
【Члены】
| Имя члена | Описание |
|---|---|
| mode | Режим API. |
| stManual | Параметры ручной Gamma. |
| stFast | Параметры быстрого режима. |
9.11.5.8 rk_aiq_gamma_attr_t
【Описание】Определяет свойства Gamma.
【Определение】
typedef struct rk_aiq_gamma_attr_s {
rk_aiq_uapi_sync_t sync;
rk_aiq_gamma_attrV21_t atrrV21;
rk_aiq_gamma_attrV30_t atrrV30;
} rk_aiq_gamma_attr_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| atrrV21 | Ручные свойства gamma микросхемы RK356x. |
| atrrV30 | Ручные свойства gamma микросхемы RK3588. |
9.12 CCM
9.12.1 Описание функции
Модуль CCM (матрица цветокоррекции) выполняет цветовую коррекцию изображения.
9.12.2 API уровня функций
9.12.2.1 rk_aiq_uapi2_setCCMMode
【Описание】Задаёт режим работы CCM.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setCCMMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| mode | Режим работы, {OP_AUTO, OP_MANUAL}. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Для ручного/автоматического режима см. sample_set_ccm_manual / sample_set_ccm_auto в sample_accm_module.cpp.
9.12.2.2 rk_aiq_uapi2_getCCMMode
【Описание】Получает режим работы CCM.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getCCMMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| mode | Режим работы, {OP_AUTO, OP_MANUAL}. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Получение режима см. в sample_get_ccm_mode файла sample_accm_module.cpp.
9.12.2.3 rk_aiq_uapi2_setMCcCoef
【Описание】Задаёт CCM ручного режима: матрицу цветокоррекции и смещения каналов R/G/B.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setMCcCoef(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_ccm_matrix_t *mccm);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| mccm | CCM ручного режима: матрица цветокоррекции и смещения R/G/B. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Настройку ручной CCM см. в sample_set_ccm_manual_matrix файла sample_accm_module.cpp.
9.12.2.4 rk_aiq_uapi2_getMCcCoef
【Описание】Получает CCM: матрицу цветокоррекции и смещения R/G/B.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getMCcCoef(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_ccm_matrix_t *mccm);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| mccm | CCM: матрица цветокоррекции и смещения R/G/B. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Получение CCM см. в sample_get_ccm_manual_matrix файла sample_accm_module.cpp.
9.12.2.5 rk_aiq_uapi2_getACcmSat
【Описание】Получает насыщенность CCM автоматического режима.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getACcmSat(const rk_aiq_sys_ctx_t* ctx, float
*finalsat);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| finalsat | Насыщенность; в ручном режиме 0. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Насыщенность автоматической CCM см. в sample_get_accm_sat файла sample_accm_module.cpp.
9.12.2.6 rk_aiq_uapi2_getACcmMatrixName
【Описание】Получает имя матрицы CCM автоматического режима.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getACcmMatrixName(const rk_aiq_sys_ctx_t* ctx, char
**ccm_name);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| ccm_name | Имя матрицы CCM. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Оригинал указывает получение насыщенности автоматической CCM через sample_get_accm_matrix_name в sample_accm_module.cpp.
9.12.3 Типы данных API уровня функций
9.12.3.1 opMode_t
【Описание】Определяет режим работы CCM.
【Определение】
typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUAL = 1,
OP_INVAL
} opMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| OP_AUTO | Автоматический режим |
| OP_MANUAL | Ручной режим |
| OP_INVAL | Недопустимое значение |
9.12.3.2 rk_aiq_ccm_matrix_t
【Описание】Определяет матрицу CCM.
【Определение】
typedef struct rk_aiq_ccm_matrix_s {
float ccMatrix[9];
float ccOffsets[3];
} rk_aiq_ccm_matrix_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ccMatrix | Матрица цветокоррекции ручного режима, [-8,7.992]. |
| ccOffsets | Смещения RGB ручного режима, [-4096,4095]. |
9.12.4 API уровня модуля
9.12.4.1 rk_aiq_user_api2_accm_v2_SetAttrib
【Описание】Задаёт свойства CCM.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_accm_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ccm_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Параметры свойств CCM. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_accm.h, rk_aiq_uapi_accm_int.h.
Библиотека: librkaiq.so
【Пример】
Настройку свойств CCM см. в sample_ccm_setCcmAttr файла sample_accm_module.cpp.
9.12.4.2 rk_aiq_user_api2_accm_GetAttrib
【Описание】Получает свойства CCM.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_accm_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ccm_attrib_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства параметров CCM. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_accm.h, rk_aiq_uapi_accm_int.h.
Библиотека: librkaiq.so
【Пример】
Получение свойств CCM см. в sample_ccm_getCcmAttr файла sample_accm_module.cpp.
9.12.4.3 rk_aiq_user_api2_accm_QueryCcmInfo
【Описание】Запрашивает информацию CCM.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_accm_QueryCcmInfo(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ccm_querry_info_t *ccm_querry_info);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| ccm_querry_info | Содержимое запроса CCM. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_accm.h, rk_aiq_uapi_accm_int.h.
Библиотека: librkaiq.so
【Пример】
Запрос информации CCM см. в sample_query_ccm_info файла sample_accm_module.cpp.
9.12.5 Типы данных API уровня модуля
9.12.5.1 rk_aiq_ccm_op_mode_t
【Описание】Определяет режим работы CCM.
【Определение】
typedef enum rk_aiq_ccm_op_mode_s {
RK_AIQ_CCM_MODE_INVALID = 0,
RK_AIQ_CCM_MODE_MANUAL = 1,
RK_AIQ_CCM_MODE_AUTO = 2,
RK_AIQ_CCM_MODE_MAX
} rk_aiq_ccm_op_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_AIQ_CCM_MODE_INVALID | Недействительный режим CCM. |
| RK_AIQ_CCM_MODE_MANUAL | Ручной режим CCM. |
| RK_AIQ_CCM_MODE_AUTO | Автоматический режим CCM. |
9.12.5.2 rk_aiq_ccm_mccm_attrib_t
【Описание】Определяет свойства ручной CCM.
【Определение】
typedef struct rk_aiq_ccm_mccm_attrib_s {
float ccMatrix[9];
float ccOffsets[3];
float y_alpha_curve[17];
float low_bound_pos_bit;
} rk_aiq_ccm_mccm_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ccMatrix | Матрица цветокоррекции, [-8,7.992]. |
| ccOffsets | Смещения RGB, [-4096,4095]. |
| y_alpha_curve | Интенсивность цветокоррекции по яркости пикселя (12bit). [0x0,0x400]; 0x400 — единичная интенсивность, 0x0 — без коррекции. |
| low_bound_pos_bit | Диапазоны яркости точек перегиба кривой для пикселей 12bit: [0,2^low_bound_pos_bit] и [4095-2^low_bound_pos_bit,4095]. Допустимые значения [0,10]. |
9.12.5.3 rk_aiq_ccm_color_inhibition_t
【Описание】Определяет уровень подавления цвета CCM.
【Определение】
typedef struct rk_aiq_ccm_color_inhibition_s {
float sensorGain[RK_AIQ_ACCM_COLOR_GAIN_NUM];
float level[RK_AIQ_ACCM_COLOR_GAIN_NUM];
} rk_aiq_ccm_color_inhibition_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sensorGain | Компонент усиления экспозиции. |
| level | Уровень подавления цвета, [0,100], по умолчанию 0. |
9.12.5.4 rk_aiq_ccm_color_saturation_t
【Описание】Определяет уровень насыщенности автоматической CCM.
【Определение】
typedef struct rk_aiq_ccm_color_saturation_s {
float sensorGain[RK_AIQ_ACCM_COLOR_GAIN_NUM];
float level[RK_AIQ_ACCM_COLOR_GAIN_NUM];
} rk_aiq_ccm_color_saturation_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sensorGain | Компонент усиления экспозиции. |
| level | Уровень насыщенности, [0,100], по умолчанию 100. |
9.12.5.5 rk_aiq_ccm_accm_attrib_t
【Описание】Определяет свойства автоматической CCM.
【Определение】
typedef struct rk_aiq_ccm_accm_attrib_s {
rk_aiq_ccm_color_inhibition_t color_inhibition;
rk_aiq_ccm_color_saturation_t color_saturation;
} rk_aiq_ccm_accm_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| color_inhibition | Уровень подавления цвета CCM. |
| color_saturation | Уровень насыщенности CCM. |
9.12.5.6 rk_aiq_ccm_attrib_t
【Описание】Определяет свойства CCM.
【Определение】
typedef struct rk_aiq_ccm_attrib_s {
rk_aiq_uapi_sync_t sync;
bool byPass;
rk_aiq_ccm_op_mode_t mode;
rk_aiq_ccm_mccm_attrib_t stManual;
rk_aiq_ccm_accm_attrib_t stAuto;
CalibDbV2_Ccm_Para_V2_t stTool;
} rk_aiq_ccm_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Синхронный/асинхронный сигнал; см. определение rk_aiq_uapi_sync_t и раздел «Обзор/Описание API». |
| byPass | Пропуск обработки: true обходит CCM, false включает CCM. |
| mode | Режим {RK_AIQ_CCM_MODE_MANUAL, RK_AIQ_CCM_MODE_AUTO}: ручной либо автоматический. |
| stManual | Конфигурация свойств ручного режима. |
| stAuto | Конфигурация свойств автоматического режима. |
| stTool | Параметры режима инструмента, настройка не требуется. |
9.12.5.7 rk_aiq_ccm_querry_info_t
【Описание】Определяет запрашиваемую информацию CCM.
【Определение】
typedef struct rk_aiq_ccm_querry_info_s {
bool ccm_en;
float ccMatrix[9];
float ccOffsets[3];
float y_alpha_curve[CCM_CURVE_DOT_NUM];
float low_bound_pos_bit;
float color_inhibition_level;
float color_saturation_level;
float finalSat;
char ccmname1[25];
char ccmname2[25];
} rk_aiq_ccm_querry_info_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ccm_en | CCM: true включена, false отключена. |
| ccMatrix | Действующая матрица CCM, [-8,7.992]. |
| ccOffsets | Действующие смещения RGB, [-4096,4095]. |
| y_alpha_curve | Интенсивность цветокоррекции по яркости пикселя (12bit). [0x0,0x400]; 0x400 — единичная интенсивность, 0x0 — без коррекции. |
| low_bound_pos_bit | Диапазоны яркости точек перегиба кривой для пикселей 12bit: [0,2^low_bound_pos_bit] и [4095-2^low_bound_pos_bit,4095]. Допустимые значения [0,10]. |
| color_inhibition_level | Уровень подавления цвета CCM, только автоматический режим. |
| color_saturation_level | Уровень насыщенности CCM, только автоматический режим. |
| finalSat | Насыщенность текущей матрицы, только автоматический режим. |
| ccmname1 | Имя калибровочной матрицы для интерполяции текущей матрицы, только автоматический режим. |
| ccmname2 | Имя калибровочной матрицы для интерполяции текущей матрицы, только автоматический режим. |
9.13 3DLUT
9.13.1 Описание функции
Модуль 3DLUT (трёхмерная таблица поиска) отображает цвета изображения в пространстве RGB.
9.13.2 API уровня функций
9.13.2.1 rk_aiq_uapi2_setLut3dMode
【Описание】Задаёт режим работы 3DLUT.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setLut3dMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| mode | Режим работы, {OP_AUTO, OP_MANUAL}. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Настройку ручного/автоматического режима см. в sample_set_a3dlut_manual / sample_set_a3dlut_auto файла sample_a3dlut_module.cpp.
9.13.2.2 rk_aiq_uapi2_getLut3dMode
【Описание】Получает режим работы 3DLUT.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getLut3dMode(const rk_aiq_sys_ctx_t* ctx, opMode_t
*mode);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| mode | Режим работы | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Оригинал указывает настройку ручного/автоматического режима через sample_get_a3dlut_mode в sample_a3dlut_module.cpp.
9.13.2.3 rk_aiq_uapi2_setM3dLut
【Описание】Задаёт ручную трёхмерную таблицу 3DLUT.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setM3dLut(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_lut3d_table_t *mlut);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| mlut | Трёхмерная таблица поиска. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Настройку ручной 3DLUT см. в sample_set_a3dlut_manual_lut файла sample_a3dlut_module.cpp.
9.13.2.4 rk_aiq_uapi2_getM3dLut
【Описание】Получает трёхмерную таблицу 3DLUT.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getM3dLut(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_lut3d_table_t *mlut);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| mlut | Трёхмерная таблица поиска. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Получение 3DLUT см. в sample_get_a3dlut_lut файла sample_a3dlut_module.cpp.
9.13.2.5 rk_aiq_uapi2_getA3dLutStrth
【Описание】Получает интенсивность коррекции 3DLUT.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getA3dLutStrth(const rk_aiq_sys_ctx_t* ctx, float alpha);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| alpha | Интенсивность коррекции 3DLUT. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Интенсивность 3DLUT см. в sample_get_a3dlut_strength файла sample_a3dlut_module.cpp.
9.13.2.6 rk_aiq_uapi2_getA3dLutName
【Описание】Получает имя таблицы 3DLUT автоматического режима.
【Синтаксис】
XCamReturn rk_aiq_uapi2_getA3dLutName(const rk_aiq_sys_ctx_t* ctx, char *name);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| name | Имя таблицы 3DLUT. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
【Пример】
Получение имени автоматической 3DLUT см. в sample_get_a3dlut_lutname файла sample_a3dlut_module.cpp.
9.13.3 Типы данных API уровня функций
9.13.3.1 opMode_t
【Описание】Определяет режим работы 3DLUT.
【Определение】
typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUALl = 1,
OP_INVAL
} opMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| OP_AUTO | Автоматический режим |
| OP_MANUALl | Ручной режим |
| OP_INVAL | Недопустимое значение |
9.13.3.2 rk_aiq_lut3d_table_t
【Описание】Определяет трёхмерную таблицу 3DLUT.
【Определение】
typedef struct rk_aiq_lut3d_table_s{
unsigned short look_up_table_r[729];
unsigned short look_up_table_g[729];
unsigned short look_up_table_b[729];
} rk_aiq_lut3d_table_t;
【Члены】
| Имя члена | Описание |
|---|---|
| look_up_table_r | Таблица R ручного режима, [0x0,0x3ff]. |
| look_up_table_g | Таблица G ручного режима, [0x0,0xfff]. |
| look_up_table_b | Таблица B ручного режима, [0x0,0x3ff]. |
9.13.4 API уровня модуля
9.13.4.1 rk_aiq_user_api2_a3dlut_SetAttrib
【Описание】Задаёт свойства 3DLUT.
【Синтаксис】
XCamReturn rk_aiq_user_api2_a3dlut_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lut3d_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства параметров 3DLUT. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_a3dlut.h, rk_aiq_uapi_a3dlut_int.h.
Библиотека: librkaiq.so
【Пример】
Настройку 3DLUT см. в sample_3dlut_set3dlutAttr файла sample_a3dlut_module.cpp.
9.13.4.2 rk_aiq_user_api2_a3dlut_GetAttrib
【Описание】Получает свойства 3DLUT.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_a3dlut_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lut3d_attrib_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства параметров 3DLUT. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_a3dlut.h, rk_aiq_uapi_a3dlut_int.h.
Библиотека: librkaiq.so
【Пример】
Получение 3DLUT см. в sample_3dlut_get3dlutAttr и подобных примерах файла sample_a3dlut_module.cpp.
9.13.4.3 rk_aiq_user_api2_a3dlut_Query3dlutInfo
【Описание】Запрашивает информацию 3DLUT.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_a3dlut_Query3dlutInfo(const RkAiqAlgoContext *ctx,
rk_aiq_lut3d_querry_info_t *lut3d_querry_info );
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| lut3d_querry_info | Содержимое запроса 3DLUT. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочные файлы: rk_aiq_user_api2_a3dlut.h, rk_aiq_uapi_a3dlut_int.h.
Библиотека: librkaiq.so
【Пример】
Информацию 3DLUT см. в sample_query_a3dlut_info файла sample_a3dlut_module.cpp.
9.13.5 Типы данных API уровня модуля
9.13.5.1 rk_aiq_lut3d_op_mode_t
【Описание】Определяет режим работы 3DLUT.
【Определение】
typedef enum rk_aiq_lut3d_op_mode_s {
RK_AIQ_LUT3D_MODE_INVALID = 0,
RK_AIQ_LUT3D_MODE_MANUAL = 1,
RK_AIQ_LUT3D_MODE_AUTO = 2,
RK_AIQ_LUT3D_MODE_MAX
} rk_aiq_lut3d_op_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_AIQ_LUT3D_MODE_INVALID | Недействительный режим 3DLUT. |
| RK_AIQ_LUT3D_MODE_MANUAL | Ручной режим 3DLUT. |
| RK_AIQ_LUT3D_MODE_AUTO | Автоматический режим 3DLUT. |
9.13.5.2 rk_aiq_lut3d_mlut3d_attrib_t
【Описание】Определяет свойства ручной 3DLUT.
【Определение】
typedef struct rk_aiq_lut3d_mlut3d_attrib_s {
unsigned short look_up_table_r[729];
unsigned short look_up_table_g[729];
unsigned short look_up_table_b[729];
} rk_aiq_lut3d_mlut3d_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| look_up_table_r | Таблица R ручного режима, [0x0,0x3ff]. |
| look_up_table_g | Таблица G ручного режима, [0x0,0xfff]. |
| look_up_table_b | Таблица B ручного режима, [0x0,0x3ff]. |
9.13.5.3 rk_aiq_lut3d_attrib_t
【Описание】Определяет свойства 3DLUT.
【Определение】
typedef struct rk_aiq_lut3d_attrib_s {
rk_aiq_uapi_sync_t sync;
bool byPass;
rk_aiq_lut3d_op_mode_t mode;
rk_aiq_lut3d_mlut3d_attrib_t stManual;
} rk_aiq_lut3d_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Синхронный/асинхронный сигнал; см. определение rk_aiq_uapi_sync_t и раздел «Обзор/Описание API». |
| byPass | Пропуск обработки: true обходит 3DLUT, false включает. |
| mode | Режим {RK_AIQ_LUT3D_MODE_MANUAL, RK_AIQ_LUT3D_MODE_AUTO}: ручной либо автоматический. |
| stManual | Конфигурация свойств ручного режима. |
9.13.5.4 rk_aiq_lut3d_querry_info_t
【Описание】Определяет запрашиваемую информацию 3DLUT.
【Определение】
typedef struct rk_aiq_lut3d_querry_info_s {
bool lut3d_en;
float alpha;
char name[25];
unsigned short look_up_table_r[729];
unsigned short look_up_table_g[729];
unsigned short look_up_table_b[729];
} rk_aiq_lut3d_querry_info_t;
【Члены】
| Имя члена | Описание |
|---|---|
| lut3d_en | 3DLUT: true включена, false отключена. |
| alpha | Интенсивность коррекции 3DLUT, [0,1.0]; большее значение усиливает коррекцию. В конце исходной строки указано 1.0. |
| name | Имя таблицы 3DLUT, только автоматический режим. |
| look_up_table_r | Таблица канала R, [0x0,0x3ff]. |
| look_up_table_g | Таблица канала G, [0x0,0xfff]. |
| look_up_table_b | Таблица канала B, [0x0,0x3ff]. |
9.14 LDCH
9.14.1 Описание функции
LDCH восстанавливает искажённое изображение, исправляя дисторсию только по горизонтали.
9.14.2 API уровня функций
9.14.2.1 rk_aiq_uapi_setLdchEn
【Описание】Переключатель коррекции горизонтальной дисторсии.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setLdchEn(const rk_aiq_sys_ctx_t* ctx, bool en);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| en | Переключатель коррекции. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.14.2.2 rk_aiq_uapi2_setLdchCorrectLevel
【Описание】Задаёт уровень коррекции горизонтальной дисторсии.
【Синтаксис】
XCamReturn rk_aiq_uapi2_setLdchCorrectLevel(const rk_aiq_sys_ctx_t* ctx, int
correctLevel);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| correctLevel | Уровень коррекции, [0~255]. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_imgproc.h
Библиотека: librkaiq.so
9.14.3 API уровня модуля
9.14.3.1 rk_aiq_user_api2_aldch_SetAttrib
【Описание】Задаёт свойства FEC (так в оригинале; раздел посвящён LDCH).
【Синтаксис】
XCamReturn
rk_aiq_user_api2_aldch_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ldch_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства параметров LDCH. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_aldch.h.
Библиотека: librkaiq.so
9.14.3.2 rk_aiq_user_api2_aldch_GetAttrib
【Описание】Получает свойства FEC (так в оригинале).
【Синтаксис】
XCamReturn
rk_aiq_user_api2_aldch_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ldch_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства параметров LDCH. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_aldch.h.
Библиотека: librkaiq.so
9.14.4 Типы данных API уровня модуля
9.14.4.1 rk_aiq_ldch_attrib_t
【Описание】Конфигурация свойств LDCH.
【Определение】
typedef struct rk_aiq_ldch_cfg_s {
rk_aiq_uapi_sync_t sync;
unsigned int en;
int correct_level;
} rk_aiq_ldch_cfg_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Синхронное/асинхронное выполнение интерфейса; см. rk_aiq_uapi_sync_t и раздел «Обзор/Описание API». |
| en | Включает/отключает LDCH. |
| correct_level | Уровень коррекции LDCH: [0~255]. |
9.15 DeBayer
9.15.1 Описание функции
DeBayer интерполяцией восстанавливает из CFA-изображения датчика RGB с полной информацией каждого пикселя.
Поддерживаются Bayer raw с RGGB, BGGR, GRBG и gbrg. Другие CFA, включая CCCB и RGB-IR, пока не поддерживаются.
9.15.2 API уровня модуля
9.15.2.1 rk_aiq_user_api_adebayer_SetAttrib
【Описание】Задаёт свойства демозаики.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_adebayer_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
adebayer_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства демозаики. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_adebayer.h.
Библиотека: librkaiq.so
9.15.2.2 rk_aiq_user_api_adebayer_GetAttrib
【Описание】Получает свойства демозаики.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_adebayer_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
adebayer_attrib_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства демозаики. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_uapi2_adebayer_int.h.
Библиотека: librkaiq.so
9.15.3 Типы данных
9.15.3.1 rk_aiq_debayer_op_mode_t
【Описание】Определяет режим работы debayer.
【Определение】
typedef enum rk_aiq_debayer_op_mode_s {
RK_AIQ_DEBAYER_MODE_INVALID = 0, /**<
initialization value */
RK_AIQ_DEBAYER_MODE_MANUAL = 1, /**< run manual
lens shading correction */
RK_AIQ_DEBAYER_MODE_AUTO = 2, /**< run auto
lens shading correction */
RK_AIQ_DEBAYER_MODE_MAX
} rk_aiq_debayer_op_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_AIQ_DEBAYER_MODE_INVALID | Недействительный режим Debayer. |
| RK_AIQ_DEBAYER_MODE_MANUAL | Ручной режим Debayer. |
| RK_AIQ_DEBAYER_MODE_AUTO | Автоматический режим Debayer. |
9.15.3.2 adebayer_attrib_manual_t
【Описание】Определяет настраиваемые свойства ручного режима debayer.
【Определение】
typedef struct adebayer_attrib_manual_s {
int8_t filter1[5];
int8_t filter2[5];
uint8_t gain_offset;
uint8_t sharp_strength;
uint8_t hf_offset;
uint8_t offset;
uint8_t clip_en;
uint8_t filter_g_en;
uint8_t filter_c_en;
uint8_t thed0;
uint8_t thed1;
uint8_t dist_scale;
uint8_t cnr_strength;
uint8_t shift_num;
} adebayer_attrib_manual_t;
【Члены】
| Имя члена | Описание |
|---|---|
| filter1 | Фильтр низкочастотного градиента, [-8,7]. |
| filter2 | Фильтр высокочастотного градиента, [-8,7]. |
| gain_offset | Смещение градиента при вычислении веса резкости коэффициента интерполяции G, [0,15]. |
| sharp_strength | Интенсивность резкости интерполяции G; большее значение усиливает её. [0,4]. |
| hf_offset | Направленность интерполяции: меньшие значения вызывают ложные текстуры на ровных участках, большие — ступенчатость краёв. [0,4095]. |
| offset | Смещение ограничения G; большее значение расширяет диапазон ограничения. [0,65535]. |
| clip_en | Ограничение интерполяции G: 0 выключено, 1 включено. |
| filter_g_en | Удаление одиночных выбросов G: 0 выключено, 1 включено. |
| filter_c_en | Удаление ложных цветов: 0 выключено, 1 включено. |
| thed0 | Большее значение снижает вероятность выбора высокочастотного веса. [0,16]. |
| thed1 | Выбор высоко-/низкочастотных весов; большее значение снижает вероятность выбора низкочастотного веса. [0,16]. |
| dist_scale | Большее значение снижает вероятность выбора высокочастотного веса. [0,16]. |
| cnr_strength | Большее значение повышает интенсивность. [0,9]. |
| shift_num | Меньшее значение расширяет диапазон ограничения цветовых разностей. [0,4]. |
9.15.3.3 adebayer_attrib_auto_t
【Описание】Определяет настраиваемые свойства автоматического режима debayer.
【Определение】
typedef struct adebayer_attrib_auto_s {
uint8_t sharp_strength[9];
uint8_t low_freq_thresh;
uint8_t high_freq_thresh;
} adebayer_attrib_auto_t;
【Члены】
| Имя члена | Описание |
|---|---|
| enhance_strength[9] | Усиление деталей/текстур по ISO: индексы 0–8 соответствуют ISO 50, 100, 200, 400, 800, 1600, 3200, 6400, 12800. Большее значение повышает детализацию и чёткость, но также ложные детали. [0~7]. |
| low_freq_thresh | Порог выбора низкочастотного веса; большее значение снижает вероятность его выбора. [0~15]. |
| high_freq_thresh | Порог выбора высокочастотного веса; большее значение снижает вероятность его выбора. [0~15]. |
9.15.3.4 adebayer_attrib_t
【Описание】Определяет настраиваемые свойства debayer.
【Определение】
typedef struct adebayer_attrib_s {
rk_aiq_uapi_sync_t sync;
uint8_t enable;
rk_aiq_debayer_op_mode_t mode;
adebayer_attrib_manual_t stManual;
adebayer_attrib_auto_t stAuto;
} adebayer_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Синхронный/асинхронный режим интерфейса см. в rk_aiq_uapi_sync_t и «Обзор/Описание API». |
| enable | Переключатель debayer: 0 — обход, 1 — включение. |
| mode | Режим работы Debayer. |
| stManual | Свойства конфигурации ручного режима Debaye (написание оригинала). |
| stAuto | Свойства конфигурации автоматического режима debayer. |
9.16 DPCC
9.16.1 Описание функции
Обнаруживает и устраняет дефектные пиксели. См. «Описание функции» раздела 4.6 «DPCC» в Rockchip_Tuning_Guide_ISP30.
9.16.2 API уровня модуля
9.16.2.1 rk_aiq_user_api2_adpcc_SetAttrib
【Описание】Задаёт программные свойства DPCC.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_adpcc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_dpcc_attrib_V20_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Структура программных свойств DPCC. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_adpcc.h.
Библиотека: librkaiq.so
【Описание】
9.16.2.2 rk_aiq_user_api2_adpcc_GetAttrib
【Описание】Получает программные свойства DPCC.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_adpcc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_dpcc_attrib_V20_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Структура программных свойств DPCC. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_adpcc.h.
Библиотека: librkaiq.so
【Описание】
9.16.3 Типы данных
9.16.3.1 rk_aiq_dpcc_attrib_V20_t
【Описание】Определяет свойства устранения дефектных пикселей.
【Определение】
typedef struct rk_aiq_dpcc_attrib_V20_s {
AdpccOPMode_t eMode;
Adpcc_Auto_Attr_t stAuto;
Adpcc_Manual_Attr_t stManual;
rk_aiq_uapi_sync_t sync;
} rk_aiq_dpcc_attrib_V20_t;
【Члены】
| Имя члена | Описание |
|---|---|
| eMode | Определяет режим DPCC; см. AdpccOPMode_t. |
| stAuto | Настройки автоматического режима. |
| stManual | Настройки ручного режима. |
| sync | Синхронное/асинхронное выполнение интерфейса; см. rk_aiq_uapi_sync_t и «Обзор/Описание API». |
9.16.3.2 AdpccOPMode_t
【Описание】Определяет режим DPCC.
【Определение】
typedef enum AdpccOPMode_e {
ADPCC_OP_MODE_INVALID = 0,
ADPCC_OP_MODE_AUTO = 1,
ADPCC_OP_MODE_MANUAL = 2,
ADPCC_OP_MODE_TOOL = 3,
ADPCC_OP_MODE_MAX
} AdpccOPMode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ADPCC_OP_MODE_INVALID | Недействительный режим API. |
| ADPCC_OP_MODE_AUTO | Автоматический режим API. |
| ADPCC_OP_MODE_MANUAL | Ручной режим API. |
| ADPCC_OP_MODE_TOOL | Режим инструмента API. |
| ADPCC_OP_MODE_MAX |
9.16.3.3 Adpcc_basic_params_select_t
【Описание】Определяет свойства базовых параметров DPCC.
【Определение】
typedef struct Adpcc_basic_params_select_s
{
int iso;
unsigned char stage1_enable;
unsigned char grayscale_mode;
unsigned char enable;
unsigned char sw_rk_out_sel;
unsigned char sw_dpcc_output_sel;
unsigned char stage1_rb_3x3;
unsigned char stage1_g_3x3;
unsigned char stage1_incl_rb_center;
unsigned char stage1_incl_green_center;
unsigned char stage1_use_fix_set;
unsigned char stage1_use_set_3;
unsigned char stage1_use_set_2;
unsigned char stage1_use_set_1;
unsigned char sw_rk_red_blue1_en;
unsigned char rg_red_blue1_enable;
unsigned char rnd_red_blue1_enable;
unsigned char ro_red_blue1_enable;
unsigned char lc_red_blue1_enable;
unsigned char pg_red_blue1_enable;
unsigned char sw_rk_green1_en;
unsigned char rg_green1_enable;
unsigned char rnd_green1_enable;
unsigned char ro_green1_enable;
unsigned char lc_green1_enable;
unsigned char pg_green1_enable;
unsigned char sw_rk_red_blue2_en;
unsigned char rg_red_blue2_enable;
unsigned char rnd_red_blue2_enable;
unsigned char ro_red_blue2_enable;
unsigned char lc_red_blue2_enable;
unsigned char pg_red_blue2_enable;
unsigned char sw_rk_green2_en;
unsigned char rg_green2_enable;
unsigned char rnd_green2_enable;
unsigned char ro_green2_enable;
unsigned char lc_green2_enable;
unsigned char pg_green2_enable;
unsigned char sw_rk_red_blue3_en;
unsigned char rg_red_blue3_enable;
unsigned char rnd_red_blue3_enable;
unsigned char ro_red_blue3_enable;
unsigned char lc_red_blue3_enable;
unsigned char pg_red_blue3_enable;
unsigned char sw_rk_green3_en;
unsigned char rg_green3_enable;
unsigned char rnd_green3_enable;
unsigned char ro_green3_enable;
unsigned char lc_green3_enable;
unsigned char pg_green3_enable;
unsigned char sw_mindis1_rb;
unsigned char sw_mindis1_g;
unsigned char line_thr_1_rb;
unsigned char line_thr_1_g;
unsigned char sw_dis_scale_min1;
unsigned char sw_dis_scale_max1;
unsigned char line_mad_fac_1_rb;
unsigned char line_mad_fac_1_g;
unsigned char pg_fac_1_rb;
unsigned char pg_fac_1_g;
unsigned char rnd_thr_1_rb;
unsigned char rnd_thr_1_g;
unsigned char rg_fac_1_rb;
unsigned char rg_fac_1_g;
unsigned char sw_mindis2_rb;
unsigned char sw_mindis2_g;
unsigned char line_thr_2_rb;
unsigned char line_thr_2_g;
unsigned char sw_dis_scale_min2;
unsigned char sw_dis_scale_max2;
unsigned char line_mad_fac_2_rb;
unsigned char line_mad_fac_2_g;
unsigned char pg_fac_2_rb;
unsigned char pg_fac_2_g;
unsigned char rnd_thr_2_rb;
unsigned char rnd_thr_2_g;
unsigned char rg_fac_2_rb;
unsigned char rg_fac_2_g;
unsigned char sw_mindis3_rb;
unsigned char sw_mindis3_g;
unsigned char line_thr_3_rb;
unsigned char line_thr_3_g;
unsigned char sw_dis_scale_min3;
unsigned char sw_dis_scale_max3;
unsigned char line_mad_fac_3_rb;
unsigned char line_mad_fac_3_g;
unsigned char pg_fac_3_rb;
unsigned char pg_fac_3_g;
unsigned char rnd_thr_3_rb;
unsigned char rnd_thr_3_g;
unsigned char rg_fac_3_rb;
unsigned char rg_fac_3_g;
unsigned char ro_lim_3_rb;
unsigned char ro_lim_3_g;
unsigned char ro_lim_2_rb;
unsigned char ro_lim_2_g;
unsigned char ro_lim_1_rb;
unsigned char ro_lim_1_g;
unsigned char rnd_offs_3_rb;
unsigned char rnd_offs_3_g;
unsigned char rnd_offs_2_rb;
unsigned char rnd_offs_2_g;
unsigned char rnd_offs_1_rb;
unsigned char rnd_offs_1_g;
} Adpcc_basic_params_select_t;
9.16.3.4 Adpcc_basic_params_t
【Описание】Определяет свойства базовых параметров DPCC.
【Определение】
typedef struct Adpcc_basic_params_s
{
Adpcc_basic_params_select_t arBasic[DPCC_MAX_ISO_LEVEL];
} Adpcc_basic_params_t;
【Члены】
| Имя члена | Описание |
|---|---|
| arBasic | Базовые параметры DPCC. |
9.16.3.5 Adpcc_bpt_params_t
【Описание】Определяет свойства автоматической DPCC.
【Определение】
typedef struct Adpcc_bpt_params_s
{
unsigned char bpt_rb_3x3;
unsigned char bpt_g_3x3;
unsigned char bpt_incl_rb_center;
unsigned char bpt_incl_green_center;
unsigned char bpt_use_fix_set;
unsigned char bpt_use_set_3;
unsigned char bpt_use_set_2;
unsigned char bpt_use_set_1;
unsigned char bpt_cor_en;
unsigned char bpt_det_en;
unsigned short int bp_number;
unsigned short int bp_table_addr;
unsigned short int bpt_v_addr;
unsigned short int bpt_h_addr;
unsigned int bp_cnt;
} Adpcc_bpt_params_t;
9.16.3.6 dpcc_pdaf_point_t
【Описание】
【Определение】
typedef struct dpcc_pdaf_point_s
{
unsigned char y;
unsigned char x;
} dpcc_pdaf_point_t;
Модуль пока не реализован.
9.16.3.7 Adpcc_pdaf_params_t
【Описание】Определяет свойства PDAF автоматического режима.
【Определение】
typedef struct Adpcc_pdaf_params_s
{
unsigned char sw_pdaf_en;
unsigned char pdaf_point_en[DPCC_PDAF_POINT_NUM];
unsigned short int pdaf_offsety;
unsigned short int pdaf_offsetx;
unsigned char pdaf_wrapy;
unsigned char pdaf_wrapx;
unsigned short int pdaf_wrapy_num;
unsigned short int pdaf_wrapx_num;
dpcc_pdaf_point_t point[DPCC_PDAF_POINT_NUM];
unsigned char pdaf_forward_med;
} Adpcc_pdaf_params_t;
Модуль пока не реализован.
9.16.3.8 CalibDb_Dpcc_Fast_Mode_t
【Описание】Определяет свойства Fast в автоматическом режиме.
【Определение】
typedef struct CalibDb_Dpcc_Fast_Mode_s
{
int fast_mode_en;
int ISO[CALIBDB_DPCC_MAX_ISO_LEVEL];
int fast_mode_single_en;
int fast_mode_single_level[CALIBDB_DPCC_MAX_ISO_LEVEL];
int fast_mode_double_en;
int fast_mode_double_level[CALIBDB_DPCC_MAX_ISO_LEVEL];
int fast_mode_triple_en;
int fast_mode_triple_level[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_Fast_Mode_t;
【Члены】
| Имя поля | Описание |
|---|---|
| Fast_mode_enable | Переключатель Fast_mode: 0 выключает, 1 включает. |
| ISO | ISO сцены. |
| fast_mode_single_en | Удаление одиночных дефектных пикселей: 0 выключено, 1 включено. |
| fast_mode_single_level | Интенсивность удаления одиночных дефектных пикселей, [0,10]. |
| fast_mode_double_en | Удаление пар дефектных пикселей: 0 выключено, 1 включено. |
| fast_mode_double_level | Интенсивность удаления пар дефектных пикселей, [0,10]. |
| fast_mode_triple_en | Удаление групп дефектных пикселей: 0 выключено, 1 включено. |
| fast_mode_triple_level | Интенсивность удаления групп дефектных пикселей, [0,10]. |
9.16.3.9 CalibDb_Dpcc_Sensor_t
【Описание】Определяет свойства Fast в автоматическом режиме.
【Определение】
typedef struct CalibDb_Dpcc_Sensor_s
{
float en;
float max_level;
float iso[CALIBDB_DPCC_MAX_ISO_LEVEL];
float level_single[CALIBDB_DPCC_MAX_ISO_LEVEL];
float level_multiple[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_Sensor_t;
【Члены】
| Имя поля | Описание |
|---|---|
| en | Переключатель DPCC датчика: 0 выключает, 1 включает. |
| max_level | Максимальная интенсивность удаления дефектных пикселей. |
| iso | ISO сцены. |
| level_single | Интенсивность удаления одиночных дефектных пикселей. |
| level_multiple | Интенсивность удаления групп дефектных пикселей. |
9.16.3.10 Adpcc_bpt_params_select_t
【Описание】Определяет свойства Fast, выбранные в автоматическом режиме.
【Определение】
typedef Adpcc_bpt_params_t Adpcc_bpt_params_select_t;
9.16.3.11 Adpcc_pdaf_params_select_t
【Описание】Определяет свойства PDAF, выбранные в автоматическом режиме.
【Определение】
typedef Adpcc_pdaf_params_t Adpcc_pdaf_params_select_t
9.16.3.12 Adpcc_Auto_Attr_t
【Описание】Определяет свойства автоматической DPCC.
【Определение】
typedef struct Adpcc_Auto_Attr_s
{
Adpcc_basic_params_t stBasicParams;
Adpcc_bpt_params_t stBptParams;
Adpcc_pdaf_params_t stPdafParams;
CalibDb_Dpcc_Fast_Mode_t stFastMode;
CalibDb_Dpcc_Sensor_t stSensorDpcc;
Adpcc_basic_params_select_t stBasicSelect;
Adpcc_bpt_params_select_t stBptSelect;
Adpcc_pdaf_params_select_t stPdafSelect;
} Adpcc_Auto_Attr_t;
【Члены】
| Имя члена | Описание |
|---|---|
| stBasicParams | Базовые параметры автоматического режима. |
| stBptParams | Параметры дефектных пикселей автоматического режима. |
| stPdafParams | Параметры PDAF автоматического режима. |
| stFastMode | Параметры быстрого режима в автоматическом режиме. |
| stSensorDpcc | Параметры функции дефектных пикселей датчика в автоматическом режиме. |
| stBasicSelect | Базовые параметры, выбранные автоматически. |
| stBptSelect | Параметры дефектных пикселей, выбранные автоматически. |
| stPdafSelect | Параметры PDAF, выбранные автоматически. |
9.16.3.13 Adpcc_fast_mode_attr_t
【Описание】Определяет свойства быстрого режима при ручном управлении.
【Определение】
typedef struct Adpcc_fast_mode_attr_s
{
bool fast_mode_en;
bool fast_mode_single_en;
int fast_mode_single_level;
bool fast_mode_double_en;
int fast_mode_double_level;
bool fast_mode_triple_en;
int fast_mode_triple_level;
} Adpcc_fast_mode_attr_t;
【Члены】
| Имя поля | Описание |
|---|---|
| Fast_mode_en | Переключатель Fast_mode. |
| fast_mode_single_en | Переключатель удаления одиночных дефектных пикселей. |
| fast_mode_single_level | Интенсивность удаления одиночных дефектных пикселей, [0,10]. |
| fast_mode_double_en | Переключатель удаления пар дефектных пикселей. |
| fast_mode_double_level | Интенсивность удаления пар дефектных пикселей, [0,10]. |
| fast_mode_triple_en | Переключатель удаления групп дефектных пикселей. |
| fast_mode_triple_level | Интенсивность удаления групп дефектных пикселей, [0,10]. |
9.16.3.14 Adpcc_sensor_dpcc_attr_t
【Описание】Определяет свойства функции дефектных пикселей датчика при ручном управлении.
【Определение】
typedef struct Adpcc_sensor_dpcc_attr_s
{
bool en;
int max_level;
int single_level;
int double_level;
} Adpcc_sensor_dpcc_attr_t;
【Члены】
| Имя поля | Описание |
|---|---|
| en | Переключатель DPCC датчика. |
| max_level | Максимальная интенсивность удаления дефектных пикселей. |
| single_level | Интенсивность удаления одиночных дефектных пикселей. |
| double_level | Интенсивность удаления групп дефектных пикселей. |
9.16.3.15 Adpcc_Manual_Attr_t
【Описание】Определяет свойства ручной DPCC.
【Определение】
typedef struct Adpcc_Manual_Attr_s
{
unsigned char enable;
Adpcc_onfly_cfg_t stOnfly;
Adpcc_bpt_params_select_t stBpt;
Adpcc_pdaf_params_select_t stPdaf;
Adpcc_sensor_dpcc_attr_t stSensorDpcc;
} Adpcc_Manual_Attr_t;
【Члены】
| Имя члена | Описание |
|---|---|
| enable | Переключатель DPCC ручного режима. |
| stOnfly | Параметры динамического обнаружения и исправления дефектных пикселей ISP DPCC в ручном режиме. |
| stBptParams | Параметры статической коррекции дефектных пикселей ISP DPCC в ручном режиме. |
| stPdafParams | Параметры функции PDAF SPC модуля ISP DPCC в ручном режиме. |
| stSensorDpcc | Параметры коррекции дефектных пикселей DPCC на стороне датчика в ручном режиме. |
9.16.3.16 Adpcc_onfly_cfg_t
【Описание】Определяет базовые параметры ручной DPCC.
【Определение】
typedef struct Adpcc_onfly_cfg_s {
Adpcc_onfly_mode_t mode;
Adpcc_fast_mode_attr_t fast_mode;
Adpcc_basic_cfg_params_t expert_mode;
} Adpcc_onfly_cfg_t;
【Члены】
| Имя члена | Описание |
|---|---|
| mode | Быстрый либо экспертный режим. |
| fastmode | Настройки быстрого режима при ручном управлении. |
| expert_mode | Настройки экспертного режима. |
9.16.3.17 Adpcc_onfly_mode_t
【Описание】Определяет базовые параметры ручной DPCC.
【Определение】
typedef enum Adpcc_onfly_mode_e {
ADPCC_ONFLY_MODE_FAST = 0, /**< dpcc manual fast
mode */
ADPCC_ONFLY_MODE_EXPERT = 1, /**< dpcc manual expert
mode */
ADPCC_ONFLY_MODE_MAX /**< max */
} Adpcc_onfly_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ADPCC_ONFLY_MODE_FAST | Быстрый режим. |
| ADPCC_ONFLY_MODE_EXPERT | Экспертный режим. |
| ADPCC_ONFLY_MODE_MAX | Недействительная настройка параметра. |
9.16.3.18 CalibDb_Dpcc_Pdaf_t
【Описание】Определяет параметры свойств PDAF SPC инструмента.
【Определение】
typedef struct CalibDb_Dpcc_Pdaf_s
{
unsigned char en;
unsigned char point_en[16];
unsigned short int offsetx;
unsigned short int offsety;
unsigned char wrapx;
unsigned char wrapy;
unsigned short int wrapx_num;
unsigned short int wrapy_num;
unsigned char point_x[16];
unsigned char point_y[16];
unsigned char forward_med;
} CalibDb_Dpcc_Pdaf_t;
9.16.3.19 CalibDb_Dpcc_set_RK_t
【Описание】Определяет свойства алгоритма RK.
【Определение】
typedef struct CalibDb_Dpcc_set_RK_s
{
unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char rb_sw_mindis[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_sw_mindis[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char sw_dis_scale_min[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char sw_dis_scale_max[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_RK_t;
【Члены】
| Имя члена | Описание |
|---|---|
| rb_enable | Переключатель обнаружения дефектных пикселей красного и синего каналов. |
| g_enable | Переключатель обнаружения дефектных пикселей зелёного канала. |
| rb_sw_mindis | Порог 1 дефектных пикселей красного и синего каналов. |
| g_sw_mindis | Порог 1 дефектных пикселей зелёного канала. |
| sw_dis_scale_min | Порог 2 дефектных пикселей. |
| sw_dis_scale_max | Порог 3 дефектных пикселей. |
9.16.3.20 CalibDb_Dpcc_set_LC_t
【Описание】Определяет свойства алгоритма LC.
【Определение】
typedef struct CalibDb_Dpcc_set_LC_s
{
unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char rb_line_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_line_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char rb_line_mad_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_line_mad_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_LC_t;
【Члены】
| Имя члена | Описание |
|---|---|
| rb_enable | Переключатель обнаружения дефектных пикселей красного и синего каналов. |
| g_enable | Переключатель обнаружения дефектных пикселей зелёного канала. |
| rb_line_thr | Порог 1 дефектных пикселей красного и синего каналов. |
| g_line_thr | Порог 1 дефектных пикселей зелёного канала. |
| rb_line_mad_fac | Порог 2 дефектных пикселей красного и синего каналов. |
| g_line_mad_fac | Порог 2 дефектных пикселей зелёного канала. |
9.16.3.21 CalibDb_Dpcc_set_PG_t
【Описание】Определяет свойства алгоритма PG.
【Определение】
typedef struct CalibDb_Dpcc_set_PG_s
{
unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char rb_pg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_pg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_PG_t;
【Члены】
| Имя члена | Описание |
|---|---|
| rb_enable | Переключатель обнаружения дефектных пикселей красного и синего каналов. |
| g_enable | Переключатель обнаружения дефектных пикселей зелёного канала. |
| rb_pg_fac | Порог дефектных пикселей красного и синего каналов. |
| g_pg_fac | Порог дефектных пикселей зелёного канала. |
9.16.3.22 CalibDb_Dpcc_set_RND_t
【Описание】Определяет свойства алгоритма RND.
【Определение】
typedef struct CalibDb_Dpcc_set_RND_s
{
unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char rb_rnd_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_rnd_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char rb_rnd_offs[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_rnd_offs[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_RND_t;
【Члены】
| Имя члена | Описание |
|---|---|
| rb_enable | Переключатель обнаружения дефектных пикселей красного и синего каналов. |
| g_enable | Переключатель обнаружения дефектных пикселей зелёного канала. |
| rb_rnd_thr | Порог 1 дефектных пикселей красного и синего каналов. |
| g_rnd_thr | Порог 1 дефектных пикселей зелёного канала. |
| rb_rnd_offs | Порог 2 дефектных пикселей красного и синего каналов. |
| g_rnd_offs | Порог 2 дефектных пикселей зелёного канала. |
9.16.3.23 CalibDb_Dpcc_set_RG_t
【Описание】Определяет свойства алгоритма RK.
【Определение】
typedef struct CalibDb_Dpcc_set_RG_s
{
unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char rb_rg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_rg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_RG_t;
【Члены】
| Имя члена | Описание |
|---|---|
| rb_enable | Переключатель обнаружения дефектных пикселей красного и синего каналов. |
| g_enable | Переключатель обнаружения дефектных пикселей зелёного канала. |
| rb_rg_fac | Порог дефектных пикселей красного и синего каналов. |
| g_rg_fac | Порог дефектных пикселей зелёного канала. |
9.16.3.24 CalibDb_Dpcc_set_RO_t
【Описание】Определяет свойства алгоритма RO.
【Определение】
typedef struct CalibDb_Dpcc_set_RO_s
{
unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char rb_ro_lim[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char g_ro_lim[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_RO_t;
【Поля】
| Имя члена | Описание |
|---|---|
| rb_enable | Переключатель обнаружения дефектных пикселей красного и синего каналов. |
| g_enable | Переключатель обнаружения дефектных пикселей зелёного канала. |
| rb_ro_lim | Порог дефектных пикселей красного и синего каналов. |
| g_ro_lim | Порог дефектных пикселей зелёного канала. |
9.16.3.25 CalibDb_Dpcc_set_t
【Описание】Определяет свойства условий дефектных пикселей.
【Определение】
typedef struct CalibDb_Dpcc_set_s
{
CalibDb_Dpcc_set_RK_t rk;
CalibDb_Dpcc_set_LC_t lc;
CalibDb_Dpcc_set_PG_t pg;
CalibDb_Dpcc_set_RND_t rnd;
CalibDb_Dpcc_set_RG_t rg;
CalibDb_Dpcc_set_RO_t ro;
} CalibDb_Dpcc_set_t;
【Члены】
| Имя члена | Описание |
|---|---|
| rk | Алгоритм RK. |
| lc | Алгоритм LC. |
| pg | Алгоритм PG. |
| rnd | Алгоритм RND. |
| rg | Алгоритм RG. |
| ro | Алгоритм RO. |
9.16.3.26 CalibDb_Dpcc_Expert_Mode_t
【Описание】Определяет свойства экспертного режима инструмента.
【Определение】
typedef struct CalibDb_Dpcc_Expert_Mode_s
{
float iso[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char stage1_Enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char grayscale_mode;
unsigned char rk_out_sel[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char dpcc_out_sel[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char stage1_rb_3x3[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char stage1_g_3x3[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char stage1_inc_rb_center[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char stage1_inc_g_center[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char stage1_use_fix_set[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char stage1_use_set3[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char stage1_use_set2[CALIBDB_DPCC_MAX_ISO_LEVEL];
unsigned char stage1_use_set1[CALIBDB_DPCC_MAX_ISO_LEVEL];
CalibDb_Dpcc_set_t set[3];
} CalibDb_Dpcc_Expert_Mode_t;
【Поля】
| Имя поля | Описание |
|---|---|
| iso | ISO сцены. |
| stage1_Enable | По умолчанию 1. |
| grayscale_mode | Монохромный режим: 0 выключает, 1 включает. |
| rk_out_sel | Режим определения дефектных пикселей RK: 0 — режим 1, 1 — режим 2, 2 — режим 3. |
| dpcc_out_sel | Режим коррекции дефектных пикселей: 0 — медианный, 1 — RK. |
| stage1_rb_3x3 | По умолчанию 0. |
| stage1_g_3x3 | По умолчанию 0. |
| stage1_inc_rb_center | По умолчанию 1. |
| stage1_inc_g_center | По умолчанию 1. |
| stage1_use_fix_set | Встроенное условие дефектных пикселей: 0 выключено, 1 включено. |
| stage1_use_set3 | Третье условие определения дефектных пикселей в set_cell: 0 выключено, 1 включено. |
| stage1_use_set2 | Второе условие определения дефектных пикселей в set_cell: 0 выключено, 1 включено. |
| stage1_use_set1 | Первое условие определения дефектных пикселей в set_cell: 0 выключено, 1 включено. |
9.16.3.27 CalibDb_Dpcc_t
【Описание】Определяет свойства DPCC инструмента.
【Определение】
typedef struct CalibDb_Dpcc_s
{
int enable;
char version[64];
CalibDb_Dpcc_Fast_Mode_t fast;
CalibDb_Dpcc_Expert_Mode_t expert;
CalibDb_Dpcc_Pdaf_t pdaf;
CalibDb_Dpcc_Sensor_t sensor_dpcc;
} CalibDb_Dpcc_t;
【Члены】
| Имя члена | Описание |
|---|---|
| enable | Включение функции |
| Версия | Версия |
| fast | Быстрый режим. |
| expert | Экспертный режим. |
| pdaf | Условие дефектных пикселей режима PADF SPC (написание PADF сохранено). |
| sensor_dpcc | Параметры коррекции дефектных пикселей DPCC на стороне датчика. |
9.16.3.28 rk_aiq_dpcc_attrib_t
【Описание】Определяет свойства DPCC.
【Определение】
typedef struct rk_aiq_dpcc_attrib_s
{
AdpccOPMode_t eMode;
Adpcc_Auto_Attr_t stAuto;
Adpcc_Manual_Attr_t stManual;
CalibDb_Dpcc_t stTool;
} rk_aiq_dpcc_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| eMode | Режим API |
| stAuto | Автоматический режим DPCC. |
| stManual | Ручной режим DPCC. |
| stTool | Режим инструмента DPCC. |
9.17 LSC
9.17.1 Описание функции
Коррекция затенения объектива устраняет потемнение по краям, вызванное оптическими свойствами и неравномерным преломлением объектива.
9.17.2 API уровня модуля
9.17.2.1 rk_aiq_user_api2_alsc_SetAttrib
【Описание】Задаёт свойства коррекции затенения объектива.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_alsc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lsc_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства коррекции затенения объектива. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_alsc.h.
Библиотека: librkaiq.so
9.17.2.2 rk_aiq_user_api2_alsc_GetAttrib
【Описание】Получает свойства коррекции затенения объектива.
【Синтаксис】
XCamReturn
rk_aiq_user_api2_adebayer_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lsc_attrib_t *attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства коррекции затенения объектива. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_alsc.h.
Библиотека: librkaiq.so
9.17.3 Типы данных
9.17.3.1 rk_aiq_lsc_attrib_t
【Описание】Определяет свойства коррекции затенения объектива ISP.
【Определение】
typedef struct rk_aiq_lsc_attrib_s {
bool byPass;
rk_aiq_lsc_op_mode_t mode;
rk_aiq_lsc_mlsc_attrib_t stManual;
rk_aiq_uapi_sync_t sync;
} rk_aiq_lsc_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Синхронное/асинхронное выполнение интерфейса; см. rk_aiq_uapi_sync_t и раздел «Обзор/Описание API». |
| byPass | Управление LSC: 1 отключает, 0 включает. |
| mode | Настройка режима. |
| stManual | Настройки ручного режима. |
9.17.3.2 rk_aiq_lsc_op_mode_t
【Описание】Определяет режим коррекции затенения объектива ISP.
【Определение】
typedef enum rk_aiq_lsc_op_mode_s {
RK_AIQ_LSC_MODE_INVALID = 0, /**< initialization
value */
RK_AIQ_LSC_MODE_MANUAL = 1, /**< run manual lens
shading correction */
RK_AIQ_LSC_MODE_AUTO = 2, /**< run auto lens
shading correction */
RK_AIQ_LSC_MODE_MAX
} rk_aiq_lsc_op_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RK_AIQ_LSC_MODE_INVALID | Недействительный режим. |
| RK_AIQ_LSC_MODE_MANUAL | Ручной режим |
| RK_AIQ_LSC_MODE_AUTO | Автоматический режим |
9.17.3.3 rk_aiq_lsc_table_t
【Описание】Определяет таблицу коррекции затенения объектива ISP.
【Определение】
typedef struct rk_aiq_lsc_table_s {
unsigned short r_data_tbl[LSC_DATA_TBL_SIZE];
unsigned short gr_data_tbl[LSC_DATA_TBL_SIZE];
unsigned short gb_data_tbl[LSC_DATA_TBL_SIZE];
unsigned short b_data_tbl[LSC_DATA_TBL_SIZE];
} rk_aiq_lsc_table_t;
【Члены】
| Имя члена | Описание |
|---|---|
| r_data_tbl | Таблица коррекции R, [17×17] элементов, диапазон [1~7.99]; старшие 3 бита — целая часть, младшие 8 — дробная. |
| gr_data_tbl | Таблица коррекции GR, [17×17] элементов, диапазон [1~7.99]; старшие 3 бита — целая часть, младшие 8 — дробная. |
| gb_data_tbl | Таблица коррекции GB, [17×17] элементов, диапазон [1~7.99]; старшие 3 бита — целая часть, младшие 8 — дробная. |
| b_data_tbl | Таблица коррекции B, [17×17] элементов, диапазон [1~7.99]; старшие 3 бита — целая часть, младшие 8 — дробная. |
9.18 GIC
9.18.1 Описание функции
GIC исправляет дисбаланс каналов Gr и Gb, улучшая изображение в некоторых сценах.
9.18.2 API уровня модуля
9.18.2.1 rk_aiq_user_api2_agic_v2_SetAttrib
【Описание】Задаёт программные свойства GIC.
【Синтаксис】
XCamReturn rk_aiq_user_api2_agic_v2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
const rkaiq_gic_v2_api_attr_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Структура программных свойств GIC. | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_agic.h.
Библиотека: librkaiq.so
【Описание】
Not.
9.18.2.2 rk_aiq_user_api2_agic_v2_GetAttrib
【Описание】Получает программные свойства gamma.
【Синтаксис】
XCamReturn rk_aiq_user_api2_agic_v2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rkaiq_gic_v2_api_attr_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Структура программных свойств GIC. | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_agic.h.
Библиотека: librkaiq.so
【Описание】
9.18.3 Типы данных API уровня модуля
9.18.3.1 rkaiq_gic_api_op_mode_t
【Описание】Определяет режим GIC.
【Определение】
typedef enum rkaiq_gic_api_op_mode_e {
RKAIQ_GIC_API_OPMODE_OFF = 0,
RKAIQ_GIC_API_OPMODE_AUTO = 1,
RKAIQ_GIC_API_OPMODE_MANUAL = 2,
} rkaiq_gic_api_op_mode_t;
【Члены】
| Имя члена | Описание |
|---|---|
| RKAIQ_GIC_API_OPMODE_OFF | Режим отключения GIC |
| RKAIQ_GIC_API_OPMODE_AUTO | Ручной режим API. |
| RKAIQ_GIC_API_OPMODE_MANUAL | Ручной режим |
9.18.3.2 rkaiq_gic_v2_param_selected_t
【Описание】Автоматические/ручные свойства для RK3588
【Определение】
typedef struct rkaiq_gic_v2_param_selected_s {
uint32_t iso;
uint8_t bypass;
uint8_t gr_ratio;
uint16_t min_busy_thre;
uint16_t min_grad_thr1;
uint16_t min_grad_thr2;
uint16_t k_grad1;
uint16_t k_grad2;
uint16_t gb_thre;
uint16_t maxCorV;
uint16_t maxCorVboth;
uint16_t dark_thre;
uint16_t dark_threHi;
uint16_t k_grad1_dark;
uint16_t k_grad2_dark;
uint16_t min_grad_thr_dark1;
uint16_t min_grad_thr_dark2;
float NoiseScale;
float NoiseBase;
float noiseCurve_0;
float noiseCurve_1;
float globalStrength;
uint16_t diff_clip;
} rkaiq_gic_v2_param_selected_t;
【Члены】
| Имя члена | Описание |
|---|---|
| iso | ISO условий съёмки |
| byPass | Зарезервировано, не используется |
| gr_ratio | Зарезервировано, не используется |
| min_busy_thre | Способность обнаружения сложных участков; диапазон [0, 1023], по умолчанию 160 |
| min_grad_thr1 | Порог 1 количества некраевых участков, управляющий интенсивностью GIC; диапазон [0, 1023], по умолчанию 32 |
| min_grad_thr2 | Порог 2 количества некраевых участков, управляющий интенсивностью GIC; диапазон [0, 1023], по умолчанию 32 |
| k_grad1 | Порог 1 отклика края (горизонтального и вертикального градиентов); диапазон [0, 15], по умолчанию 5 |
| k_grad2 | Порог 2 отклика края (горизонтального и вертикального градиентов); диапазон [0, 15], по умолчанию 1 |
| gb_thre | Коэффициент масштабирования; диапазон [0, 15], по умолчанию 7 |
| maxCorV | Ограничение максимальной компенсации GB на краях; диапазон [0, 1023], по умолчанию 40 |
| maxCorVboth | Ограничение максимальной компенсации GB на плоских (некраевых) участках; диапазон [0, 1023], по умолчанию 8 |
| dark_thre | Порог 1 тёмной области; диапазон [0, 2047], по умолчанию 120 |
| dark_threHi | Порог 2 тёмной области; диапазон [0, 2047], по умолчанию 240 |
| k_grad1_dark | Порог 1 отклика края (горизонтального и вертикального градиентов) в тёмной части; диапазон [0, 15], по умолчанию 6 |
| k_grad2_dark | Порог 2 степени отклика края (горизонтального и вертикального градиентов) в тёмной части; диапазон [0, 15], по умолчанию 1 |
| min_grad_thr_dark1 | Порог 1 количества некраевых участков в тёмной части; диапазон [0, 1023], по умолчанию 64 |
| min_grad_thr_dark2 | Порог 2 количества некраевых участков в тёмной части; диапазон [0, 1023], по умолчанию 32 |
| noiseCurve_0 | Параметр 1 кривой шума |
| noiseCurve_1 | Параметр 2 кривой шума |
| globalStrength | Глобальная регулировка интенсивности компенсации GB; диапазон [0, 2], по умолчанию 1 |
| Имя члена | Описание |
|---|---|
| NoiseScale | По кривой шума получают стандартное отклонение шума текущей точки; noise_std *noise_scale определяет максимальную компенсацию GB |
| NoiseBase | Порог регулировки с подавлением коррекции на краях: к результатам первого и второго градиентов добавляют noise_offset, затем сравнивают. Если хотя бы в одном направлении gradx>2*grady, точка считается краевой и не корректируется |
| diff_clip | Ограничивает максимальную компенсацию GB |
9.18.3.3 rkaiq_gic_v2_api_attr_t
【Описание】Свойства GIC
【Определение】
typedef struct rkaiq_gic_v2_api_attr_s {
rk_aiq_uapi_sync_t sync;
uint8_t gic_en;
rkaiq_gic_api_op_mode_t op_mode;
uint32_t iso_cnt;
rkaiq_gic_v2_param_selected_t auto_params[RKAIQ_GIC_MAX_ISO_CNT];
rkaiq_gic_v2_param_selected_t manual_param;
} rkaiq_gic_v2_api_attr_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| gic_en | Переключатель |
| op_mode | Режим работы |
| iso_cnt | Количество ISO в автоматических параметрах |
| auto_params | Автоматические параметры: один набор на ISO; ПО автоматически вычисляет значения интерполяцией по ISO |
| manual_param | Ручные параметры: постоянно используется этот набор |
9.19 CGC
9.19.1 Описание функций
CGC (Color Gamut Compression, сжатие цветового охвата) позволяет задавать параметры сжатия цветового охвата.
9.19.2 Справочник функционального API
9.19.3 Справочник модульного API
9.19.3.1 rk_aiq_user_api2_acgc_SetAttrib
【Описание】
Задаёт свойства модуля CGC
【Синтаксис】
XCamReturn rk_aiq_user_api2_acgc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapi_acgc_attrib_t attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойства модуля CGC | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_acgc.h
Библиотека: librkaiq.so
【Меры предосторожности】
При attr.param.op_mode = RK_AIQ_OP_MODE_AUTO используются встроенные параметры CGC по умолчанию из AIQ; при attr.param.op_mode = RK_AIQ_OP_MODE_MANUAL параметры CGC можно настраивать.
9.19.3.2 rk_aiq_user_api2_acgc_GetAttrib
【Описание】
Получает текущие свойства модуля CGC
【Синтаксис】
XCamReturn rk_aiq_user_api2_acgc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapi_acgc_attrib_t* attr);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| sys_ctx | Указатель контекста AIQ | Вход |
| attr | Свойство модуля CGC | Выход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api2_acgc.h
Библиотека: librkaiq.so
9.19.4 Типы данных модульного API
9.19.4.1 rk_aiq_uapi_acgc_attrib_t
【Описание】Параметры API модуля CGC
【Определение】
typedef struct rk_aiq_uapi_acgc_attrib_s {
rk_aiq_uapi_sync_t sync;
rk_aiq_acgc_params_t param;
} rk_aiq_uapi_acgc_attrib_t;
【Члены】
| Имя члена | Описание |
|---|---|
| sync | Определение rk_aiq_uapi_sync_t см. в разделе «Обзор/Описание API». |
| rk_aiq_acgc_params_t | Параметр cgc |
9.19.4.2 rk_aiq_acgc_params_t
【Описание】Параметры модуля CGC
【Определение】
typedef struct __cgc_param {
RKAiqOPMode_t op_mode;
bool cgc_ratio_en;
bool cgc_yuv_limit;
} Cgc_Param_t;
typedef Cgc_Param_t rk_aiq_acgc_params_t;
【Члены】
| Имя члена | Описание |
|---|---|
| op_mode | Режим: RK_AIQ_OP_MODE_AUTO (встроенные параметры AIQ) либо RK_AIQ_OP_MODE_MANUAL (параметры, настраиваемые пользователем) |
| cgc_ratio_en | Включать ли режим сжатия цветового охвата; по умолчанию FALSE |
| cgc_yuv_limit | Выводить ли ограниченный диапазон; при cgc_yuv_limit = FALSE CGC обходится. По умолчанию FALSE |
10. Statistics
10.1 Обзор
ISP30 обрабатывает данные изображения, получая статистику для алгоритмов управления 3A (AWB/AE/AF), в общих чертах следующую:

10.2 Описание функций
10.2.1 Статистика AE
Аппаратная статистика AE в основном включает:
Взвешенную гистограмму из 256 интервалов в домене RAW и поблочную статистику средних R/G/B/Y;
10.2.1.1 Статистика AE по RAW-изображению
Статистика модуля делится на поблочную статистику яркости и гистограммы. По поддерживаемому размеру блоков и наличию независимых подокон выделяют режимы big и lite.
Режим big: разбиение на неотдельные подокна от 1X1 до 15X15, по умолчанию 15X15. Каждый блок выдаёт 10bit среднюю яркость R/B и 12bit среднее G. Дополнительно задаются 4 независимых подокна; каждое выдаёт 29-bit сумму яркости R/B и 32-bit сумму G. Для среднего ПО делит сумму на число пикселей соответствующего подокна. Взвешенная гистограмма учитывает число блоков и назначенные веса; счётчик эффективных пикселей каждого интервала яркости имеет 28bit.
Режим lite: разбиение на неотдельные подокна от 1X1 до 5X5, по умолчанию 5X5. Каждый блок выдаёт 10bit среднюю яркость R/B и 12bit среднее G. Независимые подокна не поддерживаются. Взвешенная гистограмма учитывает число блоков и назначенные веса; счётчик эффективных пикселей каждого интервала яркости имеет 28bit.
На платформе 3588 по умолчанию: без HDR — BIG (15X15 неотдельных подокон); HDR из 2 кадров — BIG (15X15); HDR из 3 кадров — BIG для короткого и длинного кадров (15X15), LITE для среднего (5X5).
10.2.2 Статистика AWB
Источник данных аппаратной статистики AWB:
В многокадровом HDR выбирается один из трёх каналов L/M/S.
В линейном режиме имеется только один канал данных.
Статистика собирается по данным после Raw-BLC-LSC.
Аппаратная статистика AWB включает статистику белых точек и блоков.
Статистика белых точек
Записывает суммы RGins и BGains и количество точек белых областей двух размеров для 7 источников света в основном окне.
Записывает суммы RGins и BGains и количество точек белых областей двух размеров для 4 источников света в подокне.
Суммирует RGin и BGain в 4 дополнительных рамках домена UV или XY, а также количество RGins (формулировка количества сохранена из оригинала).
Поблочная статистика: изображение разбивается на 15x15 блоков; для каждого вычисляются средние R, G, B всех точек либо белых точек.
10.2.3 Статистика AF
Аппаратная статистика AFHW Stats:
В многокадровом HDR можно выбрать один из трёх каналов L/M/S либо использовать входные данные после объединения трёх каналов.
В линейном режиме имеется только один канал данных.
Поддерживается вывод FV для 2 настраиваемых частотных полос по горизонтали и 2 по вертикали.
Блок-схема модуля аппаратной статистики AF ISP30

10.3 Справочник API
10.3.1 rk_aiq_uapi_sysctl_get3AStatsBlk
【Описание】
Синхронно получает статистику 3A.
【Синтаксис】
XCamReturn
rk_aiq_uapi_sysctl_get3AStatsBlk(const rk_aiq_sys_ctx_t* ctx, rk_aiq_isp_stats_t
**stats, int timeout_ms);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| stats | Указатель на структуру статистики | Выход |
| timeout_ms | Тайм-аут; -1 означает ожидание без ограничения до появления статистики | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api_sysctl.h
Библиотека: librkaiq.so
10.3.2 rk_aiq_uapi_sysctl_release3AStatsRef
【Описание】
Освобождает полученную статистику 3A; применяется совместно с rk_aiq_uapi_sysctl_get3AStatsBlk.
【Синтаксис】
void
rk_aiq_uapi_sysctl_release3AStatsRef(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_isp_stats_t *stats);
【Параметры】
| Имя параметра | Описание | Вход/выход |
|---|---|---|
| ctx | Указатель контекста AIQ | Вход |
| stats | Указатель на структуру статистики | Вход |
【Возвращаемое значение】
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно |
| Не 0 | Ошибка; см. таблицу кодов ошибок |
【Зависимости】
Заголовочный файл: rk_aiq_user_api_sysctl.h
Библиотека: librkaiq.so
Пример кода
Путь в SDK: external/camera_engine_rkaiq/rkisp_demo/demo/af_algo_demo
10.4 Типы данных
10.4.1 rk_aiq_isp_stats_t
【Описание】Статистика AIQ 3A
【Определение】
typedef struct {
rk_aiq_isp_aec_stats_t aec_stats;
rk_aiq_isp_awb_stats2_v3x_t awb_stats_v3x;
rk_aiq_isp_af_stats_t af_stats;
} rk_aiq_isp_stats_t;
【Члены】
| Имя члена | Описание |
|---|---|
| aec_stats | Статистика AE |
| rk_aiq_isp_awb_stats2_v3x_t | Статистика AWB |
| af_stats | Статистика AF |
10.4.2 RKAiqAecStats_t
【Описание】Данные AE; подробности приведены в описании функций раздела AE.
【Определение】
typedef struct RKAiqAecStats_s {
RkAiqAecHwStatsRes_t ae_data;
RKAiqAecExpInfo_t ae_exp;
} RKAiqAecStats_t;
【Члены】
| Имя члена | Описание |
|---|---|
| ae_data | Аппаратная статистика модуля AE |
| ae_exp | Сведения об экспозиции сенсора модуля AE |
10.4.2.1 RKAiqAecExpInfo_t
【Описание】Сведения о параметрах экспозиции AE
【Определение】
typedef struct RKAiqAecExpInfo_s {
RkAiqExpParamComb_t LinearExp;
RkAiqExpParamComb_t HdrExp[3];
RkAiqIrisParamComb_t Iris;
uint16_t line_length_pixels;
uint32_t frame_length_lines;
float pixel_clock_freq_mhz;
CISFeature_t CISFeature;
RKAiqExpI2cParam_t exp_i2c_params;
} RKAiqAecExpInfo_t;
【Члены】
| Имя члена | Описание |
|---|---|
| LinearExp | Сведения об экспозиции без HDR, включая физические значения и значения регистров в формате RK |
| HdrExp | Сведения об экспозиции HDR, включая физические значения и значения регистров в формате RK; до 3 экспозиций |
| exp_i2c_params | Значения регистров экспозиции сенсора для сторонних реализаций AE |
| line_length_pixels | hts; значение определяется последовательностью настройки сенсора |
| frame_length_lines | vts; значение определяется последовательностью настройки сенсора |
| pixel_clock_freq_mhz | pclk в MHz; значение определяется последовательностью настройки сенсора |
【Меры предосторожности】
HdrExp содержит параметры экспозиции HDR, до 3TO1. Для HDR 2TO1 индекс 0 — короткий кадр, 1 — длинный, 2 недействителен. Для HDR 3TO1 индекс 0 — короткий кадр, 1 — средний, 2 — длинный.
10.4.2.1.1 RkAiqExpParamComb_t
【Описание】Подробные сведения о параметрах экспозиции AE
【Члены】
typedef struct {
RkAiqExpRealParam_t exp_real_params; real value
RkAiqExpSensorParam_t exp_sensor_params;//RK reg value
} RkAiqExpParamComb_t;
| Имя члена | Описание |
|---|---|
| exp_real_params | Физическое значение компонента экспозиции |
| exp_sensor_params | Значение регистра компонента экспозиции сенсора по правилам установки экспозиции RK |
typedef struct RkAiqExpRealParam_s {
float integration_time;
float analog_gain;
float digital_gain;
float isp_dgain;
int iso;
int dcg_mode;
} RkAiqExpRealParam_t;
| Имя члена | Описание |
|---|---|
| integration_time | Время интегрирования экспозиции в секундах (s) |
| analog_gain | Аналоговое/общее усиление сенсора, кратность |
| digital_gain | Цифровое усиление сенсора, кратность. Если оно компенсирует точность аналогового усиления, задаётся 1x, а общее усиление записывается в analog_gain |
| isp_dgain | Цифровое усиление ISP, кратность; сейчас недействительно, по умолчанию 1x |
| iso | Общее усиление; ISO выражает усиление системы с постоянным множителем 50: ISO = Total gain * 50 |
| dcg_mode | Двойное усиление преобразования |
typedef struct RkAiqExpSensorParam_s {
unsigned short fine_integration_time;
unsigned short coarse_integration_time;
unsigned short analog_gain_code_global;
unsigned short digital_gain_global;
unsigned short isp_digital_gain;
} RkAiqExpSensorParam_t;
| Имя члена | Описание |
|---|---|
| fine_integration_time | Регистр дробной части строк времени интегрирования сенсора; требуется только при поддержке дробных строк |
| coarse_integration_time | Регистр времени интегрирования сенсора, число строк |
| analog_gain_code_global | Регистры аналогового усиления сенсора |
| digital_gain_global | Регистры цифрового усиления сенсора |
| isp_digital_gain | Регистр цифрового усиления ISP; временно недействителен |
【Меры предосторожности】
Назначение цифрового усиления различается: у одних сенсоров оно расширяет диапазон чувствительности, у других дополняет точность аналогового усиления. Поэтому здесь цифровое усиление отдельно не выделено: его величина и соответствующие регистры включены в аналоговое усиление.
Режим двойного усиления преобразования имеет три состояния: -1 — сенсор не поддерживает DCG, 0 — LCG, 1 — HCG.
10.4.2.1.2 RKAiqExpI2cParam_t
【Описание】Параметры экспозиции I2c модуля AE (обычно для стороннего AE)
【Определение】
#define MAX_I2CDATA_LEN 64
typedef struct RKAiqExpI2cParam_s {
bool bValid;
unsigned int nNumRegs;
unsigned int RegAddr[MAX_I2CDATA_LEN];
unsigned int AddrByteNum[MAX_I2CDATA_LEN];
unsigned int RegValue[MAX_I2CDATA_LEN];
unsigned int ValueByteNum[MAX_I2CDATA_LEN];
unsigned int DelayFrames[MAX_I2CDATA_LEN];
} RKAiqExpI2cParam_t;
【Члены】
| Имя члена | Описание |
|---|---|
| bValid | Флаг действительности параметров I2c. true: запись регистров через RKAiqExpI2cParam_t (обычно сторонним AE); false: использование параметров регистров в формате RK |
| nNumRegs | Количество записываемых значений регистров |
| AddrByteNum | Битовая длина адреса регистра; не более 64 элементов |
| RegValue | Массив значений регистров, не более 64 элементов |
| ValueByteNum | Битовая длина значения регистра; не более 64 элементов |
| DelayFrames | Массив задержек применения регистров в кадрах, не более 64 элементов |
【Меры предосторожности】
Эти параметры действуют только при true для стороннего приложения AE и bValid. Иначе по умолчанию используются регистры формата RK из RkAiqExpParamComb_t.
Можно задать не более 64 значений регистров.
10.4.2.1.3 RkAiqIrisParamComb_t
【Описание】Параметры диафрагмы AE
【Определение】
typedef struct {
RkAiqPIrisParam_t PIris;
RkAiqDCIrisParam_t DCIris;
} RkAiqIrisParamComb_t;
typedef struct {
int step;
int gain;
bool update;
} RkAiqPIrisParam_t;
typedef struct {
int pwmDuty; //percent value,range = 0-100
bool update;
} RkAiqDCIrisParam_t;
【Члены】
| Имя члена | Вложенные поля | Описание |
|---|---|---|
| PIris | Обновление усиления шага | Параметры P-диафрагмы: регистр шага, эквивалентное усиление шага и флаг обновления шага |
| DCIris | Обновление pwmDuty | Параметры DC-диафрагмы: коэффициент заполнения PWM в диапазоне 1~100 и флаг обновления параметров DC-диафрагмы |
10.4.2.2 RkAiqAecHwStatsRes_t
【Описание】Аппаратная статистика AE
【Определение】
typedef struct RkAiqAecHwStatsRes_s {
Aec_Stat_Res_t chn[3];
Aec_Stat_Res_t extra;
struct yuvae_stat yuvae;
struct sihist_stat sihist;
} RkAiqAecHwStatsRes_t;
【Члены】
| Имя члена | Описание |
|---|---|
| chn[3] | Статистика AE по RAW после BLC и AWB; совместима с HDR и без HDR, до HDR 3TO1 со статистикой S/M/L |
| extra | Статистика AE по RAW до Debayer; в HDR соответствует объединённому кадру |
| yuvae | Поблочная информация AE по RGB до gamma [платформой 3588 не поддерживается]. |
| sihist | Гистограмма AE по RGB до gamma [платформой 3588 не поддерживается] |
【Меры предосторожности】
Aec_Stat_Res_t chn[3]: статистика трёх путей RAW перед HDR Merge. Без HDR действителен индекс 0, остальные нет. При HDR 2TO1: 0 — короткий кадр, 1 — длинный, 2 недействителен. При HDR 3TO1: 0 — короткий кадр, 1 — средний, 2 — длинный путь данных
со статистикой. Перед модулем статистики RAW находятся BLC и AWB, поэтому их усиление влияет на результаты. Aec_Stat_Res_t extra: в HDR это статистика RAW после объединения HDR. Перед ней находятся BLC, AWB, HDRMERGE, TMO и другие модули, усиление которых влияет на результат. При включении AF эта часть статистики недействительна.
На платформе 3588 не поддерживаются поблочная информация и гистограммы RGB до gamma.
10.4.2.2.1 Aec_Stat_Res_t
【Описание】Статистика AE по RAW-изображению
【Определение】
typedef struct Aec_Stat_Res_s {
//rawae
struct rawaebig_stat rawae_big;
struct rawaelite_stat rawae_lite;
//rawhist
struct rawhist_stat rawhist_big;
struct rawhist_stat rawhist_lite;
} Aec_Stat_Res_t;
【Члены】
| Имя члена | Описание |
|---|---|
| rawae_big | Поблочная статистика RAW в режиме BIG |
| rawae_lite | Поблочная статистика RAW в режиме Lite |
| rawhist_big | Гистограмма RAW в режиме BIG |
| rawhist_lite | Гистограмма RAW в режиме Lite |
【Меры предосторожности】
Различия BIG и LITE для RAW описаны в разделе функций. Основные отличия — число блоков статистики средней яркости и поддержка средней яркости независимых подокон. Структуры гистограмм RAW для BIG и LITE одинаковы.
На 3588 по умолчанию без HDR используется BIG (15X15 неотдельных подокон); HDR из 2 кадров — BIG для каждого (15X15); HDR из 3 кадров — BIG для короткого и длинного (15X15), LITE для среднего (5X5).
10.4.2.2.2 rawaebig_stat
【Описание】Статистика big по RAW: средние R/G/B в 15X15 неотдельных подокнах и суммы R/G/B в 4 независимых подокнах
【Определение】
struct rawaebig_stat {
unsigned short channelr_xy[RAWAEBIG_WIN_NUM];
unsigned short channelg_xy[RAWAEBIG_WIN_NUM];
unsigned short channelb_xy[RAWAEBIG_WIN_NUM];
unsigned int channely_xy[RAWAEBIG_WIN_NUM]; //not HW!
unsigned long int wndx_sumr[RAWAEBIG_SUBWIN_NUM];
unsigned long int wndx_sumg[RAWAEBIG_SUBWIN_NUM];
unsigned long int wndx_sumb[RAWAEBIG_SUBWIN_NUM];
unsigned short wndx_channelr[RAWAEBIG_SUBWIN_NUM]; //not HW!
unsigned short wndx_channelg[RAWAEBIG_SUBWIN_NUM]; //not HW!
unsigned short wndx_channelb[RAWAEBIG_SUBWIN_NUM]; //not HW!
unsigned char wndx_channely[RAWAEBIG_SUBWIN_NUM]; //not HW!
};
#define RAWAEBIG_WIN_NUM 225
#define RAWAEBIG_SUBWIN_NUM 4
【Члены】
| Имя члена | Описание |
|---|---|
| channelr_xy | Средняя яркость R блоков неотдельных подокон BIG. Значащих бит: 10bit. |
| channelg_xy | Средняя яркость G блоков неотдельных подокон BIG. Значащих бит: 12bit. |
| channelb_xy | Средняя яркость B блоков неотдельных подокон BIG. Значащих бит: 10bit. |
| wndx_sumr | Сумма яркости R независимых подокон BIG. Значащих бит: 29bit. |
| wndx_sumg | Сумма яркости G независимых подокон BIG. Значащих бит: 32bit. |
| wndx_sumb | Сумма яркости B независимых подокон BIG. Значащих бит: 29bit. |
【Меры предосторожности】
Статистика BIG по RAW содержит только R/G/B. Для Y следует добавить в ПО вычисление по статистическим значениям R/G/B.
Статистика BIG по RAW содержит 15X15 неотдельных подокон. Минимальный размер такого подокна — 16X4.
Статистика BIG по RAW содержит 4 независимых подокна, которые могут перекрываться либо нет. Максимальный размер не должен превышать 2k x 1k.
Параметры структуры channely_xy, wndx_channelr, wndx_channelg, wndx_channelb и wndx_channely вычисляются программно: необходимо добавить код расчёта по аппаратной статистике.
10.4.2.2.3 rawaelite_stat
【Описание】Статистика lite по RAW содержит среднюю яркость R/G/B в 5X5 блоках неотдельных подокон
【Определение】
struct rawaelite_stat {
unsigned short channelr_xy[RAWAELITE_WIN_NUM];
unsigned short channelg_xy[RAWAELITE_WIN_NUM];
unsigned short channelb_xy[RAWAELITE_WIN_NUM];
unsigned int channely_xy[RAWAELITE_WIN_NUM]; not HW!
};
#define RAWAELITE_WIN_NUM 25
【Члены】
| Имя члена | Описание |
|---|---|
| channelr_xy | Средняя яркость R блоков неотдельных подокон Lite. Значащих бит: 10bit. |
| channelg_xy | Средняя яркость G блоков неотдельных подокон Lite. Значащих бит: 12bit. |
| channelb_xy | Средняя яркость B блоков неотдельных подокон Lite. Значащих бит: 10bit. |
【Меры предосторожности】
Статистика lite по RAW содержит только R/G/B в 5X5 неотдельных подокнах. Для Y можно добавить вычисление по R/G/B. Минимальный размер неотдельного подокна — 16X4.
channely_xy в структуре вычисляется программно: следует добавить расчёт по аппаратной статистике.
10.4.2.2.4 rawhist_stat
【Описание】Гистограмма по RAW-изображению
【Определение】
struct rawhist_stat {
unsigned int bins[RAWHIST_BIN_N_MAX];
};
#define RAWHIST_BIN_N_MAX 256
【Члены】
| Имя члена | Описание |
|---|---|
| bins | Гистограмма разбита на 256 интервалов; значащих бит в каждом — 28bit |
10.4.3 rk_aiq_isp_awb_stats2_v3x_t
【Описание】Аппаратная статистика баланса белого: в основном статистика белых точек и блоков
Статистика белых точек
Записывает суммы RGins и BGain и количество точек белых областей двух размеров для 7 источников света в основном окне;
Записывает суммы RGin и BGain и количество точек белых областей двух размеров для 4 источников света в подокне;
Суммы RGin, BGain и количество точек в 4 дополнительных рамках домена UV или XY;
Гистограмма яркости белых точек;
Поблочная статистика: изображение делится на 15x15 блоков (см. схему AWB), для каждого берутся средние R, G, B всех точек либо белых точек.

Рисунок: схема блоков AWB
【Определение】
typedef struct rk_aiq_isp_awb_stats2_v3x_s {
//method1
rk_aiq_awb_stat_wp_res_light_v201_t light[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
int WpNo2[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
//method2
rk_aiq_awb_stat_blk_res_v201_t blockResult[RK_AIQ_AWB_GRID_NUM_TOTAL];
//window in pixel domain
rk_aiq_awb_stat_wp_res_light_v201_t
multiwindowLightResult[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
//window in xy or uv domain
rk_aiq_awb_stat_wp_res_v201_t
excWpRangeResult[RK_AIQ_AWB_STAT_WP_RANGE_NUM_V201];
//wpno histogram
unsigned int WpNoHist[RK_AIQ_AWB_WP_HIST_BIN_NUM];
} rk_aiq_isp_awb_stats2_v3x_t;
【Члены】
| Имя члена | Описание |
|---|---|
| light | Результаты статистики белых точек для разных источников света в основном окне; до RK_AIQ_AWB_MAX_WHITEREGIONS_NUM источников; |
| WpNo2 | Число белых точек в пересечении доменов XY и UV для разных источников света в основном окне, без дробной части. |
| blockResult | Суммы RGB каждого равномерного блока изображения; всего 15x15 (RK_AIQ_AWB_GRID_NUM_TOTAL) блоков, см. схему AWB |
| multiwindowLightResult | Статистика белых точек разных источников света в подокнах (записываются лишь первые 4 источника; все можно записывать с временным разделением), до 4 подокон |
| excWpRangeResult | Статистика точек в excludeWpRange (записываются лишь первые четыре области excludeWpRange), до 4 областей |
| WpNoHist | Гистограмма белых точек: число точек в каждом bin, без дробной части. Регистр xyRangeTypeForWpHist определяет, считать ли точки большой рамки XY либо рамки внутри XY. |
【Меры предосторожности】
Общую статистику белых точек основного окна легко получить преобразованием статистики по всем источникам света.
10.4.4 rk_aiq_awb_stat_wp_res_light_v201_t
【Описание】Определение статистики белых точек при одном источнике света.
【Определение】
typedef struct rk_aiq_awb_stat_wp_res_light_v201_s {
rk_aiq_awb_stat_wp_res_v201_t xYType[RK_AIQ_AWB_XY_TYPE_MAX_V201];
} rk_aiq_awb_stat_wp_res_light_v201_t;
【Члены】
| Имя члена | Описание |
|---|---|
| XYType | Статистика белых точек XY-рамок разного размера для одного источника; максимум RK_AIQ_AWB_XY_TYPE_MAX_V201, то есть 2 рамки. |
10.4.5 rk_aiq_awb_stat_wp_res_v201_t
【Описание】Статистика белых точек XY-рамки заданного размера для источника и не-белых точек в соответствующей области.
【Определение】
typedef struct rk_aiq_awb_stat_wp_res_v201_s {
long long WpNo;
long long RgainValue;
long long BgainValue;
} rk_aiq_awb_stat_wp_res_v201_t;
【Члены】
| Имя члена | Описание |
|---|---|
| WpNo | Число белых точек: 22 целых и 10 дробных бит (в исходнике 10ibit). WpNo = аппаратная статистика белых точек ISP / 2^10. |
| RgainValue | Сумма R белых точек: 22 целых и 10 дробных бит. |
| BgainValue | Сумма G белых точек: 22 целых и 10 дробных бит. |
10.4.6 rk_aiq_awb_stat_blk_res_v201_t
【Описание】Определение статистики каждого блока.
При blkMeasureMode = =RK_AIQ_AWB_BLK_STAT_MODE_ALL_V201 записывается сумма всех точек блока; исходный пробел между знаками равенства сохранён в английском тексте.
При blkMeasureMode = =RK_AIQ_AWB_BLK_STAT_MODE_REALWP_V201 записывается сумма всех белых точек блока.
blkMeasureMode — регистр выбора содержимого статистики блока.
【Определение】
typedef struct rk_aiq_awb_stat_blk_res_v201_s {
long long WpNo;
long long Rvalue;
long long Gvalue;
long long Bvalue;
} rk_aiq_awb_stat_blk_res_v201_t;
【Члены】
| Имя члена | Описание |
|---|---|
| WpNo | Число точек в блоке |
| Rvalue | Сумма R всех точек блока. |
| Gvalue | Сумма RG всех точек блока (обозначение RG исходника). |
| Bvalue | Сумма RB всех точек блока; исходная фраза заканчивается and. |
10.4.7 rk_aiq_af_algo_stat_v30_t
【Описание】Определение статистики AF.
【Определение】
typedef struct {
unsigned int wndb_luma;
unsigned int wndb_sharpness;
unsigned int winb_highlit_cnt;
unsigned int wnda_luma[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int wnda_fv_v1[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int wnda_fv_v2[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int wnda_fv_h1[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int wnda_fv_h2[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int wina_highlit_cnt[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int int_state;
struct timeval focus_starttim;
struct timeval focus_endtim;
struct timeval zoom_starttim;
struct timeval zoom_endtim;
int64_t sof_tim;
int focusCode;
int zoomCode;
bool focusCorrection;
bool zoomCorrection;
float angleZ;
} rk_aiq_af_algo_stat_v30_t;
【Члены】
| Имя члена | Описание |
|---|---|
| wndb_luma | Яркость независимого окна. |
| wndb_sharpness | Резкость независимого окна. |
| winb_highlit_cnt | Число ярких пикселей независимого окна. |
| wnda_luma | Яркость подокон 15*15 основного окна. |
| wnda_fv_v1 | Резкость V1 подокон 15*15 основного окна. |
| wnda_fv_v2 | Резкость V2 подокон 15*15 основного окна. |
| wnda_fv_h1 | Резкость H1 подокон 15*15 основного окна. |
| wnda_fv_h2 | Резкость H2 подокон 15*15 основного окна. |
| wina_highlit_cnt | Число ярких пикселей подокон 15*15 основного окна. |
| int_state | Используется алгоритмом RK AF, можно игнорировать. |
| focus_starttim | Используется алгоритмом RK AF, можно игнорировать. |
| focus_endtim | Используется алгоритмом RK AF, можно игнорировать. |
| zoom_starttim | Используется алгоритмом RK AF, можно игнорировать. |
| zoom_endtim | Используется алгоритмом RK AF, можно игнорировать. |
| sof_tim | Время начала данного кадра в ns. |
| focusCode | Используется алгоритмом RK AF, можно игнорировать. |
| zoomCode | Используется алгоритмом RK AF, можно игнорировать. |
| focusCorrection | Используется алгоритмом RK AF, можно игнорировать. |
| zoomCorrection | Используется алгоритмом RK AF, можно игнорировать. |
| angleZ | Используется алгоритмом RK AF, можно игнорировать. |
11. Отладка и FAQ
11.1 Получение версии
AIQ предоставляет дату выпуска, версии AIQ, парсера IQ и каждого алгоритмического модуля ISP.
11.1.0.1 Краткая версия
strings librkaiq.so | grep -w AIQ
AIQ: v0.1.6
11.1.0.2 Полная версия
1. Библиотека AIQ SDK по умолчанию собрана как Release; измените на Debug, пересоберите и обновите на устройстве.
SDK/external/camera_engine_rkaiq/CMakeLists.txt:
if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
add_definitions(-DBUILD_TYPE_DEBUG)
endif()
Изменить на:
#if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
add_definitions(-DBUILD_TYPE_DEBUG)
#endif()
2. Исходный уровень не печатает версию работающей библиотеки AIQ; настройте уровень xcore для её вывода.
export persist_camera_engine_log=0x1000000ff2
3. Версия, выводимая при запуске AIQ:
************************** VERSION INFOS **************************
version release date: 2020-06-05
AIQ: v0.1.6
IQ PARSER: v1.0.0
RK INTEGRATED ALGO MODULES:
AWB: v0.0.9
AEC: v0.1.1
AF: v0.0.9
AHDR: v0.0.9
ANR: v0.0.9
ASHARP: v0.0.9
ADEHAZE: v0.0.9
AGAMMA: v0.0.9
A3DLUT: v0.0.9
ABLC: v0.0.9
ACCM: v0.0.9
ACGC: v0.0.9
ACP: v0.0.9
ADEBAYER: v0.0.1
ADPCC: v0.0.9
AGIC: v0.0.9
AIE: v0.0.1
ALDCH: v0.0.9
ALSC: v0.0.9
AORB: v0.0.9
AR2Y: v0.0.9
ASD: v0.0.9
AWDR: v0.0.9
************************ VERSION INFOS END ************************
11.1.1 Правила совместимости версий
Правила согласования AIQ, IQ Tool и ISP Driver:
v A . B. C
B задаётся в шестнадцатеричном виде: bit[0:3] — согласование AIQ/IQ Tool, bit[4:7] — AIQ/ISP driver. Например:
ISP driver: v 1. 0x3.0 соответствует AIQ:v1.0x30.0 и AIQ:v1.0x40.0 (исходный пример сохранён).
IQ tool: v 1. 0x3.0 соответствует AIQ:v1.0x33.0 и AIQ:v1.0x30.0. При ненулевом C возможна несовместимость; для IQ Tool рекомендуется сначала версия AIQ с C=0.
11.2 Журнал AIQ
11.2.1 Обзор
AIQ кодирует уровни журнала всех модулей в 64bits; битовая карта и описания приведены ниже.
bit: [63-39] 38 37 36 35 34 33 32 31
mean: [U] [CAMHW][ANALYZER][XCORE][ASD][ACGC][AFEC][AORB][ASHARP]
bit: 30 29 28 27 26 25 24 23 22
mean:[AIE][ACP][ACSM][ALDCH][A3DLUT][ADEHAZE][AWDR][AGAMMA][ACCM]
bit: 21 20 19 18 17 16 15 14 13 12
mean:[ADEBAYER][AGIC][ALSC][ANR][AHDR][ADPCC][ABLC][AF][AWB][AEC]
bit: 11-4 3-0
mean:[sub modules][level]
[U] means unused now.
[level] : use 4 bits to define log levels.
each module log has following ascending levels:
0: error
1: warning
2: info
3: debug
4: verbose
5: low1
6-7: unused, now the same as debug
[sub modules] : use bits 4-11 to define the sub modules of each module,
thespecific meaning of each bit is decided by the module itself. These bitsis
designed to implement the sub module's log switch.
[modules] : AEC, AWB, AF ...
set debug level example:
eg. set module af log level to debug, and enable all sub modules of af:
Android:
setprop persist.vendor.rkisp.log 0x4ff4
Linux:
export persist_camera_engine_log=0x4ff4
And if only want enable the sub module 1 log of af:
Android:
setprop persist.vendor.rkisp.log 0x4014
Linux:
export persist_camera_engine_log=0x4014
Карта выше сохранена из исходника: U в bit[63-39] пока не используется. level занимает 4 бита: 0 error, 1 warning, 2 info, 3 debug, 4 verbose, 5 low1; 6-7 не используются и сейчас эквивалентны debug. sub modules занимают bit4-11; смысл каждого бита и включение журнала определяет модуль. modules включают AEC, AWB, AF и др. Примеры сначала включают все подмодули AF, затем только подмодуль 1; Android использует setprop, Linux — export. Исходник называет 0x4ff4 примером debug, но младшие 4 бита равны 4, соответствующему verbose. Значения сохранены; проверьте SDK.
В Linux уровни и включение журналов модулей задаются переменной среды persist_camera_engine_log.
| Модуль | Журнал Debug | Журнал Verbose |
|---|---|---|
| AE | export persist_camera_engine_log=0x1ff3 | export persist_camera_engine_log=0x1ff4 |
| AWB | export persist_camera_engine_log=0x2ff3 | export persist_camera_engine_log=0x2ff4 |
| AF | export persist_camera_engine_log=0x4ff3 | export persist_camera_engine_log=0x4ff4 |
| HDR | export persist_camera_engine_log=0x20ff3 | export persist_camera_engine_log=0x20ff3 |
| NR | export persist_camera_engine_log=0x40ff3 | export persist_camera_engine_log=0x40ff4 |
| Dehaze | export persist_camera_engine_log=0x2000ff3 | export persist_camera_engine_log=0x2000ff3 |
| Sharp | export persist_camera_engine_log=0x80000ff3 | export persist_camera_engine_log=0x80000ff4 |
| CAMHW | export persist_camera_engine_log=0x4000000ff3 |
export persist_camera_engine_log=0x4000000ff4 |
Команда просмотра текущего уровня журнала:
[root@RV1126_RV1109:/]# echo $persist_camera_engine_log
0x4014
11.2.2 AE
11.2.2.1 Настройка
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Ошибка (Error) | Включено по умолчанию, критические ошибки. |
| Предупреждение (Warning) | По умолчанию выключено: предупреждения об ошибках, которые алгоритм может обработать и продолжить работу. |
| Информация (Info) | По умолчанию выключено. Базовая отладка без покадрового вывода; события сообщают состояние и частоту кадров обычно при инициализации, смене разрешения и параметров. Рекомендуется для контроля состояния и частоты кадров. |
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Отладка (Debug) | По умолчанию выключено. Дополнительно к Info выводит номер кадра, соответствующие экспозицию, яркость статистики AE и результат экспозиции. Подходит для анализа мерцания по непрерывным данным яркости и экспозиции. Поле событий исходника пусто. |
| Подробно (Verbose) | По умолчанию выключено. Дополнительно к Debug выводит покадровые результаты алгоритма. Обычно не требуется; включать, если Debug недостаточно. Поле событий исходника пусто. |
| Бит подмодуля | Описание и рекомендации включения |
|---|---|
| bit[4] | Журнал настройки AE: при чтении IQ или установке API позволяет проверить параметры. |
| bit[5] | Журнал обработки сведений AE: вычисляет показатели среды и изображения по статистике, позволяет читать яркостные данные. |
| bit[6] | Журнал расчёта AE для анализа результата экспозиции. |
| bit[7] | Журнал Airis для проблем регулируемой диафрагмы. |
| bit[8:11] | void |
11.2.2.2 Интерпретация журнала
Исходник разбирает только Debug 0x1ff3 — отладку всех подмодулей AE — из-за ограниченного объёма.
AE LOG линейного режима

Рис. 3-1. AE LOG линейного режима
Рис. 3-1 показывает линейный AE LOG. Строка 1:
Cur-Exp: FrmId=270,gain=0x36a,time=0x576,envChange=0,dcg=-1,pirs=0
Параметры экспозиции текущего кадра.
| Имя поля | Описание |
|---|---|
| FrmId | Номер текущего кадра |
| gain | Регистр усиления экспозиции sensor текущего кадра. |
| time | Регистр выдержки sensor текущего кадра. |
| envChange | Резкое изменение яркости среды: 0 — нет, 1 — есть. |
| dcg | DCG текущего кадра: -1 — не поддерживается sensor либо переключается внутри; 0 — LCG, 1 — HCG. |
| pirs | Позиция двигателя P-iris текущего кадра; при выключенном Airis не действует и не имеет смысла. |
Строка 2:
Last-Res:FrmId=269,gain=0x356,time=0x576,pirs=0
Новые параметры предыдущего запуска AE частично совпадают с (1) и повторно не описываются. Сравнение Line1 и Line2 показывает, совпадает ли текущая экспозиция с новой, то есть вступила ли новая в силу. Строка 3:
================================= Linear-AE (enter)===============================
Вход в алгоритм управления AE; Linear-AE обозначает линейную экспозицию.
Строка 4:
Framenum=270
Cur gain=6.826667,time=0.029987,pirisGain=0,RawMeanluma=29.564444,YuvMeanluma=34.875557,Is Converged=0
| Имя поля | Описание |
|---|---|
| Framenum | Номер текущего кадра |
| gain | Усиление экспозиции sensor текущего кадра. |
| time | Выдержка sensor текущего кадра. |
| pirisGain | Эквивалентное усиление P-iris текущего кадра; при выключенном Airis не действует. |
| RawMeanluma | Яркость RAW перед Debayer после вычитания чёрного и умножения на AWB Gain. |
| YuvMeanluma | Яркость RGB перед Gamma для оценки влияния модулей после debayer на яркость. |
| IsConverged | Сходимость экспозиции: 0 — нет, 1 — достигнута. |
Строка 5:
AecClmExecute: NewExposure(0.180993) SplitGain(6.033096) SplitIntegrationTime(0.030000) SplitPirisGain(0)
| Имя поля | Описание |
|---|---|
| NewExposure | Новая экспозиция, рассчитанная AE. |
| SplitGain | Новое усиление sensor. |
| SplitIntegrationTime | Новая выдержка sensor. |
| SplitPirisGain | Новое эквивалентное усиление P-iris; при выключенном Airis не действует. |
Строка 6:
calc result:SetPoint=22.000000,gain=6.023529,time=0.029987,piris=0,reggain=854,regtime=1398
Окончательно заданная новая экспозиция.
| Имя поля | Описание |
|---|---|
| SetPoint | Целевая яркость |
| gain | Окончательное новое усиление экспозиции. |
| time | Окончательная новая выдержка. |
| piris | Окончательное новое усиление P-iris; при выключенном Airis не действует. |
| reggain | Регистр окончательного нового усиления. |
| regtime | Регистр окончательной новой выдержки. |
Так определяются RawMeanLuma текущего кадра и целевой setpoint; их сравнение даёт новую экспозицию. Далее — AE LOG режима HDR:

Рис. 3-2. AE LOG HDR
Строка 1:
Cur-Exp: FrmId=22,S-gain=0x0,S-time=0x2b6,M-gain=0xb,M-time=0x1a5e,L-gain=0x0,L- time=0x0,envChange=1,dcg=-1--1--1,Piris=0
Параметры экспозиции текущего кадра.
| Имя поля | Описание |
|---|---|
| FrmId | Номер текущего кадра |
| S/M/L-gain | Регистры усиления sensor кадров HDR: S/M для двух кадров, S/M/L для трёх. |
| S/M/L-time | Регистры выдержки sensor кадров HDR: S/M для двух кадров, S/M/L для трёх. |
| envChange | Резкое изменение яркости среды: 0 — нет, 1 — есть. |
| dcg | Три значения DCG относятся к короткому, среднему и длинному кадрам. В двухкадровом режиме первые два относятся к короткому и длинному; в трёхкадровом — ко всем трём. -1 — не поддерживается либо внутреннее переключение; 0 — LCG, 1 — HCG. |
| pirs | Позиция двигателя P-iris текущего кадра; при выключенном Airis не действует и не имеет смысла. |
Строка 2:
Last-Res:FrmId=20,S-gain=0x5,S-time=0x8ca,M-gain=0x11,M-time=0x1a5e,L-gain=0x0,L- time=0x0
Новая экспозиция предыдущего AE; часть полей совпадает с (1). Сравнение Line1/Line2 показывает, вступила ли она в силу.
Строка 3:
================================= HDR-AE (enter)===============================
Вход в алгоритм AE; HDR-AE обозначает режим HDR.
Строка 4:
AecRun: SMeanLuma=9.342692, MMeanLuma=37.698597,LMeanLuma=0.000000,TmoMeanluma=37.571430,Isconverged=0,Longfr m=0
| Имя поля | Описание |
|---|---|
| S/M/LMeanLuma | Средняя яркость кадров HDR: S/M для двух, S/M/L для трёх. |
| TmoMeanluma | Средняя яркость выхода TMO текущего кадра. |
| Isconverged | Сходимость экспозиции кадров HDR: 0 — нет, 1 — достигнута. |
| Longfrm | Режим длинного кадра: 0 — выключен, 1 — включён. |
Строка 5:
Framenum=22 Cur Piris=0, Sgain=1.000000,Stime=0.002570,mgain=1.462177,mtime=0.025000,lgain=1.000000,ltime=0.000000
| Имя поля | Описание |
|---|---|
| Framenum | Номер текущего кадра. |
| s/m/lgain | Усиления sensor текущего HDR: s/m для двух кадров, s/m/l для трёх. |
| s/m/ltime | Выдержки sensor текущего HDR: s/m для двух кадров, s/m/l для трёх. |
| piris | Эквивалентное усиление P-iris текущего кадра; при выключенном Airis не действует. |
Строка 6:
S-HighLightLuma=197.250000,S-Target=100.000000,S-GlobalLuma=9.342692,S-Target=19.959433
LOG управления коротким кадром
| Имя поля | Описание |
|---|---|
| S-HighLightLuma | Яркость светов текущего короткого кадра. |
| S-Target | Целевая яркость светов короткого кадра. |
| S-GlobalLuma | Средняя глобальная яркость короткого кадра. |
| S-Target | Глобальная целевая яркость короткого кадра. |
Строка 7:
L-LowLightLuma=29.626642,L-Target=48.572094,L-GlobalLuma=37.698597,L-Target=77.620155
LOG управления длинным кадром
| Имя поля | Описание |
|---|---|
| L-LowLightLuma | Яркость теней длинного кадра |
| L-Target | Целевая яркость теней длинного кадра. |
| L-GlobalLuma | Средняя глобальная яркость длинного кадра. |
| L-Target | Глобальная целевая яркость длинного кадра. |
Строка 8:
calc result:piris=0,sgain=1.000000,stime=0.005081,mgain=1.862087,mtime=0.025000,lgain=0.000000,lti me=0.000000
Результат экспозиции алгоритма управления AE.
| Имя поля | Описание |
|---|---|
| s/m/lgain | Окончательные новые усиления sensor: s/m для двух кадров, s/m/l для трёх. |
| s/m/ltime | Окончательные новые выдержки sensor: s/m для двух кадров, s/m/l для трёх. |
| piris | Окончательное новое усиление P-iris; при выключенном Airis не действует. |
11.2.3 AWB
11.2.3.1 Настройка
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Ошибка (Error) | Включено по умолчанию, критические ошибки. |
| Предупреждение (Warning) | Включено по умолчанию: предупреждения об ошибках, которые могут обрабатываться внутри. |
| Информация (Info) | По умолчанию выключено: базовая отладка с покадровым wbgain; поля событий и рекомендаций пусты. |
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| debug | По умолчанию выключено. Дополнительно к Info: сходимость WB, яркость среды, число белых точек, общая цветовая температура, вероятности четырёх наиболее вероятных источников и др. После вызова названного в исходнике AWS API печатаются атрибуты; написание AWS сохранено. Уровень удобен при ограниченном размере LOG. |
| Подробно (Verbose) | По умолчанию выключено. Дополнительно к Debug: статистика белых точек каждого источника (усиления WB и количество) и промежуточные результаты стратегии. Поле событий пусто. Рекомендуется для полного отладочного LOG. |
| Бит подмодуля | Описание и рекомендации включения |
|---|---|
| bit[4:11] | void |
11.2.3.2 Интерпретация журнала
См. Rockchip_Color_Optimization_Guide_ISP2x_CN (ссылка исходника).
11.2.4 AF
11.2.4.1 Настройка
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Ошибка (Error) | Включено по умолчанию, критические ошибки. |
| Предупреждение (Warning) | По умолчанию выключено: предупреждения об ошибках, которые могут обрабатываться внутри. |
| Информация (Info) | По умолчанию выключено: базовая отладка с результатом поиска фокуса по кадрам; события и рекомендации пусты. |
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| debug | По умолчанию выключено. Дополнительно к Info: FV и положение двигателя; события — запуск фокуса, поиск резкой позиции, зум, сопровождение фокуса и фокусировка. Рекомендуется для полного отладочного LOG. |
| Подробно (Verbose) | По умолчанию выключено. Дополнительные сведения относительно Debug указаны как None; покадровые сведения, события и рекомендации отсутствуют либо None. |
| Бит подмодуля | Описание и рекомендации включения |
|---|---|
| bit[4:11] | void |
11.2.4.2 Интерпретация журнала
11.2.5 MERGE
11.2.5.1 Настройка
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Информация (Info) | По умолчанию выключено; покадровые данные и события пока не используются, рекомендуется отключить. |
| debug | По умолчанию выключено: покадровая отладка Merge, события не используются. Включать при неверной яркости или недостаточном контрасте после TMO. |
| Подробно (Verbose) | По умолчанию выключено: по исходнику дополнительно к Verbose выводит экспозицию Mrerge, события не используются. Включать для RK при мерцании, подтверждённом AE LOG как связанном с TMO; Mrerge — написание исходника. |
| Бит подмодуля | Описание и рекомендации включения |
|---|---|
| bit[4:11] | void |
11.2.5.2 Интерпретация журнала
Уровень merge для линейного режима:

При HDR с длинным опорным кадром уровень merge — 10000000ff3.

| Название | Описание |
|---|---|
| FrameID | Номер кадра |
| HDRFrameNum | Количество кадров HDR |
| LongFrmMode | Режим длинного кадра: 0 — выключен, 1 — включён. |
| MergeApiMode | Режим API |
| EnvLv | Яркость окружающей среды |
| MoveCoef | Переменные движения |
| byPass | Обход текущего кадра: 0 — выключен, 1 — включён. |
| BaseFrm | Опорный кадр: 0 — длинный, 1 — короткий. |
| OECurve_smooth | Наклон кривой пересвета, [0,200], денормализуется из JSON с коэффициентом 200. |
| OECurve_offset | Смещение кривой пересвета текущего кадра, [108,280]. |
| MDCurveMS_smooth | Наклон кривой между указанным исходником «frame» и коротким кадром, [0,200], денормализация JSON с коэффициентом 200. |
| MDCurveMS_offset | Смещение кривой между «frame» и коротким кадром, [0.26,100], денормализация JSON с коэффициентом 100. |
| MDCurveLM_smooth | Наклон кривой длинного/среднего кадров, [0,200], денормализация JSON с коэффициентом 200. |
| MDCurveLM_offset | Смещение кривой длинного/среднего кадров, [0.26,100], денормализация JSON с коэффициентом 100. |
При HDR с коротким опорным кадром уровень merge — 10000000ff3.

| Название | Описание |
|---|---|
| FrameID | Номер кадра |
| HDRFrameNum | Количество кадров HDR |
| LongFrmMode | Режим длинного кадра: 0 — выключен, 1 — включён. |
| MergeApiMode | Режим API |
| EnvLv | Яркость окружающей среды |
| MoveCoef | Переменные движения |
| byPass | Обход текущего кадра: 0 — выключен, 1 — включён. |
| BaseFrm | Опорный кадр: 0 — длинный, 1 — короткий. |
| OECurve_smooth | Наклон кривой пересвета, [0,200], денормализуется из JSON с коэффициентом 200. |
| OECurve_offset | Смещение кривой пересвета текущего кадра, [108,280]. |
| MDCurve_Coef | Управляющий коэффициент текущего кадра, [0,1], по умолчанию 0.05, точность 0.0001. |
| MDCurve_ms_thd0 | Коэффициент короткого кадра, [0,1], по умолчанию 0.0, точность 0.1. |
| MDCurve_lm_thd0 | Коэффициент длинного кадра, [0,1], по умолчанию 0.0, точность 0.1. |
11.2.6 DRC
11.2.6.1 Настройка
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Информация (Info) | По умолчанию выключено; покадровые данные и события пока не используются, рекомендуется отключить. |
| debug | По умолчанию выключено: покадровая отладка DRC, события не используются. Включать при неверной яркости или недостаточном контрасте после TMO. |
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Подробно (Verbose) | По умолчанию выключено: по исходнику дополнительно к Verbose выводит экспозиционные сведения DRC, события не используются. Включать для RK, когда AE LOG подтверждает мерцание TMO. |
| Бит подмодуля | Описание и рекомендации включения |
|---|---|
| bit[4:11] | void |
11.2.6.2 Интерпретация журнала
При уровне DRC 20ff3:

| Название | Описание |
|---|---|
| FrameID | Номер кадра |
| HDRFrameNum | Количество кадров HDR |
| LongFrmMode | Режим длинного кадра: 0 — выключен, 1 — включён. |
| DRCApiMode | Режим API |
| EnvLv | Яркость окружающей среды |
| byPass | Обход текущего кадра: 0 — выключен, 1 — включён. |
| Enable | Включение DRC |
| DrcGain | Усиление DRC текущего кадра, [1,8]. |
| alpha | Текущий DrcGain Alpha, [0,1]. |
| Clip | Текущий DrcGain Clip, [0,64]. |
| Strength | Детализация светов HiLight текущего кадра, [0,1]. |
| CompressMode | Текущий режим CompressSetting. |
| LocalWeit | Текущий вес Local, [0,1]: 0 — Global, 1 — полностью Local, по умолчанию 0. |
| LocalAutoEnable | Переключатель автоматического LocalWeit, [0,1], по умолчанию 1, точность 1. |
| LocalAutoWeit | Автоматический LocalWeit, [0,1], по умолчанию 0.4, точность 0.01. |
| GlobalContrast | Глобальный контраст текущего кадра, [0,1], по умолчанию 0, точность 0.01. |
| LoLitContrast | Контраст тёмной области (исходное low volume), [0,1], по умолчанию 0, точность 0.01. |
11.2.7 NR и резкость
11.2.7.1 Настройка
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| error | Включено по умолчанию: покадровый вывод критических ошибок, способных вызвать сбой программы. События не используются; рекомендуется включить. |
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Информация (Info) | По умолчанию выключено: все вызовы функций без регистров, большой объём данных. События не используются. При нормальном изображении без ошибок включать не рекомендуется; обычно регистры печатают командой io. |
| debug | По умолчанию выключено. Дополнительно к Info — все вызовы с большим объёмом регистров. События не используются. Включать при серьёзном дефекте изображения для отладки RK. |
| Бит подмодуля | Описание и рекомендации включения |
|---|---|
| bit[4:11] | void |
11.2.7.2 Интерпретация журнала
11.2.8 Dhz&Ehz
11.2.8.1 Настройка
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Информация (Info) | По умолчанию выключено; покадровые данные и события не используются, рекомендация отсутствует. |
| debug | По умолчанию выключено; дополнительно к Info — отладка DHZ & Ehz; события и рекомендации пусты. |
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Подробно (Verbose) | По умолчанию выключено; исходник указывает дополнение к Verbose, но покадровые данные и события не используются, рекомендация пуста. |
| Бит подмодуля | Описание и рекомендации включения |
|---|---|
| bit[4:11] | void |
11.2.8.2 Интерпретация журнала
При включённом Enhance уровень Dehaze — 2000ff3.

| Название | Описание |
|---|---|
| FrameID | Номер кадра |
| byPassProc | Обход текущего кадра: 0 — выключен, 1 — включён. |
| ISO | ISO |
| Включение модуля Dehaze | Переключатель модуля Dehaze |
| Включение Dehaze | Переключатель удаления дымки |
| Включение Enhance | Переключатель улучшения изображения |
| Включение Hist | Переключатель функции Hist. |
| EnvLv | Яркость среды текущего кадра. |
| enhance_value | Общая сила контраста кадра, [0,16], рекомендуется [1,2]. |
| enhance_chroma | Параметр улучшения цветности текущего кадра, [0,16], рекомендуется [1,2]. |
| enhance_value_reg | Значение reg общей силы контраста текущего кадра. |
| enhance_chroma_reg | Значение REG параметра улучшения цветности текущего кадра. |
При включённом Dehaze и cfg_alpha=0 уровень — 2000ff3.

| Название | Описание |
|---|---|
| FrameID | Номер кадра |
| byPassProc | Обход текущего кадра: 0 — выключен, 1 — включён. |
| ISO | ISO |
| Включение модуля Dehaze | Переключатель модуля Dehaze |
| Включение Dehaze | Переключатель удаления дымки |
| Включение Enhance | Переключатель улучшения изображения |
| Включение Hist | Переключатель функции Hist. |
| cfg_alpha | Доля программной конфигурации, [0,1], по умолчанию 1, точность 0.01. |
| EnvLv | Яркость среды текущего кадра. |
| air_max | Верхний предел адаптации AIR, [230,250], по умолчанию 250. |
| air_min | Нижний предел адаптации AIR: исходный диапазон [230,250], значение по умолчанию 200; противоречие сохранено. |
| tmax_base | База адаптации tmax, по умолчанию 125. Соответствия: 200(131), 210(125), 220(119), 230(114), 240(109), 250(105); рекомендуется 131-105. |
| wt_max | Верхний предел адаптации wt, [0.75,0.9], по умолчанию 0.9. |
При включённом Dehaze и cfg_alpha=1 уровень — 2000ff3.

| Название | Описание |
|---|---|
| FrameID | Номер кадра |
| byPassProc | Обход текущего кадра: 0 — выключен, 1 — включён. |
| ISO | ISO |
| Включение модуля Dehaze | Переключатель модуля Dehaze |
| Включение Dehaze | Переключатель удаления дымки |
| Включение Enhance | Переключатель улучшения изображения |
| Включение Hist | Переключатель функции Hist. |
| cfg_alpha | Доля программной конфигурации, [0,1], по умолчанию 1, точность 0.01. |
| EnvLv | Яркость среды текущего кадра. |
| cfg_air | Программный air, коэффициент атмосферного света, [0,255], по умолчанию 210. |
| cfg_tmax | Программный tmax, максимум удаления дымки, [0,1], по умолчанию 0.2. |
| cfg_wt | Программная сила удаления дымки wt, [0,1], по умолчанию 0.8. |
При включённом Hist уровень Dehaze — 2000ff3.

| Название | Описание |
|---|---|
| FrameID | Номер кадра |
| byPassProc | Обход текущего кадра: 0 — выключен, 1 — включён. |
| ISO | ISO |
| Включение модуля Dehaze | Переключатель модуля Dehaze |
| Включение Dehaze | Переключатель удаления дымки |
| Включение Enhance | Переключатель улучшения изображения |
| Включение Hist | Переключатель функции Hist. |
| cfg_alpha | Доля программной конфигурации, [0,1], по умолчанию 1, точность 0.01. |
| EnvLv | Яркость среды текущего кадра. |
| hist_para_en | Включение растяжения гистограммы текущего кадра. |
| hist_gratio | Коэффициент растяжения и управления выравниванием гистограммы, [0,32]. |
| hist_th_off | Порог статистики гистограммы, [0,255], по умолчанию 64. |
| hist_k | Множитель адаптивного порога гистограммы, [0,7), по умолчанию 2. |
| hist_min | Минимальный порог статистики гистограммы, [0,2], по умолчанию 0.016. |
| hist_scale | Коэффициент выравнивания гистограммы, [0,32]. |
| cfg_gratio | Программные коэффициенты растяжения и выравнивания гистограммы, [0,32]. |
11.2.9 CamHW
11.2.9.1 Настройка
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Ошибка (Error) | Включено по умолчанию, критические ошибки. |
| Предупреждение (Warning) | По умолчанию выключено: предупреждения об ошибках, возможно обрабатываемых алгоритмом. |
| Уровень журнала | Описание и рекомендации включения |
|---|---|
| Информация (Info) | По умолчанию выключено: базовая отладка, покадровые сведения, события и рекомендации пусты. |
| Отладка (Debug) | По умолчанию выключено: дополнение к Info, покадровые сведения, события и рекомендации пусты. |
| Подробно (Verbose) | По умолчанию выключено: дополнение к Debug, покадровые сведения и события пусты. Возможен большой объём единовременного вывода; используйте осторожно. |
| Low1 | По умолчанию выключено: дополнение к Debug; покадровые сведения пусты, события показывают путь вызовов функций, рекомендация отсутствует. |
| Бит подмодуля | Описание и рекомендации включения |
|---|---|
| bit[4] | Журнал подмодуля 30, управляющего процессом HWI; рекомендуется включать вместе с перечисленными ниже. |
| bit[5] | Журналы Isp30Params и Isp30PollThread обрабатывают параметры ISP, потоки и события. Полезны при несовпадении параметров с кадрами, ошибках времени и обрывах офлайнового потока обратного чтения. |
| bit[6] | SensorHw относится к sensor; используется при подозрениях на настройки экспозиции CIS. |
| bit[7] | FlashLight относится к подсветке и используется при проблемах её управления. |
| bit[8] | LensHw относится к двигателям объектива и используется при проблемах их управления. |
| bit[9] | Переключатель 30SpThread, зарезервирован для внутренних модулей. |
| bit[10:11] | void |
11.2.9.2 Интерпретация журнала
Подмодуль CamHwIsp20

Этот LOG печатается один раз при загрузке AIQ и показывает связи sensor, ISP и ISPP по топологии media; позволяет проверить обнаружение sensor.

LOG выше показывает новые параметры HWI для драйвера ISP, передаваемые практически каждый кадр. Поля:
| Имя поля | Описание |
|---|---|
| ispparam ens | Биты включения модулей; определения см. HWI/ISP20/rk_isp20_hw.H. |
| en_up | Биты обновления включения: 1 означает необходимость обновить состояние модуля. |
| cfg_up | Биты обновления параметров: 1 означает необходимость обновления. |
| device | Узел video модуля параметров ISP. |

LOG показывает новые параметры HWI для ISPP, также практически каждый кадр; значения полей аналогичны ISP выше.
Подмодуль Isp20PollThread

LOG выводится при запуске обратного чтения кадра и печатается каждый кадр нормальной работы этого режима. Значения:
| Имя поля | Описание |
|---|---|
| frame | ID кадра RAW, начиная с 0. |
| sof_ts | Временная метка SOF кадра. |
| frame_ts | Метка завершения захвата в DDR. |
| readback | Количество обратных чтений ISP. |

LOG показывает оборот RAW buf в режиме обратного чтения и печатается каждый кадр:
| Члены | Описание |
|---|---|
| handle_rx_buf | После обработки кадра ISP буфер возвращается VICAP/isp_tx. |
| dev_index | Индекс устройства длинного, среднего или короткого кадра; одинаковый dev_index в handle_tx_buf и handle_rx_buf обозначает одни данные. |
| sequence | Номер кадра, начиная с 0. |
Подмодуль SensorHw

LOG показывает передачу новой линейной экспозиции драйверу sensor при её появлении. Поля:
| Члены | Описание |
|---|---|
| frameid | Номер кадра события SOF. |
| handle_sof | Обратный вызов SOF один раз за кадр, обрабатывающий настройки экспозиции. |
| Размер exp_list | Число новых выдержек списка, ещё не переданных драйверу. |
| Размер gain_list | Число новых усилений списка, ещё не переданных драйверу. |
| working_mode | Текущий режим: 0 — normal. |
| set_time | Есть ли в SOF новая выдержка для передачи драйверу. |
| set_gain | Есть ли в SOF новое усиление для передачи драйверу. |
| a-gain, time | Новые регистровые значения выдержки и усиления. |
11.3 Получение изображений Raw/YUV
Raw — выход CIS без обработки изображения. Для Bayer raw sensor это данные Bayer RGB 8/12/14 bit. Обычно CIS Raw получают в следующих случаях:
1. При неверном YUV после ISP можно динамически перехватить входящий Raw, чтобы проверить, связана ли проблема с CIS.
2. Перед настройкой качества изображения собирают CIS Raw для калибровки параметров модулей.
11.3.1 Хранение Raw
11.3.1.1 Неупакованный формат
Размещение raw12 на примере фрагмента памяти 4 байта:

Редактируемая расшифровка (в оригинальном рисунке уже есть китайские подписи):
| Биты слова памяти | Pixel | Биты пикселя |
|---|---|---|
| 31:20 | Pixel 0 | 11:0 |
| 19:16 | Pixel 0 | - - - - |
| 15:4 | Pixel 1 | 11:0 |
| 3:0 | Pixel 1 | - - - - |
11.3.1.2 Упакованный формат
Размещение raw12 на примере фрагмента памяти 4 байта:

Редактируемая расшифровка (в оригинальном рисунке уже есть китайские подписи):
| Биты слова памяти | Pixel | Биты пикселя |
|---|---|---|
| 31:24 | Pixel3 | 7:0 |
| 23:12 | Pixel2 | 11:0 |
| 11:0 | Pixel1 | 11:0 |
11.3.1.3 RK-RAW V1.0

Редактируемая расшифровка (в оригинальном рисунке уже есть китайские подписи):
| Имя параметра | Тип | Длина (Byte) | Описание |
|---|---|---|---|
| Identifier | unsigned short | 2 | Фиксировано 0x8080 |
| Header length | unsigned short | 2 | Фиксировано 128 |
| Frame index | unsigned int | 4 | Индекс кадра |
| Width | unsigned short | 2 | Ширина изображения |
| Height | unsigned short | 2 | Высота изображения |
| Bit depth | unsigned char | 1 | Разрядность изображения |
| Bayer format | unsigned char | 1 | 0: BGGR; 1: GBRG; 2: GRBG; 3: RGGB |
| Number of HDR Frame | unsigned char | 1 | 1: линейный, короткий; 2: HDR2, длинный+короткий; 3: HDR3, длинный+средний+короткий |
| Current Frame type | unsigned char | 1 | 1 короткий; 2 средний; 3 длинный |
| Storage type | unsigned char | 1 | 0 упакованный; 1 неупакованный |
| Line stride | unsigned short | 2 | Байты |
| Effective line stride | unsigned short | 2 | Байты |
| Reserved | unsigned char | 107 | Резерв |
| RAW DATA | RAW | W * H * BPP | RAW DATA |
11.3.1.4 RK-RAW V2.0
RK-RAW V2.0 состоит из начального идентификатора, блоков данных и конечного идентификатора.
Определение блока формата
Блок состоит из ID, длины и данных; каждый ID имеет уникальное фиксированное значение.

Редактируемая расшифровка (в оригинальном рисунке уже есть китайские подписи):
| Элемент | Тип | Длина (Byte) | По умолчанию | Описание |
|---|---|---|---|---|
| Начальный идентификатор | u16 | 2 | 0xFF00 | Начало файла |
| ID блока | u16 | 2 | 0xFF01 | Сведения Raw |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| ID блока | u16 | 2 | 0xFF02 | Raw линейного режима |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| ID блока | u16 | 2 | 0xFF03 | Raw короткого кадра HDR2/HDR3 |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| ID блока | u16 | 2 | 0xFF04 | Raw длинного HDR2/среднего HDR3 |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| ID блока | u16 | 2 | 0xFF05 | Raw длинного HDR3 |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| ID блока | u16 | 2 | 0xFF06 | Статистика кадра |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| ID блока | u16 | 2 | 0xFF07 | Формат регистров ISP |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| ID блока | u16 | 2 | 0xFF08 | Регистры ISP |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| ID блока | u16 | 2 | 0xFF09 | Формат регистров ISPP |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| ID блока | u16 | 2 | 0xFF0a | Регистры ISPP |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| ID блока | u16 | 2 | 0xFF0b | Сведения о платформе |
| Длина блока | u32 | 4 | - | |
| Данные блока | ||||
| … | ||||
| Конечный идентификатор | u16 | 2 | 0x00FF | Конец файла |
Не все блоки обязательны, их можно комбинировать. Исходник предлагает минимум три блока, называя их «Raw Blocks», «Raw Blocks» и «Frame Statistics Blocks», и считает такую комбинацию осмысленной. Повтор имени сохранён без догадочной замены.
Определение блока Raw

Редактируемая расшифровка (в оригинальном рисунке уже есть китайские подписи):
| Элемент | Тип | Длина (Byte) | По умолчанию | Описание |
|---|---|---|---|---|
| Версия | u16 | 2 | 0x0200 | 0x0200=v2.0 |
| Имя Sensor | string | 32 | - | Модель Sensor |
| Сцена/свет | string | 32 | - | Сцена/источник света |
| Номер кадра | u32 | 4 | - | Номер кадра |
| Ширина | u16 | 2 | - | Ширина в пикселях |
| Высота | u16 | 2 | - | Высота в пикселях |
| Разрядность | u8 | 1 | - | Разрядность изображения |
| Формат Bayer | u8 | 1 | - | 0 BGGR; 1 GBRG; 2 GRBG; 3 RGGB |
| Кадры HDR | u8 | 1 | - | 1 линейный; 2 длинный+короткий; 3 длинный+средний+короткий |
| Формат хранения | u8 | 1 | - | 0 упакованный; 1 неупакованный |
| Шаг строки | u16 | 2 | - | Байты |
| Эффективный шаг | u16 | 2 | - | Байты |
| Порядок байтов | u8 | 1 | - | 0 big-endian; 1 little-endian |
Определение блока RAW
Сегмент хранит изображение Raw либо buffer fd/виртуальный адрес данных. При вызове API укажите тип содержимого параметром; см. rk_aiq_rawbuf_type_t.

Редактируемая расшифровка (в оригинальном рисунке уже есть китайские подписи):
| Элемент | Тип | Длина (Byte) | Описание |
|---|---|---|---|
| Данные Raw | - | высоташиринаN; неупакованный N=2; упакованный N=bpp/8 | Raw, 0xFF02–0xFF05 |
Определение блока статистики кадра

Редактируемая расшифровка (в оригинальном рисунке уже есть китайские подписи):
| Элемент | Тип | Длина (Byte) | По умолчанию | Описание |
|---|---|---|---|---|
| Версия | u16 | 2 | 0x0200 | Raw: 0x0200=v2.0 |
| Номер кадра | u32 | 4 | - | Номер кадра |
| Normal_Exp | float | 4 | - | Выдержка линейного режима |
| Normal_Gain | float | 4 | - | Усиление линейного режима |
| Normal_Exp_REG | u32 | 4 | - | Регистр выдержки SENSOR линейного режима |
| Normal_Gain_REG | u32 | 4 | - | Регистр усиления SENSOR линейного режима |
| HDR_Exp_L | float | 4 | - | Выдержка длинного кадра HDR3 |
| HDR_Gain_L | float | 4 | - | Усиление длинного HDR3 |
| HDR_Exp_L_REG | u32 | 4 | - | Регистр выдержки длинного HDR3 |
| HDR_Gain_L_REG | u32 | 4 | - | Регистр усиления длинного HDR3 |
| HDR_Exp_M | float | 4 | - | Выдержка среднего HDR3/длинного HDR2 |
| HDR_Gain_M | float | 4 | - | Усиление среднего HDR3/длинного HDR2 |
| HDR_Exp_M_REG | u32 | 4 | - | Регистр выдержки среднего HDR3/длинного HDR2 |
| HDR_Gain_M_REG | u32 | 4 | - | Регистр выдержки среднего HDR3/длинного HDR2 (так в оригинале; имя Gain противоречит описанию, проверить) |
| HDR_Exp_S | float | 4 | - | Выдержка короткого HDR3/HDR2 |
| HDR_Gain_S | float | 4 | - | Усиление короткого HDR3/HDR2 |
| HDR_Exp_S_REG | u32 | 4 | - | Регистр выдержки короткого HDR3/HDR2 |
| HDR_Gain_S_REG | u32 | 4 | - | Регистр выдержки короткого HDR3/HDR2 (так в оригинале; имя Gain противоречит описанию, проверить) |
| AWB_Rgain | float | 4 | - | Усиление WB |
| AWB_Bgain | float | 4 | - | Усиление WB |
Определение блока формата регистров

Редактируемая расшифровка (в оригинальном рисунке уже есть китайские подписи):
| Элемент | Тип | Длина (Byte) | По умолчанию | Описание |
|---|---|---|---|---|
| Версия | u16 | 2 | 0x0200 | 0x0200=v2.0 |
| Номер кадра | u32 | 4 | - | Базовый адрес регистров (так в рисунке) |
| Базовый адрес | u32 | 4 | - | Базовый адрес регистров |
| Адрес смещения | u32 | 4 | - | Начальный адрес смещения |
| Количество | u32 | 4 | - | Число регистров |
Определение блока регистров

Редактируемая расшифровка (в оригинальном рисунке уже есть китайские подписи):
| Элемент | Тип | Длина (Byte) | Описание |
|---|---|---|---|
| Данные регистров | - | - | Данные регистров, 0xFF08/0xFF0a |
Определение блока сведений о платформе

Редактируемая расшифровка (в оригинальном рисунке уже есть китайские подписи):
| Элемент | Тип | Длина (Byte) | Описание |
|---|---|---|---|
| Модель чипа | string | 32 | |
| Версия ISP | string | 32 | |
| Версия AIQ | string | 32 |
11.3.2 Получение данных Raw/YUV
12. Коды ошибок
| Код ошибки | Описание |
|---|---|
| 0 | Успешно |
| -1 | Ошибка |
| -2 | Неверный параметр |
| -3 | Недостаточно памяти |
| -4 | Ошибка файловой операции |
| -5 | Ошибка модуля анализатора |
| -6 | Ошибка модуля ISP |
| -7 | Ошибка драйвера sensor |
| -8 | Ошибка операции с потоком |
| -9 | Ошибка операции IOCTL |
| -10 | Ошибка временной последовательности |
| -20 | Тайм-аут |
| -21 | Выход за диапазон |
| -255 | Неизвестная ошибка |
13. Abbreviations
| Сокращение | Полное название |
|---|---|
| CIS | Сенсор изображения камеры (Camera Image Sensor) |
| RkAiq | Автоматическое качество изображения Rockchip (Rockchip Automatical Image Quality, написание исходника) |
| ISP | Обработка сигнала изображения (Image Signal Process, исходное название) |
| Настройка IQ | Настройка качества изображения |
