Diese Plattformreferenz bewahrt den vollständigen technischen Haupttext der 436-seitigen englischen Quelle V1.2.5 (PDF S. 16–436), einschließlich RK-RAW-Formaten und abschließender Kapitel zu Fehlercodes und Abkürzungen. Ein entsprechendes chinesisches PDF wurde nicht bereitgestellt. Die chinesische, russische und deutsche Fassung sind vollständige Übersetzungen dieser englischen Version; alle 42 technischen Originalabbildungen stammen aus dem englischen PDF, einschließlich dort bereits vorhandener chinesischer Beschriftungen. Zehn bildbasierte RAW-Aufbau-/Formattabellen sind zusätzlich als editierbare Tabellen transkribiert. Keine Ganzseitenbilder ersetzen den Haupttext.
Die Quelle nennt RK3588 / Linux 5.10; BuildRoot und Android sind mit Y, Debian und Yocto mit N gekennzeichnet. Dies sind historische Quellenangaben, keine Unterstützungszusage für jedes BSP. Prüfen Sie für ArmSoM-Platinen zuerst den genauen SoC, die ISP-Generation, Sensor/VCM, Kernel, AIQ-Bibliothek, IQ-Datei und SDK/BSP-Zweig. ArmSoM Sige7 ist eine RK3588-Platine, die APIs und Beispiele dieses Artikels wurden jedoch nicht auf ihrer Hardware validiert. Alle Messungen und Beispiele stammen aus der Quelle; keine Hardwarebefehle oder Kamera-/Motoroperationen wurden ausgeführt.
Unklarheiten der Quelle: Wiederholte API-Überschriften, vermischte ISP-Generationen und Typen sowie widersprüchliche Einheiten, Standardwerte, Protokollstufen und RAW-Feldbeschreibungen bleiben erhalten und sind in den redaktionellen Anmerkungen aufgeführt. Werte und Bezeichner werden nicht stillschweigend korrigiert. Codekommentare bleiben in ihrer Originalsprache. Befehle und APIs können den Kamera- oder Motorzustand verändern; passen und prüfen Sie sie vor Verwendung.
Redaktionelle Anmerkungen · ArmSoM Sige7 · ArmSoM-Kameradokumentation · Rockchip Linux
1. Gesamtüberblick
1.1 Strukturdiagramm

RK3588 VI umfasst als Sammelbegriff für Videoeingangsmodule:
Schnittstellen und Datenerfassung: C/DPHY, DVP, CSI, VICAP
Bildverarbeitung: ISP-0,ISP-1,FEC-0,FEC-1
Der RK3588 ISP gehört zur Version RK ISP v3.0 und wird in der weiteren Dokumentation als ISP30 bezeichnet.
1.2 Betriebsarten
Einzelner ISP, einzelner CIS (CMOS Image Sensor):
RAW-Durchleitungs-/Online-Modus: Die blauen Pfeile im Blockdiagramm zeigen den Datenflusspfad 1.0.
Raw-Rücklese-/Offline-Modus: Die orangefarbenen Pfeile im Blockdiagramm zeigen die Datenflusspfade 1.1 und 1.2.
Dual-ISP-2-in-1-Modus für einen einzelnen CIS:
Im 2-in-1-Modus verarbeiten ISP-0/ISP-1 den linken und rechten Teil eines einzelnen CIS-Bildes getrennt, um CIS mit hoher Auflösung zu unterstützen.
Mehrere CIS:
Ein einzelner ISP verwendet den Raw-Rücklese-/Offline-Modus und kann dadurch mehrere CIS-Eingänge im Zeitmultiplexbetrieb unterstützen.
1.3 Überblick über Leistung und Einschränkungen
Unterstützte Auflösungen und Durchsatz:
| Betriebsart | Durchsatz | Maximale Auflösung |
Kleinste unterstützte Auflösung |
|---|---|---|---|
| Einzelner ISP, einzelner CIS | 16Mega@30fps | 4672x3504 | 208x128 |
| Dual-ISP-2-in-1, einzelner CIS |
32Mega@30fps | 8064x6048 | \ |
Unterstützung für Raw12-Dateneingang.
ISP30 unterstützt die Verarbeitung von Raw12-Daten. Bei Raw14-Eingang werden die niederwertigen Bits für die Raw12-Verarbeitung verworfen. Bei Bilddaten mit weniger als 12 Bit werden die niederwertigen Bits zur Raw12-Verarbeitung ergänzt.
Unterstützung für Bayer-Farb-CIS und Mono-CIS.
Unterstützung für 3-in-1-Mehrbild-HDR. Folgende HDR-CIS-Typen werden unterstützt:
| HDR mit Mehrfachbelichtung | Unterstützung durch RK-Plattform | CIS | Anwendung |
|---|---|---|---|
| Sequential / Framebase HDR | ISP20: RV1109/RV1126 usw. ISP21: RK356X usw. ISP30: RK3588 ISP32: RV1106 |
OV4689 | IPC/CVR |
| Staggered / DOL HDR | ISP20: RV1109/RV1126 usw. ISP21: RK356X usw. ISP30: RK3588 ISP32: RV1106 |
OS04A10 IMX464 AR0239 |
IPC/CVR |
| DCG HDR | ISP20: RV1109/RV1126 usw. ISP21: RK356X usw. ISP30: RK3588 ISP32: RV1106 |
OS04A10 IMX585 |
IPC/CVR |
| SME HDR | N | IMX378 | Verbrauchergeräte |
| BME HDR | N | IMX258 | Verbrauchergeräte |
| QBC HDR | N | OV50C40 IMX586 |
Verbrauchergeräte |
| Lateral overflow HDR | N | AR0821 | IPC |
| Splite-diode pixel HDR | N | OV10640 | CVR |
Geringste Latenz bis zur Benachrichtigung über die ISP30-Datenausgabe nach DDR im Raw-Durchleitungs-/Online-Modus: ungefähr Übertragungszeit eines Bildes/15.
Im ISP-Zeitmultiplexmodus unterstützt ein einzelner ISP bis zu vier Datenquelleneingänge.
Im RAW-Durchleitungs-/Online-Modus beträgt die minimale Bildaustastung 136 Zeilen und die minimale Zeilenaustastung 16 Pixel.
Das CSM-Modul unterstützt keine Umwandlung auf den begrenzten YUV-Wertebereich; Einzelheiten siehe API-Beschreibung des IMGPROC/CSM-Moduls.
2. Überblick
ISP30 umfasst eine Reihe von Bildverarbeitungsalgorithmusmodulen, insbesondere Dunkelstromkorrektur, Defektpixelkorrektur, 3A, HDR, Objektivschattierungskorrektur, Objektivverzeichnungskorrektur, 3DLUT, Rauschunterdrückung (einschließlich RAW-Domäne, Mehrbild-Rauschunterdrückung und Farbrauschunterdrückung), Schärfung usw.
ISP30 umfasst eine Hardwareimplementierung der Algorithmen und einen Teil zur logischen Softwaresteuerung. RkAiq implementiert die logische Softwaresteuerung.
Die Hauptfunktionen des RkAiq-Softwaremoduls sind das Abrufen von Bildstatistiken vom ISP-Treiber, ihre Kombination mit IQ-Abstimmparametern und die Berechnung neuer ISP-, Sensor- und weiterer Hardwareparameter durch eine Reihe von Algorithmen. Dieser Vorgang wird kontinuierlich wiederholt, um schließlich die beste Bildwirkung zu erzielen.
2.1 Funktionsbeschreibung

Abbildung 1-1 ISP21-Systemblockdiagramm
Das gesamte Software-/Hardwareblockdiagramm von ISP30 ist in Abbildung 1-1 dargestellt. Der Sensor liefert einen Datenstrom an ISP HW, das nach einer Reihe von Bildverarbeitungsalgorithmen das Bild ausgibt. RkAiq ruft kontinuierlich statistische Daten von ISP HW ab und erzeugt mit Algorithmen wie 3A neue Parameter zur Rückkopplung an jedes Hardwaremodul. Das Abstimmwerkzeug kann Parameter online in Echtzeit abstimmen; anschließend lässt sich eine neue IQ-Parameterdatei speichern und erzeugen.
2.2 RkAiq-Architektur

Abbildung 1-2 Gesamtarchitektur von RkAiq
1. Das Softwarekonzept von ISP30 RkAiq ist in Abbildung 1-2 dargestellt. Es gliedert sich hauptsächlich in folgende vier Teile:
1. Dynamische Bibliothek RkAiq lib. Diese Bibliothek enthält die Hauptlogik, die Statistiken vom Treiber abruft und an die einzelnen Algorithmusbibliotheken weiterleitet.
2. Integrierte Algorithmusbibliotheken. Die von Rk bereitgestellte statische Algorithmusbibliothek wird standardmäßig bei der dynamischen Bibliothek RkAiq lib registriert.
3. Kundeneigene 3A-Bibliotheken. Kunden können entsprechend der Schnittstellendefinition eigene 3A- oder andere Algorithmusbibliotheken implementieren. Nach Registrierung einer eigenen Algorithmusbibliothek bei der dynamischen Bibliothek RkAiq lib lässt sich über die bereitgestellte Schnittstelle auswählen, ob die eigene oder die Rk-Bibliothek ausgeführt wird.
4. IQ-Datei. Ergebnisdateien der IQ-Abstimmung speichern algorithmusbezogene Parameter sowie einige statische Systemparameter, beispielsweise zum CIS.
2.3 Softwarearchitektur

Abbildung 1-3 Blockdiagramm der Softwarearchitektur
Das ISP30-Softwareblockdiagramm in Abbildung 1-3 gliedert sich hauptsächlich in folgende drei Schichten:
1. Kernelschicht. Sie enthält alle Hardwaretreiber des Kamerasystems, insbesondere ISP-, Sensor-, VCM-, Blitzlicht- und IrCutter-Treiber usw. Die Treiber basieren auf V4L2 und dem Media-Framework.
2. Framework-Schicht. Diese Schicht integriert RkAiq lib auf zwei mögliche Arten:
IspServer-Modus: Rkaiq lib läuft in einem eigenständigen IspServer-Prozess, mit dem der Client über dbus kommuniziert. Außerdem kann dieser Ansatz bestehenden Drittanwendungen wie v4L-CTL ohne Quellcodeänderung Bilder mit ISP-Abstimmwirkung bereitstellen.
Direkte Integration: RkAiq lib kann direkt in Anwendungen integriert werden.
3. Benutzerschicht. Anwendungsschicht des Benutzers.
2.4 Softwareabläufe

Abbildung 1-4 Ablaufdiagramm
Der Aufrufablauf der RkAiq-Schnittstellen ist in Abbildung 1-4 dargestellt. Gestrichelt umrahmte Teile sind optional; die blaue Schrift kennzeichnet die Konfiguration, die die Anwendung zusammen mit dem RkAiq-Ablauf verwenden muss.
configure media pipeline: Optional die ISP30-Pipeline konfigurieren, beispielsweise die Sensorausgangsauflösung; der Treiber besitzt eine Standardkonfiguration. rk_aiq_uapi2_sysctl_init: RkAiq einschließlich der IQ-Abstimmparameter und verschiedener Algorithmusbibliotheken initialisieren. other Aiq or algo params uapis: Optional erforderliche Parameter über die APIs der einzelnen Algorithmen konfigurieren und Drittanbieter-Algorithmusbibliotheken registrieren. rk_aiq_uapi2_sysctl_prepare: Die Initialisierungsparameter jeder Algorithmusbibliothek und jedes Hardwaremoduls vorbereiten und an den Treiber übergeben.
video capture start: Dieser Vorgang aktiviert den ISP-Datenfluss der Anwendung und muss nach rk_aiq_uapi2_sysctl_prepare aufgerufen werden.
rk_aiq_uapi2_sysctl_start: Den internen RkAiq-Ablauf starten. Nach erfolgreichem Schnittstellenaufruf beginnt der Sensor mit der Datenausgabe; der ISP verarbeitet die Daten und gibt das verarbeitete Bild aus.
Rkaiq running: RkAiq ruft kontinuierlich Statistiken vom ISP-Treiber ab, berechnet mit Algorithmen wie 3A neue Parameter und wendet sie auf den Treiber an. PC Online Tuning Tool: Der PC kann die Parameter online über das Abstimmwerkzeug anpassen. video capture stop: Vor dem Stoppen des RkAiq-Ablaufs muss der Datenfluss angehalten werden. rk_aiq_uapi2_sysctl_stop: Den laufenden RkAiq-Ablauf stoppen. Sie können Parameter anpassen und erneut starten oder direkt erneut starten.
rk_aiq_uapi2_sysctl_deinit: RkAiq deinitialisieren.
2.5 API-Beschreibung
Die von RKAiq bereitgestellten APIs sind in zwei Ebenen unterteilt: funktionsbezogene und modulbezogene APIs.
Funktionsbezogene API: Kapselt modulbezogene APIs und richtet sich hauptsächlich an Produktanwendungen mit einfachen, auf Modulfunktionen basierenden Aufgaben.
Modulbezogene API: Detaillierte Parametereinstellung und -abfrage für das jeweilige Modul ohne funktionale Unterteilung der API.
Die modulbezogenen APIs von RKAiq unterstützen synchrone und asynchrone Modi. Funktionsbezogene APIs kapseln standardmäßig den synchronen Modus der modulbezogenen APIs.
Synchroner Modus (Sync): Diese API arbeitet blockierend. AIQ aktualisiert Parameter grundsätzlich bildweise; im synchronen Modus kann der aufrufende Thread für eine Zeit <= der Videobildperiode blockiert werden.
Asynchroner Modus (ASync): Diese API arbeitet nicht blockierend. Das AIQ-Framework speichert API-Einstellparameter im internen Parameterpuffer und überträgt zum jeweiligen Zeitpunkt die neuesten ISP-Parameter an die Hardware.
Hinweise zur Verwendung synchroner und asynchroner Modi modulbezogener APIs
Die zweite Parameterstruktur einer modulbezogenen API enthält gewöhnlich die Einstellparameter und wird Eigenschaftsstruktur genannt. Ihre internen rk_aiq_uapi_sync_t-Elemente konfigurieren den Aufrufmodus der jeweiligen API; Einzelheiten enthalten folgende Datentypen:
2.5.1 rk_aiq_uapi_sync_t
【Beschreibung】 Synchronisationsmodus des Moduls
【Definition】
typedef struct rk_aiq_uapi_sync_s {
rk_aiq_uapi_mode_sync_e sync_mode;
bool done;
} rk_aiq_uapi_sync_t;
【Felder】
| Elementname | Beschreibung |
|---|---|
| sync_mode | @setAttrib: Kennzeichen für den Parameteraktualisierungsmodus; RK_AIQ_UAPI_MODE_DEFAULT: Standardmäßig synchroner Modus. RK_AIQ_UAPI_MODE_SYNC: Synchroner Modus. RK_AIQ_UAPI_MODE_ASYNC: Asynchroner Modus. @getAttrib: RK_AIQ_UAPI_MODE_DEFAULT: Standardmäßig zuletzt gesetzte Eigenschaften abrufen (sync_mode == RK_AIQ_UAPI_MODE_ASYNC); möglicherweise noch nicht wirksam. RK_AIQ_UAPI_MODE_SYNC: Aktuell verwendete Eigenschaften abrufen. RK_AIQ_UAPI_MODE_ASYNC: Wie RK_AIQ_UAPI_MODE_DEFAULT. |
| done | @done (parsm out): Kennzeichen für den Parameteraktualisierungsstatus; true bei aktualisierten Parametern, false bei noch nicht aktualisierten Parametern. |
Der AIQ-API-Referenzcode ist nach Modulen gegliedert und enthält separate API-Beispiele; Kunden wird empfohlen, diese direkt als Referenz zu verwenden.
rkisp_demo/demo/sample
| Dateiname | Modul |
|---|---|
| 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 | Dunstentfernung & Verbesserung |
| sample_agamma_module.cpp | Gamma |
| sample_awb_module.cpp | AWB |
| sample_ae_module.cpp | AE |
| sample_af_module.cpp | AF |
3. Systemsteuerung
3.1 Funktionsüberblick
Die Systemsteuerung umfasst die Konfiguration allgemeiner AIQ-Eigenschaften, Initialisierung, Ausführung und Beendigung von AIQ, Einstellung von AIQ-Modulen und weitere Funktionen.
3.2 API-Referenz
3.2.1 rk_aiq_uapi2_sysctl_preInit
【Beschreibung】 Vor der AIQ-Initialisierung einige Parameter voreinstellen, beispielsweise die verwendete IQ-Datei.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_preInit (const char* sns_ent_name,
rk_aiq_working_mode_t mode,
const char* force_iq_file);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sns_ent_name | Sensor-Entitätsname | Eingabe |
| mode | ISP-Betriebsart | Eingabe |
| force_iq_file | Erzwungene IQ-Datei | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
【Hinweis】
Muss vor rk_aiq_uapi2_sysctl_init aufgerufen werden.
Der Parameter mode dient nur zur Auswahl von IQ-Dateien und konfiguriert nicht die ISP-Betriebsart. Diese muss in rk_aiq_uapi2_sysctl_prepare konfiguriert werden. Ist force_iq_file nicht leer, ist der Parameter mode unwirksam.
Der Parameter force_iq_file enthält den vollständigen Pfad.
Diese Funktion ist optional und dient nur zur Änderung einiger Standardeinstellungen vor rk_aiq_uapi2_sysctl_init.
3.2.2 rk_aiq_uapi2_sysctl_preInit_scene
【Beschreibung】 Vor der AIQ-Initialisierung die IQ-Szenarioparameter auswählen.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_preInit_scene (const char* sns_ent_name,
const char *main_scene,
const char *sub_scene);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sns_ent_name | Sensor-Entitätsname | Eingabe |
| main_scene | Hauptszene; die Werte sind in der IQ-Datei definiert | Eingabe |
| sub_scene | Unterszenen; die Werte sind in der IQ-Datei definiert | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
【Hinweis】
Muss vor rk_aiq_uapi2_sysctl_init aufgerufen werden.
main_scene muss anhand des Hauptszenen-Arrays in der IQ-Datei ausgewählt werden; der Standardwert lautet gewöhnlich “normal”.
sub_scene muss anhand des Unterszenen-Arrays innerhalb der Hauptszene in der IQ-Datei ausgewählt werden; der Standardwert lautet gewöhnlich “day”.
Da standardmäßig normal-day gewählt wird, muss für hdr-day oder andere benutzerdefinierte Modi diese Funktion zur expliziten Auswahl aufgerufen werden. Andernfalls können die IQ-Parameter falsch sein.
3.2.3 rk_aiq_uapi2_sysctl_switch_scene
【Beschreibung】 Nach der AIQ-Initialisierung die IQ-Szenarioparameter umschalten.
【Syntax】
int
rk_aiq_uapi2_sysctl_switch_scene (const rk_aiq_sys_ctx_t* sys_ctx,
const char *main_scene,
const char *sub_scene);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| main_scene | Hauptszene; die Werte sind in der IQ-Datei definiert | Eingabe |
| sub_scene | Unterszenen; die Werte sind in der IQ-Datei definiert | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
【Hinweis】
Nach rk_aiq_uapi2_sysctl_init aufrufen.
main_scene muss anhand des Hauptszenen-Arrays in der IQ-Datei ausgewählt werden.
sub_scene muss anhand des Unterszenen-Arrays innerhalb der Hauptszene in der IQ-Datei ausgewählt werden.
Diese Schnittstelle schaltet IQ dynamisch um. Dies ist derzeit unzureichend getestet und kann unerwartete Ergebnisse verursachen; daher vorsichtig verwenden.
3.2.4 rk_aiq_uapi2_sysctl_init
【Beschreibung】 AIQ-Kontext initialisieren.
【Syntax】
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);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sns_ent_name | Sensor-Entitätsname | Eingabe |
| iq_file_dir | Pfad der Kalibrierparameterdatei | Eingabe |
| err_cb | Fehler-Callback-Funktion; kann NULL sein | Eingabe |
| metas_cb | Metadaten-Callback-Funktion; kann NULL sein | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| rk_aiq_sys_ctx_t* | AIQ-Kontextzeiger |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
【Hinweis】
Muss vor anderen Funktionsaufrufen erfolgen.
3.2.5 rk_aiq_uapi2_sysctl_deinit
【Beschreibung】 AIQ-Kontext deinitialisieren.
【Syntax】
void
rk_aiq_uapi2_sysctl_deinit( rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| Keiner | Keiner |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
【Hinweis】
Darf nicht aufgerufen werden, während sich AIQ im gestarteten Zustand befindet.
3.2.6 rk_aiq_uapi2_sysctl_prepare
【Beschreibung】 AIQ-Ausführungsumgebung vorbereiten.
【Syntax】
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);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| width | Breite der Sensorausgangsauflösung; dient nur zur Überprüfung |
Eingabe |
| height | Höhe der Sensorausgangsauflösung; dient nur zur Überprüfung |
Eingabe |
| mode | Betriebsart der ISP-Pipeline (NORMAL/HDR) | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
【Hinweis】
Muss vor rk_aiq_uapi2_sysctl_start aufgerufen werden.
Wenn diese Funktion nach rk_aiq_uapi2_sysctl_start benötigt wird, rufen Sie zuerst rk_aiq_uapi2_sysctl_stop und anschließend rk_aiq_uapi2_sysctl_prepare auf, um die Ausführungsumgebung erneut vorzubereiten.
3.2.7 rk_aiq_uapi2_sysctl_start
【Beschreibung】 AIQ-Steuerungssystem starten. Nach dem Start ruft AIQ kontinuierlich 3A-Statistiken vom ISP-Treiber ab, führt den 3A-Algorithmus aus und wendet die neu berechneten Parameter an.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_start(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
【Hinweis】
Muss nach rk_aiq_uapi2_sysctl_prepare aufgerufen werden.
3.2.8 rk_aiq_uapi2_sysctl_stop
【Beschreibung】 AIQ-Steuerungssystem stoppen.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_stop(const rk_aiq_sys_ctx_t* ctx, bool keep_ext_hw_st);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| keep_ext_hw_st | Ob nach dem Stoppen der Zustand externer Geräte wie (ircut/cpsl) unverändert bleibt |
Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
3.2.9 rk_aiq_uapi2_sysctl_getStaticMetas
【Beschreibung】 Die zum Sensor gehörenden statischen Informationen wie Auflösung, Datenformat usw. abfragen.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_getStaticMetas(const char* sns_ent_name,
rk_aiq_static_info_t* static_info);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sns_ent_name | Sensor-Entitätsname | Eingabe |
| static_info | Zeiger auf die Struktur mit statischen Informationen | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
3.2.10 rk_aiq_uapi2_sysctl_enumStaticMetas
【Beschreibung】 Die von AIQ ermittelten statischen Informationen aufzählen.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_enumStaticMetas(int index, rk_aiq_static_info_t*
static_info);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| index | Indexnummer, beginnend bei 0 | Eingabe |
| static_info | Zeiger auf die Struktur mit statischen Informationen | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
3.2.11 rk_aiq_uapi2_sysctl_enableAxlib
【Beschreibung】 Ausführungszustand der benutzerdefinierten Algorithmusbibliothek einstellen.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_enableAxlib(const rk_aiq_sys_ctx_t* ctx,
const int algo_type,
const int lib_id,
bool enable);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| algo_type | Typ des zu bearbeitenden Algorithmusmoduls | Eingabe |
| lib_id | Kennungs-ID der Algorithmusbibliothek | Eingabe |
| enable | Statuseinstellung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
【Hinweis】
Wenn lib_id der aktuell ausgeführten Algorithmusbibliothek entspricht, kann diese Funktion in jedem Zustand außer dem nicht initialisierten aufgerufen werden.
In anderen Fällen darf sie nur im vorbereiteten Zustand aufgerufen werden. Die durch algo_type bezeichnete Algorithmusbibliothek wird dann durch die neue Bibliothek mit der Kennung lib_id ersetzt.
3.2.12 rk_aiq_uapi2_sysctl_getAxlibStatus
【Beschreibung】 Zustand der Algorithmusbibliothek abrufen.
【Syntax】
bool
rk_aiq_uapi2_sysctl_getAxlibStatus(const rk_aiq_sys_ctx_t* ctx,
const int algo_type,
const int lib_id);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| algo_type | Typ des zu bearbeitenden Algorithmusmoduls | Eingabe |
| lib_id | Kennungs-ID der Algorithmusbibliothek | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| false | Deaktivierter Zustand |
| true | Aktivierter Zustand |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
3.2.13 rk_aiq_uapi2_sysctl_getEnabledAxlibCtx
【Beschreibung】 Kontextstruktur der aktivierten Algorithmusbibliothek abrufen.
【Syntax】
const RkAiqAlgoContext*
rk_aiq_uapi2_sysctl_getEnabledAxlibCtx(const rk_aiq_sys_ctx_t* ctx, const int
algo_type);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| algo_type | Typ des zu bearbeitenden Algorithmusmoduls | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| NULL | Abruf fehlgeschlagen |
| Non-NULL | Abruf erfolgreich |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
【Hinweis】
Die zurückgegebene Algorithmuskontextstruktur wird von internen privaten Funktionen verwendet. Bei benutzerdefinierten Algorithmusbibliotheken muss diese Funktion nach rk_aiq_uapi2_sysctl_enableAxlib aufgerufen werden; andernfalls wird NULL zurückgegeben.
3.2.14 rk_aiq_uapi2_sysctl_setCpsLtCfg
【Beschreibung】 Steuerinformationen für die Zusatzbeleuchtung einstellen.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_setCpsLtCfg(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_cpsl_cfg_t* cfg);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| cfg | Zeiger auf die Konfigurationsstruktur der Zusatzbeleuchtung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
3.2.15 rk_aiq_uapi2_sysctl_getCpsLtInfo
【Beschreibung】 Steuerinformationen der Zusatzbeleuchtung abrufen.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_getCpsLtInfo(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_cpsl_info_t* info);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| info | Zeiger auf die Konfigurationsstruktur der Zusatzbeleuchtung | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
3.2.16 rk_aiq_uapi2_sysctl_queryCpsLtCap
【Beschreibung】 Unterstützte Fähigkeiten der Zusatzbeleuchtung abfragen.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_queryCpsLtCap(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_cpsl_cap_t* cap);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| cap | Zeiger auf die Struktur zur Abfrage der Fähigkeiten der Zusatzbeleuchtung | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
3.2.17 rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd
【Beschreibung】 Den zum Videoknoten gehörenden Sensor-Entitätsnamen abfragen.
【Syntax】
const char* rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd(const char* vd);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| vd | Videopfad, beispielsweise /dev/video20 | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| Sensor-Entitätsname | Zeichenkettenzeiger |
【Hinweis】
Der Parameter muss der Pfad des ISPP-Skalierungsknotens sein.
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
3.2.18 rk_aiq_uapi2_sysctl_updateIq
【Beschreibung】 Die aktuell verwendete IQ-Parameterdatei dynamisch aktualisieren, ohne den Datenfluss anzuhalten.
【Syntax】
XCamReturn rk_aiq_uapi2_sysctl_updateIq(const rk_aiq_sys_ctx_t* sys_ctx, char*
iqfile);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| iqfile | Neue IQ-Datei | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Hinweis】
iqfile muss ein vollständiger Pfad sein.
Das Aktualisieren der IQ-Parameter ermöglicht keinen Wechsel der Betriebsart; beispielsweise lässt sich zwischen HDR und Normal nicht allein durch Aktualisieren der IQ-Datei umschalten. Einige Funktionen können jedoch durch unterschiedliche IQ-Parameterkonfigurationen umgeschaltet werden, beispielsweise erfolgt der Tag-/Nachtwechsel vollständig über die IQ-Konfiguration.
Beim IQ-Wechsel überschreiben die IQ-Konfigurationsparameter die Einstellungen der Benutzer-API. Beispielsweise kann das AWB-Modul in IQ auf manuellen oder automatischen Modus eingestellt werden. Nach Ausführung dieser Funktion wird der aktuelle AWB-Modus unabhängig von seiner bisherigen Einstellung durch die Standardkonfiguration der neuen IQ-Datei überschrieben.
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
3.2.19 rk_aiq_uapi2_sysctl_getCrop
【Beschreibung】 Zuschnittparameter abrufen.
【Syntax】
XCamReturn
rk_aiq_uapi2_sysctl_getCrop(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_rect_t
*rect);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| rect | Zeiger auf die Zuschnittparameterstruktur | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
3.3 Datentypen
3.3.1 rk_aiq_working_mode_t
【Beschreibung】 Betriebsart der AIQ-Pipeline
【Definition】
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;
【Felder】
| Elementname | Beschreibung |
|---|---|
| RK_AIQ_WORKING_MODE_NORMAL | Normalmodus |
| RK_AIQ_WORKING_MODE_ISP_HDR2 | HDR-Modus mit zwei Bildern |
| RK_AIQ_WORKING_MODE_ISP_HDR3 | HDR-Modus mit drei Bildern |
【Vorsichtsmaßnahmen】
Fragen Sie zuerst die von Sensor und AIQ unterstützten Modi ab. Wird der eingestellte Modus nicht unterstützt, ist die Einstellung unwirksam.
3.3.2 rk_aiq_static_info_t
【Beschreibung】 Statische AIQ-Informationen
【Definition】
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;
【Felder】
| Elementname | Beschreibung |
|---|---|
| sensor_info | Beschreibung des Sensornamens, unterstützter Auflösungen usw. |
| lens_info | Objektivinformationen |
| has_lens_vcm | Ob VCM vorhanden ist |
| has_fl | Blitz vorhanden |
| fl_strth_adj_sup | Blitzstärke einstellbar |
| bool has_irc | IR-CUT vorhanden |
| bool fl_ir_strth_adj_sup |
3.3.3 rk_aiq_sensor_info_t
【Beschreibung】 Sensorinformationen
【Definition】
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;
【Felder】
| Elementname | Beschreibung |
|---|---|
| sensor_name | Name des Sensors |
| support_fmt | Unterstützte Formate |
| num | Anzahl unterstützter Formate |
| has_fl | Blitz vorhanden |
| binded_strm_media_idx | Nummer des Medienknotens, an dem der Sensor eingebunden ist |
3.3.4 rk_aiq_module_id_t
【Beschreibung】 AIQ-Modul-ID
【Definition】
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;
【Felder】
| Elementname | Beschreibung |
|---|---|
| RK_MODULE_DPCC | Defektpixelerkennung und -korrektur |
| RK_MODULE_BLS | Schwarzpegel |
| RK_MODULE_LSC | Objektivschattierungskorrektur |
| RK_MODULE_AWB_GAIN | Weißabgleichsverstärkung |
| RK_MODULE_CTK | Farbkorrektur |
| RK_MODULE_GOC | Gamma |
| RK_MODULE_SHARP | Schärfung |
| RK_MODULE_AE | Belichtung |
| RK_MODULE_AWB | Weißabgleich |
| RK_MODULE_NR | Rauschunterdrückung |
| RK_MODULE_GIC | Grünabgleich |
| RK_MODULE_3DLUT | 3DLUT |
| RK_MODULE_LDCH | LDCH |
| RK_MODULE_TNR | 3D-Rauschunterdrückung |
| RK_MODULE_FEC | Fischaugenkorrektur |
3.3.5 rk_aiq_cpsl_cfg_t
【Beschreibung】 Struktur zum Einstellen der Zusatzbeleuchtungsinformationen
【Definition】
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;
【Felder】
| Elementname | Beschreibung |
|---|---|
| mode | Betriebsart |
| lght_src | Lichtquellentyp |
| gray_on | Ob nach dem Wechsel in den Nachtmodus auf Schwarzweiß umgestellt wird |
| sensitivity | Umschaltempfindlichkeit im Automatikmodus, Bereich [0,100] |
| sw_interval | Umschaltintervall im Automatikmodus in Sekunden |
| on | Ob im manuellen Modus in den Nachtmodus gewechselt wird |
| strength_led | LED-Lichtstärke im manuellen Modus, Bereich [0,100] |
| strength_ir | Infrarotlampenstärke im manuellen Modus, Bereich [0,100] |
3.3.6 rk_aiq_cpsl_info_t
【Beschreibung】 Struktur zum Abfragen der Zusatzbeleuchtungsinformationen
【Definition】
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;
【Felder】
| Elementname | Beschreibung |
|---|---|
| mode | Betriebsart |
| lght_src | Lichtquellentyp |
| gray | Ob nach dem Wechsel in den Nachtmodus auf Schwarzweiß umgestellt wird |
| sensitivity | Umschaltempfindlichkeit im Automatikmodus, Bereich [0,100] |
| sw_interval | Umschaltintervall im Automatikmodus in Sekunden |
| on | Ob im manuellen Modus in den Nachtmodus gewechselt wird |
| strength_led | LED-Lichtstärke im manuellen Modus, Bereich [0,100] |
| strength_ir | Infrarotlampenstärke im manuellen Modus, Bereich [0,100] |
3.3.7 rk_aiq_cpsl_cap_t
【Beschreibung】 Struktur der unterstützten Zusatzbeleuchtungsfähigkeiten
【Definition】
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;
【Felder】
| Elementname | Beschreibung |
|---|---|
| supported_modes | Unterstützte Betriebsarten |
| modes_num | Anzahl unterstützter Modi |
| gray | Ob nach dem Wechsel in den Nachtmodus auf Schwarzweiß umgestellt wird |
| supported_lght_src | Unterstützte Lichtquellen |
| lght_src_num | Anzahl unterstützter Lichtquellen |
| strength_led | LED-Intensitätsbereich |
| sensitivity | Empfindlichkeitsbereich |
| strength_ir | Intensitätsbereich der Infrarotlampen |
3.3.8 rk_aiq_rect_t
【Beschreibung】 Zuschnittparameterstruktur definieren
【Definition】
typedef struct rk_aiq_rect_s {
int left;
int top;
int width;
int height;
} rk_aiq_rect_t;
【Felder】
| Elementname | Beschreibung |
|---|---|
| left | Horizontaler Ausgabeversatz |
| top | Vertikaler Ausgabeversatz |
| width | Horizontale Ausgabegröße |
| height | Vertikale Ausgabegröße |
4. Offline-Bildverarbeitung
4.1 Überblick
RKAIQ stellt eine Funktion zur Offline-Verarbeitung von RAW-Bildern bereit: Dateien im RK-eigenen RAW-Format werden von RKAIQ ausgewertet, zur Verarbeitung an ISP gesendet und als Bilder mit normaler Darstellung ausgegeben.
Hinweis: Die Offline-Bildverarbeitungsfunktion wurde nicht getestet.
4.2 Funktionsblockdiagramm

Blockdiagramm der Offline-Bildverarbeitung
4.3 Funktionsbeschreibung
Unterstützt RK-RAW-Dateieingabe. Bei Verwendung der Dateieingabeschnittstelle wird der aufrufende Prozess blockiert, bis die Datei vollständig verarbeitet und erfolgreich ausgegeben wurde.
Unterstützt RK-RAW-Puffereingabe im asynchronen Verarbeitungsmodus. Bei Verwendung der Puffereingabeschnittstelle wird der aufrufende Prozess nicht blockiert. Nach Abschluss der Pufferverarbeitung wird die Callback-Funktion aufgerufen, sofern eine registriert ist.
Unterstützt RK-RAW-Puffereingabe im synchronen Verarbeitungsmodus. Bei Verwendung der Puffereingabeschnittstelle wird der aufrufende Prozess blockiert, bis der Puffer vollständig verarbeitet und erfolgreich ausgegeben wurde.
4.4 Beschreibung des RK-RAW-Formats
Siehe Dokumentation des RK-RAW-Dateiformats.
4.5 Unterstützte RAW-Formate
Unterstützt raw8/raw10/raw12 sowie die vier Bayer-Formate BGGR/GBRG/GRBG/RGGB.
4.6 API-Referenz
4.7 Datenstrukturen
4.8 Hinweise
Bei Verwendung der RK-Raw-Datenverarbeitung muss beim Erstellen eines AIQ-Kontexts der Parameter sns_ent_name der Schnittstelle rk_aiq_uapi2_sysctl_init “FakeCamera” lauten.
Die RAW-Datenverarbeitung benötigt IQ-XML-Bildparameterdateien. Die XML-Datei muss für dieselbe Auflösung wie die eingehenden RK-Raw-Bilddaten erzeugt werden. Die Bildparameterdatei muss FakeCamera.xml heißen und im XML-Ladepfad abgelegt werden.
4.9 Referenzbeispiel
Weitere Informationen zur Verwendung der Offline-Bildverarbeitungs-API enthält rkisp_demo unter YOUR_SDK_DIR/external/camera_engine_rkaiq/rkisp_demo.
5. Kameragruppe
5.1 Überblick
Beispielsweise müssen bei Rundumsichtanwendungen mehrere Kameras zur gemeinsamen Verwaltung gruppiert und Parameter wie die Belichtung einheitlich eingestellt werden. Dazu lässt sich eine Gruppe anlegen und mehrere Kameras derselben Gruppe zuordnen. Die Camera-Group-API basiert auf der AIQ-API einer Einzelkamera. Sofern nicht anders angegeben, gelten APIs für einen einzelnen AIQ-Kontext auch für eine Kameragruppe. Die interne AIQ-Implementierung verteilt Anfragen je nach Typ des übergebenen Kontexts an eine Kameragruppe oder eine Einzelkamera.
5.1.1 rk_aiq_uapi2_camgroup_create
【Beschreibung】 Beim Erstellen einer Kameragruppe wird für jede Kamera ein eigener AIQ ctx erstellt und anschließend zur Verwaltung an Group Ctx übergeben.
【Syntax】
rk_aiq_camgroup_ctx_t*
rk_aiq_uapi2_camgroup_create (rk_aiq_camgroup_instance_cfg_t* cfg);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| cfg | Konfigurationsparameter | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| rk_aiq_camgroup_ctx_t* | Gruppenlaufzeitumgebung |
| NULL | Fehlgeschlagen |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_camgroup.h
Bibliotheksdatei: librkaiq.so
【Hinweis】
Im Unterschied dazu erzeugt rk_aiq_uapi2_sysctl_init eine AIQ-Laufzeitumgebung für eine Einzelkamera. Wenn eine Sensorentität mit rk_aiq_uapi2_sysctl_init eine Laufzeitumgebung erhält, darf sie nicht zusätzlich über rk_aiq_uapi2_camgroup_create eine Gruppenlaufzeitumgebung erhalten, und umgekehrt.
Da die standardmäßige IQ-Szene normal-day lautet, müssen HDR oder andere Modi vorab mit rk_aiq_uapi2_sysctl_preInit_scene eingestellt werden.
5.1.2 rk_aiq_uapi2_camgroup_prepare
【Beschreibung】 Entsprechend dem gewählten Pipeline-Modus Initialisierungsparameter erzeugen und Pipelines anlegen. Für den AIQ ctx jeder Kamera wird rk_aiq_uapi2_sysctl_prepare aufgerufen.
【Syntax】
XCamReturn
rk_aiq_uapi2_camgroup_prepare (rk_aiq_camgroup_ctx_t* camgroup_ctx,
rk_aiq_working_mode_t mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| camgroup_ctx | Gruppenlaufzeitumgebung | Eingabe |
| mode | Betriebsart der Pipeline | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Ungleich 0 | Siehe Fehlercodes |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_camgroup.h; Bibliotheksdatei: librkaiq.so
5.1.3 rk_aiq_uapi2_camgroup_start
【Beschreibung】 Kameragruppe ausführen. Für den AIQ ctx jeder Kamera wird rk_aiq_uapi2_sysctl_start aufgerufen.
【Syntax】
XCamReturn
rk_aiq_uapi2_camgroup_start (rk_aiq_camgroup_ctx_t* camgroup_ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| camgroup_ctx | Gruppenlaufzeitumgebung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Ungleich 0 | Fehler, siehe Fehlercode |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_camgroup.h; Bibliotheksdatei: librkaiq.so
5.1.4 rk_aiq_uapi2_camgroup_stop
【Beschreibung】 Kameragruppe stoppen. Für den AIQ ctx jeder Kamera wird rk_aiq_uapi2_sysctl_stop aufgerufen.
【Syntax】
XCamReturn
rk_aiq_uapi2_camgroup_stop (rk_aiq_camgroup_ctx_t* camgroup_ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| camgroup_ctx | Gruppenlaufzeitumgebung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Ungleich 0 | Fehler, siehe Fehlercode |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_camgroup.h; Bibliotheksdatei: librkaiq.so
5.1.5 rk_aiq_uapi2_camgroup_destroy
【Beschreibung】 Kameragruppe zerstören. Für den AIQ ctx jeder Kamera wird rk_aiq_uapi2_sysctl_deinit aufgerufen.
【Syntax】
XCamReturn
rk_aiq_uapi2_camgroup_destroy (rk_aiq_camgroup_ctx_t* camgroup_ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| camgroup_ctx | Gruppenlaufzeitumgebung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Ungleich 0 | Fehler, siehe Fehlercode |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_camgroup.h; Bibliotheksdatei: librkaiq.so
5.1.6 rk_aiq_uapi2_camgroup_getOverlapMap
【Beschreibung】 Im Rundumsichtszenario Überlappungsbereichsinformationen jeder Kamera aus dem CameraGroup-Kontext abrufen.
【Syntax】
struct RK_PS_SrcOverlapMap*
rk_aiq_uapi2_camgroup_getOverlapMap (rk_aiq_camgroup_ctx_t* camgroup_ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| camgroup_ctx | Gruppenlaufzeitumgebung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| struct RK_PS_SrcOverlapMap* | Zeiger auf die Struktur mit Überlappungsbereichsinformationen |
| NULL | Fehlgeschlagen |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_camgroup.h; Bibliotheksdatei: librkaiq.so
5.1.7 rk_aiq_uapi2_camgroup_getOverlapMap
【Beschreibung】 Im Rundumsichtszenario Überlappungsbereichsinformationen jeder Kamera aus einer Datei abrufen.
【Syntax】
XCamReturn
rk_aiq_uapi2_camgroup_getOverlapMap_from_file (const char* map_file,
struct
RK_PS_SrcOverlapMap** overlapMap);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| map_file | Datei mit Überlappungsinformationen | Eingabe |
| overlapMap | Speichert die abgerufenen Überlappungsinformationen | Eingabe, Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Ungleich 0 | Fehler, siehe Fehlercode |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_camgroup.h; Bibliotheksdatei: librkaiq.so
5.1.8 rk_aiq_uapi2_camgroup_getAiqCtxBySnsNm
【Beschreibung】 Den AIQ-Kontext einer Einzelkamera über den Sensor-Entitätsnamen innerhalb der Gruppe abrufen.
【Syntax】
rk_aiq_sys_ctx_t*
rk_aiq_uapi2_camgroup_getAiqCtxBySnsNm (rk_aiq_camgroup_ctx_t* camgroup_ctx,
const char* sns_entity_name);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| camgroup_ctx | Gruppenlaufzeitumgebung | Eingabe |
| sns_entity_name | Name der Sensorentität innerhalb der Gruppe | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| rk_aiq_sys_ctx_t* | Abgerufene AIQ-Laufzeitumgebung |
| NULL | Fehlgeschlagen |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_camgroup.h; Bibliotheksdatei: librkaiq.so
5.1.9 rk_aiq_uapi2_camgroup_getCamInfos
【Beschreibung】 Informationen zu den Kameras in der Gruppe abrufen, beispielsweise den Namen der Sensorentität.
【Syntax】
XCamReturn
rk_aiq_uapi2_camgroup_getCamInfos (rk_aiq_camgroup_ctx_t* camgroup_ctx,
rk_aiq_camgroup_camInfos_t* camInfos);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| camgroup_ctx | Gruppenlaufzeitumgebung | Eingabe |
| camInfos | Abgerufene Informationen zu den Kameras in der Gruppe | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Ungleich 0 | Fehler, siehe Fehlercode |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_camgroup.h; Bibliotheksdatei: librkaiq.so
5.1.10 rk_aiq_uapi2_camgroup_bind
【Beschreibung】 Reservierte Schnittstelle, nicht implementiert.
5.1.11 rk_aiq_uapi2_camgroup_unbind
【Beschreibung】 Reservierte Schnittstelle, nicht implementiert.
5.2 Datenstrukturen
5.2.1 rk_aiq_camgroup_instance_cfg_t
【Erläuterung】 Carmelaghrup-Konfigurationsparameter
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sns_ent_nm_array | Array der Sensorentitäten, die der Gruppenverwaltung hinzugefügt werden sollen |
| sns_num | Anzahl der Sensorentitäten, die zur Gruppe hinzugefügt werden sollen |
| config_file_dir | IQ-Dateipfad angeben |
| single_iq_file | IQ-Dateinamen angeben; kann NULL sein. Bei NULL wählt AIQ automatisch aus |
| group_iq_file | Angegebene IQ-Konfigurationsdatei der Kameragruppe; derzeit nicht verwendet |
| overlap_map_file | Datei mit Kameraüberlappungsinformationen angeben; kann NULL sein |
5.2.2 rk_aiq_camgroup_camInfos_t
【Erläuterung】 Informationen zu jeder Kamera in der Kameragruppe
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| valid_sns_num | Anzahl der in der Gruppe enthaltenen Sensorentitäten |
| sns_ent_nm | Array der in der Gruppe enthaltenen Sensor-Entitätsnamen |
| sns_camPhyId | Array der physischen IDs der in der Gruppe enthaltenen Sensorentitäten |
5.2.3 struct RK_PS_SrcOverlapMap
【Erläuterung】 Überlappungsbereich der Kamera definieren
【Definition】
struct RK_PS_SrcOverlapMap
{
char versionInfo[64];
RK_PS_SrcOverlapPosition srcOverlapPositon[8];
unsigned char overlapMap[15 * 15 * 8];
};
【Felder】
| Feldname | Beschreibung |
|---|---|
| versionInfo | Versionsinformationen |
| srcOverlapPositon | Drehrichtung jeder Kamera: 0, 90, 180 oder 270 Grad |
| overlapMap | Überlappungsinformationen jedes Statistikblocks von 8 Kameras: Die Statistikdaten jeder Kamera umfassen 15*15 Spalten, insgesamt für 8 Kameras (nummeriert 0~7). Sind tatsächlich weniger als 8 Kameras vorhanden, wird die entsprechende Position mit 0 gefüllt. Zeilenweise speichern: Nach der ersten Zeile aller 8 Kameras folgt die zweite Zeile usw. Der Wertebereich ist 0~255. Bei vollständig fehlender Überlappung ist der Wert 0, bei vollständiger Überlappung 255. Teilweise Überlappung wird proportional interpoliert. 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 Überblick
Das AE-Modul ermittelt die Belichtung des aktuellen Bildes anhand des automatischen Belichtungsmesssystems und konfiguriert anschließend Objektivblende, Sensorverschluss und Verstärkung automatisch, um die beste Bildqualität zu erzielen.
6.2 Wichtige Begriffe
Belichtungszeit: Die Zeit, in der der Sensor Ladung sammelt, also der Zeitraum zwischen der Belichtung des Sensorpixels und dem Auslesen seiner Ladung.
Belichtungsverstärkung: Gesamter Verstärkungsfaktor der vom Sensor ausgegebenen Ladung, gewöhnlich bestehend aus digitaler und analoger Verstärkung. Analoge Verstärkung verursacht etwas weniger Rauschen und wird daher im Allgemeinen bevorzugt.
Blende: Mechanismus im Objektiv, der die Größe der freien Öffnung verändert.
Flimmerunterdrückung: Bildflimmern durch eine Abweichung zwischen der Netzfrequenz der Lampe und der Sensorbildrate wird gewöhnlich durch Begrenzung der Belichtungszeit und Änderung der Sensorbildrate unterdrückt.
6.3 Funktionsbeschreibung
Das AE-Modul besteht aus AE-Statistik und dem Algorithmus der AE-Steuerstrategie.
6.4 Referenz der funktionsbezogenen APIs
6.4.1 rk_aiq_uapi2_setAeLock
【Beschreibung】
AE-Belichtungssperre einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setAeLock(const rk_aiq_sys_ctx_t* ctx, bool on);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| on | Sperre aktivieren | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 |
6.4.2 rk_aiq_uapi2_setExpMode
【Beschreibung】 Belichtungsmodus einstellen; automatische und manuelle Belichtung werden unterstützt.
【Syntax】
XCamReturn rk_aiq_uapi2_setExpMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Belichtungsmodus | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Hinweis】
Beim Wechsel in den manuellen Belichtungsmodus werden für Verstärkung und Belichtungszeit die in der Bildparameterdatei definierten Anfangswerte verwendet. Um den Belichtungswert gleichzeitig mit dem Wechsel in den manuellen Modus einzustellen, kann rk_aiq_uapi2_setManualExp verwendet werden.
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.3 rk_aiq_uapi2_getExpMode
【Beschreibung】 Belichtungsmodus abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getExpMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Belichtungsmodus | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.4 rk_aiq_uapi2_setManualExp
【Beschreibung】 Manuellen Belichtungsmodus verwenden und Verstärkung sowie Belichtungszeit einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setManualExp(const rk_aiq_sys_ctx_t* ctx, float gain,
float time);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| gain | Belichtungsverstärkung | Eingabe |
| time | Belichtungszeit | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.5 rk_aiq_uapi2_setExpGainRange
【Beschreibung】** Verstärkungsbereich einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setExpGainRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
*gain);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| gain | Bereich der Belichtungsverstärkung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.6 rk_aiq_uapi2_getExpGainRange
【Beschreibung】 Verstärkungsbereich abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getExpGainRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
*gain);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| gain | Bereich der Belichtungsverstärkung | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.7 rk_aiq_uapi2_setExpTimeRange
【Beschreibung】 Belichtungszeitbereich einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setExpTimeRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
*time);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| time | Belichtungszeitbereich | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.8 rk_aiq_uapi2_getExpTimeRange
【Beschreibung】 Belichtungszeitbereich abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getExpTimeRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
*time);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| time | Belichtungszeitbereich | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.9 rk_aiq_uapi2_setBLCMode
【Beschreibung】 Gegenlichtkompensation ein-/ausschalten und Bereich auswählen.
【Syntax】
XCamReturn rk_aiq_uapi2_setBLCMode(const rk_aiq_sys_ctx_t* ctx, bool on,
aeMeasAreaType_t areaType);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| on | Schalter | Eingabe |
| areaType | Auswahl des Kompensationsbereichs | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Hinweis】
Diese Schnittstelle ist nur im linearen Modus verfügbar.
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.10 rk_aiq_uapi2_setBLCStrength
【Beschreibung】 Stärke der Aufhellung dunkler Bereiche einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setBLCStrength(const rk_aiq_sys_ctx_t* ctx, int
strength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| strength | Aufhellungsstärke, Bereich [1,100] | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Hinweis】
Diese Schnittstelle ist nur im linearen Modus verfügbar.
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.11 rk_aiq_uapi2_setHLCMode
【Beschreibung】 Spitzlichtunterdrückung ein-/ausschalten.
【Syntax】
XCamReturn rk_aiq_uapi2_setHLCMode(const rk_aiq_sys_ctx_t* ctx, bool on);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| on | Schalter | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Hinweis】
Diese Schnittstelle ist nur im linearen Modus verfügbar.
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.12 rk_aiq_uapi2_setHLCStrength
【Beschreibung】 Stärke der Spitzlichtunterdrückung einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setHLCStrength(const rk_aiq_sys_ctx_t* ctx, int
strength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| strength | Unterdrückungsstärke, Bereich [1,100] | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Hinweis】
Diese Schnittstelle ist nur im linearen Modus verfügbar.
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.sov
6.4.13 rk_aiq_uapi2_setAntiFlickerEn
【Beschreibung】 Unterdrückung netzfrequenzbedingten Flimmerns ein-/ausschalten.
【Syntax】
XCamReturn rk_aiq_uapi2_setAntiFlickerEn(const rk_aiq_sys_ctx_t* ctx, bool on);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| on | Parameter zum Ein-/Ausschalten der Funktion | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.14 rk_aiq_uapi2_getAntiFlickerEn
【Beschreibung】 Unterdrückung netzfrequenzbedingten Flimmerns ein-/ausschalten.
【Syntax】
XCamReturn rk_aiq_uapi2_getAntiFlickerEn(const rk_aiq_sys_ctx_t* ctx, bool* on);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| on | Parameter zum Ein-/Ausschalten der Funktion | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.15 rk_aiq_uapi2_setAntiFlickerMode
【Beschreibung】 Modus der Flimmerunterdrückung einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setAntiFlickerMode(const rk_aiq_sys_ctx_t* ctx,
antiFlickerMode_t mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Modus der Flimmerunterdrückung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.16 rk_aiq_uapi2_getAntiFlickerMode
【Beschreibung】 Modus der Flimmerunterdrückung abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getAntiFlickerMode(const rk_aiq_sys_ctx_t* ctx,
antiFlickerMode_t *mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Modus der Flimmerunterdrückung | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.17 rk_aiq_uapi2_setExpPwrLineFreqMode
【Beschreibung】 Frequenz der Flimmerunterdrückung einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setExpPwrLineFreqMode(const rk_aiq_sys_ctx_t* ctx,
expPwrLineFreq_t freq);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| freq | Frequenz der Flimmerunterdrückung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.4.18 rk_aiq_uapi2_getExpPwrLineFreqMode
【Beschreibung】** Frequenz der Flimmerunterdrückung abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getExpPwrLineFreqMode(const rk_aiq_sys_ctx_t* ctx,
expPwrLineFreq_t *freq);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| freq | Frequenz der Flimmerunterdrückung | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
6.5 Datentypen der funktionsbezogenen APIs
6.5.1 opMode_t
【Beschreibung】 Automatischen und manuellen Modus definieren.
【Definition】
typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUALl = 1,
OP_INVAL
} opMode_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| OP_AUTO | Automatikmodus |
| OP_MANUALl | Manueller Modus |
| OP_INVAL | Ungültiger Wert |
6.5.2 paRange_t
【Beschreibung】 Parameterbereiche definieren.
【Definition】
typedef struct paRange_s {
float max;
float min;
} paRange_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| max | Oberer Grenzwert |
| min | Unterer Grenzwert |
6.5.3 aeMeasAreaType_t
【Beschreibung】 Typ des AE-Messbereichs definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| AE_MEAS_AREA_AUTO | Automatisch |
| AE_MEAS_AREA_UP | Oberer Bereich |
| AE_MEAS_AREA_BOTTOM | Unterer Bereich |
| AE_MEAS_AREA_LEFT | Linker Bereich |
| AE_MEAS_AREA_RIGHT | Rechter Bereich |
| AE_MEAS_AREA_CENTER | Mittlerer Bereich |
6.5.4 expPwrLineFreq_t
【Beschreibung】 Frequenz der Flimmerunterdrückung definieren.
【Definition】
typedef enum expPwrLineFreq_e {
EXP_PWR_LINE_FREQ_DIS = 0,
EXP_PWR_LINE_FREQ_50HZ = 1,
EXP_PWR_LINE_FREQ_60HZ = 2,
} expPwrLineFreq_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| EXP_PWR_LINE_FREQ_DIS | |
| EXP_PWR_LINE_FREQ_50HZ | 50 Hz |
| EXP_PWR_LINE_FREQ_60HZ | 60 Hz |
6.5.5 antiFlickerMode_t
【Beschreibung】 Modus der Flimmerunterdrückung definieren.
【Definition】
typedef enum antiFlickerMode_e {
ANTIFLICKER_NORMAL_MODE = 0,
ANTIFLICKER_AUTO_MODE = 1,
} antiFlickerMode_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ANTIFLICKER_NORMAL_MODE | Normalmodus |
| ANTIFLICKER_AUTO_MODE | Automatischer Auswahlmodus |
6.6 Referenz der modulbezogenen APIs
6.6.1 rk_aiq_user_api2_ae_setExpSwAttr
【Beschreibung】 Softwareeigenschaften der AE-Belichtung einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_setExpSwAttr(const rk_aiq_sys_ctx_t* ctx,
const Uapi_ExpSwAttrV2_t expSwAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| expSwAttr | Parameterstruktur zur Steuerung allgemeiner AE-Funktionen | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Eigenschaften für manuelle Belichtung einstellen
Zu den Belichtungskomponenten gehören Sensorbelichtungszeit, Sensorbelichtungsverstärkung und digitale ISP-Verstärkung. Nach Auswahl des manuellen Belichtungsmodus müssen außerdem für jede Komponente der manuelle Zustand (ManualGainEn, ManualTimeEn, ManualIspDgainEn) und der zugehörige manuelle Wert eingestellt werden. Im manuellen Belichtungsmodus müssen alle Belichtungskomponenten manuell sein; ihre Werte werden durch Sensor und Objektiv begrenzt. Überschreitet ein eingestellter Komponentenwert die Sensorgrenze, korrigiert ihn der Algorithmus automatisch.
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);
Eigenschaften für automatische Belichtung einstellen
Bei automatischer Belichtung kann der Bereich der Belichtungskomponenten eingestellt werden. Überschreitet dieser die Sensorgrenzen, korrigiert ihn der Algorithmus automatisch.
【Hinweis】: Die Parameter zum Einstellen des Belichtungskomponentenbereichs unterscheiden sich von den Parametern zum Abrufen dieses Bereichs.
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);
Eigenschaften für halbmanuelle Belichtung einstellen
Halbmanuelle Belichtung bedeutet, dass mindestens eine Belichtungskomponente (Sensorbelichtungszeit, Sensorbelichtungsverstärkung oder digitale ISP-Verstärkung) manuell ist und die übrigen automatisch arbeiten; andernfalls wird mit einem Fehler beendet. Um beispielsweise die Verstärkung manuell und Belichtungszeit sowie digitale ISP-Verstärkung automatisch zu steuern, gibt es zwei Möglichkeiten: Im manuellen Belichtungsmodus die manuelle Aktivierung für Belichtungszeit und digitale ISP-Verstärkung auf false, für Belichtungsverstärkung auf true setzen und den gewünschten manuellen Wert einstellen. Methode 2: Im automatischen Belichtungsmodus den maximalen und minimalen Verstärkungswert auf den festzulegenden Wert setzen.
【Hinweis】Methode 1: Im HDR-Belichtungsmodus ist das manuelle Verhalten aller Bilder synchron, d. h. die entsprechenden Komponenten jedes Bildes besitzen denselben manuellen Zustand. Zugleich muss die maximale Belichtung langer Bilder größer als die maximale Belichtung kurzer Bilder und die minimale Belichtung langer Bilder größer als die minimale Belichtung kurzer Bilder sein. Methode 2: Im HDR-Belichtungsmodus darf das manuelle Verhalten der Bilder unterschiedlich sein, beispielsweise manuelle Verstärkung kurzer Bilder bei automatischer Verstärkung langer Bilder. Auch hierbei muss die maximale Belichtung langer Bilder größer als die maximale Belichtung kurzer Bilder und die minimale Belichtung langer Bilder größer als die minimale Belichtung kurzer Bilder sein.
//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);
Feste Bildrate oder automatische Bildratenreduzierung einstellen
Im Modus mit fester Bildrate darf die zulässige Bildrate die vom Treiber definierte maximale Bildrate nicht überschreiten. Andernfalls erscheint ein Protokollhinweis und die Bildrateneinstellung wird deaktiviert.
//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);
Geschwindigkeit der Belichtungsanpassung und Verzögerung in Bildern einstellen
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);
Flimmerunterdrückung konfigurieren
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-Gewichtung einstellen
Stellen Sie eine 15X15-Gewichtung ein; der Algorithmus verdichtet sie entsprechend der tatsächlichen Blockaufteilung der Hardware. Derzeit gibt es zwei Einstellmöglichkeiten: Methode 1: Gewichte direkt in JSON ändern. Methode 2: Gewichte über stadvanced ändern; nach Deaktivierung kann die JSON-Gewichtung wiederhergestellt werden (empfohlene Methode).
Für Gesichtsanwendungen wird empfohlen, beim Erscheinen eines Gesichts expSwAttr.stAdvanced.enable = true zu setzen und die Gewichte in expSwAttr.stAdvanced zu verwenden. Verschwindet das Gesicht, mit expSwAttr.stAdvanced.enable = false wieder die ursprünglichen Gewichte verwenden.
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
【Beschreibung】 Softwareeigenschaften der AE-Belichtung abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_getExpSwAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_ExpSwAttrV2_t* pExpSwAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| pExpSwAttr | Zeiger auf die Struktur der AE-Belichtungssoftwareeigenschaften | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
6.6.3 rk_aiq_user_api2_ae_setLinAeRouteAttr
【Beschreibung】 Szenenbezogene AE-Belichtungsverteilungsstrategie im linearen Modus einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_setLinAeRouteAttr(const rk_aiq_sys_ctx_t* ctx, const
Uapi_LinAeRouteAttr_t linAeRouteAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| linAeRouteAttr | Struktur der AE-Belichtungsverteilungsstrategie | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
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
【Beschreibung】 Szenenbezogene AE-Belichtungsverteilungsstrategie im linearen Modus abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_getLinAeRouteAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_LinAeRouteAttr_t* pLinAeRouteAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| pLinAeRouteAttr | Zeiger auf die Struktur der AE-Belichtungsverteilungsstrategie | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
6.6.5 rk_aiq_user_api2_ae_setHdrAeRouteAttr
【Beschreibung】 Szenenbezogene AE-Belichtungsverteilungsstrategie im HDR-Modus einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_setHdrAeRouteAttr(const rk_aiq_sys_ctx_t* ctx, const
Uapi_HdrAeRouteAttr_t hdrAeRouteAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| hdrAeRouteAttr | Struktur der AE-Belichtungsverteilungsstrategie | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
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
【Beschreibung】 Szenenbezogene AE-Belichtungsverteilungsstrategie im HDR-Modus abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_getHdrAeRouteAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_HdrAeRouteAttr_t* pHdrAeRouteAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| pHdrAeRouteAttr | Zeiger auf die Struktur der AE-Belichtungsverteilungsstrategie | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
6.6.7 rk_aiq_user_api2_ae_setLinExpAttr
【Beschreibung】 AE-Belichtungsparameter im linearen Modus einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_setLinExpAttr(const rk_aiq_sys_ctx_t* ctx, const
Uapi_LinExpAttrV2_t linExpAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| linExpAttr | AE-Belichtungsparameterstruktur | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
AE-Belichtungsparameter im linearen Modus einstellen, darunter beispielsweise Helligkeitsanpassung Evbias, Gegenlichtkompensation BackLightCtrl und Spitzlichtunterdrückung OverExpCtrl. Beachten Sie, dass Gegenlichtkompensation und Spitzlichtunterdrückung nicht gleichzeitig aktiviert werden können.
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
【Beschreibung】 AE-Belichtungsparameter im linearen Modus abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_getLinExpAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_LinExpAttrV2_t* pLinExpAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| pLinExpAttr | Zeiger auf die AE-Belichtungsparameterstruktur | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
6.6.9 rk_aiq_user_api2_ae_setHdrExpAttr
【Beschreibung】 AE-Belichtungsparameter im HDR-Modus einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_setHdrExpAttr(const rk_aiq_sys_ctx_t* ctx, const
Uapi_HdrExpAttrV2_t hdrExpAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| hdrExpAttr | AE-Belichtungsparameterstruktur | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
AE-Belichtungsparameter im HDR-Modus einstellen, darunter beispielsweise manuelles oder automatisches Belichtungsverhältnis und Helligkeitsanpassung 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
【Beschreibung】 AE-Belichtungsparameter im HDR-Modus abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_getHdrExpAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_HdrExpAttrV2_t* pHdrExpAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| pHdrExpAttr | Zeiger auf die AE-Belichtungsparameterstruktur | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
6.6.11 rk_aiq_user_api2_ae_setIrisAttr
【Beschreibung】 Parameter der AE-Blendensteuerung einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_setIrisAttr(const rk_aiq_sys_ctx_t * sys_ctx, const
Uapi_IrisAttrV2_t irisAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| irisAttr | Parameterstruktur der Blendensteuerung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
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
【Beschreibung】 Parameter der AE-Blendensteuerung abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_getIrisAttr(const rk_aiq_sys_ctx_t * sys_ctx, const
Uapi_IrisAttrV2_t* irisAttr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| irisAttr | Parameterstruktur der Blendensteuerung | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
6.6.13 rk_aiq_user_api2_ae_setExpWinAttr
【Beschreibung】 Eigenschaften des AE-Statistikfensters einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_setExpWinAttr(const rk_aiq_sys_ctx_t* sys_ctx, const
Uapi_ExpWin_t ExpWin);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| ExpWin | Parameter der Fenstereigenschaften | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Die AE-Statistikkoordinaten anhand der Gesichtsposition ändern, um Helligkeitsstatistiken für den Gesichtsbereich zu erfassen.
Hinweis: Beim Einstellen der Statistikkoordinaten muss ExpWin.h_offs+ExpWin.h_size<=pic_width und ExpWin.v_offs+ExpWin.v_size<=pic_height gelten.
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
【Beschreibung】 Eigenschaften des AE-Statistikfensters abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_getExpWinAttr(const rk_aiq_sys_ctx_t* sys_ctx,const
Uapi_ExpWin_t* ExpWin);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| ExpWin | Parameter der Fenstereigenschaften | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
6.6.15 rk_aiq_user_api2_ae_queryExpResInfo
【Beschreibung】 Interne AE-Zustandsinformationen abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ae_queryExpResInfo(const rk_aiq_sys_ctx_t* ctx,
Uapi_ExpQueryInfo_t* pExpResInfo);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| pExpResInfo | Zeiger auf die Struktur mit internen AE-Zustandsinformationen | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ae.h, rk_aiq_uapi2_ae_int.h
Bibliotheksdatei: librkaiq.so
6.7 Datentypen der modulbezogenen APIs
6.7.1 Uapi_ExpSwAttr_t
【Beschreibung】
Parameterstruktur zur Steuerung allgemeiner AE-Funktionen.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Definitionen von rk_aiq_uapi_sync_t siehe Abschnitt Überblick/API-Beschreibung |
| Enable | AEC-Aktivierungsschalter. 1: Aec-Algorithmus einschalten; 0: Aec-Algorithmus ausschalten. Die Belichtung verbleibt auf dem Wert vor dem Ausschalten. |
| RawStatsMode | Helligkeitsstatistikmodus des AEC-Moduls. Vier Modi: CAM_RAWSTATSV2_MODE_Y/R/G/B; standardmäßig Y. |
| HistStatsMode | Histogrammstatistikmodus des AEC-Moduls. Fünf Modi: CAM_HISTV2_MODE_Y/R/G/B; standardmäßig Y. |
| YRangeMode | Wertebereichsmodus des Y-Kanals im Aec-Modul. Zwei Modi: CAM_YRANGEV2_MODE_FULL/LIMITED; standardmäßig FULL. |
| AecRunInterval | Ausführungsintervall des AE-Algorithmus, Wertebereich [0,255], Standardwert 0. Bei 0 AE in jedem Bild ausführen; bei 1 AE alle 1 Bilder ausführen; entsprechend fortsetzen. |
| AecOpType | Belichtungsmodus: automatische Belichtung (RK_AIQ_OP_MODE_AUTO) oder manuelle Belichtung (RK_AIQ_OP_MODE_MANUAL). Standardmäßig AUTO. Manuelle Belichtung muss zusammen mit stManual verwendet werden, um den manuellen Belichtungswert einzustellen. |
| GridWeights | Fenstergewichtung (Histogramm), enthält 15*15 Arrayelemente, Wertebereich [0,32] |
| stAuto | Parameterstruktur der automatischen Belichtung |
| stManual | Parameterstruktur der manuellen Belichtung |
| stAdvanced | Parameterstrukturen |
Zugehöriger Datentyp
rk_aiq_uapi_sync_t
Uapi_ExpSwAttr_AdvancedV2_t
Uapi_AeAttrV2_t
Uapi_MeAttrV2_t
6.7.1.1 Uapi_ExpSwAttr_AdvancedV2_t
【Beschreibung】
Parameterstrukturen mit Vorrang.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| enable | Auf 1 setzen, um den Parametern in dieser Struktur Vorrang zu geben |
| GridWeights | AE-Gewichtung, Größe 15X15. |
| SetAeRangeEn | Auf 1 setzen, um den Bereich der automatischen Belichtungskomponenten einzustellen; bei 0 gilt stattdessen die Abstimmdatei. |
| SetLinAeRange | Eingestellter Bereich der automatischen Belichtungskomponenten bei linearer Belichtung (nicht der endgültig wirksame Bereich) |
| SetHdrAeRange | Eingestellter Bereich der automatischen Belichtungskomponenten bei HDR-Belichtung (nicht der endgültig wirksame Bereich) |
【Vorsichtsmaßnahmen】
In Uapi_ExpSwAttrV2_t ist ein Satz AE-Gewichte mit der Größe 15X15 definiert. Der Algorithmus erweitert die Gewichtung entsprechend der tatsächlich von der Hardware konfigurierten Gewichtsanzahl. Für Aufgaben wie die Gesichtsbelichtung kann der in Uapi_ExpSwAttr_AdvancedV2_t definierte Gewichtssatz mit 15X15 Werten verwendet werden. Der Algorithmus verdichtet diese Gewichte entsprechend der tatsächlichen Hardwareanzahl. Um den in Uapi_ExpSwAttr_Advanced_t definierten Gewichtssatz zu verwenden, muss enable auf 1 gesetzt werden.
Beim Einstellen des AE-Parameterbereichs über die API muss SetAeRangeEn auf 1 gesetzt werden; andernfalls gilt standardmäßig der automatische Belichtungsparameterbereich der Abstimmdatei. Je nach Belichtungsmodus erfolgt die Einstellung über SetLinAeRange oder SetHdrAeRange. SetHdrAeRange unterstützt die Bereichseinstellung für jedes Bild. Der endgültig wirksame Belichtungszeit- und Verstärkungsbereich muss zusätzlich in stAuto abgefragt werden; hier steht nur der eingestellte, nicht der endgültig wirksame Bereich.
6.7.1.1.1 Aec_AeRange_t
【Beschreibung】 AE-Parameterbereich definieren.
【Definition】
typedef struct Aec_AeRange_s {
float Min;
float Max;
} Aec_AeRange_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Min | Unterer Grenzwert |
| Max | Oberer Grenzwert |
6.7.1.1.2 Aec_LinAeRange_t
【Beschreibung】 Parameterbereich für den linearen AE-Modus definieren.
【Definition】
typedef struct Aec_LinAeRange_s {
Aec_AeRange_t stExpTimeRange;
Aec_AeRange_t stGainRange;
Aec_AeRange_t stIspDGainRange;
Aec_AeRange_t stPIrisRange;
} Aec_LinAeRange_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stExpTimeRange | Belichtungszeitbereich; Maximum und Minimum in Millisekunden einstellen |
| stGainRange | Analoger Verstärkungsbereich des Sensors; Maximum und Minimum einstellen |
| stIspDGainRange | Digitaler ISP-Verstärkungsbereich; Maximum und Minimum einstellen |
| stPIrisRange | Bereich der blendenäquivalenten Verstärkung; nur P-Iris-Blendensteuerung unterstützt |
【Vorsichtsmaßnahmen】
Wenn Maximum/Minimum jeder Belichtungskomponente den Standardwert 0 besitzt, wird der eingestellte Bereich nicht wirksam. Die tatsächlichen Maxima/Minima werden durch die minimalen und maximalen Knotenwerte des AecRoute-Belichtungszerlegungspfads bestimmt.
Wenn Maximum/Minimum jeder Belichtungskomponente ungleich 0 ist, wird der eingestellte Bereich wirksam. Überschreitet er nicht die Grenzen von Sensor oder ISP, gelten seine Maxima/Minima als tatsächliche Werte; der AecRoute-Belichtungszerlegungspfad wird entsprechend korrigiert und seine maximalen/minimalen Knotenwerte werden auf die eingestellten Komponentenwerte geändert. Werden Sensor- oder ISP-Grenzen überschritten, richten sich die tatsächlichen Maxima/Minima nach den minimalen und maximalen Knotenwerten des AecRoute-Belichtungszerlegungspfads.
6.7.1.1.3 Aec_HdrAeRange_t
【Beschreibung】 Parameterbereich für den AE-HDR-Modus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stExpTimeRange | Belichtungszeitbereich; Maximum und Minimum in Sekunden einstellen. Arrayindizes 0/1/2 entsprechen kurzen, mittleren bzw. langen Bildern. |
| stGainRange | Analoger Sensorverstärkungsbereich; Maximum und Minimum einstellen. Arrayindizes 0/1/2 entsprechen kurzen, mittleren bzw. langen Bildern. |
| stIspDGainRange | Digitaler ISP-Verstärkungsbereich; Maximum und Minimum einstellen. Arrayindizes 0/1/2 entsprechen kurzen, mittleren bzw. langen Bildern. |
| stPIrisRange | Bereich der blendenäquivalenten Verstärkung; Maximum und Minimum einstellen |
【Vorsichtsmaßnahmen】
stExpTimeRange, stGainRange und stIspDGainRange sind als Arrays mit 3 Elementen vordefiniert. Im HDR-Modus mit 2 Bildern gelten nur die Elemente 0 und 1 für die Belichtungskomponentenbereiche kurzer bzw. langer Bilder. Im HDR-Modus mit 3 Bildern gelten 0–2 für kurze, mittlere bzw. lange Bilder.
Wenn Maximum/Minimum jeder Belichtungskomponente den Standardwert 0 besitzt, wird der eingestellte Bereich nicht wirksam. Die tatsächlichen Maxima/Minima werden durch die minimalen und maximalen Knotenwerte des vom Algorithmus korrigierten Belichtungszerlegungspfads bestimmt.
Wenn Maximum/Minimum jeder Belichtungskomponente ungleich 0 ist, wird der eingestellte Bereich wirksam. Überschreitet er die Sensor- oder ISP-Grenzen nicht, gelten seine Maxima/Minima als tatsächliche Werte. Der Belichtungszerlegungspfad wird korrigiert und seine maximalen/minimalen Knotenwerte werden auf die eingestellten Komponentenwerte geändert. Werden Sensor- oder ISP-Grenzen
überschritten, richten sich die tatsächlichen Maxima/Minima nach den maximalen und minimalen Knotenwerten des Belichtungszerlegungspfads. Die Plattform 1106 unterstützt derzeit kein isp dgain; stIspDGainRange ist daher vorläufig unwirksam.
6.7.1.2 Uapi_AeAttrV2_t
【Beschreibung】 Eigenschaften der automatischen AE-Belichtung definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stAeSpeed | Anpassungsgeschwindigkeit der automatischen Belichtung |
| BlackDelayFrame | Verzögerung der automatischen Belichtung: Liegt die Bildhelligkeit länger als BlackDelayFrame Bilder unter dem Sollwert, beginnt Ae mit der Anpassung. |
| WhiteDelayFrame | Verzögerung der automatischen Belichtung: Liegt die Bildhelligkeit für WhiteDelayFrame Bilder über dem Sollwert, beginnt Ae mit der Anpassung. |
| stFrmRate | Struktur für den Bildratenmodus der automatischen Belichtung: feste Bildrate oder automatische Bildratenreduzierung |
| stAntiFlicker | Parameter zur Unterdrückung netzfrequenzbedingten Flimmerns |
| LinAeRange | AE-Bereichsstruktur im linearen Modus (endgültig wirksamer linearer Belichtungsbereich) |
| HdrAeRange | AE-Bereichsstruktur im HDR-Modus (endgültig wirksamer HDR-Belichtungsbereich) |
【Vorsichtsmaßnahmen】
LinAeRange/HdrAeRange enthält den nach interner Prüfung und Korrektur durch den Algorithmus tatsächlich verwendeten Parameterbereich. Überschreitet der per API eingestellte AE-Bereich die Sensorgrenzen, gilt der sensorbegrenzte Bereich. Diese Grenzen finden Sie im AE-Modulparameter sensorinfo des Dokuments Rockchip_Tuning_Guide_ISP30_CN.pdf.
Zum Einstellen des Bereichs der automatischen Belichtungskomponenten verwendet die API die Parameter des oben beschriebenen Uapi_ExpSwAttr_AdvancedV2_t und setzt SetAeRangeEn auf 1. Andernfalls gilt standardmäßig der automatische Belichtungsparameterbereich der Abstimmdatei.
6.7.1.2.1 Uapi_AeSpeedV2_t
【Beschreibung】 Situationsabhängige AE-Anpassungsgeschwindigkeiten definieren.
【Definition】
typedef struct CalibDb_AeSpeedV2_s {
float DampOver;
float DampUnder;
float DampDark2Bright;
float DampBright2Dark;
} CalibDb_AeSpeedV2_t;
typedef CalibDb_AeSpeedV2_t Uapi_AeSpeedV2_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| DampOver | Bei stabiler Umgebungshelligkeit: Belichtungsanpassungsgeschwindigkeit, wenn die Bildhelligkeit über dem Sollwert liegt; Wertebereich [0,1]. |
| DampUnder | Bei stabiler Umgebungshelligkeit: Belichtungsanpassungsgeschwindigkeit, wenn die Bildhelligkeit unter dem Sollwert liegt; Wertebereich [0,1]. |
| DampDark2Bright | Bei plötzlicher Änderung der Umgebungshelligkeit: Geschwindigkeit der Belichtungsanpassung von dunkel zu hell; Wertebereich [0,1]. |
| DampBright2Dark | Bei plötzlicher Änderung der Umgebungshelligkeit: Geschwindigkeit der Belichtungsanpassung von hell zu dunkel; Wertebereich [0,1]. |
6.7.1.2.2 Uapi_AeFpsAttrV2_t
【Beschreibung】 AE-Bildrateneigenschaften definieren.
【Definition】
typedef struct CalibDb_AeFrmRateAttrV2_s {
bool isFpsFix;
uint8_t FpsValue;
} CalibDb_AeFrmRateAttrV2_t;
typedef CalibDb_AeFrmRateAttrV2_t Uapi_AeFpsAttrV2_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| isFpsFix | Aktivierung fester Bildrate bei automatischer Belichtung. Standardwert FALSE: automatische Bildratenreduzierung. TRUE bedeutet einen Modus mit fester Bildrate. |
| FpsValue | Nur bei fester Bildrate wirksam. Beim Standardwert 0 wird die Standardbildrate des Treibers fest verwendet; bei einem Wert ungleich 0 gilt die eingestellte Bildrate. |
6.7.1.2.3 Uapi_AntiFlickerV2_t
【Beschreibung】 Eigenschaften der Flimmerunterdrückung definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| enable | Aktivierungszustand der netzfrequenzbezogenen Flimmerunterdrückung: 0: Funktion ausschalten; 1: Funktion einschalten |
| Frequency | Frequenzeigenschaft der Flimmerunterdrückung mit insgesamt 3 Bildraten: AECV2_FLICKER_FREQUENCY_OFF (wirksam bei enable 0), AECV2_FLICKER_FREQUENCY_50HZ, AECV2_FLICKER_FREQUENCY_60HZ. Standardmäßig AECV2_FLICKER_FREQUENCY_50HZ (Netzfrequenz 50 Hz). |
| Mode | Modus der Flimmerunterdrückung; zwei Modi: AECV2_ANTIFLICKER_NORMAL_MODE (normaler Modus), AECV2_ANTIFLICKER_AUTO_MODE (automatischer Modus) |
【Vorsichtsmaßnahmen】
Zum Ausschalten der Flimmerunterdrückung muss enable auf 0 gesetzt werden; der Algorithmus konfiguriert dann automatisch Frequency=AECV2_FLICKER_FREQUENCY_OFF. Ist enable auf 1 gesetzt und als Frequenz AECV2_FLICKER_FREQUENCY_OFF konfiguriert, ist dieser Frequenzwert ungültig und wird durch den Standardwert AECV2_FLICKER_FREQUENCY_50HZ ersetzt.
Im normalen Modus AECV2_ANTIFLICKER_NORMAL_MODE kann die Belichtungszeit entsprechend der Helligkeit angepasst werden. Die minimale Belichtungszeit ist fest auf 1/120 sec (60Hz) oder 1/100 sec (50Hz) gesetzt und wird nicht durch die minimale Belichtungszeit begrenzt.
Beleuchtete Umgebung: Die Belichtungszeit kann an die Lichtquellenfrequenz angepasst werden, wodurch Bildflimmern vermieden wird.
Sehr helle Umgebung: Je höher die Helligkeit, desto kürzer muss die Belichtungszeit sein. Die minimale Belichtungszeit des normalen Flimmerunterdrückungsmodus kann nicht passend zur Lichtquellenfrequenz eingestellt werden, wodurch Überbelichtung entsteht. AECV2_ANTIFLICKER_AUTO_MODE ist der automatische Modus: Die Belichtungszeit wird helligkeitsabhängig angepasst und kann bis zur minimalen Sensorbelichtungszeit reichen. Der Unterschied zum normalen Modus zeigt sich vor allem bei hoher Helligkeit: Die minimale Sensorbelichtungszeit kann Überbelichtung wirksam unterdrücken, allerdings ist die Flimmerunterdrückung dann unwirksam.
6.7.1.3 Uapi_MeAttrV2_t
【Beschreibung】
Manuelle Belichtungsparametereinstellung, je nach Belichtungsmodus in die beiden Parametersätze LinearAE und HdrAE gegliedert.
【Definition】
typedef struct Uapi_MeAttrV2_s {
Uapi_LinMeAttrV2_t stLinMe;
Uapi_HdrMeAttrV2_t stHdrMe;
} Uapi_MeAttrV2_t;
【Zugehörige Datentypen】
Uapi_LinMeAttrV2_t
Uapi_HdrMeAttrV2_t
6.7.1.3.1 Uapi_LinMeAttrV2_t
【Beschreibung】
Manuelle Belichtungssteuerparameter für LinearAE.
【Definition】
typedef struct Uapi_LinMeAttrV2_s {
bool ManualTimeEn;
bool ManualGainEn;
bool ManualIspDgainEn;
float TimeValue;
float GainValue;
float IspDGainValue;
} Uapi_LinMeAttrV2_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ManualTimeEn | Manuelle Belichtungszeit aktivieren; Standardwert 1 |
| ManualGainEn | Manuelle Sensorverstärkung aktivieren; Standardwert 1 |
| ManualIspDgainEn | Manuelle digitale ISP-Verstärkung aktivieren; Standardwert 1 |
| TimeValue | Manuelle Belichtungszeit in s; Parameterwert durch Sensor begrenzt |
| GainValue | Manueller Sensorverstärkungswert; Parameterwert durch Sensor begrenzt |
| IspDGainValue | Manueller digitaler ISP-Verstärkungswert; Parameterwert durch ISP begrenzt |
【Vorsichtsmaßnahmen】
Dieser Modulparameter gilt nur bei AeOptype = MANUAL. Sind ManualTimeEn, ManualGainEn und ManualIspDgainEn alle 1, handelt es sich um manuellen Modus. Sobald einer dieser drei Parameter nicht aktiviert ist, liegt halbautomatischer Modus vor. Sind alle vier oben genannten Werte 0, entspricht dies Automatikmodus und das System meldet einen Fehlerhinweis (die Quelle schreibt hier trotz der drei genannten Parameter „vier“).
Im manuellen/halbmanuellen Modus werden Belichtungszeit und Verstärkung durch die maximalen/minimalen Werte des Automatikmodus begrenzt. Bei Überschreitung gelten stattdessen die jeweiligen Maxima/Minima des Automatikmodus.
RK356X unterstützt keine digitale ISP-Verstärkung; ManualIspDgainEn und IspDGainValue sind daher unwirksam.
6.7.1.3.2 Uapi_HdrMeAttrV2_t
【Beschreibung】
Manuelle Belichtungssteuerparameter für HdrAE.
【Definition】
typedef struct Uapi_HdrMeAttrV2_s {
bool ManualTimeEn;
bool ManualGainEn;
bool ManualIspDgainEn;
Cam3x1FloatMatrix_t TimeValue;
Cam3x1FloatMatrix_t GainValue;
Cam3x1FloatMatrix_t IspDGainValue;
} Uapi_HdrMeAttrV2_t;
【Felder】
Die Variablen haben dieselbe Bedeutung wie in Uapi_LinMeAttrV2_t.
【Vorsichtsmaßnahmen】
TimeValue/GainValue/IspDGainValue sind Arrays mit 3 Elementen. Im HDR-Modus mit 2 Bildern gelten die Elemente [0-1] für kurze bzw. lange Bilder. Im HDR-Modus mit 3 Bildern gelten [0-2] für kurze, mittlere bzw. lange Bilder.
Im manuellen/halbmanuellen Modus werden Belichtungszeit und Verstärkung durch die maximalen/minimalen Werte des Automatikmodus begrenzt. Bei Überschreitung gelten stattdessen die jeweiligen Maxima/Minima des Automatikmodus.
RK356X unterstützt derzeit keine digitale ISP-Verstärkung; ManualIspDgainEn und IspDGainValue sind daher unwirksam.
6.7.2 Uapi_LinAeRouteAttr_t
【Beschreibung】 Eigenschaften des linearen AE-Belichtungszerlegungspfads definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| TimeDot | Sensorbelichtungszeitknoten in s |
| GainDot | Sensorbelichtungsverstärkungsknoten, |
| IspgainDot | Knoten der digitalen ISP-Verstärkung |
| PIrisGainDot | Knoten der blendenäquivalenten Verstärkung |
【Vorsichtsmaßnahmen】
Die Anzahl der Knoten der Belichtungszerlegungskurve ist nicht begrenzt; empfohlen werden jedoch mindestens 6.
Die Belichtung eines Knotens ist das Produkt seiner Komponenten wie Belichtungszeit, Sensorverstärkung, digitaler ISP-Verstärkung und blendenäquivalenter Verstärkung. Sie muss monoton steigen, d. h. ein späterer Knoten muss stärker belichtet sein als der vorherige. Der erste Knoten hat die geringste und der zweite Knoten die größte Belichtung (so formuliert es die Quelle).
Die Belichtungszeitkomponente eines Knotens wird in Sekunden angegeben; als Minimum ist 0 erlaubt. Der tatsächliche minimale Belichtungszeitcode wird intern anhand der Sensorgrenze korrigiert.
Die Blendenkomponente unterstützt nur P-Iris, nicht DC-Iris. Die äquivalente P-Iris-Verstärkung gilt nur bei aktivierter automatischer Airis-Blendenfunktion; andernfalls bleibt die Blende standardmäßig auf ihrer Anfangsgröße fixiert. Die Berechnung der äquivalenten P-Iris-Verstärkung ist im Modul AecIrisCtrl beschrieben.
Die eingestellten Knoten des Belichtungszerlegungspfads bilden nicht den endgültigen Pfad. Die tatsächlichen maximalen/minimalen Werte jeder endgültigen Belichtungskomponente ergeben sich aus der Kombination der Zerlegungsknoten und der manuell konfigurierten Komponentenmaxima/-minima. Zunächst erfolgt eine erste Korrektur der maximalen/minimalen Knotenwerte:
Überschreiten diese Werte die SENSOR- oder ISP-Grenzen nicht, bleiben sie unverändert; andernfalls werden sie auf die Sensor- oder ISP-Grenzen begrenzt. Sind die manuell konfigurierten Komponentenmaxima/-minima 0, gilt der nach der ersten Korrektur erhaltene Pfad. Sind sie ungleich 0 und liegen innerhalb der SENSOR- oder ISP-Grenzen, erfolgt eine zweite Korrektur; dann richten sich die Knotenmaxima/-minima nach dem manuell eingestellten Bereich. Überschreitet dieser Bereich die Sensor- oder ISP-Grenzen, gelten die Ergebnisse der ersten Korrektur. Wenn die Belichtung benachbarter Knoten steigt, sollte nur eine Komponente steigen und die übrigen unverändert bleiben. Die steigende Komponente bestimmt die Verteilungsstrategie dieses Pfadsegments. Steigt beispielsweise die Verstärkung bei konstanten übrigen Komponenten, hat dieses Segment Verstärkungspriorität.
RK356X unterstützt derzeit keine digitale ISP-Verstärkung; IspgainDot ist daher unwirksam.
6.7.3 Uapi_HdrAeRouteAttr_t
【Beschreibung】 Eigenschaften des AE-HDR-Belichtungszerlegungspfads definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Frm0/1/2TimeDot | Belichtungszeitknoten in Sekunden. Bei HDR mit 2 Bildern gilt nur Frm0/1TimeDot; bei HDR mit 3 Bildern gilt Frm0/1/2TimeDot. FRM0~3 bezeichnet die Bildreihenfolge von kurzer zu langer Belichtung. |
| Frm0/1/2GainDot | Sensorverstärkungsknoten. Bei HDR mit 2 Bildern gilt nur Frm0/1GainDot; bei HDR mit 3 Bildern gilt Frm0/1/2GainDot. Die Verstärkung ist der tatsächliche Wert in Einheiten von 1x. FRM0~3 bezeichnet die Reihenfolge von kurzer zu langer Belichtung. |
| Frm0/1/2IspDGainDot | Digitaler ISP-Verstärkungsknoten. Bei HDR mit 2 Bildern gilt nur Frm0/1IspDGainDot; bei HDR mit 3 Bildern gilt Frm0/1/2IspDGainDot. Die Verstärkung ist der tatsächliche Wert in Einheiten von 1x. FRM0~3 bezeichnet die Bildreihenfolge von kurzer zu langer Belichtung. |
| PIrisDot | Knoten der blendenäquivalenten Verstärkung; der Verstärkungswert ist der tatsächliche Wert in Einheiten von 1x. |
【Vorsichtsmaßnahmen】
Die Anzahl der Knoten der Belichtungszerlegungskurve ist unbegrenzt. Mindestens 6 Knoten werden empfohlen, um eine gleichmäßige Belichtungszerlegung zu erzielen.
Bei HDR mit 2 Bildern müssen nur Frm0/1TimeDot, Frm0/1GainDot und Frm0/1IspDGainDot für das kurze bzw. lange Bild eingestellt werden. Bei HDR mit 3 Bildern sind Frm0/1/2TimeDot, Frm0/1/2GainDot und Frm0/1/2IspDGainDot für kurze, mittlere und lange Bilder einzustellen. Verteilen Sie die Sensorbelichtungszeiten im HDR-Modus sinnvoll: Die Summe aller Bildbelichtungszeiten ** darf die durch die Bildrate erlaubte maximale Belichtungszeit nicht überschreiten**!
Die Belichtung eines Knotens ist das Produkt seiner Komponenten wie Belichtungszeit, Sensorverstärkung, digitaler ISP-Verstärkung und blendenäquivalenter Verstärkung. Sie muss monoton steigen, d. h. ein späterer Knoten muss stärker belichtet sein als der vorherige. Der erste Knoten hat die geringste und der zweite Knoten die größte Belichtung (so formuliert es die Quelle).
Die Belichtungszeitkomponente eines Knotens wird in Sekunden angegeben; als Minimum ist 0 erlaubt. Der tatsächliche minimale Belichtungszeitcode wird intern anhand der Sensorgrenze korrigiert.
Die Blendenkomponente unterstützt nur P-Iris, nicht DC-Iris. Die äquivalente P-Iris-Verstärkung gilt nur bei aktivierter automatischer Airis-Blendenfunktion; andernfalls bleibt die Blende standardmäßig auf ihrer Anfangsgröße fixiert. Die Berechnung der äquivalenten P-Iris-Verstärkung ist im Modul AecIrisCtrl beschrieben.
Die eingestellten Knoten des Belichtungszerlegungspfads bilden nicht den endgültigen Pfad. Die tatsächlichen maximalen/minimalen Werte jeder endgültigen Belichtungskomponente ergeben sich aus der Kombination der Zerlegungsknoten und der manuell konfigurierten Komponentenmaxima/-minima. Zunächst werden die Knotenmaxima/-minima korrigiert: Liegen sie innerhalb der SENSOR- oder ISP-Grenzen, bleiben sie unverändert; andernfalls gelten diese Grenzen. Sind die manuell konfigurierten Komponentenmaxima/-minima 0, gilt der Pfad nach dieser ersten Korrektur. Sind sie ungleich 0 und überschreiten die SENSOR- oder ISP-Grenzen nicht, erfolgt eine
zweite Korrektur, bei der die Knotenmaxima/-minima dem manuell eingestellten Bereich entsprechen. Überschreitet der eingestellte Komponentenbereich die Sensor- oder ISP-Grenzen, gelten die Ergebnisse der ersten Korrektur. Bei steigender Belichtung benachbarter Knoten sollte nur eine Komponente steigen und die übrigen konstant bleiben. Die steigende Komponente bestimmt die Verteilungsstrategie dieses Pfadsegments. Steigt beispielsweise die Verstärkung bei konstanten übrigen Komponenten, hat dieses Segment Verstärkungspriorität.
356X unterstützt derzeit keine digitale ISP-Verstärkung; Frm0/1/2ispDGainDot sind daher unwirksam.
6.7.4 Uapi_LinExpAttrV2_t
【Beschreibung】
Abstimmparameter der linearen AE-Belichtung definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RawStatsEn | Helligkeitsstatistik in der Raw-Domäne für lineare Belichtung aktivieren |
| EvBias | Prozentuale Abweichung der Belichtungsmenge bei automatischer Belichtungsanpassung in %; Referenzwertebereich [-200, +200] |
| ToleranceIn/Out | Toleranz der Bildhelligkeit bei automatischer Belichtungsanpassung. Einheit %, Wertebereich [0,100] |
| StrategyMode | Strategie der automatischen Belichtung: Lichter- oder Schwachlichtpriorität [vorübergehend unwirksam] |
| DySetpoint | Dynamischer Helligkeitssollwert der automatischen Belichtungsanpassung, der sich mit der Belichtungsmenge verändert |
| BackLightCtrl | Parameter der Gegenlichtkompensation |
| OverExpCtrl | Parameter der Spitzlichtunterdrückung |
【Vorsichtsmaßnahmen】
EvBias dient in besonderen Szenarien zur Feinabstimmung der festen/dynamischen Helligkeitssollwerte (SetPoint/IRSetPoint). Der tatsächlich wirksame Helligkeitssollwert ist (SetPoint)*[1+abs(EvBias)/100]^[EvBias/abs(EvBias)]. Bei EvBias=100 beträgt er das Doppelte des Standardparameters; bei EvBias=-100 die Hälfte.
Die AE-Bildhelligkeitstoleranz heißt Tolerance. Nach AE-Konvergenz sollte die Helligkeit B im Bereich [tatsächlich wirksamer Helligkeitssollwert X(1-Tolerance/100), tatsächlich wirksamer Helligkeitssollwert X(1+Tolerance/100)] liegen. Große ToleranceIn/Out-Werte beeinflussen sowohl die AE-Reaktionsgeschwindigkeit als auch die Wirkung von EvBias. Ist die Schrittweite der EvBias-Anpassung kleiner als ToleranceIn/Out, kann die Helligkeitsanpassung unwirksam bleiben.
StrategyMode ist derzeit unwirksam.
【Zugehörige Datentypen】
CalibDb_AecDynamicSetpointV2_t
CalibDb_AecBacklightV2_t
CalibDb_AecOverExpCtrlV2_t
6.7.4.1 CalibDb_AecDynamicSetpointV2_t
【Beschreibung】 Dynamische AE-Sollwerte definieren.
【Definition】
typedef struct CalibDb_AecDynamicSetpointV2_s {
float* ExpLevel;
int ExpLevel_len;
float* DySetpoint;
int DySetpoint_len;
} CalibDb_AecDynamicSetpointV2_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ExpLevel | Eigenschaft dynamischer Belichtungsknoten; der Knotenwert entspricht der aktuellen Belichtung. Die Anzahl ist unbegrenzt. Mindestens 6 Knoten werden empfohlen; die Quelle beschreibt dies widersprüchlich als Verhindern eines glatten Belichtungsübergangs. |
| DySetpoint | Eigenschaft dynamischer Helligkeitssollwertknoten. Der Wert verändert sich mit der Belichtungsmenge; je größer der Belichtungsknotenwert, desto kleiner der Helligkeitssollwert. Die Knoten entsprechen den Belichtungsknoten eins zu eins. Ihre Anzahl ist unbegrenzt, muss aber der Anzahl der ExpLevel-Knoten entsprechen. Mindestens 6 Knoten werden empfohlen; die Quelle schreibt widersprüchlich, dies verhindere einen glatten Übergang. |
6.7.5 Uapi_HdrExpAttrV2_t
【Beschreibung】 Abstimmparameter der AE-HDR-Belichtung definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ToleranceIn/Out | Bildhelligkeitstoleranz bei automatischer Belichtungsanpassung. Einheit %, Wertebereich [0,100] |
| LongfrmMode | Parameter des Langbildmodus |
| StrategyMode | Strategie der automatischen Belichtung: Lichter- oder Schwachlichtpriorität (AECV2_STRATEGY_MODE_LOWLIGHT_PRIOR/AECV2_STRATEGY_MODE_HIGHLIGHT_PRIOR) |
| Evbias | Prozentuale Abweichung der Belichtungsmenge bei automatischer Belichtungsanpassung in %; Referenzwertebereich [-200, +200] |
| ExpRatioCtrl | HdrAE-Belichtungsverhältnissteuerung; nur bei Mehrbildzusammenführung im HDR-Modus wirksam |
| LframeCtrl | Steuerparameter für lange Bilder |
| MframeCtrl | Steuerparameter für mittlere Bilder; nur bei HDR mit 3 Bildern wirksam |
| SframeCtrl | Steuerparameter für kurze Bilder |
【Zugehörige Datentypen】
CalibDb_LFrameCtrlV2_t
CalibDb_MFrameCtrlV2_t
CalibDb_SFrameCtrlV2_t
6.7.6 Uapi_IrisAttrV2_t
【Beschreibung】
Blendensteuerparameter.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Enable | Automatische Blendensteuerung aktivieren |
| IrisType | Blendentyp: P (P-Iris) oder DC (DC-Iris) |
| IrisOpType | Blendensteuerungsmodus: automatisch (RK_AIQ_OP_MODE_AUTO) oder manuell (RK_AIQ_OP_MODE_MANUAL) |
| ManualAttr | Manuelle Blendenparameter |
| PIrisAttr | Eigenschaftsparameter der P-Blende |
| DCIrisAttr | Eigenschaftsparameter der DC-Blende |
6.7.6.1 CalibDb_MIris_AttrV2_t
【Beschreibung】
Manuelle Blendenparameter.
【Definition】
typedef struct CalibDb_MIris_AttrV2_s {
int PIrisGainValue;
int DCIrisHoldValue;
} CalibDb_MIris_AttrV2_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| PIrisGainValue | Manueller blendenäquivalenter P-Verstärkungswert, begrenzt durch die P-Blende; Wertebereich [1,1024] |
| DCIrisHoldValue | HoldValue der DC-Blende, abhängig vom DC-Blendengerät; Wertebereich [0,100] |
【Vorsichtsmaßnahmen】
IrisOpType = RK_AIQ_OP_MODE_MANUAL aktiviert die manuelle Blende. Bei P-Blende ist nur PirisGainValue wirksam; bei DC-Blende nur DCIrisHoldValue.
DCIrisHoldValue setzt im manuellen Modus direkt das PWM-Tastverhältnis des Motors, Wertebereich [0,100]. Liegt der eingestellte HoldValue im Bereich von ClosePwmDuty bis OpenPwmDuty in AecIrisCtrl, bleibt die DC-Blende auf ihrer aktuellen Größe. Ein Wert über OpenPwmDuty öffnet die Blende; je größer der Wert, desto schneller die Öffnung. Ein Wert unter ClosePwmDuty schließt die Blende; je kleiner der Wert, desto schneller das Schließen.
6.7.6.2 CalibDb_PIris_AttrV2_t
【Beschreibung】
Eigenschaftsparameter der P-Blende.
【Definition】
#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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| TotalStep | Gesamte Schrittzahl des P-Iris-Schrittmotors; hängt vom P-Iris-Objektiv ab. |
| EffcStep | Nutzbare Schrittzahl des P-Iris-Schrittmotors; hängt vom P-Iris-Objektiv ab. |
| ZeroIsMax | Ob step0 des P-Iris-Schrittmotors der maximalen Blendenöffnung entspricht; der Wert hängt vom P-Iris-Objektiv ab. Bei 0 entspricht die Schrittmotorposition step0 der kleinsten Blende; bei 1 entspricht step0 der größten Blende. |
| StepTable | Zuordnungstabelle der P-Iris-Schrittmotorposition zur blendenäquivalenten Verstärkung; die Werte hängen vom P-Iris-Objektiv ab. |
6.7.6.3 CalibDb_DCIris_AttrV2_t
【Beschreibung】
Eigenschaften der DC-Blende.
【Definition】
typedef struct CalibDb_DCIris_AttrV2_s {
float Kp;
float Ki;
float Kd;
int MinPwmDuty;
int MaxPwmDuty;
int OpenPwmDuty;
int ClosePwmDuty;
} CalibDb_DCIris_AttrV2_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Kp | Proportionalfaktor, der bei starken Änderungen die Öffnungs-/Schließgeschwindigkeit der Blende begrenzt. Je größer der Wert, desto langsamer öffnet und schließt sie. Ein zu großer Wert bewirkt ein vorzeitiges Abbremsen und damit zu lange Regelzeiten; ein zu kleiner Wert bewirkt verspätetes Abbremsen und stärkeres Überschwingen. Eine sinnvolle Einstellung hängt von DC-Iris-Objektiv und Schaltung ab. Empfohlener Wert 0.5; Wertebereich [0,1]. |
| Ki | Integrationskoeffizient zur Einstellung der Öffnungs-/Schließgeschwindigkeit. Laut Quelle steigt diese mit größerer Blende. Ein zu großer Wert verursacht leicht Überschwingen und Schwingungen; bei zu kleinem Wert können durch langsame Blendenregelung und starke Änderungen der Umgebungshelligkeit ebenfalls Schwingungen entstehen. Empfohlener Wert 0.2; Wertebereich [0,1]. |
| Kd | Differentialkoeffizient zur Einstellung der Öffnungs-/Schließgeschwindigkeit. Je größer der Wert, desto schneller öffnet und schließt die Blende. Empfohlener Wert 0.3; Wertebereich [0,1]. |
| MinPwmDuty | Minimales PWM-Tastverhältnis in %, abhängig von DC-Iris-Objektiv und Schaltung. Je kleiner der Wert, desto schneller kann die Blende schließen, allerdings steigt die Schwingungsneigung. Wertebereich [0,100], Standardwert 0. |
| MaxPwmDuty | Maximales PWM-Tastverhältnis in %, abhängig von DC-Iris-Objektiv und Schaltung. Ein höherer Wert öffnet die Blende schneller. Ein zu kleiner Wert kann die Blendensteuerung beenden, bevor die maximale Öffnung erreicht wurde. Wertebereich [0,100], Standardwert 100. |
| OpenPwmDuty | PWM-Tastverhältnisschwelle zum Öffnen: Die Blende öffnet bei einem Tastverhältnis streng größer als OpenPwmDuty. Der Wert hängt vom DC-Iris-Objektiv ab und wird in % angegeben. |
| ClosePwmDuty | PWM-Tastverhältnisschwelle zum Schließen: Die Blende schließt bei einem Tastverhältnis streng kleiner als ClosePwmDuty. Der Wert hängt vom DC- Iris-Objektiv ab und wird in % angegeben. |
【Vorsichtsmaßnahmen】
Wenn die automatische Blendenfunktion deaktiviert ist, wird eine DC-Iris-Blende standardmäßig vollständig geöffnet. Bei P-Iris wird standardmäßig die Schrittmotorposition für maximale Öffnung angefahren. Zur Änderung dieser Positionen können InitPIrisGainValue und InitDCIrisDutyValue im Modul AecInitValue angepasst werden.
Der grundlegende Steuerablauf des automatischen Blendenalgorithmus Airis lautet:
Bei DC-Iris-Objektiven steuert Airis die Blendenöffnung anhand der Abweichung zwischen aktueller Helligkeit und Helligkeitssollwert. Wenn die Belichtung ihr Minimum erreicht und die aktuelle Helligkeit den Sollwerttoleranzbereich überschreitet, wird die AE-Regelung verlassen. Belichtungszeit und Verstärkung werden fixiert und AIRIS übernimmt die Regelung. Ist die aktuelle Bildhelligkeit stabil und das PWM-Tastverhältnis
der DC-Iris größer als OpenPwmDuty, wird die maximale Blendenöffnung als erreicht betrachtet. Airis beendet die Blendenregelung und übergibt die Steuerung an AE.
Bei P-Iris-Objektiven erfolgt die Blendensteuerung über AecRoute. Die Blendenöffnung wird in eine äquivalente Verstärkung umgerechnet und in die Berechnung der Belichtungszerlegung einbezogen.
Die Zuordnungstabelle StepTable zwischen P-Iris-Schrittmotorposition und blendenäquivalenter Verstärkung wird gewöhnlich aus der vom Objektivhersteller gelieferten Zuordnung zwischen Motorposition und Blendenöffnung erstellt. Da das AE-Modul AecRoute die Öffnung in äquivalente Verstärkung umrechnet, muss die P-Iris-Steuerung gut linear sein. Die äquivalente Verstärkung liegt im Bereich [1,1024]: F1.0 entspricht 1024, F1.4 entspricht 512 und entsprechend fortgesetzt F32.0 dem Wert 1. Rechnen Sie zur Tabellenerstellung die Öffnung jeder Motorposition in äquivalente Verstärkung um und tragen Sie sie in StepTable in aufsteigender Reihenfolge der Motorpositionen ein (step0, step1… stepN).
TotalStep bezeichnet die gesamte Schrittzahl des P-Iris-Schrittmotors und hängt vom Objektiv ab. EffcStep bezeichnet die nutzbare Schrittzahl und ist gewöhnlich kleiner als TotalStep. Nahe der vollständig geschlossenen Position ist der Fehler der entsprechenden äquivalenten Verstärkung groß und bei der Blendenregelung können leicht Schwingungen entstehen. Daher werden solche Positionen gewöhnlich nicht verwendet.
Tabelle 4-1 ordnet P-Iris-Schrittmotorposition, Blendenfläche und äquivalente Verstärkung einander zu und dient als Beispiel für StepTable. Die Zuordnung zwischen Motorschritt und Fläche in Spalten 1–2 und 4–5 stammt von einem Objektivhersteller. Das Objektiv hat insgesamt 81 Motorschritte; step0 entspricht der größten Öffnung mit einer nominalen maximalen Blende von 1.4. Diese entspricht einer äquivalenten Verstärkung von 512, somit beträgt sie bei Schritt 0 ebenfalls 512. Beispiel Schritt 3: Die Fläche beträgt 195.869; daraus ergibt sich die äquivalente Verstärkung = 512* (195.869/201.062)=499(gerundet). Entsprechend lassen sich die Werte anderer Motorpositionen berechnen. Aus Tabelle 1-1 (Verweis der Quelle) ist ersichtlich, dass nahe der geschlossenen Position die Fläche sehr klein ist und gegenüber der größten Fläche um Tausende Faktoren abweichen kann. Der Fehler der äquivalenten Verstärkung ist dann groß. Solche Positionen sollten zur Vermeidung fehlerbedingter Belichtungsschwingungen nicht verwendet werden. Die äquivalente Verstärkung jeder Motorposition wird in aufsteigender Reihenfolge der Positionen (step0, step1… stepN) in StepTable eingetragen.
OpenPwmDuty und ClosePwmDuty der DC-Iris müssen gemessen werden und hängen vom Objektiv ab. Bei einigen Objektiven öffnet die Blende, wenn das PWM-Tastverhältnis über OpenPwmDuty liegt; liegt es darunter, schließt sie (die Quelle nennt hier ebenfalls OpenPwmDuty). Im Bereich größer oder gleich ClosePwmDuty und kleiner oder gleich OpenPwmDuty bleibt sie stabil; die Werte dieses Bereichs heißen HoldValue. Andere Objektive besitzen nur eine Öffnungs-/Schließschwelle: Oberhalb öffnet die Blende, unterhalb schließt sie und genau auf der Schwelle bleibt sie stabil. Dieser Wert ist HoldValue; in diesem Fall kann ClosePwmDuty = OpenPwmDuty = HoldValue gesetzt werden.
Die manuelle Blendenparametereinstellung entspricht dem manuellen Belichtungsmodus. Setzen Sie für manuelle Blendensteuerung AecOpType auf manuellen Modus und aktivieren Sie ManualIrisEn in AecManualCtrl. Wenn IrisType P-iris ist, gilt nur PirisGainValue; wenn IrisType P-iris ist, gilt nur DCIrisValue. Die Quelle nennt in beiden Fällen P-iris; dieser Widerspruch bleibt erhalten.
Tabelle 4-1 Zuordnung von P-Iris-Schrittmotorposition, Blendenfläche und äquivalenter Verstärkung
| Schritt | Blendenfläche (mm2) |
Äquivalente Verstärkung |
Schritt | Blendenfläche (mm2) |
Äquivalente Verstärkung |
|---|---|---|---|---|---|
| 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 |
| Schritt | Blendenfläche (mm2) |
Äquivalente Verstärkung |
Schritt | Blendenfläche (mm2) |
Äquivalente Verstärkung |
|---|---|---|---|---|---|
| 29 | 98.826 | 252 | 70 | 0.268 | 1 |
| 30 | 95.115 | 242 | 71 | 0.075 | 0 |
| 31 | 91.431 | 233 | 72 | geschlossen | 0 |
| 32 | 87.777 | 224 | 73 | geschlossen | 0 |
| 33 | 84.156 | 214 | 74 | geschlossen | 0 |
| 34 | 80.569 | 205 | 75 | geschlossen | 0 |
| 35 | 77.02 | 196 | 76 | geschlossen | 0 |
| 36 | 73.51 | 187 | 77 | geschlossen | 0 |
| 37 | 70.043 | 178 | 78 | geschlossen | 0 |
| 38 | 66.621 | 170 | 79 | geschlossen | 0 |
| 39 | 63.247 | 161 | 80 | geschlossen | 0 |
| 40 | 59.923 | 153 |
6.7.7 Uapi_ExpWin_t
【Beschreibung】 Eigenschaftsparameter des AE-Statistikfensters definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| h_offs | Horizontaler Versatz der linken oberen Fensterecke gegenüber dem Koordinatenursprung; dieser liegt in der linken oberen Ecke des lichtempfindlichen Sensorbereichs. |
| v_offs | Vertikaler Versatz der linken oberen Fensterecke gegenüber dem Koordinatenursprung; dieser liegt in der linken oberen Ecke des lichtempfindlichen Sensorbereichs. |
| h_size | Horizontale Fenstergröße |
| v_size | Vertikale Fenstergröße |
6.7.8 Uapi_ExpQueryInfo_t
【Beschreibung】 AE-Belichtungsparameterabfragen definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| IsConverged | Ob die automatische Belichtung konvergiert ist |
| IsExpMax | Ob die ISP-Belichtung ihr Maximum erreicht hat |
| LumaDeviation | Im linearen Modus die Abweichung zwischen AEC-Sollwert und tatsächlicher Bildhelligkeit. Ein positiver Wert bedeutet tatsächliche Helligkeit über dem Sollwert, ein negativer Wert Helligkeit unter dem Sollwert. Bei 0 liegt die tatsächliche Helligkeit innerhalb des Toleranzbereichs des Sollwerts. |
| HdrLumaDeviation | Im HDR-Modus die Abweichung zwischen Soll- und tatsächlicher Helligkeit jedes Bildes. Ein positiver Wert bedeutet tatsächliche Helligkeit über dem Sollwert, ein negativer Wert Helligkeit unter dem Sollwert. Bei 0 liegt die tatsächliche Helligkeit innerhalb des Sollwerttoleranzbereichs. Bei 2 Bildern gelten nur 0 und 1 für kurze bzw. lange Bilder; bei 3 Bildern gelten 0–2 für kurze, mittlere und lange Bilder. |
| MeanLuma | Im linearen Modus die mittlere Helligkeit des aktuellen Bildes |
| HdrMeanLuma | Im HDR-Modus die mittlere Helligkeit jedes aktuellen Teilbildes. Bei 2 Bildern gelten nur Arrayelemente 0 und 1 für kurze bzw. lange Bilder. Bei 3 Bildern gelten alle Arrayelemente für kurze, mittlere bzw. lange Bilder. |
| CurExpInfo | Aktuelle Belichtungsparameter einschließlich Sensorbelichtungszeit und Sensorverstärkungswert. Je nach Belichtungsmodus in zwei Sätze gegliedert: LinearExp und HdrExp[3]. |
| Piris | Blende |
| LinePeriodsPerField | Sensor-VTS |
| PixelPeriodsPerLine | Sensor-HTS |
| PixelClockFreqMHZ | Pixeltaktfrequenz des Sensors in Megahertz |
6.8 Häufige Probleme und Debugging-Methoden
Bei Bildhelligkeitsflimmern, Überschwingen oder unerwarteter Helligkeit empfiehlt es sich, das AE-LOG der problematischen Szene zur Analyse zu erfassen. Dies hilft, die Ursache schneller zu finden und effizienter zu arbeiten.
6.8.1 Synchroner Test von Belichtung und Statistik
Vor der Kalibrierung des ISP-Moduls müssen Treiber- oder Abstimmverantwortliche den Parameter SensorInfo in der IQ-XML-Abstimmdatei ausfüllen. Dieses Modul betrifft Belichtungsparametereinstellungen; falsche Werte können Belichtungsfehler, Flimmern usw. verursachen. Nach der Konfiguration von sensorinfo sollte SyncTest für einen Selbsttest aktiviert werden. Die Bedeutung der SensorInfo-Parameter beschreibt Rockchip_Tuning_Guide_ISP30.
SyncTest stellt zyklisch N Gruppen unterschiedlicher Belichtungswerte ein, um zu prüfen, ob Sensorbelichtungszeit, Sensorverstärkung und die Bildanzahl bis zum Wirksamwerden einer DCG-Umschaltung korrekt sind. Außerdem kann damit die Belichtungslinearität getestet werden, um Umrechnungsformeln und zugehörige Parameter zwischen Registerwerten und Belichtungszeit/-verstärkung zu bestätigen.
Die SyncTest-Funktionsparameter werden nachfolgend beschrieben:
【Beschreibung】
Der synchrone Test von Belichtung und Statistik stellt zyklisch N Gruppen unterschiedlicher Belichtungswerte mit einem vorgegebenen Bildintervall ein. Damit wird geprüft und abgestimmt, ob die Bildanzahl bis zum Wirksamwerden von Belichtungskomponenten (Zeit und Verstärkung) sowie die Sensorbelichtungsparametereinstellungen korrekt sind.
【Felder】
| Feldname | Beschreibung |
|---|---|
| Enable | Gleichzeitigen Test von Belichtung und Statistik aktivieren |
| IntervalFrm | Bildanzahl zwischen Belichtungsumschaltungen |
| AlterExp | Parameter der Belichtungsumschaltung |
AlterExp
Je nach Modus werden zwei Parametersätze unterschieden: LinearAE und HdrAE.
| Feldname | Beschreibung |
|---|---|
| TimeValue | Belichtungszeitwert |
| GainValue | Belichtungsverstärkungswert |
| IspDgainValue | Digitaler ISP-Verstärkungswert |
| DcgMode | DCG-Moduswert |
| PIrisGainValue | Äquivalente P-Iris-Verstärkung |
Bei korrekten Parametern ergibt sich beispielsweise folgendes LOG; es zeigt nur die Schlüsselinformationen. Die rote Umrahmung markiert die Belichtungsumschaltung. Die sichtbare Helligkeit ändert sich nicht und passt zum Belichtungswert; es gibt keine verzögerte oder vorgezogene Linearitätsabweichung. Damit lässt sich grundsätzlich von korrekt gesetzten sensorinfo-Parametern ausgehen.

6.8.2 Flimmern bei Belichtungsänderungen
Flimmern bei Belichtungsänderungen kann mehrere Ursachen haben:
(1) Falsche Bildanzahl bis zum Wirksamwerden von gain und time im Modul CISExpUpdate. Typische LOG-Beispiele folgen; pro Bild werden nur die Schlüsselzeilen gezeigt:

Die rote Umrahmung markiert die Helligkeitsfehler. Bei steigender oder fallender Belichtung entwickelt sich die entsprechende Helligkeit entgegengesetzt. Der abrupte Helligkeitswechsel tritt im zweiten Bild nach einer Änderung sowohl der Belichtungszeit als auch der Verstärkung auf. Die Helligkeitsentwicklung folgt der Belichtungszeit. Daraus lässt sich schließen, dass die Bildanzahl bis zum Wirksamwerden von gain und time falsch ist: Zeit und Verstärkung werden nicht gleichzeitig wirksam, sodass Helligkeit und Belichtung nicht zusammenpassen. Ändern Sie zur Behebung die entsprechenden Bildanzahlen. Das Problem lässt sich mit AE
syncTest nachstellen: Zwei Belichtungssätze mit unterschiedlicher Zeit und Verstärkung abwechselnd schalten und anhand des LOG prüfen, ob das Problem auftritt.
(2) Treiberfehler verursachen nicht konvergierende Helligkeitsschwingungen, häufig bei hellen Szenen. Typische LOG-Beispiele folgen; gezeigt werden nur die Schlüsselzeilen jedes Bildes.

Wie die Abbildung zeigt, schwankt die Belichtung zwischen 59ms und 44ms. Das Verhältnis der zugehörigen mittleren Helligkeiten weicht stark vom Verhältnis der Belichtungszeiten ab; es besteht ein Linearitätsproblem. Prüfen Sie zuerst den Sensortreiber und geben Sie den Belichtungsregisterwert aus, um seine Übereinstimmung mit der protokollierten Belichtung zu prüfen. Das Problem lässt sich mit AE syncTest nachstellen: Mehrere Belichtungssätze einschließlich des problematischen abwechselnd schalten und im LOG prüfen, ob die Helligkeitsänderung jedes Bildes linear zur Belichtung verläuft.

(3) Flimmern durch nachgelagerte AE-Module. Typische LOG-Beispiele folgen; gezeigt werden nur die Schlüsselzeilen jedes Bildes:

Im LOG ist zu erkennen, dass während des Rückgangs von SMeanLuma und MMeanLuma links die Ausgangshelligkeit des TmoMeanluma-Moduls schwankt. In diesem Fall muss das TMO-Modul abgestimmt werden.
7. AWB
7.1 Überblick
Das AWB-Modul verändert die Farbkanalverstärkung des Aufnahmegeräts, um Farbabweichungen durch die Farbtemperatur der Umgebung sowie Abweichungen der geräteeigenen Farbkanalverstärkung gemeinsam auszugleichen. Dadurch soll das aufgenommene Bild die tatsächlichen Farben des Objekts korrekt wiedergeben.
7.2 Wichtige Begriffe
Farbtemperatur: Sie wird anhand eines idealen schwarzen Körpers definiert. Stimmt die Strahlung einer Lichtquelle im sichtbaren Bereich genau mit der eines idealen schwarzen Körpers überein, heißt dessen Temperatur Farbtemperatur der Lichtquelle.
Weißabgleich: Bei Lichtquellen unterschiedlicher Farbtemperatur kann die Sensorantwort auf Weiß bläulich oder rötlich ausfallen. Der Weißabgleichsalgorithmus passt die Intensitäten der drei Farbkanäle R, G und B so an, dass Weiß naturgetreu erscheint.
7.3 Funktionsbeschreibung
Das AWB-Modul besteht aus zwei Teilen: WB-Informationsstatistik und AWB-Steuerstrategiealgorithmus.
7.4 Referenz der funktionsbezogenen APIs
7.4.1 rk_aiq_uapi2_setWBMode
【Beschreibung】 Betriebsart des Weißabgleichs einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setWBMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Weißabgleichsbetriebsart | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Hinweis】
Im manuellen Modus wird der Weißabgleichsverstärkungswert durch den aktuellen manuellen Weißabgleichsparameter bestimmt. Um gleichzeitig in den manuellen Modus zu wechseln und einen bestimmten Verstärkungswert einzustellen, kann rk_aiq_uapi2_setMWBGain verwendet werden.
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.2 rk_aiq_uapi2_getWBMode
【Beschreibung】 Betriebsart des Weißabgleichs abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getWBMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Weißabgleichsbetriebsart | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.3 rk_aiq_uapi2_lockAWB
【Beschreibung】 Aktuelle Weißabgleichsparameter sperren.
【Syntax】
XCamReturn rk_aiq_uapi2_lockAWB(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.4 rk_aiq_uapi2_unlockAWB
【Beschreibung】 Gesperrte Weißabgleichsparameter wieder freigeben.
【Syntax】
XCamReturn rk_aiq_uapi2_unlockAWB(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.5 rk_aiq_uapi2_setMWBScene
【Beschreibung】 Weißabgleichsszene einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setMWBScene(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_wb_scene_t scene);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| scene | Weißabgleichsszene | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.6 rk_aiq_uapi2_getMWBScene
【Beschreibung】 Weißabgleichsszene abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getMWBScene(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_wb_scene_t *scene);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| scene | Weißabgleichsszene | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.7 rk_aiq_uapi2_setMWBGain
【Beschreibung】 Manuellen Weißabgleichsverstärkungsfaktor einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setMWBGain(const rk_aiq_sys_ctx_t* ctx, rk_aiq_wb_gain_t
*gain);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| gain | Weißabgleichsverstärkungsfaktor | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.8 rk_aiq_uapi2_getWBGain
【Beschreibung】 Weißabgleichsverstärkungsfaktor abrufen. Diese Funktion gilt sowohl für manuellen als auch automatischen Weißabgleich.
【Syntax】
XCamReturn rk_aiq_uapi2_getWBGain(const rk_aiq_sys_ctx_t* ctx, rk_aiq_wb_gain_t
*gain);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| gain | Weißabgleichsverstärkungsfaktor | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.9 rk_aiq_uapi2_setMWBCT
【Beschreibung】 Farbtemperaturparameter des manuellen Weißabgleichs einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setMWBCT(const rk_aiq_sys_ctx_t* ctx, unsigned int ct);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| ct | Farbtemperaturparameter des Weißabgleichs | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.10 rk_aiq_uapi2_getWBCT
【Beschreibung】 Farbtemperatur des Weißabgleichs abrufen. Diese Funktion gilt für automatischen und manuellen Betrieb.
【Syntax】
XCamReturn rk_aiq_uapi2_getWBCT(const rk_aiq_sys_ctx_t* ctx, unsigned int *ct);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| ct | Farbtemperatur des Weißabgleichs | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.11 rk_aiq_uapi2_setAwbGainOffsetAttrib
【Beschreibung】 Offset der automatischen Weißabgleichsverstärkung einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setAwbGainOffsetAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wb_awb_wbGainOffset_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | wbgain-Offsetparameter | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.12 rk_aiq_uapi2_getAwbGainOffsetAttrib
【Beschreibung】 Offset der automatischen Weißabgleichsverstärkung abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getAwbGainOffsetAttrib(const rk_aiq_sys_ctx_t* ctx,
CalibDbV2_Awb_gain_offset_cfg_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | wbgain-Offsetparameter | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.13 rk_aiq_uapi2_setAwbGainAdjustAttrib
【Beschreibung】 Farbtonanpassungsparameter im automatischen Weißabgleichsmodus einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setAwbGainAdjustAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Farbtonanpassungsparameter des Weißabgleichs | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.14 rk_aiq_uapi2_getAwbGainAdjustAttrib
【Beschreibung】 Farbtonanpassungsparameter im automatischen Weißabgleichsmodus abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getAwbGainAdjustAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Farbtonanpassungsparameter des Weißabgleichs | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.15 rk_aiq_uapi2_setAwbV30AllAttrib
【Beschreibung】 Alle von der Weißabgleichs-API unterstützten Parameter einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setAwbV30AllAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wbV30_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Alle von der Weißabgleichs-API unterstützten Parameter. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Ungleich 0 | Fehler; Einzelheiten siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.4.16 rk_aiq_uapi2_getAwbV30AllAttrib
【Beschreibung】 Alle von der Weißabgleichs-API unterstützten Parameter abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getAwbV30AllAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wbV30_attrib_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | wbgain-Offsetparameter | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Ungleich 0 | Fehler; Einzelheiten siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.5 Datentypen der funktionsbezogenen APIs
7.5.1 rk_aiq_wb_op_mode_t
【Beschreibung】 Weißabgleichsbetriebsart definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RK_AIQ_WB_MODE_MANUAL | Manueller Weißabgleichsmodus |
| RK_AIQ_WB_MODE_AUTO | Automatischer Weißabgleichsmodus |
7.5.2 rk_aiq_wb_mwb_mode_t
【Beschreibung】 Typ des manuellen Weißabgleichsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RK_AIQ_MWB_MODE_CCT | Farbtemperatur |
| RK_AIQ_MWB_MODE_WBGAIN | Verstärkungsfaktor |
| RK_AIQ_MWB_MODE_SCENE | Szene |
7.5.3 rk_aiq_wb_gain_t
【Beschreibung】 Weißabgleichsverstärkungsparameter definieren.
【Definition】
typedef struct rk_aiq_wb_gain_s {
float rgain;
float grgain;
float gbgain;
float bgain;
} rk_aiq_wb_gain_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| rgain | Verstärkung des R-Kanals |
| grgain | Verstärkung des G-Kanals |
| gbgain | Verstärkung des GB-Kanals |
| bgain | Verstärkung des B-Kanals |
7.5.4 rk_aiq_wb_scene_t
【Beschreibung】 Weißabgleichsverstärkungsparameter definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RK_AIQ_WBCT_INCANDESCENT | Glühlampe |
| RK_AIQ_WBCT_FLUORESCENT | Leuchtstofflampen |
| RK_AIQ_WBCT_WARM_FLUORESCENT | Warmweiße Leuchtstofflampe |
| RK_AIQ_WBCT_DAYLIGHT | Tageslicht |
| RK_AIQ_WBCT_CLOUDY_DAYLIGHT | Bewölkt |
| RK_AIQ_WBCT_TWILIGHT | Dämmerung |
| RK_AIQ_WBCT_SHADE | Schatten |
7.5.5 rk_aiq_wb_cct_t
【Beschreibung】 Weißabgleichsverstärkungsparameter definieren.
【Definition】
typedef struct rk_aiq_wb_cct_s {
float CCT;
float CCRI;
} rk_aiq_wb_cct_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| CCT | Korrelierte Farbtemperatur |
| CCRI | Korrelierter Farbwiedergabeindex |
7.5.6 rk_aiq_wb_mwb_attrib_t
【Beschreibung】 Eigenschaften des manuellen Weißabgleichs definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| mode | Modusauswahl |
7.5.7 rk_aiq_uapiV2_wb_awb_wbGainOffset_t
【Beschreibung】 Offset der automatischen Weißabgleichsverstärkung definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Definition von rk_aiq_uapi_sync_t siehe Abschnitt Überblick/API-Beschreibung |
| gainOffset | Siehe nachfolgende Beschreibung von CalibDbV2_Awb_gain_offset_cfg_t |
7.5.8 CalibDbV2_Awb_gain_offset_cfg_t
【Beschreibung】 Offset der automatischen Weißabgleichsverstärkung definieren.
【Definition】
typedef struct CalibDbV2_Awb_gain_offset_cfg_s{
bool enable;
float offset[4];
}CalibDbV2_Awb_gain_offset_cfg_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| enable | Aktivierungsschalter; 0 bedeutet deaktiviert, 1 aktiviert |
| offset | wbgain und offset werden addiert. Der Offsetbereich für die Kanäle R GR GB B ergibt sich aus der Summe von wbgain und offset; diese Summe muss im Bereich [0,8] (ISP21) liegen. |
7.5.9 rk_aiq_uapiV2_wb_awb_wbGainAdjust_t
【Beschreibung】 Farbtonanpassungsparameter des automatischen Weißabgleichs definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Definition von rk_aiq_uapi_sync_t siehe Abschnitt Überblick/API-Beschreibung |
| enable | Farbtonanpassung aktivieren: 0 bedeutet deaktiviert, 1 aktiviert |
| lutAll | Für unterschiedliche Umgebungshelligkeiten können unterschiedliche Ausgangsfarbtemperaturtabellen konfiguriert werden. |
| lutAll_len | Anzahl der Farbtemperaturtabellen angeben |
| lutAll.ct_grid_num | Anzahl der Abtastpunkte für die Eingangsfarbtemperatur der Farbtemperaturtabelle; unbegrenzt |
| lutAll.ct_in_range | Eingangsfarbtemperaturbereich der Farbtemperaturtabelle; unbegrenzt |
| lutAll.cri_grid_num | Anzahl der Abtastpunkte für den Eingangsfarbwiedergabeindex der Farbtemperaturtabelle; unbegrenzt |
| lutAll.cri_in_range | Bereich des Eingangsfarbwiedergabeindex der Farbtemperaturtabelle; unbegrenzt |
| lutAll.ct_out | Wie im Werkzeugdialog dargestellt, liegen die ct-Werte der Punkte von links nach rechts (Farbton von kalt zu warm), d. h. CT steigt von klein nach groß; Wertebereich 0-255000. |
| lutAll.cri_out | Wie im Werkzeugdialog dargestellt, liegen die cri-Werte der Punkte von unten nach oben (Farbton von Violett zu Grün), d. h. CRI steigt von negativen zu positiven Werten ** Der Wertebereich ist unbegrenzt. |
Weitere Hinweise enthält das Kapitel zur WBGain-Farbanpassung im Dokument Rockchip_Color_Optimization_Guide.
7.5.10 rk_aiq_uapiV2_wbV30_awb_attrib_t
【Beschreibung】 API-Parameter des automatischen Weißabgleichs definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| wbGainAdjust | Siehe CalibDbV2_Awb_gain_offset_cfg_t |
| wbGainOffset | Siehe rk_aiq_uapiV2_wb_awb_wbGainAdjust_t |
| multiWindow | Siehe rk_aiq_uapiV2_wbV32_awb_mulWindow_t |
7.5.11 rk_aiq_uapiV2_wbV32_attrib_t
【Beschreibung】 Alle von der Weißabgleichs-API unterstützten Parameter definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Beschreibung von rk_aiq_uapi_sync_t siehe Abschnitt Überblick/API-Beschreibung |
| bypass | Wert 0 oder 1. 0: Weißabgleichskorrektur durchführen; die verwendete Verstärkung wird durch die Parameter am Tabellenende gesteuert. 1: Keine Weißabgleichskorrektur durchführen. |
| mode | Steuerparameter für automatischen oder manuellen Weißabgleich; siehe rk_aiq_wb_op_mode_t |
| stManual | Manuelle Weißabgleichsparameter; siehe rk_aiq_wb_mwb_attrib_t |
| stAuto | Automatische Weißabgleichsparameter; siehe rk_aiq_uapiV2_wbV21_awb_attrib_t |
7.6 Referenz der modulbezogenen APIs
7.6.1 rk_aiq_user_api2_awbV30_SetAllAttrib
【Beschreibung】 Alle von der Weißabgleichs-API unterstützten Parameter einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awbV30_SetAllAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wbV30_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Alle von der Weißabgleichs-API unterstützten Parameter | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.2 rk_aiq_user_api2_awbV30_GetAllAttrib
【Beschreibung】 Alle von der Weißabgleichs-API unterstützten Parameter abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awbV30_GetAllAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wbV30_attrib_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Alle von der Weißabgleichs-API unterstützten Parameter | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.3 rk_aiq_user_api2_awb_GetCCT
【Beschreibung】 Farbtemperatur des Weißabgleichs abrufen. Diese Funktion gilt für automatischen und manuellen Betrieb.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_GetCCT(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_wb_cct_t
*cct);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| cct | Farbtemperaturparameter des Weißabgleichs | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.4 rk_aiq_user_api2_awb_QueryWBInfo
【Beschreibung】 Weißabgleichsverstärkungsfaktor und Farbtemperatur abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_QueryWBInfo(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_wb_querry_info_t *wb_querry_info);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| wb_querry_info | Farbbezogene Zustandsparameter | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.5 rk_aiq_user_api2_awb_Lock
【Beschreibung】 Aktuelle Weißabgleichsparameter sperren.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_Lock(const rk_aiq_sys_ctx_t* sys_ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.6 rk_aiq_user_api2_awb_Unlock
【Beschreibung】 Gesperrte Weißabgleichsparameter wieder freigeben.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_Lock(const rk_aiq_sys_ctx_t* sys_ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.7 rk_aiq_user_api2_awb_SetWpModeAttrib
【Beschreibung】 Weißabgleichsbetriebsart einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_SetWpModeAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_opMode_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Weißabgleichsbetriebsart | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.8 rk_aiq_user_api2_awb_GetWpModeAttrib
【Beschreibung】 Weißabgleichsbetriebsart abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_GetWpModeAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_opMode_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Weißabgleichsbetriebsart | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.9 rk_aiq_user_api2_awb_SetMwbAttrib
【Beschreibung】 Manuelle Weißabgleichsparameter einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_SetMwbAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_wb_mwb_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Manuelle Weißabgleichsparameter | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.10 rk_aiq_user_api2_awb_GetMwbAttrib
【Beschreibung】 Manuelle Weißabgleichsparameter einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_SetMwbAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_wb_mwb_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Manuelle Weißabgleichsparameter | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.11 rk_aiq_user_api2_awb_SetWbGainAdjustAttrib
【Beschreibung】 Farbtonanpassungsparameter im automatischen Weißabgleichsmodus einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_SetWbGainAdjustAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Farbtonanpassungsparameter | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.12 rk_aiq_user_api2_awb_GetWbGainAdjustAttrib
【Beschreibung】 Farbtonanpassungsparameter im automatischen Weißabgleichsmodus abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_GetWbGainAdjustAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Farbtonanpassungsparameter | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.13 rk_aiq_user_api2_awb_SetWbGainOffsetAttrib
【Beschreibung】 Offset der automatischen Weißabgleichsverstärkung einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_SetWbGainOffsetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_awb_wbGainOffset_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Farbtonanpassungsparameter | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.6.14 rk_aiq_user_api2_awb_GetWbGainOffsetAttrib
【Beschreibung】 Offset der automatischen Weißabgleichsverstärkung abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_awb_GetWbGainOffsetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapiV2_wb_awb_wbGainOffset_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Farbtonanpassungsparameter | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Siehe sample_awb_module.cpp.
7.7 Datentypen der modulbezogenen APIs
7.7.1 rk_aiq_wb_querry_info_t
【Beschreibung】 Weißabgleichsabfrageinformationen definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| gain | Verstärkung |
| cctGloabl | Globaler Farbtemperaturparameter |
| LVValue | Zugehörige Umgebungshelligkeit |
7.7.2 rk_aiq_wb_op_mode_t
【Beschreibung】 Weißabgleichsbetriebsart definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Beschreibung von rk_aiq_uapi_sync_t siehe Abschnitt Überblick/API-Beschreibung |
| mode | Siehe Beschreibung von rk_aiq_wb_op_mode_t |
7.7.3 rk_aiq_wb_mwb_attrib_t
【Beschreibung】 Eigenschaften des manuellen Weißabgleichs definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Definitionen von rk_aiq_uapi_sync_t siehe Abschnitt Überblick/API-Beschreibung |
| mode | Modusauswahl |
| para | Parameterkonfiguration für den Modus |
8. AF
8.1 Überblick
Das AF-Modul stellt das Kameraobjektiv so ein, dass das Motiv scharf abgebildet wird.
8.2 Funktionsbeschreibung
Das AF-Modul besteht aus AF-Informationsstatistik und AF-Steueralgorithmus. Das folgende Blockbild zeigt die Statistik:

ch0/ch1/ch2 entsprechen im HDR-Modus den S/M/L-Frames; debayer bezeichnet den zusammengesetzten HDR-Frame.
windowA liefert hauptsächlich 15*15 V1/V2/H1/H2-FV-Werte, Helligkeitsinformationen und die Anzahl heller Pixel.
windowB liefert hauptsächlich einen FV-Wert, Helligkeitsinformationen und die Anzahl heller Pixel.
8.3 userAF-Algorithmen entwickeln

Referenzcode im SDK: external/camera_engine_rkaiq/rkisp_demo/demo/af_algo_demo
8.4 Funktionsbezogene API-Referenz
8.4.1 rk_aiq_uapi2_setFocusMode
【Beschreibung】 Fokusmodus konfigurieren.
【Syntax】
XCamReturn rk_aiq_uapi2_setFocusMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Fokusmodus | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.2 rk_aiq_uapi2_getFocusMode
【Beschreibung】 Aktuellen Fokusmodus abfragen.
【Syntax】
XCamReturn rk_aiq_uapi2_getFocusMode(const rk_aiq_sys_ctx_t* ctx, opMode_t
*mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Fokusmodus | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.3 rk_aiq_uapi2_setFocusWin
【Beschreibung】 Autofokusfenster einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setFocusWin(const rk_aiq_sys_ctx_t* ctx, paRect_t *rect);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| rect | Fokusfenster; der Wertebereich hängt von der Sensor-Eingangsgröße ab. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.4 rk_aiq_uapi2_getFocusWin
【Beschreibung】 Autofokusfenster einstellen. Die getFocusWin-Beschreibung lautet im Original ebenfalls „Set“; dies bleibt als Quellenabweichung erhalten.
【Syntax】
XCamReturn rk_aiq_uapi2_getFocusWin(const rk_aiq_sys_ctx_t* ctx, paRect_t *rect);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| rect | Fokusfenster | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.5 rk_aiq_uapi2_lockFocus
【Beschreibung】 Autofokus sperren und die Fokusbewegung pausieren.
【Syntax】
XCamReturn rk_aiq_uapi2_lockFocus(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.6 rk_aiq_uapi2_unlockFocus
【Beschreibung】 Autofokus entsperren und Fokusbewegung fortsetzen.
【Syntax】
XCamReturn rk_aiq_uapi2_unlockFocus(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.7 rk_aiq_uapi2_oneshotFocus
【Beschreibung】 Einmalige Fokussierung auslösen; nach Abschluss wird nicht weiter fokussiert.
【Syntax】
XCamReturn rk_aiq_uapi2_oneshotFocus(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.8 rk_aiq_uapi2_manualTrigerFocus
【Beschreibung】 Fokussierung manuell auslösen. Anschließend die Bildunschärfe weiter überwachen und bei erneuter Unschärfe nochmals fokussieren.
【Syntax】
XCamReturn rk_aiq_uapi2_manualTrigerFocus(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.9 rk_aiq_uapi2_trackingFocus
【Beschreibung】 Bildunschärfe fortlaufend überwachen und bei Bedarf erneut fokussieren. Üblicherweise nach rk_aiq_uapi2_oneshotFocus verwenden.
【Syntax】
XCamReturn rk_aiq_uapi2_trackingFocus(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.10 rk_aiq_uapi2_getSearchResult
【Beschreibung】 Fokussierergebnis abfragen.
【Syntax】
XCamReturn rk_aiq_uapi2_getSearchResult(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_af_result_t* result);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| result | Fokussierergebnisse; siehe Struktur rk_aiq_af_result_t. | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.11 rk_aiq_uapi2_getZoomRange
【Beschreibung】 Zoombereich abfragen. Er begrenzt die Zoomcode-Eingabe von rk_aiq_uapi_setOpZoomPosition; die API-Schreibweise der Quelle bleibt erhalten.
【Syntax】
XCamReturn rk_aiq_uapi2_getZoomRange(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_af_zoomrange* range);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| range | Bewegungsbereich des Zooms; siehe rk_aiq_af_zoomrange. | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.12 rk_aiq_uapi2_setOpZoomPosition
【Beschreibung】 Zoomposition einstellen beziehungsweise ändern.
【Syntax】
XCamReturn rk_aiq_uapi2_setOpZoomPosition(const rk_aiq_sys_ctx_t* ctx, int pos);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pos | Zoomposition; Wertebereich gemäß rk_aiq_uapi2_getZoomRange. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.13 rk_aiq_uapi2_getOpZoomPosition
【Beschreibung】 Zoomposition abfragen.
【Syntax】
XCamReturn rk_aiq_uapi2_getOpZoomPosition(const rk_aiq_sys_ctx_t* ctx, int *pos);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pos | Zoomposition | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.14 rk_aiq_uapi2_endOpZoomChange
【Beschreibung】 Einstellung der Zoommotorposition abschließen. Nach rk_aiq_uapi_setOpZoomPosition aufrufen; danach erfolgt die Fokussierung. Die API-Schreibweise der Quelle bleibt erhalten.
【Syntax】
XCamReturn rk_aiq_uapi2_endOpZoomChange(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.15 rk_aiq_uapi2_getFocusRange
【Beschreibung】 Fokusbereich abfragen. Er begrenzt den Fokuscode von rk_aiq_uapi_setFocusPosition; die API-Schreibweise der Quelle bleibt erhalten.
【Syntax】
XCamReturn rk_aiq_uapi2_getFocusRange(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_af_focusrange* range);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| range | Bewegungsbereich des Fokus; siehe rk_aiq_af_focusrange. | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.16 rk_aiq_uapi2_setFocusPosition
【Beschreibung】 Fokusposition im manuellen Fokusmodus einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setFocusPosition(const rk_aiq_sys_ctx_t* ctx, unsigned
short code);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| code | Fokuscode; Wertebereich gemäß rk_aiq_uapi2_getFocusRange. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.17 rk_aiq_uapi2_getFocusPosition
【Beschreibung】 Aktuelle Fokusposition abfragen.
【Syntax】
XCamReturn rk_aiq_uapi2_getFocusPosition(const rk_aiq_sys_ctx_t* ctx, unsigned
short *code);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| code | Fokuscodewert | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.18 rk_aiq_uapi2_startZoomCalib
【Beschreibung】 Elektromotormodul korrigieren.
【Syntax】
XCamReturn rk_aiq_uapi2_startZoomCalib(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.4.19 rk_aiq_uapi2_resetZoom
【Beschreibung】 Elektromotormodul zurücksetzen.
【Syntax】
XCamReturn rk_aiq_uapi2_resetZoom(const rk_aiq_sys_ctx_t* ctx);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
8.5 Datentypen der funktionsbezogenen APIs
8.5.1 opMode_t
【Beschreibung】 Betriebsmodus der AF-Informationsstatistik definieren.
【Definition】
typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUAL = 1,
OP_SEMI_AUTO = 2,
OP_INVAL
} opMode_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| OP_AUTO | Autofokusmodus; integrierter AF-Algorithmus läuft. |
| OP_MANUAL | Manueller Fokus; integrierter AF-Algorithmus gestoppt. |
| OP_SEMI_AUTO | Halbautomatischer Fokus; Aufruf der Zoomposition-API löst Autofokus aus. |
8.5.2 rk_aiq_af_zoomrange
【Beschreibung】 Wertebereich des Zooms definieren.
【Definition】
typedef struct {
int min_pos;
int max_pos;
float min_fl;
float max_fl;
} rk_aiq_af_zoomrange;
【Felder】
| Feldname | Beschreibung |
|---|---|
| min_pos | Minimale Zoomposition |
| max_pos | Maximale Zoomposition |
| min_fl | Minimale Brennweite |
| max_fl | Maximale Brennweite |
8.5.3 rk_aiq_af_focusrange
【Beschreibung】 Wertebereich des Fokus definieren.
【Definition】
typedef struct {
int min_pos;
int max_pos;
} rk_aiq_af_focusrange;
【Felder】
| Feldname | Beschreibung |
|---|---|
| min_pos | Minimale Fokusposition |
| max_pos | Maximale Fokusposition |
8.5.4 rk_aiq_af_result_t
【Beschreibung】 AF-Suchergebnisse definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stat | Fokusstatus |
| final_pos | Endgültige Fokusposition |
8.6 Modulbezogene API-Referenz
8.6.1 rk_aiq_user_api2_af_SetAttrib
【Beschreibung】 Fokuseigenschaften einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_af_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_af_attrib_t
attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Fokusparametereigenschaften | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_af.h
Bibliotheksdatei: librkaiq.so
8.6.2 rk_aiq_user_api2_af_GetAttrib
【Beschreibung】 Fokuseigenschaften abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_af_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_af_attrib_t
*attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Fokusparametereigenschaften | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_af.h
Bibliotheksdatei: librkaiq.so
8.7 Datentypen der modulbezogenen APIs
8.7.1 RKAIQ_AF_MODE
【Beschreibung】 Fokusbetriebsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RKAIQ_AF_MODE_NOT_SET | Fokusmodus nicht gesetzt. |
| RKAIQ_AF_MODE_AUTO | Autofokusmodus |
| RKAIQ_AF_MODE_MACRO | Makrofokusmodus |
| RKAIQ_AF_MODE_INFINITY | Fernfokusmodus |
| RKAIQ_AF_MODE_FIXED | Festfokusmodus |
| RKAIQ_AF_MODE_EDOF | Schärfentiefen-Fokusmodus |
| RKAIQ_AF_MODE_CONTINUOUS_VIDEO | Sanfter kontinuierlicher Fokus |
| RKAIQ_AF_MODE_CONTINUOUS_PICTURE | Schneller kontinuierlicher Fokus |
| RKAIQ_AF_MODE_ONESHOT_AFTER_ZOOM | Halbautomatischer Fokus; Einstellen der Zoomposition löst automatisch eine Fokussierung aus. |
8.7.2 RKAIQ_AF_HWVER
【Beschreibung】 Fokusbetriebsmodus definieren. Die Quelle verwendet diese Beschreibung auch für RKAIQ_AF_HWVER; die Typ-/Beschreibungsabweichung bleibt dokumentiert.
【Definition】
typedef enum _RKAIQ_AF_HWVER
{
RKAIQ_AF_HW_V20 = 0,
RKAIQ_AF_HW_V30,
RKAIQ_AF_HW_VMAX
} RKAIQ_AF_HWVER;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RKAIQ_AF_HW_V20 | AF-Hardwareversion 2.0 |
| RKAIQ_AF_HW_V30 | AF-Hardwareversion 3.0 |
8.7.3 rk_aiq_af_algo_meas_v30_t
【Beschreibung】 Betriebsmodus der AF-Informationsstatistik definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| af_en | AF-Statistik aktivieren: 0 aus, 1 ein. |
| rawaf_sel | AF-Statistikkanal wählen, Bereich 0-3 für lange/mittlere/kurze/zusammengesetzte HDR-Frames. AF verwendet üblicherweise den mittleren Frame; ohne HDR auf 0, mit HDR auf 1 setzen. Die abweichende S/M/L-Reihenfolge im Überblick bleibt als Quellenabweichung erhalten. |
| gamma_en | Gamma-Modul einschalten: 0 aus, 1 ein. |
| gaus_en | Fest auf 1 setzen. |
| v1_fir_sel | Fest auf 1 setzen. |
| hiir_en | H1/H2-Kanäle aktivieren: 0 aus, 1 ein. |
| viir_en | V1/V2-Kanäle aktivieren: 0 aus, 1 ein. Bei aktiviertem gamma_en muss viir_en auf 1 stehen. |
| v1_fv_outmode | FV-Ausgabemodus für V1: 0 quadriert, 1 Absolutwert. |
| v2_fv_outmode | FV-Ausgabemodus für V2: 0 quadriert, 1 Absolutwert. |
| ldg_en | LDG aktivieren: 0 aus, 1 ein. |
| accu_8bit_mode | Fest auf 1 setzen. |
| ae_mode | Bei ae_mode = 1 aktiviert RAWAF eine 15x15-Helligkeitsmittelwertstatistik unter Mitbenutzung der RAWAE_BIG-Logik. |
| y_mode | Fest auf 0 setzen. |
| sobel_sel | Fest auf 0 setzen. |
| v_dnscl_mode | Breit-/Schmalbandmodus gemäß Ausgabe des AF-Filterkoeffizientenwerkzeugs wählen. |
| from_awb | AF-Statistikeingang stammt von AWB. |
| from_ynr | AF-Statistikeingang stammt von YNR. |
| ae_config_use | Fest auf 0 konfigurieren. |
| line_en | Derzeit ohne Wirkung. |
| line_num | Derzeit ohne Wirkung. |
| window_num | Anzahl aktiver Fenster: 1 aktiviert WinA als Hauptfenster; 2 aktiviert wina als Hauptfenster und winb als unabhängiges Fenster. |
| wina_h_offs | Horizontale Koordinate des ersten Pixels oben links in WinA, mindestens 2. |
| wina_v_offs | Vertikale Koordinate des ersten Pixels oben links in wina, mindestens 1. |
| Feldname | Beschreibung |
|---|---|
| wina_h_size | Breite von Wina: kleiner als Bildbreite -2-wina_h_offs und ein Vielfaches von 15. |
| wina_v_size | Höhe von Wina: kleiner als Bildhöhe -2-wina_v_offs und ein Vielfaches von 15. |
| winb_h_offs | Horizontale Koordinate des ersten Pixels oben links in winb, mindestens 2. |
| winb_v_offs | Vertikale Koordinate des ersten Pixels oben links in winb, mindestens 1. |
| winb_h_size | Breite von winb: kleiner als Bildbreite -2-wina_h_offs. Die Quelle nennt hier trotz winb ausdrücklich wina_h_offs. |
| winb_v_size | Höhe von winb: kleiner als Bildhöhe -2-wina_v_offs. Die Quelle nennt hier trotz winb ausdrücklich wina_v_offs. |
| gamma_y | Y-Werte der Gammatabelle, Bereich 0-1023. X-Segmentierung von 0 bis 1023: 16 16 16 16 32 32 32 32 64 64 64 128 128 128 128 128. |
| thres | AF-Statistikschwelle für win b. Kleinere berechnete fv-Werte werden gegen Rauscheinfluss auf 0 gesetzt. Bereich 0-0xFFFF. |
| shift_sum_a | Derzeit nicht verfügbar, fest auf 0 setzen. |
| shift_y_a | Derzeit nicht verfügbar, fest auf 0 setzen. |
| v1_iir_coe[9] | 3X3-IIR-Koeffizient des V1-Kanals gemäß Ausgabe des AF-Filterkoeffizientenwerkzeugs. |
| v1_fir_coe[3] | 1x3-FIR-Koeffizient des V1-Kanals gemäß Ausgabe des AF-Filterkoeffizientenwerkzeugs. |
| v2_iir_coe[3] | 1x3-IIR-Koeffizient des V2-Kanals gemäß Ausgabe des AF-Filterkoeffizientenwerkzeugs. |
| v2_fir_coe[3] | 1x3-FIR-Koeffizient des V2-Kanals gemäß Ausgabe des AF-Filterkoeffizientenwerkzeugs. |
| h1_iir1_coe[6] | 1X6-IIR1-Koeffizient des H1-Kanals gemäß Ausgabe des AF-Filterkoeffizientenwerkzeugs. |
| h2_iir1_coe[6] | 1X6-IIR1-Koeffizient des H2-Kanals gemäß Ausgabe des AF-Filterkoeffizientenwerkzeugs. |
| h1_iir2_coe[6] | 1X6-IIR2-Koeffizient des H1-Kanals gemäß Ausgabe des AF-Filterkoeffizientenwerkzeugs. |
| h2_iir2_coe[6] | 1X6-IIR2-Koeffizient des H2-Kanals gemäß Ausgabe des AF-Filterkoeffizientenwerkzeugs. |
| Feldname | Beschreibung |
|---|---|
| h_ldg_lumth[2] | LDG-Helligkeitsschwellen für H1/H2. Index 0: linker dunkler Bereich; 1: rechter heller Bereich. Bereich 0~255. |
| h_ldg_gain[2] | Minimale LDG-Verstärkung für H1/H2. Index 0: linker dunkler Bereich; 1: rechter heller Bereich. Bereich 0~255. |
| h_ldg_gslp[2] | LDG-Steigungskoeffizient für H1/H2. Index 0: linker dunkler Bereich; 1: rechter heller Bereich. Bereich 0~65535. |
| v_ldg_lumth[2] | LDG-Helligkeitsschwellen für V1/V2. Index 0: linker dunkler Bereich; 1: rechter heller Bereich. Bereich 0~255. |
| v_ldg_gain[2] | Minimale LDG-Verstärkung für V1/V2. Index 0: linker dunkler Bereich; 1: rechter heller Bereich. Bereich 0~255. |
| v_ldg_gslp[2] | Laut Quelle minimale LDG-Verstärkung für V1/V2, Index 0 für links/dunkel und 1 für rechts/hell, Bereich 0~255. Die abweichende Beschreibung und der Wertebereich dieses gslp-Felds bleiben unverändert dokumentiert. |
| v_fv_thresh | AF-Statistikschwelle für V1/V2. Kleinere berechnete fv-Werte werden gegen Rauscheinfluss auf 0 gesetzt. Bereich 0-0x0FFF. |
| h_fv_thresh | AF-Statistikschwelle für H1/H2. Kleinere berechnete fv-Werte werden gegen Rauscheinfluss auf 0 gesetzt. Bereich 0-0x0FFF. |
| v1_fv_shift | FV-Rechtsschiebung für V1, um Überlauf zu vermeiden. Bereich 0-7. Der offensichtliche Quellschreibfehler „shit bit“ ist als Schiebebit übersetzt. |
| v2_fv_shift | FV-Rechtsschiebung für V2, um Überlauf zu vermeiden. Bereich 0-7. Der Quellschreibfehler „shit bit“ bleibt dokumentiert. |
| h1_fv_shift | FV-Rechtsschiebung für H1, um Überlauf zu vermeiden. Bereich 0-7. Der Quellschreibfehler „shit bit“ bleibt dokumentiert. |
| h2_fv_shift | FV-Rechtsschiebung für H2, um Überlauf zu vermeiden. Bereich 0-7. Der Quellschreibfehler „shit bit“ bleibt dokumentiert. |
| highlit_thresh | Schwelle der Spitzlichtstatistik. Größere Werte gelten als Spitzlichter; je Bereich wird nur ihre Anzahl aufsummiert. Bereich 0-0x0FFF. |
8.7.4 rk_aiq_af_attrib_t
【Beschreibung】 Fokuskonfigurationsinformationen.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Für synchrone/asynchrone APIs siehe rk_aiq_uapi_sync_t im Überblick beziehungsweise in der API-Beschreibung. |
| AfMode | Fokusmodus |
| contrast_af | Kontrastfokus aktivieren. |
| laser_af | Laserfokus aktivieren. |
| pdaf | Phasenfokus aktivieren. |
| h_offs | Horizontale Anfangskoordinate des Fokusfensters. |
| v_offs | Vertikale Anfangskoordinate des Fokusfensters. |
| h_size | Fokusfensterbreite |
| v_size | Fokusfensterhöhe |
| fixedModeDefCode | Fokuscodewert |
| macroModeDefCode | Endcode im Makrofokusmodus ist laut Quelle 0-value; die ursprüngliche Angabe bleibt erhalten. |
| infinityModeDefCode | Anfangscode im Fernfokusmodus mit Fokusbereich -64; die ursprüngliche Angabe bleibt erhalten. |
| manual_meascfg | Benutzerdefinierte AF2.0-Fokusstatistikkonfiguration. |
| manual_meascfg_v30 | Benutzerdefinierte AF3.0-Fokusstatistikkonfiguration. |
8.8 Ergänzende Hinweise
8.8.1 VCM-Motormodultreiber prüfen
1. Prüfen, ob Anfangs- und Endstrom des VCM-Treibers korrekt eingestellt sind.
Zunächst die Angaben zu Anfangs- und Endstrom vom Modulhersteller einholen.
Anschließend einige Module auswählen und die Angaben wie folgt prüfen:
Im DTS Anfangs- und Endstrom auf den maximal vom VCM unterstützten Bereich setzen.
Auf manuellen Fokus wechseln und die VCM-Position schrittweise ab 64 ändern. Sobald das Objektiv sich bewegt und ein fernes Objekt über 10 Meter scharf ist, die aktuelle Position notieren.
Der Anfangsstrom beträgt (vcm_max_mA - vcm_min_mA) * (64 - curPos) / 64.
VCM weiter bewegen. Sobald ein nahes Objekt bei 10cm oder 20cm scharf erscheint, die aktuelle Position notieren.
Der Endstrom beträgt (vcm_max_mA - vcm_min_mA) * (64 - curPos) / 64.
2. Prüfen, ob die Endposition bei Bewegung aus verschiedenen Richtungen stabil ist.
Im manuellen Fokusmodus eine Zielposition wählen. Einmal von 0, einmal von 64 dorthin bewegen. Bildschärfe und AF-Statistik beider Ergebnisse vergleichen.
3. Prüfen, ob die benötigte Objektivbewegungszeit korrekt ist.
8.8.2 Elektromotormodultreiber prüfen
1. Prüfen, ob mehrere Einzelschritte und eine mehrschrittige Bewegung an derselben Position enden.
1. Zunächst eine Zoom-/Fokusmotorposition mit maximaler Bildschärfe wählen, die Position notieren und Bild A aufnehmen.
2. Zoom- oder Fokusmotor um einige Schritte zurückfahren und dann in Einzelschritten zur notierten Position bewegen. Bild B aufnehmen.
3. Erneut um einige Schritte zurückfahren, die notierte Position mit einer einzigen Bewegung anfahren und Bild C aufnehmen.
4. Schärfe und Sichtfeld von A, B und C auf Übereinstimmung prüfen.
2. Prüfen, ob zufällige Motorbewegungen an derselben Zielposition enden.
1. Zunächst eine Zoom-/Fokusmotorposition mit maximaler Bildschärfe wählen, die Position notieren und Bild A aufnehmen.
2. Zoom- oder Fokusmotor per Skript 400 bis 500 zufällige Bewegungen ausführen lassen, zur ursprünglichen Position zurückkehren und Bild B aufnehmen.
3. Bild A und B auf gleiche Schärfe und gleiches Sichtfeld prüfen.
3. Prüfen, ob gleichzeitig bewegte Motoren dieselbe Endposition erreichen.
1. Zunächst eine Zoom-/Fokusmotorposition mit maximaler Bildschärfe wählen, die Position notieren und Bild A aufnehmen.
2. Zoom- und Fokusmotor per Skript gleichzeitig 400 bis 500 zufällige Bewegungen ausführen lassen, zur ursprünglichen Position zurückkehren und Bild B aufnehmen.
3. Bild A und B auf gleiche Schärfe und gleiches Sichtfeld prüfen.
9. IMGPROC
9.1 Überblick
imgproc bezeichnet die Module, die die Bildwirkung beeinflussen.
9.2 Merge
9.2.1 Funktionsbeschreibung
Merge führt mehrere Bildframes zu einem einzelnen Frame zusammen.
9.2.2 Wichtige Begriffe
Wirkt ausschließlich im HDR-Modus.
9.2.3 Funktionsbezogene API-Referenz
9.2.4 Modulbezogene API-Referenz
9.2.4.1 rk_aiq_user_api2_amerge_SetAttrib
【Beschreibung】 Merge-Eigenschaften einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_amerge_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
amerge_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften von Merge | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_amerge.h
Bibliotheksdatei: librkaiq.so
9.2.4.2 rk_aiq_user_api2_amerge_GetAttrib
【Beschreibung】 Merge-Eigenschaften abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_amerge_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
amerge_attrib_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften von Merge | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_amerge.h
Bibliotheksdatei: librkaiq.so
9.2.5 Datentypen der modulbezogenen APIs
9.2.5.1 merge_OpMode_t
【Beschreibung】 Merge-Betriebsmodus definieren.
【Definition】
typedef enum merge_OpModeV21_e {
MERGE_OPMODE_API_OFF = 0,
MERGE_OPMODE_MANU = 1,
} merge_OpModeV21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| MERGE_OPMODE_API_OFF | API ausgeschaltet; der Algorithmus arbeitet im AUTO-Modus unter Verwendung des Parameters. Die Quelle beendet die Angabe nach „parameter“. |
| MERGE_OPMODE_MANU | Manueller Modus |
9.2.5.2 MergeBaseFrame_t
【Beschreibung】 Referenzframe-Eigenschaften beim Zusammenführen definieren.
【Definition】
typedef enum MergeBaseFrame_e {
BASEFRAME_LONG = 0,
BASEFRAME_SHORT = 1,
} MergeBaseFrame_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| BASEFRAME_LONG | Beim Zusammenführen dienen lange Frames als Referenz. |
| BASEFRAME_SHORT | Beim Zusammenführen dienen kurze Frames als Referenz. |
9.2.5.3 MergeCurrCtlData_t
【Beschreibung】 Merge-Steuerparameter definieren.
【Definition】
typedef struct MergeCurrCtlData_s {
float Envlv;
float MoveCoef;
} MergeCurrCtlData_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Envlv | Aktuelle Umgebungshelligkeit; die Quelle nennt wörtlich „ranges from 0,1 to 0.000001“. Die widersprüchliche Bereichsangabe bleibt unverändert dokumentiert. |
| MoveCoef | Aktueller Bewegungskoeffizient, Bereich [0,1], Genauigkeit 0.000001; der Wert ist vorläufig fest. |
9.2.5.4 mMergeOECurveV21_t
【Beschreibung】 Eigenschaften der manuellen Merge-Überbelichtungskurve definieren.
【Definition】
typedef struct mMergeOECurveV21_s {
float Smooth;
float Offset;
} mMergeOECurveV21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Smooth | Steigung der Überbelichtungskurve, Bereich [0,1], Standard 0.4, Genauigkeit 0.01. |
| Offset | Versatz der Überbelichtungskurve, Bereich [108,280], Standard 210, Genauigkeit 0.1. |
9.2.5.5 mMergeMDCurveV21_t
【Beschreibung】 Bewegungskurveneigenschaften im Langframe-Modus definieren.
【Definition】
typedef struct mMergeMDCurveV21_s {
float LM_smooth;
float LM_offset;
float MS_smooth;
float MS_offset;
} mMergeMDCurveV21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| LM_smooth | Steigung der Bewegungskurve zwischen langem und mittlerem Frame, Bereich [0,1], Standard 0.4, Genauigkeit 0.01. Auf RK356x ohne Wirkung. |
| LM_offset | Versatz der Bewegungskurve zwischen langem und mittlerem Frame, Bereich [0.26,1], Standard 0.38, Genauigkeit 0.01. Auf RK356x ohne Wirkung. |
| MS_smooth | Steigung der Bewegungskurve zwischen mittlerem und kurzem Frame, Bereich [0,1], Standard 0.4, Genauigkeit 0.01. |
| MS_offset | Versatz der Bewegungskurve zwischen mittlerem und kurzem Frame, Bereich [0.26,1], Standard 0.38, Genauigkeit 0.01. |
9.2.5.6 mMergeAttrV21_t
【Beschreibung】 Manuelle Merge-Eigenschaften für RK3588 definieren.
【Definition】
typedef struct mMergeAttrV21_s {
mMergeOECurveV21_t OECurve;
mMergeMDCurveV21_t MDCurve;
} mMergeAttrV21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| OECurve | Parameter der Überbelichtungskurve |
| MDCurve | Parameter des Bewegungsprofils |
9.2.5.7 mergeAttrV21_t
【Beschreibung】 Merge-Eigenschaften auf RK356x konfigurieren.
【Definition】
typedef struct mergeAttrV21_s {
merge_OpModeV21_t opMode;
mMergeAttrV21_t stManual;
MergeCurrCtlData_t CtlInfo;
} mergeAttrV21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| opMode | Modusauswahl |
| stManual | Manuelle Merge-Eigenschaften |
| CtlInfo | Steuergrößenparameter |
9.2.5.8 mLongFrameModeData_t
【Beschreibung】 Steuerparameter im Langframe-Modus definieren.
【Definition】
typedef struct mLongFrameModeData_s {
mMergeOECurveV21_t OECurve;
mMergeMDCurveV21_t MDCurve;
} mLongFrameModeData_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| OECurve | Parameter der Überbelichtungskurve |
| MDCurve | Parameter des Bewegungsprofils |
9.2.5.9 mMergeMDCurveV30Short_t
【Beschreibung】 Bewegungskurveneigenschaften im Kurzframe-Modus definieren.
【Definition】
typedef struct mMergeMDCurveV30Short_s{
float Coef;
float ms_thd0;
float lm_thd0;
} mMergeMDCurveV30Short_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Coef | Steuerkoeffizient, Bereich [0,1], Standard 0.05, Genauigkeit 0.0001. |
| ms_thd0 | Steuerkoeffizient für mittlere und kurze Frames, Bereich [0,1], Standard 0.0, Genauigkeit 0.1. |
| lm_thd0 | Steuerkoeffizient für lange und mittlere Frames, Bereich [0,1], Standard 0.0, Genauigkeit 0.1. |
9.2.5.10 mShortFrameModeData_t
【Beschreibung】 Steuerparameter im Kurzframe-Modus definieren.
【Definition】
typedef struct mShortFrameModeData_s {
mMergeOECurveV21_t OECurve;
mMergeMDCurveV30Short_t MDCurve;
} mShortFrameModeData_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| OECurve | Parameter der Überbelichtungskurve |
| MDCurve | Parameter des Bewegungsprofils |
9.2.5.11 mMergeAttrV30_t
【Beschreibung】 Manuelle Merge-Eigenschaften für RK3588 definieren.
【Definition】
typedef struct mMergeAttrV30_s {
MergeBaseFrame_t BaseFrm;
mLongFrameModeData_t LongFrmModeData;
mShortFrameModeData_t ShortFrmModeData;
} mMergeAttrV30_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| BaseFrm | Referenzframe beim Zusammenführen |
| LongFrmModeData | Steuerdaten, wenn ein langer Frame als Referenz dient. |
9.2.5.12 MergeOECurveV10_t
【Beschreibung】 Automatische Merge-Überbelichtungskurve definieren.
【Definition】
typedef struct MergeOECurveV10_s {
float EnvLv[MERGE_ENVLV_STEP_MAX];
float Smooth[MERGE_ENVLV_STEP_MAX];
float Offset[MERGE_ENVLV_STEP_MAX];
} MergeOECurveV10_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| EnvLv | Umgebungshelligkeit, Bereich [0,1]: 0 vollständig schwarz, 1 am hellsten. |
| Smooth | Steigung der Überbelichtungskurve, Bereich [0,1], Standard 0.4, Genauigkeit 0.01. |
| Offset | Versatz der Überbelichtungskurve, Bereich [108,280], Standard 210, Genauigkeit 0.1. |
9.2.5.13 MergeMDCurveV10_t
【Beschreibung】 Bewegungskurveneigenschaften im Langframe-Modus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| MoveCoef | Bewegungsgrad des Bilds, Bereich [0,1]: 0 vollständig still, 1 volle Bewegung. |
| LM_smooth | Steigung der Bewegungskurve zwischen langem und mittlerem Frame, Bereich [0,1], Standard 0.4. Im HDR-x2-Modus ohne Wirkung. |
| LM_offset | Versatz der Bewegungskurve zwischen langem und mittlerem Frame, Bereich [0.26,1], Standard 0.38. Im HDR-x2-Modus ohne Wirkung. |
| MS_smooth | Steigung der Bewegungskurve zwischen mittlerem und kurzem Frame, Bereich [0,1], Standard 0.4. |
| MS_offset | Versatz der Bewegungskurve zwischen mittlerem und kurzem Frame, Bereich [0.26,1], Standard 0.38. |
9.2.5.14 MergeEachChnCurveV12_t
【Beschreibung】 Unterkanal-Erkennungskurve im Langframe-Modus definieren.
【Definition】
typedef struct MergeEachChnCurveV12_s {
float EnvLv[MERGE_ENVLV_STEP_MAX];
float Smooth[MERGE_ENVLV_STEP_MAX];
float Offset[MERGE_ENVLV_STEP_MAX];
} MergeEachChnCurveV12_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| EnvLv | Umgebungshelligkeit, Bereich [0,1]: 0 vollständig schwarz, 1 am hellsten. |
| Smooth | Steigung der Unterkanal-Überbelichtungskurve, Bereich [0,1], Standard 0.4, Genauigkeit 0.01. |
| Offset | Versatz der Unterkanal-Überbelichtungskurve, Bereich [0,1], Standard 0.38, Genauigkeit 0.01. |
9.2.5.15 LongFrameModeDataV12_t
【Beschreibung】 Steuerparameter im Langframe-Modus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| EnableEachChn | Schalter für getrennte Kanalerkennung |
| OECurve | Parameter der Überbelichtungskurve |
| MDCurve | Parameter des Bewegungsprofils |
| EachChnCurve | Kurvenparameter der getrennten Kanalerkennung |
| MDCurveLM_damp | Glättungskoeffizient für Änderungen der Bewegungskurve zwischen langem und mittlerem Frame: Anteil des aktuellen Frameparameters, Bereich [0,1], Standard 0.9. Im HDR-x2-Modus ohne Wirkung. |
| MDCurveMS_damp | Glättungskoeffizient für Änderungen der Bewegungskurve zwischen mittlerem und kurzem Frame: Anteil des aktuellen Frameparameters, Bereich [0,1], Standard 0.9. |
9.2.5.16 MergeMDCurveV11Short_t
【Beschreibung】 Bewegungskurveneigenschaften im Kurzframe-Modus definieren.
【Definition】
typedef struct MergeMDCurveV11Short_s{
float Coef;
float ms_thd0;
float lm_thd0;
} MergeMDCurveV11Short_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Coef | Steuerkoeffizient, Bereich [0,1], Standard 0.05, Genauigkeit 0.0001. |
| ms_thd0 | Steuerkoeffizient für mittlere und kurze Frames, Bereich [0,1], Standard 0.0, Genauigkeit 0.1. |
| lm_thd0 | Steuerkoeffizient für lange und mittlere Frames, Bereich [0,1], Standard 0.0, Genauigkeit 0.1. |
9.2.5.17 ShortFrameModeData_t
【Beschreibung】 Steuerparameter im Kurzframe-Modus definieren.
【Definition】
typedef struct ShortFrameModeData_s {
MergeOECurveV10_t OECurve;
MergeMDCurveV11Short_t MDCurve;
float OECurve_damp;
float MDCurve_damp;
} ShortFrameModeData_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| OECurve | Parameter der Überbelichtungskurve |
| MDCurve | Parameter des Bewegungsprofils |
| OECurve_damp | Glättungskoeffizient für Änderungen der Überbelichtungskurve: Anteil des aktuellen Frameparameters, Bereich [0,1], Standard 0.9. |
| MDCurve_damp | Glättungskoeffizient für Änderungen der Bewegungskurve: Anteil des aktuellen Frameparameters, Bereich [0,1], Standard 0.9. |
9.2.5.18 CalibDbV2_merge_V12_t
【Beschreibung】 Automatische Merge-Eigenschaften definieren.
【Definition】
typedef struct CalibDbV2_merge_V12_s {
MergeBaseFrame_t BaseFrm;
float ByPassThr;
LongFrameModeDataV12_t LongFrmModeData;
ShortFrameModeData_t ShortFrmModeData;
} CalibDbV2_merge_V12_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| BaseFrm | Referenzframe beim Zusammenführen |
| ByPassThr | Bypass-Schwelle des aktuellen Moduls, Bereich [0,1]. Ist die prozentuale Differenz zwischen aktueller Umgebungshelligkeit und der des vorherigen Frames kleiner als ByPassThr, werden die Modulparameter nicht aktualisiert. |
| LongFrmModeData | Steuerdaten, wenn ein langer Frame als Referenz dient. |
9.2.5.19 MergeCurrCtlData_t
【Beschreibung】 Merge-Eigenschaften auf RK3588 konfigurieren.
【Definition】
typedef struct mergeAttrV30_s {
merge_OpModeV21_t opMode;
mMergeAttrV30_t stManual;
MergeCurrCtlData_t CtlInfo;
} mergeAttrV30_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| opMode | Modusauswahl |
| stManual | Manuelle Merge-Eigenschaften |
| CtlInfo | Steuergrößenparameter |
9.2.5.20 mergeAttr_t
【Beschreibung】 Merge-Eigenschaften konfigurieren.
【Definition】
typedef struct mergeAttr_s {
rk_aiq_uapi_sync_t sync;
mergeAttrV21_t attrV21;
mergeAttrV30_t attrV30;
} mergeAttr_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Für die Definition von rk_aiq_uapi_sync_t siehe Überblick/API-Beschreibung. |
| attrV21 | Merge-Eigenschaften für RK356x; auf RK3588 ohne Wirkung. |
| attrV30 | Merge-Eigenschaften für RK3588; auf RK356x ohne Wirkung. |
9.3 DRC
9.3.1 Funktionsbeschreibung
DRC (High Dynamic Range Compression) komprimiert Bilder mit hoher Bittiefe in Bilder mit niedriger Bittiefe.
9.3.2 Wichtige Begriffe
DRC ist sowohl im Linear- als auch im HDR-Modus nutzbar.
9.3.3 Funktionsbezogene API-Referenz
9.3.3.1 rk_aiq_uapi2_setDrcGain
【Beschreibung】
Parameter der DrcGain-Kurve schnell einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setDrcGain(const rk_aiq_sys_ctx_t* ctx, float Gain, float
Alpha, float Clip);
Der API-Modus ist dabei DRC_OPMODE_DRC_GAIN. Der Aufruf speichert die Parameter in stDrcGain; dieses bestimmt die drei Parameter der DrcGain-Kurve. Die übrigen DRC-Parameter werden weiterhin vom DRC-Modul der JSON-Datei bestimmt.
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| Gain | Gain-Wert, Bereich [1,8] | Eingabe |
| Alpha | Alpha-Wert, Bereich [0,1] | Eingabe |
| Clip | Clip-Wert, Bereich [0,64] | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.3.3.2 rk_aiq_uapi2_getDrcGain
【Beschreibung】
Parameter der schnellen DrcGain-Kurve abfragen.
Die API liefert die Werte aus stDrcGain. Nur im API-Modus DRC_OPMODE_DRC_GAIN entsprechen sie den tatsächlich verwendeten aktuellen Parametern.
【Syntax】
XCamReturn rk_aiq_uapi2_getDrcGain(const rk_aiq_sys_ctx_t* ctx, float Gain, float
Alpha, float Clip);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| Gain | Gain-Wert, Bereich [1,8] | Ausgabe |
| Alpha | Alpha-Wert, Bereich [0,1] | Ausgabe |
| Clip | Clip-Wert, Bereich [0,64] | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.3.3.3 rk_aiq_uapi2_setDrcHiLit
【Beschreibung】
DrcHiLit-Parameter schnell einstellen.
Dabei gilt DRC_OPMODE_HILIT. Der API-Aufruf speichert die Werte in stHiLit, das die HiLight-Parameter bestimmt. Alle übrigen DRC-Parameter stammen weiterhin aus dem DRC-Modul der JSON-Datei.
【Syntax】
XCamReturn rk_aiq_uapi2_setDrcHiLit(const rk_aiq_sys_ctx_t* ctx, float Strength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| Strength | Stärke, Bereich [0,1] | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.3.3.4 rk_aiq_uapi2_getDrcHiLit
【Beschreibung】
Parameter der schnellen DrcHiLit-Konfiguration abfragen.
Die API liefert DrcHiLit-Werte aus stHiLit. Nur im API-Modus DRC_OPMODE_HILIT sind dies die tatsächlich verwendeten Parameter.
【Syntax】
XCamReturn rk_aiq_uapi2_getDrcHiLit(const rk_aiq_sys_ctx_t* ctx, float Strength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| Strength | Stärke, Bereich [0,1] | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.3.3.5 rk_aiq_uapi2_setDrcLocalData
【Beschreibung】
DrcLocalData-Parameter schnell einstellen.
Dabei gilt DRC_OPMODE_LOCAL_TMO. Der Aufruf speichert die Parameter in stLocalDataV30, das LocalData bestimmt. Die übrigen DRC-Parameter stammen weiterhin aus dem DRC-Modul der JSON-Datei.
【Syntax】
XCamReturn rk_aiq_uapi2_setDrcLocalData(const rk_aiq_sys_ctx_t* ctx, float
LocalWeit, float GlobalContrast, float LoLitContrast,int LocalAutoEnable, float
LocalAutoWeit);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| LocalWeit | LocalWeit-Wert, Bereich [0,1] | Eingabe |
| GlobalContrast | GlobalContrast-Wert, Bereich [0,1] | Eingabe |
| LoLitContrast | LoLitContrast-Wert, Bereich [0,1] | Eingabe |
| LocalAutoEnable | Automatischer Local-Schalter, Bereich [0,1] | Eingabe |
| LocalAutoWeit | Automatischer LocalWeit-Wert, Bereich [0,1] | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.3.3.6 rk_aiq_uapi2_getDrcLocalData
【Beschreibung】
Zugehörige DrcLocalData-Parameter abfragen.
Die API liefert LocalData-Werte aus stLocalDataV30. Sie werden nur bei DRC_OPMODE_LOCAL_TMO verwendet.
【Syntax】
XCamReturn rk_aiq_uapi2_getDrcLocalData(const rk_aiq_sys_ctx_t* ctx, float*
LocalWeit, float* GlobalContrast, float* LoLitContrast,int* LocalAutoEnable,
float* LocalAutoWeit);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| LocalWeit | LocalWeit-Wert, Bereich [0,1] | Ausgabe |
| GlobalContrast | GlobalContrast-Wert, Bereich [0,1] | Ausgabe |
| LoLitContrast | LoLitContrast-Wert, Bereich [0,1] | Ausgabe |
| ocalAutoEnable | Automatischer Local-Schalter, Bereich [0,1] | Ausgabe |
| LocalAutoWeit | Automatischer LocalWeit-Wert, Bereich [0,1] | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.3.4 Modulbezogene API-Referenz
9.3.4.1 rk_aiq_user_api2_adrc_SetAttrib
【Beschreibung】 DRC-Softwareeigenschaften einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_adrc_SetAttrib(RkAiqAlgoContext* ctx,
drc_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Struktur der DRC-Softwareeigenschaften | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_adrc.h
Bibliotheksdatei: librkaiq.so
【Beschreibung】
9.3.4.2 rk_aiq_user_api2_adrc_GetAttrib
【Beschreibung】 DRC-Softwareeigenschaften abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_adrc_GetAttrib(RkAiqAlgoContext* ctx,
drc_attrib_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Struktur der DRC-Softwareeigenschaften | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_adrc.h
Bibliotheksdatei: librkaiq.so
【Beschreibung】
9.3.5 Datentypen der modulbezogenen APIs
9.3.5.1 AdrcVersion_t
【Beschreibung】 DRC-Versionseigenschaften definieren.
【Definition】
typedef enum AdrcVersion_e {
ADRC_VERSION_356X = 0,
ADRC_VERSION_3588 = 1,
ADRC_VERSION_MAX
} AdrcVersion_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ADRC_VERSION_356X | RK356x |
| ADRC_VERSION_3588 | RK3588 |
| ADRC_VERSION_MAX | Maximaler Versionsmodus |
9.3.5.2 drc_OpMode_t
【Beschreibung】 DRC-Betriebsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| DRC_OPMODE_API_OFF | Automatischer Modus: sämtliche Drc-Modulparameter werden durch JSON bestimmt. |
| DRC_OPMODE_MANU | Manueller Modus: sämtliche Drc-Modulparameter werden durch stManualV30 bestimmt. |
| DRC_OPMODE_DRC_GAIN | DrcGain-Modus: bestimmte DrcGain-Parameter werden durch stDrcGain, die übrigen durch die entsprechenden Parameter der JSON-Datei bestimmt. |
| DRC_OPMODE_HILIT | HiLit-Modus: bestimmte HiLight-Parameter werden durch stHiLit, die übrigen durch entsprechende Parameter der JSON-Datei bestimmt. |
| DRC_OPMODE_LOCAL_TMO | LocalTMO-Modus: bestimmte LocalData-Parameter werden durch stLocalDataV30, die übrigen durch entsprechende Parameter der JSON-Datei bestimmt. |
9.3.5.3 mDrcGain_t
【Beschreibung】 Manuelle DrcGain-Parameter definieren.
【Definition】
typedef struct mDrcGain_s {
float DrcGain;
float Alpha;
float Clip;
} mDrcGain_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| DrcGain | Manueller DrcGain-Wert, Bereich [1,8], Standard 1, Genauigkeit 0.01. |
| Alpha | Manueller Alpha-Wert, Bereich [0,1], Standard 0.2, Genauigkeit 0.01. |
| Clip | Manueller Clip-Wert, Bereich [0,64], Standard 16, Genauigkeit 0.01. |
9.3.5.4 mDrcHiLit_t
【Beschreibung】 Manuelle Drc-HiLit-Parameter definieren.
【Definition】
typedef struct mDrcHiLit_s {
float Strength;
} mDrcHiLit_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Strength | Manuelle Stärke, Bereich [0,1], Standard 0, Genauigkeit 0.01. |
9.3.5.5 mLocalDataV21_t
【Beschreibung】 DRC-Local-Parameter für RK356x definieren.
【Definition】
typedef struct mLocalDataV21_s {
float LocalWeit;
float GlobalContrast;
float LoLitContrast;
} mLocalDataV21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| LocalWeit | Manueller LocalWeit-Wert im Bereich 0,1, Standard 1, Genauigkeit 0.01. |
| GlobalContrast | Manueller GlobalContrast-Wert, Bereich 0,1, Standard 0, Genauigkeit 0.01. |
| LoLitContrast | Manueller LoLitContrast-Wert im Bereich 0,1, Standard 0, Genauigkeit 0.01. |
9.3.5.6 mLocalDataV30_t
【Beschreibung】 DRC-Local-Parameter für RK356x definieren. Der Text nennt auch bei mLocalDataV30_t RK356x; die Abweichung bleibt dokumentiert.
【Definition】
typedef struct mLocalDataV30_s {
float LocalWeit;
int LocalAutoEnable;
float LocalAutoWeit;
float GlobalContrast;
float LoLitContrast;
} mLocalDataV30_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| LocalWeit | Manueller LocalWeit-Wert, Bereich [0,1], Standard 1, Genauigkeit 0.01. |
| LocalAutoEnable | Automatischer LocalWeit-Schalter, Bereich [0,1], Standard 1, Genauigkeit 1. |
| LocalAutoWeit | Automatischer LocalWeit-Wert, Bereich [0,1], Standard 0.4, Genauigkeit 0.01. |
| GlobalContrast | Manueller GlobalContrast-Wert, Bereich [0,1], Standard 0, Genauigkeit 0.01. |
| LoLitContrast | Manueller LoLitContrast-Wert, Bereich [0,1], Standard 0, Genauigkeit 0.01. |
9.3.5.7 mDrcLocalV21_t
【Beschreibung】 DRC-Local-Parameter für RK356x definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| LocalData | LocalData manuell setzen; die Quellbeschreibung endet nach „to“. |
| curPixWeit | Bilaterales Gewicht des aktuellen Punkts, Bereich [0,1], Standard 0.37, Genauigkeit 0.001. |
| preFrameWeit | Bilaterales Gewicht des vorherigen Frames, Bereich [0,1], Standard 0.8, Genauigkeit 0.001. |
| Range_force_sgm | Kehrwert des bilateralen Wertebereichs-Sigma, Bereich [0,1], Standard 0, Genauigkeit 0.0001. |
| Range_sgm_cur | Laut Quelle Kehrwert des bilateralen räumlichen Sigma des vorherigen Frames, Bereich 0,1, Standard 0.2, Genauigkeit 0.0001. Die Beschreibung „previous frame“ bleibt auch für cur erhalten. |
| Range_sgm_pre | Kehrwert des bilateralen räumlichen Sigma des vorherigen Frames, Bereich [0,1], Standard 0.2, Genauigkeit 0.0001. |
| Space_sgm_cur | Kehrwert des bilateralen Wertebereichs des aktuellen Frames, Bereich [0,4095], Standard 4068, Genauigkeit 1. |
| Space_sgm_pre | Kehrwert des bilateralen Wertebereichs-Sigma des vorherigen Frames, Bereich [0,4095], Standard 3068, Genauigkeit 1. |
9.3.5.8 mDrcLocalV30_t
【Beschreibung】 DRC-Local-Parameter für RK3588 definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| LocalData | Manuelle LocalData-Einstellungen |
| curPixWeit | Bilaterales Gewicht des aktuellen Punkts, Bereich [0,1], Standard 0.37, Genauigkeit 0.001. |
| preFrameWeit | Bilaterales Gewicht des vorherigen Frames, Bereich [0,1], Standard 0.8, Genauigkeit 0.001. |
| Range_force_sgm | Kehrwert des bilateralen Wertebereichs-Sigma, Bereich [0,1], Standard 0, Genauigkeit 0.0001. |
| Range_sgm_cur | Laut Quelle Kehrwert des bilateralen räumlichen Sigma des vorherigen Frames, Bereich [0,1], Standard 0.2, Genauigkeit 0.0001. Die abweichende cur-Beschreibung ist beibehalten. |
| Range_sgm_pre | Kehrwert des bilateralen räumlichen Sigma des vorherigen Frames, Bereich [0,1], Standard 0.2, Genauigkeit 0.0001. |
| Space_sgm_cur | Kehrwert des bilateralen Wertebereichs-Sigma des aktuellen Frames, Bereich [0,4095], Standard 4068, Genauigkeit 1. |
| Space_sgm_pre | Kehrwert des vorherigen bilateralen Wertebereichs-Sigma, Bereich [0,4095], Standard 3068, Genauigkeit 1. |
9.3.5.9 CompressMode_t
【Beschreibung】 Betriebsmodus der DrcCompress-Kurve im manuellen Modus definieren.
【Definition】
typedef enum CompressMode_s {
COMPRESS_AUTO = 0,
COMPRESS_MANUAL = 1,
} CompressMode_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| COMPRESS_AUTO | Manueller Modus, Compress-Kurve automatisch |
| COMPRESS_MANUAL | Manueller Modus, Compress-Kurve manuell |
9.3.5.10 mDrcCompress_t
【Beschreibung】 Manuelle DrcCompress-Parameter definieren.
【Definition】
typedef struct mDrcCompress_s {
CompressMode_t Mode;
uint16_t Manual_curve[17];
} mDrcCompress_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Mode | Umschaltfunktion |
| Manual_curve | Manuelle Compress-Kurve im manuellen Modus |
9.3.5.11 mdrcAttr_V21_t
【Beschreibung】 Manuelle DRC-Eigenschaften für RK356x definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Enable | Manueller DRC-Schalter |
| DrcGain | Manuelle DrcGain-Einstellungen |
| HiLight | Manuelle HiLit-Einstellungen |
| LocalSetting | Manuelle lokale Einstellungen |
| CompressSetting | Einstellungen der Kompressionskurve |
| Scale_y | Skalentabelle zur Verstärkungskorrektur, Bereich [0,2048], Genauigkeit 1. |
| Edge_Weit | Skalenwert der Kantenantwort, Bereich [0,1], Standard 0.02, Genauigkeit 0.01. Verringert Artefakte an kontrastreichen Kanten. |
| OutPutLongFrame | Nur lange Frames ausgeben: 0 aus, 1 ein. |
| IIR_frame | Frameanzahl des IIR-Filters, Bereich [1,1000], Standard 2. |
9.3.5.12 mdrcAttr_V30_t
【Beschreibung】 Manuelle DRC-Eigenschaften für RK3588 definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Enable | Manueller DRC-Schalter |
| DrcGain | Manuelle DrcGain-Einstellungen |
| HiLight | Manuelle HiLit-Einstellungen |
| LocalSetting | Manuelle lokale Einstellungen |
| CompressSetting | Einstellungen der Kompressionskurve |
| Scale_y | Skalentabelle zur Verstärkungskorrektur, Bereich [0,2048], Genauigkeit 1. |
| Edge_Weit | Skalenwert der Kantenantwort, Bereich [0,1], Standard 0.02, Genauigkeit 0.01. Verringert Artefakte an kontrastreichen Kanten. |
| OutPutLongFrame | Nur lange Frames ausgeben: 0 aus, 1 ein. |
| IIR_frame | Frameanzahl des IIR-Filters, Bereich [1,1000], Standard 2. |
9.3.5.13 DrcInfo_t
【Beschreibung】 DRC-Steuerparameter definieren.
【Definition】
typedef struct DrcInfo_s {
float EnvLv;
float ISO;
} DrcInfo_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| EnvLv | Aktuelle Umgebungshelligkeit |
| ISO | Aktueller ISO-Wert |
9.3.5.14 drcAttr_t
【Beschreibung】 DRC-Eigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Für die Definition von rk_aiq_uapi_sync_t siehe Überblick/API-Beschreibung. |
| Version | Versionsinformation |
| opMode | API-Modus |
| stManualV21 | Manuelle DRC-Eigenschaften für RK356x; wirksam bei opMode = DRC_OPMODE_MANU. |
| stManualV30 | Manuelle DRC-Eigenschaften für RK3588; wirksam bei opMode = DRC_OPMODE_MANU. |
| stDrcGain | DrcGain-Eigenschaften; wirksam bei opMode = DRC_OPMODE_DRC_GAIN. |
| stHiLit | Die Quelle schreibt „Hillitt attribute“ und nennt „Optmod is Dirk_Optmod_Hillit“. Diese abweichenden Bezeichner bleiben als ungeklärte Quellangabe erhalten. |
| stLocalDataV21 | LocalData-Eigenschaften für RK356x; wirksam bei opMode = DRC_OPMODE_LOCAL_TMO. |
| stLocalDataV30 | LocalData-Eigenschaften für RK3588; wirksam bei opMode = DRC_OPMODE_LOCAL_TMO. |
| Info | Informationen zu Steuerparametern |
9.4 Rauschminderung
9.4.1 Funktionsbeschreibung
Bildrauschen sind unnötige oder unerwünschte Störinformationen in Bilddaten. Bildentrauschung reduziert dieses Rauschen in digitalen Bildern.
9.4.2 Funktionsbezogene API-Referenz
9.4.2.1 rk_aiq_uapi2_setNRMode
【Beschreibung】 Entrauschungsmodus einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setNRMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Betriebsmodus | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.4.2.2 rk_aiq_uapi2_getNRMode
【Beschreibung】 Aktuellen Entrauschungsmodus abfragen.
【Syntax】
XCamReturn rk_aiq_uapi2_getNRMode(const rk_aiq_sys_ctx_t* ctx, opMode_t* mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Betriebsmodus | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.4.2.3 rk_aiq_uapi2_setANRStrth
【Beschreibung】 Allgemeine Entrauschungsstärke einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| level | Entrauschungsstärke, Bereich 0.0-100.0, Standard 50. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.4.2.4 rk_aiq_uapi2_getANRStrth
【Beschreibung】 Allgemeine Entrauschungsstärke abfragen.
【Syntax】
XCamReturn rk_aiq_uapi2_getANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int*
level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| level | Entrauschungsstärke, Bereich 0.0-100.0, Standard 50. | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.4.2.5 rk_aiq_uapi2_setMSpaNRStrth
【Beschreibung】 Räumliche Entrauschungsstärke einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setMSpaNRStrth(const rk_aiq_sys_ctx_t* ctx, bool on,
unsigned int level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| on | Schalter | Eingabe |
| level | Entrauschungsstärke, Bereich 0.0-100.0, Standard 50. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.4.2.6 rk_aiq_uapi2_getMSpaNRStrth
【Beschreibung】 Räumliche Entrauschungsstärke abfragen.
【Syntax】
XCamReturn rk_aiq_uapi2_getMSpaNRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on,
unsigned int *level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| on | Schalter | Ausgabe |
| level | Entrauschungsstärke, Bereich 0.0-100.0, Standard 50. | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.4.2.7 rk_aiq_uapi2_setMTNRStrth
【Beschreibung】 Zeitliche Entrauschungsstärke einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setMTNRStrth(const rk_aiq_sys_ctx_t* ctx, bool on,
unsigned int level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| on | Schalter | Eingabe |
| level | Entrauschungsstärke, Bereich 0.0-100.0, Standard 50. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.4.2.8 rk_aiq_uapi2_getMTNRStrth
【Beschreibung】 Zeitliche Entrauschungsstärke abfragen.
【Syntax】
XCamReturn rk_aiq_uapi2_getMTNRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on,
unsigned int *level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| on | Schalter | Ausgabe |
| level | Entrauschungsstärke, Bereich 0.0-100.0, Standard 50. | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.4.3 Modulbezogene API-Referenz
9.4.3.1 rk_aiq_user_api2_abayer2dnrV2_SetAttrib
【Beschreibung】 Eigenschaften des Entrauschungsalgorithmus einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_abayer2dnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_attrib_v2_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften der Entrauschung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_abayer2dnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.2 rk_aiq_user_api2_abayer2dnrV2_GetAttrib
【Beschreibung】 Eigenschaften des Entrauschungsalgorithmus abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_abayer2dnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_attrib_v2_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften der Entrauschung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_abayer2dnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.3 rk_aiq_user_api2_abayer2dnrV2_SetStrength
【Beschreibung】 Entrauschungsstärke einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_abayer2dnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_strength_v2_t *pStrength)
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pStrength | Struktur der Entrauschungsstärke; percent hat den Bereich 0.0-1.0. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_abayer2dnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.4 rk_aiq_user_api2_abayer2dnrV2_GetStrength
【Beschreibung】 Entrauschungsstärke abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_abayer2dnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_strength_v2_t *pStrength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pPercnt | Zeiger auf die Entrauschungsstärkestruktur; Prozentwert im Bereich 0.0-1.0. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_abayer2dnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.5 rk_aiq_user_api2_abayertnrV2_SetAttrib
【Beschreibung】 Eigenschaften des Entrauschungsalgorithmus einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_abayertnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_attrib_v2_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften der Entrauschung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_abayertnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.6 rk_aiq_user_api2_abayertnrV2_GetAttrib
【Beschreibung】 Eigenschaften des Entrauschungsalgorithmus abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_abayertnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_attrib_v2_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften der Entrauschung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_abayertnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.7 rk_aiq_user_api2_abayertnrV2_SetStrength
【Beschreibung】 Entrauschungsstärke einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_abayertnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_strength_v2_t *pStrength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pStrength | Zeiger auf die Entrauschungsstärkestruktur; Prozentwert im Bereich 0.0-1.0. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_abayertnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.8 rk_aiq_user_api2_abayertnrV2_GetStrength
【Beschreibung】 Entrauschungsstärke abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_abayertnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_strength_v2_t *pStrength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pStrength | Zeiger auf die Entrauschungsstärkestruktur; Prozentwert im Bereich 0.0-1.0. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_abayertnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.9 rk_aiq_user_api2_aynrV3_SetAttrib
【Beschreibung】 Eigenschaften des Entrauschungsalgorithmus einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_aynrV3_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_attrib_v3_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften der Entrauschung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_aynr_v3.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.10 rk_aiq_user_api2_aynrV3_GetAttrib
【Beschreibung】 Eigenschaften des Entrauschungsalgorithmus abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_aynrV3_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_attrib_v3_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften der Entrauschung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_aynr_v3.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.11 rk_aiq_user_api2_aynrV3_SetStrength
【Beschreibung】 Entrauschungsstärke einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_aynrV3_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_strength_v3_t* pStrength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pStrength | Zeiger auf die Entrauschungsstärkestruktur; Prozentwert im Bereich 0.0-1.0. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_aynr_v3.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.12 rk_aiq_user_api2_aynrV3_GetStrength
【Beschreibung】 Entrauschungsstärke abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_aynrV3_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_strength_v3_t* pStrength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pStrength | Zeiger auf die Entrauschungsstärkestruktur; Prozentwert im Bereich 0.0-1.0. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_aynr_v3.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.13 rk_aiq_user_api2_acnrV2_SetAttrib
【Beschreibung】 Eigenschaften des Entrauschungsalgorithmus einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_acnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_attrib_v2_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften der Entrauschung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_acnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.14 rk_aiq_user_api2_acnrV2_GetAttrib
【Beschreibung】 Eigenschaften des Entrauschungsalgorithmus abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_acnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_attrib_v2_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften der Entrauschung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_acnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.15 rk_aiq_user_api2_acnrV2_SetStrength
【Beschreibung】 Entrauschungsstärke einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_acnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_strength_v2_t *pStrength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pStrength | Zeiger auf die Entrauschungsstärkestruktur; Prozentwert im Bereich 0.0-1.0. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_acnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.3.16 rk_aiq_user_api2_acnrV2_GetStrength
【Beschreibung】 Entrauschungsstärke abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_acnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_strength_v2_t *pStrength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pStrength | Zeiger auf die Entrauschungsstärkestruktur; Prozentwert im Bereich 0.0-1.0. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_acnr_v2.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.4.4 Datentypen der modulbezogenen APIs
9.4.4.1 rk_aiq_bayer2dnr_attrib_v2_t
【Beschreibung】 Parameter des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus; siehe Überblick/API-Beschreibung. |
| eMode | Bayer2DNR-Entrauschungsmodus |
| stAuto | Bayer2DNR-Parameter für den automatischen Modus |
| stManual | Bayer2DNR-Parameter für den manuellen Modus |
9.4.4.2 Abayer2dnr_OPMode_V2_t
【Beschreibung】 Modus des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ABAYER2DNR_OP_MODE_INVALID | Ungültiger Modus des Bayer-2DNR-Entrauschungsmoduls |
| ABAYER2DNR_OP_MODE_AUTO | Automatischer Modus des Bayer-2DNR-Entrauschungsmoduls |
| ABAYER2DNR_OP_MODE_MANUAL | Algorithmuseinstellungen für den manuellen Modus des Bayer-2DNR-Entrauschungsmoduls |
| ABAYER2DNR_OP_MODE_REG_MANUAL | Registereinstellungen für den manuellen Modus des Bayer-2DNR-Entrauschungsmoduls |
| ABAYER2DNR_OP_MODE_MAX | Maximalwert der Bayer-2DNR-Modi; ungültiger Modus. |
9.4.4.3 Abayer2dnr_Auto_Attr_V2_t
【Beschreibung】 Automatische Eigenschaften des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| st2DParams | Algorithmusparameter des Bayer2DNR-Moduls für jede ISO-Stufe |
| st2DSelect | Vom bayer2dnr-Modul berechnete Eigenschaftsparameter |
9.4.4.4 Abayer2dnr_Manual_Attr_V2_t
【Beschreibung】 Manuelle Eigenschaften des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| st2DSelect | Parameterwerte des Bayer2DNR-Algorithmus |
| st2Dfix | Bayer2DNR-Registerwerte im manuellen Modus |
9.4.4.5 RK_Bayer2dnr_Params_V2_t
【Beschreibung】 Automatikmodus und ISO-abhängige Algorithmusparameter des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| enable | Abstimmparameter | Modulschalter: 1 ein, 0 aus. |
| ISO | Abstimmparameter | Verschiedene ISO-Stufen mit unterschiedlichen Abstimmparametern. Derzeit werden nur 13 Stufen unterstützt. |
| lumapoint | Kalibrierdaten | Unterschiedlichen Pixelhelligkeiten zugeordnete Punkte der Rausch-Sigma-Kurve, insgesamt 16 Punkte. |
| sigma | Kalibrierdaten | Unterschiedlichen Pixelhelligkeiten zugeordnete Punkte der Rausch-Sigma-Kurve, insgesamt 16 Punkte. |
| gauss_guide | Abstimmparameter | Gauß-Führung aktivieren: 1 ein, 0 aus. |
| filter_strength | Abstimmparameter | Entrauschungsstärke, Bereich [0, 16]. Größere Werte verstärken die Entrauschung. |
| edgesofts | Abstimmparameter | Beeinflusst die räumlichen Gewichte. Bereich 1 bis 16, Standard 1. |
| ratio | Abstimmparameter | Gewicht der weichen Schwelle, Bereich 0, 1.0. Kleinere Werte verstärken die Entrauschung. |
| weight | Abstimmparameter | Größere Filterausgangsgewichte verstärken die Entrauschung. |
| pix_diff | Abstimmparameter | Pixeldifferenzschwelle im 5x5-Fenster für bilaterale Filterung; Standard 0x3fff. |
| diff_thld | Abstimmparameter | Schwelle der quadrierten Differenz zur Berechnung euklidischer Abstände für die bilaterale Filterung: 0x3ff. |
9.4.4.6 RK_Bayer2dnr_Params_V2_Select_t
【Beschreibung】 Algorithmuseigenschaften des manuellen Entrauschungsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| enable | Abstimmparameter | Modulschalter: 1 ein, 0 aus. |
| lumapoint | Kalibrierdaten | Unterschiedlichen Pixelhelligkeiten zugeordnete Punkte der Rausch-SIGMA-Kurve, insgesamt 16 Punkte. |
| sigma | Kalibrierdaten | Unterschiedlichen Pixelhelligkeiten zugeordnete Punkte der Rausch-SIGMA-Kurve, insgesamt 16 Punkte. |
| gauss_guide | Abstimmparameter | Gauß-Führung aktivieren: 1 ein, 0 aus. |
| filter_strength | Abstimmparameter | Entrauschungsstärke, Bereich [0, 16]. Größere Werte verstärken die Entrauschung. |
| edgesofts | Abstimmparameter | Beeinflusst räumliche Gewichte, Bereich [1, 16], Standard 1. |
| ratio | Abstimmparameter | Gewicht der weichen Schwelle, Bereich [0, 1.0]. Kleinere Werte verstärken die Entrauschung. |
| weight | Abstimmparameter | Größere Filterausgangsgewichte verstärken die Entrauschung. |
| pix_diff | Abstimmparameter | Pixeldifferenzschwelle im 5x5-Fenster für bilaterale Filterung; Standard 0x3fff. |
| diff_thld | Abstimmparameter | Schwelle der quadrierten Differenz zur Berechnung euklidischer Abstände für die bilaterale Filterung: 0x3ff. |
9.4.4.7 RK_Bayer2dnr_Fix_V2_t
【Beschreibung】 Registerkonfiguration des manuellen Entrauschungsmodus definieren.
【Definition】
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;
【Felder】
| Parameter | Bitbreite | Parameterbeschreibung |
|---|---|---|
| baynr_gauss_en | 1 | Gauß-geführte 3x3-Filterung: 1 ein, 0 aus; Standard 0. |
| baynr_log_bypass | 1 | Steuerbit der Log-Transformation; innerhalb der HDR-Hardware zwangsweise ausgeschaltet. 1: Log-Bypass ein, also Log-Transformation aus; 0: Bypass aus, Transformation ein. Standard 0. |
| baynr_en | 1 | Bayer-Entrauschung aktivieren: 1 ein, 0 aus; Standard 0. |
| baynr_dgain | 18 | Im HDR-Modus der Verstärkung dreier Frames entsprechender Parameter mit 10bit Nachkommanteil. |
| baynr_pix_diff | 14 | Pixeldifferenzschwelle im 5x5-Fenster für bilaterale Filterung; Standard 0x3fff. |
| baynr_diff_thld | 10 | Schwelle der quadrierten Differenz zur Berechnung euklidischer Abstände bei bilateraler Filterung; Standard 0x3ff. |
| baynr_softthld | 10 | Gewicht der weichen Schwelle: je größer der Wert, desto größer die Schwelle und desto mehr Rauschen bleibt erhalten. 10 Nachkommabits, Standard 0xa. |
| bltflt_streng | 12 | Stärke der bilateralen Entrauschung, 8bit Nachkommanteil; Standard 0xa3. |
| baynr_reg_w1 | 10 | Filterausgangsgewicht: größere Werte verwenden mehr gefilterte Ausgabe, kleinere mehr Originaldaten. 10bit Nachkommanteil; Standard 0x3ff. |
| sigma_x | 16 | 16 Helligkeitsstufen der Rauschkurve; so konfigurieren, dass die Interpolation zweier Werte laut Quelle einer Potenz von 2 entspricht. |
| sigma_y | 16 | 16 Rausch-Sigma-Stufen der Rauschkurve; Parameter werden kalibriert. |
| weit_d | 10 | Räumliche Gewichte verschiedener Positionen, 10bit Nachkommanteil; Standardwerte 0x178, 0x249, 0x31d. |
9.4.4.8 rk_aiq_bayer2dnr_strength_v2_t
【Beschreibung】 Struktur zur Entrauschungsstärke definieren.
【Definition】
typedef struct rk_aiq_bayer2dnr_strength_v2_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_bayer2dnr_strength_v2_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus; siehe Überblick/API-Beschreibung. |
| percent | Entrauschungsstärke, Bereich 0.0-1.0. |
9.4.4.9 rk_aiq_bayertnr_attrib_v2_t
【Beschreibung】 Parameter des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus; siehe Überblick/API-Beschreibung. |
| eMode | Bayertnr-Entrauschungsmodus |
| stAuto | Bayertnr-Parameter für den automatischen Modus |
| stManual | Bayertnr-Parameter für den manuellen Modus |
9.4.4.10 Abayertnr_OPMode_V2_t
【Beschreibung】 Modus des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ABAYERTNRV2_OP_MODE_INVALID | Ungültiger Modus des Bayer-TNR-Entrauschungsmoduls |
| ABAYERTNRV2_OP_MODE_AUTO | Automatischer Modus des Bayer-TNR-Entrauschungsmoduls |
| ABAYERTNRV2_OP_MODE_MANUAL | Algorithmuseinstellungen für den manuellen Modus des Bayer-TNR-Entrauschungsmoduls |
| ABAYERTNRV2_OP_MODE_MAX | Maximalwert der Bayer-TNR-Modi; ungültiger Modus. |
9.4.4.11 Abayertnr_Auto_Attr_V2_t
【Beschreibung】 Automatische Eigenschaften des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| bayernr3DEn | Bayer3dnr-Modulschalter |
| st3DParams | Algorithmusparameter je ISO-Stufe im automatischen Bayer3DNR-Modus |
| st3DSelect | Vom bayer3dnr-Modul berechnete Eigenschaftsparameter |
9.4.4.12 Abayertnr_Manual_Attr_V23_t
【Beschreibung】 Manuelle Eigenschaften des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| bayernr3DEn | Bayer3dnr-Modulschalter |
| st3DSelect | Algorithmusparameterwerte im manuellen Bayer3DNR-Modus |
| st3Dfix | Bayer3DNR-Registerwerte im manuellen Modus |
9.4.4.13 RK_Bayertnr_Params_V2_t
【Beschreibung】 Automatikmodus und ISO-abhängige Algorithmusparameter des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| Enable | Abstimmparameter | Modul aktivieren |
| iso | Abstimmparameter | Verschiedene ISO-Stufen mit unterschiedlichen Abstimmparametern; derzeit nur 13. |
| lumapoint / sigma | Kalibrierparameter | Rauschkurvenwerte für verschiedene Helligkeiten, insgesamt 16 Punkte. Lumapoint bezeichnet die Pixelhelligkeit, sigma den Rauschkurvenwert. |
| lumapoint2 / lo_sigma |
Kalibrierparameter | Rauschkurvenwerte für verschiedene Helligkeiten, insgesamt 16 Punkte. Lumapoint2 bezeichnet die Pixelhelligkeit, lo_sigma den Rauschkurvenwert. |
| lumapoint2 / hi_sigma |
Kalibrierparameter | Rauschkurvenwerte für verschiedene Helligkeiten, insgesamt 16 Punkte. lumapoint2 bezeichnet die Pixelhelligkeit, hi_sigma den Rauschkurvenwert. |
| thumbds | Abstimmparameter | Unterabtastungsmaßstab |
| lo_enable | Abstimmparameter | Niederfrequente Bewegungserkennung: 1 ein, 0 aus; standardmäßig ein. |
| hi_enable | Abstimmparameter | Hochfrequente Bewegungserkennung: 1 ein, 0 aus; standardmäßig ein. |
| lo_med_en | Abstimmparameter | Interner niederfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| lo_gsbay_en | Abstimmparameter | Interner niederfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| lo_gslum_en | Abstimmparameter | Interner niederfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| hi_med_en | Abstimmparameter | Interner hochfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| hi_gslum_en | Abstimmparameter | Interner hochfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| global_pk_en | Abstimmparameter | Globalen PK zur zeitlichen Entrauschung verwenden: 1 ja, 0 nein. Derzeit nur 0. |
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| global_pksq | Abstimmparameter | Quadrat des globalen pk, verwendet bei global_pk_en = 1. Standard 1024, Bereich [0, 268435455]. |
| lo_filter_strength | Abstimmparameter | Stärke der hochfrequenten Bewegungserkennung laut Quelle; beeinflusst Hi Sigma und dadurch die zeitliche Entrauschungsstärke. Standard 1, Bereich [0.0, 16.0]. Die Hochfrequenzbeschreibung bleibt auch für lo_filter_strength erhalten. |
| hi_filter_strength | Abstimmparameter | Stärke der hochfrequenten Bewegungserkennung; beeinflusst Hi Sigma und dadurch die zeitliche Entrauschungsstärke. Standard 1, Bereich [0.0, 16.0]. |
| soft_threshold_ratio | Abstimmparameter | Gewicht der weichen Schwelle: größere Werte lassen mehr Rauschen erhalten. Bereich laut Quelle [0.0 1.0], Standard 0. |
| hi_wgt_comp | Abstimmparameter | Verhältnis der Gewichtskompensation beim Überlagern; nur bei aktivierter Hochfrequenz wirksam. Standard 0.16, Bereich [0.0, 1.0]. |
| clipwgt | Abstimmparameter | Gewichtsgrenze der Bildüberlagerung. Standard 0.03215, Bereich [0.0, 1.0]. |
| hidif_th | Abstimmparameter | Hochfrequenz-Differenzschwelle. Standard 32767, Bereich [0, 65535]. |
9.4.4.14 RK_Bayertnr_Params_V2_Select_t
【Beschreibung】 Struktur der Algorithmuseigenschaften im manuellen Entrauschungsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| Enable | Abstimmparameter | Modul aktivieren |
| lumapoint / sigma | Kalibrierparameter | Rauschkurvenwerte für verschiedene Helligkeiten, insgesamt 16 Punkte. Lumapoint bezeichnet die Pixelhelligkeit, sigma den Rauschkurvenwert. |
| lumapoint2 / lo_sigma |
Kalibrierparameter | Rauschkurvenwerte für verschiedene Helligkeiten, insgesamt 16 Punkte. Lumapoint2 bezeichnet die Pixelhelligkeit, lo_sigma den Rauschkurvenwert. |
| lumapoint2 / hi_sigma |
Kalibrierparameter | Rauschkurvenwerte für verschiedene Helligkeiten, insgesamt 16 Punkte. Lumapoint2 bezeichnet die Pixelhelligkeit, hi_sigma den Rauschkurvenwert. |
| thumbds | Abstimmparameter | Unterabtastungsverhältnis |
| lo_enable | Abstimmparameter | Niederfrequente Bewegungserkennung: 1 ein, 0 aus; standardmäßig ein. |
| hi_enable | Abstimmparameter | Hochfrequente Bewegungserkennung: 1 ein, 0 aus; standardmäßig ein. |
| lo_med_en | Abstimmparameter | Interner niederfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| lo_gsbay_en | Abstimmparameter | Interner niederfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| lo_gslum_en | Abstimmparameter | Interner niederfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| hi_med_en | Abstimmparameter | Interner hochfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| hi_gslum_en | Abstimmparameter | Interner hochfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| global_pk_en | Abstimmparameter | Globalen PK zur zeitlichen Entrauschung verwenden: 1 ja, 0 nein. Derzeit nur 0. |
| global_pksq | Abstimmparameter | Quadrat des globalen pk, verwendet bei global_pk_en = 1. Standard 1024, Bereich [0, 268435455]. |
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| lo_filter_strength | Abstimmparameter | Laut Quelle Stärke der hochfrequenten Bewegungserkennung; beeinflusst Hi Sigma und damit die zeitliche Entrauschung. Standard 1, Bereich [0.0, 16.0]. Die abweichende lo-Beschreibung bleibt erhalten. |
| hi_filter_strength | Abstimmparameter | Stärke der hochfrequenten Bewegungserkennung; beeinflusst Hi Sigma und damit die zeitliche Entrauschung. Standard 1, Bereich [0.0, 16.0]. |
| soft_threshold_ratio | Abstimmparameter | Gewicht der weichen Schwelle: je größer der Wert, desto mehr Rauschen bleibt erhalten. Bereich laut Quelle [0.0 1.0], Standard 0. |
| hi_wgt_comp | Abstimmparameter | Verhältnis der Gewichtskompensation beim Überlagern; nur bei aktivierter Hochfrequenz wirksam. Standard 0.16, Bereich [0.0, 1.0]. |
| clipwgt | Abstimmparameter | Gewichtsgrenze der Bildüberlagerung. Standard 0.03215, Bereich laut Quelle 0.0, 1.0. |
| hidif_th | Abstimmparameter | Hochfrequenz-Differenzschwelle. Standard 32767, Bereich laut Quelle 0, 65535. |
9.4.4.15 RK_Bayertnr_Params_V23_Select_t
【Beschreibung】 Struktur der Algorithmuseigenschaften im manuellen Entrauschungsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| Enable | Abstimmparameter | Modul aktivieren |
| lumapoint / sigma | Kalibrierparameter | Rauschkurvenwerte für unterschiedliche Helligkeiten, insgesamt 16 Punkte. LumaPoint bezeichnet die Pixelhelligkeit, Sigma den Rauschkurvenwert. |
| lumapoint2 / lo_sigma |
Kalibrierparameter | Rauschkurvenwerte für unterschiedliche Helligkeiten, insgesamt 16 Punkte. lumapoint2 bezeichnet die Pixelhelligkeit, lo_sigma den Rauschkurvenwert. |
| lumapoint2 / hi_sigma |
Kalibrierparameter | Rauschkurvenwerte für unterschiedliche Helligkeiten, insgesamt 16 Punkte. lumapoint2 bezeichnet die Pixelhelligkeit, hi_sigma den Rauschkurvenwert. |
| thumbds_w thumbds_h |
Abstimmparameter | Unterabtastungsverhältnis: derzeit nur 4x4, 8x4 und 8x8; Standardmodus 8x4. |
| lo_enable | Abstimmparameter | Niederfrequente Bewegungserkennung: 1 ein, 0 aus; standardmäßig ein. |
| hi_enable | Abstimmparameter | Hochfrequente Bewegungserkennung: 1 ein, 0 aus; standardmäßig ein. |
| lo_med_en | Abstimmparameter | Interner niederfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| lo_gsbay_en | Abstimmparameter | Interner niederfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| lo_gslum_en | Abstimmparameter | Interner niederfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| hi_med_en | Abstimmparameter | Interner hochfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| hi_gslum_en | Abstimmparameter | Interner hochfrequenter Untermodulschalter: 1 ein, 0 aus; standardmäßig ein. |
| global_pk_en | Abstimmparameter | Globalen PK für zeitliche Entrauschung verwenden: 1 ja, 0 nein. Derzeit nur 0. |
| global_pksq | Abstimmparameter | Quadrat des globalen pk; nur bei global_pk_en = 1 verwendet. Standard 1024, Bereich [0, 268435455]. |
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| lo_filter_strength | Abstimmparameter | Laut Quelle Stärke der hochfrequenten Bewegungserkennung; beeinflusst HI Sigma und dadurch die zeitliche Entrauschung. Standard 1, Bereich [0.0, 16.0]. Die Beschreibung für lo bleibt erhalten. |
| hi_filter_strength | Abstimmparameter | Stärke der hochfrequenten Bewegungserkennung; beeinflusst HI Sigma und dadurch die zeitliche Entrauschung. Standard 1, Bereich [0.0, 16.0]. |
| soft_threshold_ratio | Abstimmparameter | Gewicht der weichen Schwelle: größere Werte lassen mehr Rauschen erhalten. Bereich laut Quelle [0.0 1.0], Standard 0. |
| hi_wgt_comp | Abstimmparameter | Verhältnis der ergänzenden Überlagerungsgewichtung; nur bei eingeschalteter Hochfrequenz wirksam. Standard 0.16, Bereich [0.0, 1.0]. |
| lo_clipwgt | Abstimmparameter | Gewichtsgrenze der Bildüberlagerung. Standard 0.03215, Bereich [0.0, 1.0]. |
| hidif_th | Abstimmparameter | Hochfrequenz-Differenzschwelle. Standard 32767, Bereich [0, 65535]. |
| trans_en | Abstimmparameter | Bandbreiteneinsparung: 0 aus, 1 ein. Im linearen Modus einstellbar; im HDR-Modus wird 0 empfohlen. |
| wgt_use_mode | Abstimmparameter | Optimierung bei der Gewichtsfusion: 0 aus, 1 ein. |
| wgt_mge_mode | Abstimmparameter | Optimierung der hochfrequenten Gewichtsberechnung: 0 aus, 1 ein. |
| hi_guass | Abstimmparameter | Datenquelle für hochfrequentes SIGMA: 0 ungefilterte Originaldaten, 1 gefilterte Daten. |
| kl_guass | Abstimmparameter | Datenquelle für PK-Sigma-Suche: 0 ungefilterte Originaldaten, 1 gefilterte Daten. |
| lo_filter_rat0 | Abstimmparameter | Bei der Gewichtsberechnung der niederfrequenten Bewegungserkennung von der Differenz abzuziehender Datenanteil. Bereich [0.0, 16.0], Standard 1. |
| lo_filter_thed0 | Abstimmparameter | Bei der Gewichtsberechnung der niederfrequenten Bewegungserkennung von der Differenz abzuziehender Datenversatz. Bereich [0, 4095], Standard 0. |
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| hi_filter_rat0 | Abstimmparameter | Bei Berechnung des ersten hochfrequenten Bewegungsgewichts abzuziehender Datenanteil. Bereich [0.0, 16.0], Standard 1. |
| hi_filter_thed0 | Abstimmparameter | Bei Berechnung des ersten hochfrequenten Bewegungsgewichts von der Differenz abzuziehender Datenversatz. Bereich [0, 4095], Standard 256. |
| hi_filter_rat1 | Abstimmparameter | Bei Berechnung des zweiten hochfrequenten Bewegungsgewichts von der Differenz abzuziehender Datenanteil. Bereich [0.0, 16.0], Standard 1. |
| hi_filter_thed1 | Abstimmparameter | Bei Berechnung des zweiten hochfrequenten Bewegungsgewichts von der Differenz abzuziehender Datenversatz. Bereich [0, 4095], Standard 1024. |
| hi_filter_abs_ctrl | Abstimmparameter | Position der Absolutwertbildung bei der hochfrequenten Gewichtsberechnung: 0 Differenz→Median→Gauß→abs; 1 Differenz→Median→abs→Gauß. Standard 0. |
| hi_filter_filt_bay | Abstimmparameter | Gauß-Filterung bei hochfrequenter Gewichtsberechnung: 1 berechnet die 4 Bayer-Kanäle separat mit 3x3-Gauß; 0 berechnet sie nicht separat und verwendet 5x7-Gauß. Standard 0. |
| hi_filter_filt_avg | Abstimmparameter | 5x5-Filterung bei hochfrequenter Gewichtsberechnung: 0 aus, 1 ein; Standard 0. |
| hi_filter_filt_mode | Abstimmparameter | Filtermodus für die hochfrequente Gewichtsberechnung, Bereich [0, 4], Standard 4. |
| guass_guide_coeff0 | Abstimmparameter | Gauß-Filteroperatoren, Bereich [0, 64], Standardwerte 16,8,16,8. |
9.4.4.16 RK_Bayertnr_Fix_V2_t
【Beschreibung】 Registerkonfiguration des manuellen Entrauschungsmodus definieren.
【Definition】
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;
【Felder】
| Parameter | Bitbreite | Parameterbeschreibung |
|---|---|---|
| bay3d_soft_st | 1 | Startimpulsbit des Softwaremodus; beim Einschalten 1 schreiben. |
| bay3d_soft_mode | 1 | Softwaremodus: 1 ein, 0 aus; Standard 0x0. |
| bay3d_bwsaving_en | 1 | Bandbreitenoptimierung aktivieren, nur ohne HDR wirksam: 1 ein, 0 aus; Standard 0x0. |
| bay3d_loswitch_protect | 1 | Derzeit nicht unterstützt. |
| bay3d_glbpk_en | 1 | Globalen pk für zeitliche Bayer-Entrauschung verwenden: 1 globaler pk, 0 lokaler pk; Standard 1. |
| bay3d_logaus3_bypass_en | 1 | Niederfrequente Gauß-Filterung im nachgeschalteten Helligkeitsbereich: 1 nicht ausführen, 0 ausführen; Standard 0x0. |
| bay3d_logaus5_bypass_en | 1 | Niederfrequente Gauß-Filterung im vorgeschalteten Bayer-Bereich: 1 nicht ausführen, 0 ausführen; Standard 0x0. |
| bay3d_lomed_bypass_en | 1 | Niederfrequente Medianfilterung: 1 nicht ausführen, 0 ausführen; Standard 0x0. |
| bay3d_hichnsplit_en | 1 | Auswahl des Gauß-Filters bei hochfrequenter Erkennung im Bayer- oder Helligkeitsbereich; dieses Bit einschalten, wenn ausschließlich hochfrequente Bewegungserkennung aktiv ist. 1 Bayer-Bereich, 0 Helligkeitsbereich; Standard 0x0. |
| Parameter | Bitbreite | Parameterbeschreibung |
|---|---|---|
| bay3d_hiabs_pssel | 1 | Absolutwert vor der Gauß-Filterung bei Hochfrequenzerkennung bilden; dieses Bit einschalten, wenn ausschließlich hochfrequente Bewegungserkennung aktiv ist. 1 ja, 0 nein; Standard 0x0. |
| bay3d_higaus_bypass_en | 1 | Hochfrequente Gauß-Filterung: 1 nicht ausführen, 0 ausführen; Standard 0x0. |
| bay3d_himed_bypass_en | 1 | Hochfrequente Medianfilterung: 1 nicht ausführen, 0 ausführen; Standard 0x0. |
| bay3d_lobypass_en | 1 | Laut Quelle hochfrequente Bewegungserkennung: 1 aus, 0 ein; Standard 0x0. Derzeit keine dynamische Änderung unterstützt; stets Standard 0. Die abweichende lo-Feldbeschreibung bleibt erhalten. |
| bay3d_hibypass_en | 1 | Hochfrequente Bewegungserkennung: 1 aus, 0 ein; Standard 0x0. |
| bay3d_bypass_en | 1 | Bypass der zeitlichen Bayer-Entrauschung: 1 Bypass ein, bayer3d führt nichts aus; 0 Bypass aus. Standard 0. |
| bay3d_en_i | 1 | Zeitliche Bayer-Entrauschung: 1 ein, 0 aus; Standard 0. |
| bay3d_softwgt | 10 | Gewicht der weichen Schwelle: größere Werte erhöhen die Schwelle und lassen mehr Rauschen erhalten. 10bit Nachkommanteil, Standard 0x100. |
| bay3d_hidif_th | 16 | Schwelle zum Zählen hochfrequenter Differenzwerte; Standard 0xffff. |
| bay3d_glbpk2 | 28 | Quadrat des globalen pk; laut Quelle nur bei pk_en = 0 verwendet. Standard 0x800. |
| bay3d_wgtlmt | 10 | Gewichtsgrenze der Bildüberlagerung, 10 Nachkommastellen laut Quelle; Standard 0x380. |
| Parameter | Bitbreite | Parameterbeschreibung |
|---|---|---|
| bay3d_wgtratio | 10 | Verhältnis der ergänzenden Überlagerungsgewichtung; nur bei eingeschalteter Hochfrequenz wirksam. 10 Nachkommastellen laut Quelle, Standard 0x0. |
| bay3d_sig0_x0-15 | 16 | 16 Helligkeitsstufen der Rauschkurve; Differenzen zweier Werte müssen einer Potenz von 2 entsprechen. |
| bay3d_sig0_y0-15 | 14 | 16 Rausch-Sigma-Stufen der Rauschkurve; Parameter werden kalibriert. |
| bay3d_sig1_x0-15 | 16 | 16 Helligkeitsstufen der hoch- und niederfrequenten Rauschkurven; Differenzen zweier Werte müssen einer Potenz von 2 entsprechen. |
| bay3d_sig1_y0-15 | 14 | 16 Rausch-SIGMA-Stufen der hochfrequenten Rauschkurven; Parameter werden kalibriert. |
| bay3d_sig2_y0-15 | 14 | 16 Rausch-Sigma-Stufen der niederfrequenten Rauschkurven; Parameter werden kalibriert. |
9.4.4.17 rk_aiq_bayertnr_strength_v2_t
【Beschreibung】 Struktur zur Entrauschungsstärke definieren.
【Definition】
typedef struct rk_aiq_bayertnr_strength_v2_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_bayertnr_strength_v2_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus; siehe Überblick/API-Beschreibung. |
| percent | Entrauschungsstärke, Bereich 0.0-1.0. |
9.4.4.18 rk_aiq_ynr_attrib_v3_t
【Beschreibung】 Parameter des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus; siehe Überblick/API-Beschreibung. |
| eMode | Ynr-Entrauschungsmodus |
| stAuto | YNR-Parameter für den automatischen Modus |
| stManual | Ynr-Parameter für den manuellen Modus |
9.4.4.19 Aynr_OPMode_V3_t
【Beschreibung】 Modus des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| AYNRV3_OP_MODE_INVALID | Ungültiger Modus des Y-Bereich-YNR-Entrauschungsmoduls |
| AYNRV3_OP_MODE_AUTO | Automatischer Modus des Y-Bereich-YNR-Entrauschungsmoduls |
| AYNRV3_OP_MODE_MANUAL | Algorithmuseinstellungen für den manuellen Modus des Y-Bereich-YNR-Entrauschungsmoduls |
| AYNRV3_OP_MODE_REG_MANUAL | Registereinstellungen für den manuellen Modus des Y-Bereich-YNR-Entrauschungsmoduls |
| AYNRV3_OP_MODE_MAX | Maximalwert der Y-Bereich-YNR-Modi; ungültiger Modus. |
9.4.4.20 Aynr_Auto_Attr_V3_t
【Beschreibung】 Automatische Eigenschaften des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stParams | Algorithmusparameter des ynr-Moduls für jede ISO-Stufe |
| stSelect | Vom ynr-Modul berechnete Eigenschaftsparameter |
9.4.4.21 Aynr_Manual_Attr_V3_t
【Beschreibung】 Manuelle Eigenschaften des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stSelect | Algorithmusparameterwert |
| stFix | YNNR-Registerwert |
9.4.4.22 RK_YNR_Params_V3_t
【Beschreibung】 Eigenschaftsparameter des jeweiligen ISO-Algorithmus im automatischen Modus des YNR-Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| enable | ynr-Modulschalter |
| version | Versionsnummer des ynr-Moduls |
| iso | Unterschiedliche ISO-Stufen mit unterschiedlichen Abstimmparametern; derzeit nur 13 Stufen unterstützt. |
| RK_YNR_Params_V3_Select_t | Algorithmusparameter des YYNR-Moduls |
9.4.4.23 RK_YNR_Params_V3_Select_t
【Beschreibung】 Algorithmuseigenschaften des manuellen Entrauschungsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| enable | Abstimmparameter | ynr-Modulschalter: 1 ein, 0 aus. |
| lci | Kalibrierdaten | Einflussfaktor des niederfrequenten Rausch-Sigma. Größere Werte erhöhen das Rausch-Sigma und verstärken die Entrauschung. |
| hci | Kalibrierdaten | Einflussfaktor des hochfrequenten Rausch-Sigma. Größere Werte erhöhen das Rausch-Sigma und verstärken die Entrauschung. |
| sigma | Kalibrierdaten | Rausch-Sigma-Kurve |
| lumaPoint | Kalibrierdaten | Unterschiedlichen Pixelhelligkeiten zugeordnete Punkte der Rausch-SIGMA-Kurve, insgesamt 16 Punkte. |
| rnr_strength | Abstimmparameter | Vom Bildzentrum aus entlang des Kreisradius r unterschiedliche Entrauschungsstärken einstellen, hauptsächlich gegen LSC-Rauschen. Bereich [0, 16.0], Standard 1. |
| ynr_bft3x3_bypass | Abstimmparameter | Bypass eines internen Untermoduls: 0 Funktion ein, 1 Bypass. Üblicherweise sind sämtliche Untermodule aktiv und diese Werte auf 0 gesetzt. |
| ynr_lbft5x5_bypass | Abstimmparameter | Bypass eines internen Untermoduls: 0 Funktion ein, 1 Bypass. Üblicherweise sind sämtliche Untermodule aktiv und diese Werte auf 0 gesetzt. |
| ynr_lgft3x3_bypass | Abstimmparameter | Bypass eines internen Untermoduls: 0 Funktion ein, 1 Bypass. Üblicherweise sind sämtliche Untermodule aktiv und diese Werte auf 0 gesetzt. |
| ynr_flt1x1_bypass | Abstimmparameter | Bypass eines internen Untermoduls: 0 Funktion ein, 1 Bypass. Üblicherweise sind sämtliche Untermodule aktiv und diese Werte auf 0 gesetzt. |
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| ynr_sft5x5_bypass | Abstimmparameter | Bypass eines internen Untermoduls: 0 Funktion ein, 1 Bypass. Üblicherweise sind sämtliche Untermodule aktiv und diese Werte auf 0 gesetzt. |
| low_bf1 | Abstimmparameter | Stärke der bilateralen 3x3-Filterung des Originalbilds. Größere Werte verstärken die Entrauschung. Bereich [0.01, 32], Standard 1. |
| low_bf2 | Abstimmparameter | Stärke der bilateralen 5x5-Filterung des verkleinerten vorherigen Frames. Größere Werte verstärken die Entrauschung. Bereich [0.01, 32], Standard 1. |
| low_thred_adj | Abstimmparameter | Niederfrequente weiche Schwelle: größere Werte verstärken die niederfrequente Entrauschung. Bereich [0, 31], Standard 0.5. |
| low_peak_supress | Abstimmparameter | Stärke der Entfernung isolierten Rauschens: kleinere Werte verstärken die Entrauschung. Bereich [0, 1], Standard 0.5. |
| low_edge_adj_thresh | Abstimmparameter | Schwelle des Anpassungsfaktors zur Kantenerkennung im verkleinerten Bild; begrenzt dessen Maximalwert. Kleinere Werte verstärken die Entrauschung und verwischen das Bild stärker. Ganzzahl im Bereich [0, 1023], Standard 7. |
| low_lbf_weight_thresh | Abstimmparameter | Begrenzt das Gewicht der bilateralen 5x5-Filterung. Größere Werte schwächen die niederfrequente Entrauschung. Bereich [0.0, 1.0], Standard 0.25. |
| low_center_weight | Abstimmparameter | Gewicht des Mittelpunkts bei bilateraler 5x5-Filterung; kleinere Werte verstärken die Entrauschung. Bereich [0,1], Standard 0.5. |
| low_dist_adj | Abstimmparameter | Anpassungsfaktor der Entfernungsgewichtung des bilateralen Filters. Kleinere Werte verstärken die Entrauschung. Bereich [0, 127.0], Standard 8.0. |
| low_weight | Abstimmparameter | Gewicht des niederfrequenten Entrauschungsergebnisses; größere Werte verstärken die niederfrequente Entrauschung. Bereich [0, 1], Standard 0.5. |
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| low_filt1_strength | Abstimmparameter | Filterkerngewicht für Gauß-Filterung des Originalbilds. Bereich [0,1.0], Standard 0.7. |
| low_filt2_strength | Abstimmparameter | Gauß-Filterkerngewicht für die Gauß-Filterung des bilateralen Filterergebnisses. Bereich [0,1.0], Standard 0.85. |
| low_bi_weight | Abstimmparameter | Gewicht des ersten bilateralen Filters bei der Verarbeitung mit weicher Schwelle. Größere Werte verstärken die Entrauschung. Bereich [0, 1], Standard 0.3. |
| base_filter_weight1 | Abstimmparameter | Koeffizient des Richtungsfilters; normalerweise kaum anzupassen. |
| high_thred_adj | Abstimmparameter | Größere Werte verstärken die hochfrequente Entrauschung. Bereich laut Quelle 0, 31.0, Standard 1.0. |
| high_weight | Abstimmparameter | Gewicht der hochfrequenten Entrauschung: Anteil der erhaltenen Hochfrequenzkomponenten. Kleinere Werte verstärken die Entrauschung. Bereich laut Quelle 0, 1, Standard 0.78. |
| high_direction_weight | Abstimmparameter | Je größer der Wert einer Richtung, desto stärker wird entlang dieser Richtung entrauscht. |
| hi_min_adj | Abstimmparameter | Verhältnis sämtlicher Varianzwerte abzüglich des kleinsten Varianzwerts; größere Werte schärfen Kanten. Bereich laut Quelle 0.0, 1.0, Standard 0.9. |
| hi_edge_thed | Abstimmparameter | Kleinere Schwellen verstärken die hochfrequente Entrauschung. Ganzzahl im Bereich 0, 255, Standard 100. |
| ynr_global_gain_alpha | Abstimmparameter | Interpolationsstärke zwischen lokalem und globalem Ynr-Entrauschungsmodus. Üblicherweise Standardwert ohne Konfiguration verwenden; dann ausschließlich lokale Verstärkung. Bereich laut Quelle [0.0 1.0], Standard 0. |
| ynr_global_gain | Abstimmparameter | Interpolationsstärke zwischen lokalem und globalem Ynr-Entrauschungsmodus. Üblicherweise Standardwert ohne Konfiguration verwenden; dann ausschließlich lokale Verstärkung. Verstärkungsbereich laut Quelle [0.0 64.0], Standard 1. |
| Feldname | Parametertyp | Beschreibung |
|---|---|---|
| ynr_adjust_thresh | Abstimmparameter | Entrauschungsstärke für Rauschen oberhalb ynr_adjust_thresh. Bewegte Bereiche rauschen stärker; eine passende Schwelle erhöht dort die YNR-Entrauschung. Bereich [0.0, 1.0], Standard 1. |
| ynr_adjust_scale | Abstimmparameter | Entrauschungsstärke für Rauschen oberhalb ynr_adjust_thresh. Bewegte Bereiche rauschen stärker; eine passende Schwelle erhöht dort die YNR-Entrauschung. Bereich [0, 16.0], Standard 1. |
| lo_lumaPoint / lo_ratio | Abstimmparameter | Niederfrequentes Sigma für verschiedene Pixelhelligkeiten feinabstimmen. |
| hi_lumaPoint / hi_ratio | Abstimmparameter | Hochfrequentes Sigma für verschiedene Pixelhelligkeiten feinabstimmen. |
9.4.4.24 RK_YNR_Fix_V3_t
【Beschreibung】 Registerkonfiguration des manuellen Entrauschungsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Bitbreite (Ganzzahl. Nachkomma) |
Beschreibung |
|---|---|---|
| ynr_low_bf_inv[0] | 5.9 | Steuert die Entrauschungsstärke; der Registerwert wird reziprok verwendet. Kleinere Werte verstärken die Entrauschung. 512 bedeutet 1x, 256 bedeutet 2x Entrauschungsstärke. Bereich [1, 16383]. |
| ynr_low_bf[1] | 5.9 | Steuert die Entrauschungsstärke; der Registerwert wird reziprok verwendet. Kleinere Werte verstärken die Entrauschung. 512 bedeutet 1x, 256 bedeutet 2x Entrauschungsstärke. |
| ynr_low_thred_adj | 5.6 | Anpassungsstärke der niederfrequenten weichen Schwelle; größere Werte verstärken die niederfrequente Entrauschung. Bereich [0, 2047]. |
| ynr_low_peak_supress | 1.7 | Stärke der Entfernung großer isolierter Rauschpunkte; größere Werte verstärken sie. Bereich [0, 128]. |
| ynr_low_edge_adj_thresh | 11.0 | Schwelle des Anpassungsfaktors zur Kantenerkennung im verkleinerten Bild; begrenzt dessen Maximalwert. Bereich [1, 1024]. |
| ynr_low_center_weight | 1.10 | Mittelpunktsgewicht der bilateralen 5x5-Filterung; kleinere Werte verstärken die Entrauschung. Bereich [1, 1024]. |
| sw_ynr_lbf_weight_thres | 10.0 | Begrenzt das Gewicht der bilateralen 5x5-Filterung; größere Werte schwächen die niederfrequente Entrauschung. Bereich [0, 1023]. |
| ynr_low_dist_adj | 7.2 | Anpassungsfaktor der Entfernungsgewichtung des bilateralen Filters. Bereich [1, 511]. |
| ynr_low_weight | 1.7 | Gewicht des niederfrequenten Entrauschungsergebnisses; größere Werte verstärken die niederfrequente Entrauschung. Bereich [0, 128]. |
| ynr_low_gauss1_coeff[3] | 1.8 | Gewichtsbereich des Gauß-Filterkerns zur Filterung des Originalbilds: [0, 256]. |
| ynr_low_gauss2_coeff[3] | 1.8 | Gewichtsbereich des Gauß-Filterkerns zur Gauß-Filterung des bilateralen Filterergebnisses: [0, 256]. |
| Feldname | Bitbreite (Ganzzahl. Nachkomma) |
Beschreibung |
|---|---|---|
| ynr_low_bi_weight | 1.7 | Gewicht des ersten bilateralen Filters bei weicher Schwellenverarbeitung; größere Werte verstärken die Entrauschung. Bereich [0, 128]. |
| ynr_base_filter_weight[3] | 1.6 | Koeffizient des Richtungsfilters. Bereich [0, 64]. |
| ynr_high_thred_adj | 5.6 | Größere Werte verstärken die hochfrequente Entrauschung. Bereich [0, 2047]. |
| ynr_high_retain_weight | 1.7 | Gewicht der hochfrequenten Entrauschung; Anteil der erhaltenen Hochfrequenzkomponente. Größere Werte schwächen die Entrauschung. Bereich [0, 128]. |
| ynr_direction_weight[8] | 1.4 | Größere Werte einer Richtung verstärken die Entrauschung entlang dieser Richtung. Bereich [0,16]. |
| ynr_hi_min_adj | 0.6 | Verhältnis sämtlicher Varianzwerte abzüglich des kleinsten Varianzwerts; größere Werte schärfen Kanten. Bereich [6,60]. |
| ynr_hi_edge_thed | 10.0 | Kleinere Schwellen verstärken die hochfrequente Entrauschung. Bereich [0,1023]. |
| ynr_rnr_max_r | 14.0 | Anpassung der radialen Entrauschungsstärke; speichert 1/((rows/2)^2+(cols/2)^2). Die ersten 9 Bits sind Mantisse M, die letzten 5 Bits Exponent E. Bereich [1, 16383]. |
| ynr_rnr_strength[17] | 4.4 | Steuert die radiale Entrauschungsstärke mit insgesamt 17 Datenpunkten in 16 Segmenten: Entrauschung vom Bildzentrum zu den vier Bildecken. Bereich [0, 15]. |
| ynr_global_gain | 6.4 | Extern konfigurierte globale Verstärkung zur Steuerung der gesamten YNR-Entrauschungsstärke. Größere Werte verstärken die Entrauschung. Bereich [0, 1023]. |
| Feldname | Bitbreite (Ganzzahl. Nachkomma) |
Beschreibung |
|---|---|---|
| ynr_global_gain_alpha | 1.3 | Anteil der vom Gain-Modul gelieferten und der extern konfigurierten Verstärkung. Größere Werte verwenden mehr externe globale Verstärkung. Bereich [0, 8]. |
| ynr_bft3x3_bypass | 1 | Bei 1 bilaterale 3x3-Filterung ausschalten. Wertebereich 0 oder 1. |
| ynr_lbft5x5_bypass | 1 | Bei 1 bilaterale 5x5-Filterung ausschalten. Wertebereich 0 oder 1. |
| ynr_lgft3x3_bypass | 1 | Bei 1 Gauß-Filterung mit 3x3 ausschalten. |
| ynr_flt1x1_bypass | 1 | Bei 1 niederfrequente Verarbeitung mit weicher Schwelle ausschalten. Wertebereich 0 oder 1. |
| ynr_sft5x5_bypass | 1 | Laut Quelle bei 5 die hochfrequente 1x5-Rauschunterdrückung ausschalten; zugleich nennt die Quelle den Wertebereich 0 oder 1. Dieser Widerspruch ist nicht aufgelöst. |
9.4.4.25 rk_aiq_ynr_strength_v3_t
【Beschreibung】 Struktur zur Entrauschungsstärke definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus; siehe Überblick/API-Beschreibung. |
| percent | Entrauschungsstärke, Bereich 0.0-1.0. |
9.4.4.26 rk_aiq_cnr_attrib_v2_t
【Beschreibung】 Parameter des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus; siehe Überblick/API-Beschreibung. |
| eMode | CNR-Entrauschungsmodus |
| stAuto | CNR-Parameter für den automatischen Modus |
| stManual | CNR-Parameter für den manuellen Modus |
9.4.4.27 AcnrV2_OPMode_t
【Beschreibung】 Moduseigenschaften des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ACNRV2_OP_MODE_INVALID | Ungültiger Modus des UV-Bereich-CNR-Entrauschungsmoduls |
| ACNRV2_OP_MODE_AUTO | Automatischer Modus des UV-Bereich-CNR-Entrauschungsmoduls |
| ACNRV2_OP_MODE_MANUAL | Algorithmuseinstellungen für den manuellen Modus des UV-Bereich-CNR-Entrauschungsmoduls |
| ACNRV2_OP_MODE_REG_MANUAL | Registereinstellungen für den manuellen Modus des UV-Bereich-CNR-Entrauschungsmoduls |
| ACNRV2_OP_MODE_MAX | Maximalwert der UV-Bereich-CNR-Modi; ungültiger Modus. |
9.4.4.28 Acnr_Auto_Attr_V2_t
【Beschreibung】 Automatische Eigenschaften des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stParams | Algorithmusparameter des CNR-Moduls je ISO-Stufe |
| stSelect | Vom CNR-Modul berechnete Eigenschaftsparameter |
9.4.4.29 Acnr_Manual_Attr_V2_t
【Beschreibung】 Manuelle Eigenschaften des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stSelect | Algorithmusparameterwerte |
| stSelect | Registerwert |
9.4.4.30 RK_CNR_Params_V2_t
【Beschreibung】 Automatikmodus und ISO-abhängige Algorithmusparameter des Entrauschungsmoduls definieren.
【Definition】
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;
【Felder】
| Parametername | Parametertyp | Parameterbeschreibung |
|---|---|---|
| Enable | Abstimmparameter | Modulschalter: 1 ein, 0 aus. |
| iso | Abstimmparameter | Verschiedene ISO-Stufen mit unterschiedlichen Abstimmparametern; derzeit nur 13 Stufen unterstützt. |
| hf_bypass | Abstimmparameter | Bypass der hochfrequenten Entrauschung: 0 kein Bypass, 1 Bypass. |
| lf_bypass | Abstimmparameter | Bypass der niederfrequenten Entrauschung: 0 kein Bypass, 1 Bypass. |
| global_gain | Abstimmparameter | Interpolationsstärke zwischen lokalem und globalem CNR-Entrauschungsmodus. Normalerweise Standardwert ohne Konfiguration verwenden; dann lokale Verstärkung. Bereich 0.0 bis 64.0, Standard 1. |
| global_gain_alpha | Abstimmparameter | Interpolationsstärke zwischen lokalem und globalem CNR-Entrauschungsmodus. Normalerweise Standardwert ohne Konfiguration verwenden; dann lokale Verstärkung. Bereich laut Quelle 0.0 1.0, Standard 0. |
| global_gain_scale | Abstimmparameter | Verstärkt die CNR-Entrauschung. Normalerweise Standardwert verwenden und nicht leichtfertig anpassen. Bereich laut Quelle 0, 128, Standard 1. |
| gain_adj_strength_ratio | Abstimmparameter | Filterstärke anhand lokaler Verstärkung anpassen. Kleinere Werte verstärken die Rauschentfernung. Bereich [1, 255], Standard 255. |
| color_sat_adj | Abstimmparameter | Gradientenabhängig angepasster UV-Anteil der bilateralen Filterung, 1~255. Kleinere Werte verbessern die Farbrauschentfernung. Bereich [1, 255], Standard 40. |
| color_sat_adj_alpha | Abstimmparameter | Anpassungsanteil von color_sat_adj. Größere Werte verbessern die Farbrauschentfernung. Bereich laut Quelle 0, 1.0, Standard 0.8. |
| hf_spikes_reducion_strength | Abstimmparameter | Stärke der hochfrequenten Medianfilterung; größere Werte verstärken sie. Bereich laut Quelle 0, 1.0, Standard 0.5. |
| Parametername | Parametertyp | Parameterbeschreibung |
|---|---|---|
| hf_denoise_strength | Abstimmparameter | Stärke der hochfrequenten bilateralen Filterung; größere Werte verbessern die Farbrauschentfernung. Bereich [1, 1023], Standard 10. |
| hf_color_sat | Abstimmparameter | UV-Skalierungsfaktor der hochfrequenten bilateralen Filterung. Kleinere Werte senken die Farbsättigung stärker. Bereich laut Quelle 0.0, 7.9, Standard 1.5. |
| hf_denoise_alpha | Abstimmparameter | Mittelpunktsgewicht des hochfrequenten bilateralen Filters. Bereich laut Quelle 0.0, 1.0, Standard 0. |
| hf_bf_wgt_clip | Abstimmparameter | Minimale Entrauschung hoher Frequenzen. Größere Werte verstärken die Entrauschung. Bereich laut Quelle 0, 255, Standard 0. |
| thumb_spikes_reducion_strength | Abstimmparameter | Stärke der Medianfilterung des Vorschaubilds. Größere Werte verstärken sie. Bereich laut Quelle 0.0, 1.0, Standard 0.5. |
| thumb_denoise_strength | Abstimmparameter | Stärke der bilateralen Filterung des Vorschaubilds. Größere Werte verbessern die Farbrauschentfernung. Bereich [1, 1023], Standard 8. |
| thumb_color_sat | Abstimmparameter | UV-Skalierungsfaktor der bilateralen Filterung des Vorschaubilds; laut Quelle sinkt die Farbsättigung stärker. Bereich 0.0, 7.9, Standard 4. Die Quelle gibt hier keine eindeutige Änderungsrichtung des Parameters an. |
| lf_denoise_strength | Abstimmparameter | Stärke der niederfrequenten bilateralen Filterung. Größere Werte verbessern die Farbrauschentfernung. Bereich [1, 1023], Standard 8. |
| lf_color_sat | Abstimmparameter | UV-Anteil der niederfrequenten bilateralen Filterung. Kleinere Werte senken die Farbsättigung stärker. Bereich laut Quelle 0.0, 7.9, Standard 4. |
| lf_denoise_alpha | Abstimmparameter | Mittelpunktsgewicht des niederfrequenten bilateralen Filters. Bereich laut Quelle 0.0, 1.0, Standard 0.5. |
| kernel_5x5 | Abstimmparameter | Filterkern der bilateralen 5x5-Filterung |
9.4.4.31 RK_CNR_Params_V2_Select_t
【Beschreibung】 Algorithmuseigenschaften des manuellen Entrauschungsmodus definieren.
【Definition】
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;
【Felder】
| Parametername | Parametertyp | Parameterbeschreibung |
|---|---|---|
| Enable | Abstimmparameter | Modulschalter: 1 ein, 0 aus. |
| iso | Abstimmparameter | Verschiedene ISO-Stufen mit unterschiedlichen Abstimmparametern; derzeit nur 13 Stufen unterstützt. |
| hf_bypass | Abstimmparameter | Bypass der hochfrequenten Entrauschung: 0 kein Bypass, 1 Bypass. |
| lf_bypass | Abstimmparameter | Bypass der niederfrequenten Entrauschung: 0 kein Bypass, 1 Bypass. |
| global_gain | Abstimmparameter | Interpolationsstärke zwischen lokalem und globalem CNR-Entrauschungsmodus. Normalerweise Standardwert ohne Konfiguration verwenden; dann lokale Verstärkung. Bereich 0.0 bis 64.0, Standard 1. |
| global_gain_alpha | Abstimmparameter | Interpolationsstärke zwischen lokalem und globalem CNR-Entrauschungsmodus. Normalerweise Standardwert ohne Konfiguration verwenden; dann lokale Verstärkung. Bereich laut Quelle 0.0 1.0, Standard 0. |
| global_gain_scale | Abstimmparameter | Verstärkt die CNR-Entrauschung. Normalerweise Standardwert verwenden und nicht leichtfertig anpassen. Bereich laut Quelle 0, 128, Standard 1. |
| gain_adj_strength_ratio | Abstimmparameter | Filterstärke anhand lokaler Verstärkung anpassen. Kleinere Werte verstärken die Rauschentfernung. Bereich [1, 255], Standard 255. |
| color_sat_adj | Abstimmparameter | Gradientenabhängig angepasster UV-Anteil der bilateralen Filterung, 1~255. Kleinere Werte verbessern die Farbrauschentfernung. Bereich [1, 255], Standard 40. |
| color_sat_adj_alpha | Abstimmparameter | Anpassungsanteil von color_sat_adj. Größere Werte verbessern die Farbrauschentfernung. Bereich laut Quelle 0, 1.0, Standard 0.8. |
| hf_spikes_reducion_strength | Abstimmparameter | Stärke der hochfrequenten Medianfilterung; größere Werte verstärken sie. Bereich laut Quelle 0, 1.0, Standard 0.5. |
| Parametername | Parametertyp | Parameterbeschreibung |
|---|---|---|
| hf_denoise_strength | Abstimmparameter | Stärke der hochfrequenten bilateralen Filterung; größere Werte verbessern die Farbrauschentfernung. Bereich [1, 1023], Standard 10. |
| hf_color_sat | Abstimmparameter | UV-Skalierungsfaktor der hochfrequenten bilateralen Filterung. Kleinere Werte senken die Farbsättigung stärker. Bereich laut Quelle 0.0, 7.9, Standard 1.5. |
| hf_denoise_alpha | Abstimmparameter | Mittelpunktsgewicht des hochfrequenten bilateralen Filters. Bereich laut Quelle 0.0, 1.0, Standard 0. |
| hf_bf_wgt_clip | Abstimmparameter | Minimale Entrauschung hoher Frequenzen. Größere Werte verstärken die Entrauschung. Bereich laut Quelle 0, 255, Standard 0. |
| thumb_spikes_reducion_strength | Abstimmparameter | Stärke der Medianfilterung des Vorschaubilds. Größere Werte verstärken sie. Bereich laut Quelle 0.0, 1.0, Standard 0.5. |
| thumb_denoise_strength | Abstimmparameter | Stärke der bilateralen Filterung des Vorschaubilds. Größere Werte verbessern die Farbrauschentfernung. Bereich [1, 1023], Standard 8. |
| thumb_color_sat | Abstimmparameter | UV-Skalierungsfaktor der bilateralen Filterung des Vorschaubilds; laut Quelle sinkt die Farbsättigung stärker. Bereich 0.0, 7.9, Standard 4. Die Quelle gibt hier keine eindeutige Änderungsrichtung des Parameters an. |
| lf_denoise_strength | Abstimmparameter | Stärke der niederfrequenten bilateralen Filterung. Größere Werte verbessern die Farbrauschentfernung. Bereich [1, 1023], Standard 8. |
| lf_color_sat | Abstimmparameter | UV-Anteil der niederfrequenten bilateralen Filterung. Kleinere Werte senken die Farbsättigung stärker. Bereich laut Quelle 0.0, 7.9, Standard 4. |
| lf_denoise_alpha | Abstimmparameter | Mittelpunktsgewicht des niederfrequenten bilateralen Filters. Bereich laut Quelle 0.0, 1.0, Standard 0.5. |
| kernel_5x5 | Abstimmparameter | Filterkern der bilateralen 5x5-Filterung |
9.4.4.32 RK_CNR_Fix_V2_t
【Beschreibung】 Registerkonfiguration des manuellen Entrauschungsmodus definieren.
【Definition】
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;
【Felder】
| Parametername | Parameterbeschreibung |
|---|---|
| cnr_thumb_mix_cur_en | Freigabe zum Mischen des Vorschaubilds des aktuellen Frames mit dem vorherigen Bild: 1’b1 Mischen ein, 1’b0 Mischen aus. Rückgelesenes Anzeigeregister. |
| cnr_lq_bila_bypass | Bypass-Freigabe des niederfrequenten bilateralen 3x3-Filters: 1’b1 Bypass ein, out_data entspricht in_data; 1’b0 Bypass aus. Rückgelesenes Anzeigeregister. |
| cnr_hq_bila_bypass | Bypass des hochfrequenten bilateralen 5x5-Filters: 1 Bypass ein, out_data entspricht in_data; 0 Bypass aus. Rückgelesenes Anzeigeregister. |
| cnr_exgain_bypass | sw_cnr_exgain_bypass: Bypass-Freigabe der externen Verstärkung. 1 Bypass ein, externe Verstärkung fest auf sw_cnr_egain_mux; 0 Bypass aus, externe Verstärkung verwenden. Laut Quelle unterstützt die aktuelle Version das Deaktivieren des Bypass nicht. Rückgelesenes Anzeigeregister. |
| cnr_en_i | CNR-Modulfreigabe: 1 ein, 0 aus. |
| cnr_global_gain | Interpolationsstärke zwischen lokalem und globalem CNR-Entrauschungsmodus. Normalerweise Standardwert ohne Konfiguration verwenden; dann lokale Verstärkung. Bereich 0.0 bis 64.0, Standard 1. |
| cnr_global_gain_alpha | Interpolationsstärke zwischen lokalem und globalem CNR-Entrauschungsmodus. Normalerweise Standardwert ohne Konfiguration verwenden; dann lokale Verstärkung. Bereich laut Quelle 0.0 1.0, Standard 0. |
| cnr_gain_iso | Externe Verstärkung erhöhen, Bereich 0~128. |
| cnr_gain_offset | Verstärkungsversatz des Tiefpassfilters bei der Verstärkungskalibrierung, Bereich 0~16. |
| cnr_gain_1sigma | Ausgangsdaten des Hochpassfilters bei der Verstärkungskalibrierung verstärken. |
| cnr_gain_uvgain1 | uvgain-Parameter 1 |
| cnr_gain_uvgain0 | uvgain-Parameter 0 |
| cnr_lmed3_alpha | in_data-Gewicht im niederfrequenten Medianfilter, Bereich 0~16. |
| cnr_lbf5_gain_y; | Y-Verstärkung des bilateralen lbf5x5-Filters |
| cnr_lbf5_gain_c; | UV-Verstärkung des bilateralen lbf5x5-Filters |
| cnr_lbf5_weit_d[0] | Räumliches Gewicht von pix12, Bereich 1~128. |
| Parametername | Parameterbeschreibung |
|---|---|
| cnr_lbf5_weit_d[1] | Räumliches Gewicht von pix7,11,13,17, Bereich 0~128. |
| cnr_lbf5_weit_d[2] | Räumliches Gewicht von pix6,8,16,18, Bereich 0~128. |
| cnr_lbf5_weit_d[3] | Räumliches Gewicht bei Abstand 4 oder 5, Bereich 0~128. |
| cnr_lbf5_weit_d[4] | Räumliches Gewicht von pix0,4,20,24, Bereich 0~128. |
| cnr_hmed3_alpha | in_data-Gewicht im hochfrequenten Medianfilter, Bereich 0~16. |
| cnr_hbf5_weit_src | in_data-Gewicht von hbf5x5, Bereich 0~128. |
| cnr_hbf5_min_wgt | Untergrenze von hbf5x5 weit_r |
| cnr_hbf5_sigma | Sigma-Wert von hbf5x5 |
| cnr_lbf5_weit_src | in_data-Gewicht von lbf3x3, Bereich 0~128. Die Quelle nennt trotz lbf5-Feldnamen ausdrücklich lbf3x3. |
| cnr_lbf3_sigma | Sigma-Wert von lbf3x3 |
9.4.4.33 rk_aiq_cnr_strength_v2_t
【Beschreibung】 Struktur zur Entrauschungsstärke definieren.
【Definition】
typedef struct rk_aiq_cnr_strength_v2_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_cnr_strength_v2_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus; siehe Überblick/API-Beschreibung. |
| percent | Entrauschungsstärke, Bereich 0.0-1.0. |
9.5 BLC
9.5.1 Funktionsbeschreibung
9.5.2 Referenz der funktionsbezogenen APIs
9.5.2.1 rk_aiq_user_api2_ablc_SetAttrib
【Beschreibung】 BLC-Parametereigenschaften einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ablc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_blc_attrib_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | BLC-Parametereigenschaft | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ablc.h, RkAiqHandleInt.h, rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
9.5.2.2 rk_aiq_user_api2_ablc_GetAttrib
【Beschreibung】 BLC-Parametereigenschaften abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_ablc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_blc_attrib_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | BLC-Parametereigenschaft | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_ablc.h, RkAiqHandleInt.h, rk_aiq_user_api2_sysctl.h
Bibliotheksdatei: librkaiq.so
9.5.3 Datentypen der modulbezogenen APIs
9.5.3.1 rk_aiq_blc_attrib_t
【Beschreibung】 Parameter des BLC-Moduls
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus siehe Abschnitt Überblick/API-Beschreibung |
| eMode | Modus des BLC-Moduls |
| stBlc0Auto | Parameter des automatischen blc0-Modus |
| stBlc0Manual | Parameter des manuellen blc0-Modus |
| stBlc1Auto | Parameter des automatischen blc1-Modus |
| stBlc1Manual | Parameter des manuellen blc1-Modus |
9.5.3.2 AblcOPMode_t
【Beschreibung】 Moduseigenschaften des Rauschunterdrückungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ABLC_OP_MODE_OFF | Ungültiger Modus des BLC-Moduls |
| ABLC_OP_MODE_AUTO | Automatischer Modus des BLC-Moduls |
| ABLC_OP_MODE_MANUAL | Algorithmuseinstellungen für den manuellen Modus des BLC-Moduls |
| ABLC_OP_MODE_MAX | Maximalwert der BLC-Modusaufzählung; ungültiger Modus |
9.5.3.3 AblcParams_t
【Beschreibung】 Parameter des automatischen BLC-Modus
【Definition】
typedef struct AblcParams_s {
bool enable;
int len;
float* iso;
float* blc_r;
float* blc_gr;
float* blc_gb;
float* blc_b;
} AblcParams_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| enable | Modulaktivierung: 1 aktiviert; 0 deaktiviert; |
| len | Länge des zu iso gehörenden Arrays |
| iso | ISO-Stufe |
| blc_r | BLC-Werte für unterschiedliche ISO-Stufen; Arrayzeiger |
| blc_gr | BLC-Werte für unterschiedliche ISO-Stufen; Arrayzeiger |
| blc_gb | BLC-Werte für unterschiedliche ISO-Stufen; Arrayzeiger |
| blc_b | BLC-Werte für unterschiedliche ISO-Stufen; Arrayzeiger |
9.5.3.4 AblcManualAttr_t
【Beschreibung】 Parameter des manuellen BLC-Modus
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| enable | Modulaktivierung: 1 aktiviert; 0 deaktiviert; |
| blc_r | R-Kanaleigenschaften des BLC-Moduls |
| blc_gr | gr-Kanaleigenschaften des blc-Moduls |
| blc_gb | GB-Kanaleigenschaften des BLC-Moduls |
| blc_b | B-Kanaleigenschaften des BLC-Moduls |
9.6 Dehaze&Enhance
9.6.1 Funktionsbeschreibung
Dehaze & Enhanced umfasst 2 Modi:
Dehaze verbessert das Bild durch dynamische Änderung von Kontrast und Helligkeit.
Enhance verstärkt den Kontrast lokaler Bildbereiche.
Dehaze und Enhanced schließen sich gegenseitig aus.
9.6.2 Referenz der funktionsbezogenen APIs
9.6.2.1 rk_aiq_uapi2_setDehazeModuleEnable
【Beschreibung】
Den Dehaze-Modulschalter einstellen, der stAuto.DehazeTuningPara.Enable oder stManual.Enable steuert; die Auswahl wird entsprechend dem aktuellen API-Modus automatisch angepasst.
【Syntax】
XCamReturn rk_aiq_uapi2_setDehazeModuleEnable(const rk_aiq_sys_ctx_t* ctx, bool
on);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| on | Funktion ein-/ausschalten. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Ungleich 0 | Fehler; Einzelheiten siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.6.2.2 rk_aiq_uapi2_setDehazeEnable
【Beschreibung】
Den Dehaze-Funktionsschalter einstellen, der stAuto.DehazeTuningPara.dehaze_setting.en oder stManual.dehaze_setting.en steuert; die Auswahl wird entsprechend dem aktuellen API-Modus automatisch angepasst.
【Syntax】
XCamReturn rk_aiq_uapi2_setDehazeEnable(const rk_aiq_sys_ctx_t* ctx, bool on);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| on | Funktion ein-/ausschalten. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Ungleich 0 | Fehler; Einzelheiten siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.6.2.3 rk_aiq_uapi2_setMDehazeStrth
【Beschreibung】
Manuelle Dunstentfernungsstärke einstellen. Basiswert ist 50; Werte über 50 erhöhen, Werte unter 50 verringern die Stärke.
Als API-Modus sind sowohl DEHAZE_API_AUTO als auch DEHAZE_API_MANUAL vorgesehen.
Stellen Sie vor Verwendung dieser API sicher, dass Dehaze wirksam ist, oder rufen Sie zuvor rk_aiq_uapi2_setDehazeModuleEnable und rk_aiq_uapi2_setDehazeEnable auf. Den Ablauf zeigt Fall 6 in sample_adehaze_module.cpp.
【Syntax】
XCamReturn rk_aiq_uapi2_setMDehazeStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| level | Stufe, Wertebereich [1,100], Standardwert 50, Genauigkeit 1. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.6.2.4 rk_aiq_uapi2_getMDehazeStrth
【Beschreibung】
Manuelle Dunstentfernungsstärke abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getMDehazeStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
int* level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| level | Stufe, Wertebereich [1,100], Standardwert 50, Genauigkeit 1. | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.6.2.5 rk_aiq_uapi2_setEnhanceEnable
【Beschreibung】
Den Dehaze-Funktionsschalter einstellen, der stAuto.DehazeTuningPara.enhance_setting.en oder stManual.enhance_setting.en steuert; die Auswahl wird entsprechend dem aktuellen API-Modus automatisch angepasst. Die Quelle bezeichnet die Funktion hier als Dehaze.
【Syntax】
XCamReturn rk_aiq_uapi2_setEnhanceEnable(const rk_aiq_sys_ctx_t* ctx, bool on);
【Parameter】
| Rückgabewert | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| on | Funktion ein-/ausschalten. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.6.2.6 rk_aiq_uapi2_setMEnhanceStrth
【Beschreibung】
Manuelle Kontrastverstärkungsstärke einstellen. Basiswert ist 50; Werte über 50 erhöhen, Werte unter 50 verringern den Kontrast.
Als API-Modus sind sowohl DEHAZE_API_AUTO als auch DEHAZE_API_MANUAL vorgesehen.
Stellen Sie vor Verwendung dieser API sicher, dass Enhance wirksam ist, oder rufen Sie zuvor rk_aiq_uapi2_setDehazeModuleEnable und rk_aiq_uapi2_setEnhanceEnable auf. Den Ablauf zeigt Fall 9 in sample_adehaze_module.cpp.
【Syntax】
XCamReturn rk_aiq_uapi2_setMEnhanceStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
int level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| level | Stufe, Wertebereich [1,100], Standardwert 50, Genauigkeit 1. | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.6.2.7 rk_aiq_uapi2_getMEnhanceStrth
【Beschreibung】
Manuelle Kontrastverstärkung abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getMEnhanceStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
int *level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| level | Stufe, Wertebereich [1,100], Standardwert 50, Genauigkeit 1. | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.6.3 Referenz der modulbezogenen APIs
9.6.3.1 rk_aiq_user_api2_adehaze_v12_setSwAttrib
【Beschreibung】
Dunstentfernungsparameter einstellen.
【Syntax】
XCamReturn rk_aiq_user_api2_adehaze_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
const adehaze_sw_v2_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Dunstentfernungsparameter | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
9.6.3.2 rk_aiq_user_api2_adehaze_getSwAttrib
【Beschreibung】
Aktuelle Dunstentfernungsparameter abrufen.
【Syntax】
XCamReturn rk_aiq_user_api2_adehaze_getSwAttrib(const rk_aiq_sys_ctx_t*
sys_ctx,adehaze_sw_v2_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Dunstentfernungsparameter | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
9.6.4 Datentypen der modulbezogenen APIs
9.6.4.1 dehaze_api_mode_t
【Beschreibung】 Betriebsart des Dunstentfernungsmoduls definieren.
【Definition】
typedef enum dehaze_api_mode_e {
DEHAZE_API_AUTO = 0,
DEHAZE_API_MANUAL = 1,
} dehaze_api_mode_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| DEHAZE_API_AUTO | Automatischer Dunstentfernungsmodus |
| DEHAZE_API_MANUAL | Manueller Dunstentfernungsmodus |
9.6.4.2 DehazeDataV21_t
【Beschreibung】 Eigenschaften der automatischen Dunstentfernungs-Abstimmparameter definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| EnvLv | Umgebungshelligkeit |
| EnvLv_len | Länge des EnvLv-Arrays |
| dc_min_th | Adaptiver WT-Statistikbereich, Wertebereich [16, 120], Standardwert 64. |
| dc_min_th_len | Länge des dc_min_th-Arrays |
| dc_max_th | Adaptiver WT-Statistikbereich für stark belichtete Bereiche, Wertebereich [170, 255], Standardwert 192. |
| dc_max_th_len | Länge des dc_max_th-Arrays |
| yhist_th | Statistikbereich stark belichteter Y-Komponentenbereiche: [170, 255], Standardwert 249. |
| yhist_th_len | Länge des yhist_th-Arrays |
| yblk_th | Anteilsschwelle der Y-Komponentenblockanzahl: 0.002, 0.01; Standardwert 0.002. |
| yblk_th_len | Länge des yblk_th-Arrays |
| dark_th | Adaptive WT-Mindestschwelle des Y-Komponentenblocks, Wertebereich [230, 250], Standardwert 250. |
| dark_th_len | Länge des dark_th-Arrays |
| bright_min | Minimum der adaptiven AIR-Schwelle, Bereich 160 bis 200, Standardwert 180. |
| bright_min_len | Länge des bright_min-Arrays |
| bright_max | Maximum der adaptiven air-Schwelle, Bereich 210 bis 250, Standardwert 240. |
| bright_max_len | Länge des bright_max-Arrays |
| wt_max | Maximaler WT-Wert: 0.75 und 0.9; Standardwert 0.9. |
| wt_max_len | Länge des wt_max-Arrays |
| air_min | Minimaler adaptiver air-Wert, Bereich 200 bis 220, Standardwert 200. |
| air_min_len | Länge des air_min-Arrays |
| air_max | Maximaler adaptiver air-Wert: 230 und 250; Standardwert 250. |
| air_max_len | Länge des air_max-Arrays |
| tmax_base | Standardwert von tmax: 125. Zugehörige Konfiguration: 200 (131), 210 (125), 220 (119), 230 (114), 240 (109), 250 (105). Empfohlen wird 131-105. |
| Feldname | Beschreibung |
|---|---|
| tmax_base_len | Länge des tmax_base-Arrays |
| tmax_off | Adaptiver Festwert von tmax, Wertebereich [0.1, 0.5], Standardwert 0.1. |
| tmax_off_len | Länge des tmax_off-Arrays |
| tmax_max | Maximaler tmax-Wert: 0.1, 0.5; Standardwert 0.5. |
| tmax_max_len | Länge des tmax_max-Arrays |
| cfg_wt | Softwarekonfiguration von wt, Stärke der Bilddunstentfernung, Wertebereich [0, 1], Standardwert 0.8. |
| cfg_wt_len | Länge des cfg_wt-Arrays |
| cfg_air | Softwarekonfiguration von air, atmosphärischer Lichtkoeffizient, Wertebereich [0, 255], Standardwert 210. |
| cfg_air_len | Länge des cfg_air-Arrays |
| cfg_tmax | Softwarekonfiguration von tmax, maximaler Dunstentfernungswert, Wertebereich [0, 1], Standardwert 0.2. |
| cfg_tmax_len | Länge des cfg_tmax-Arrays |
| bf_weight | Kombinationsgewicht der beiden bilateralen Filter, Wertebereich [0, 1], Standardwert 0.5. |
| bf_weight_len | Länge des bf_weight-Arrays |
| dc_weitcur | Gewicht des Dunkelkanalanteils, Wertebereich [0, 1]; Standardwert in der Quelle nicht angegeben. |
| dc_weitcur_len | Länge des dc_weitcur-Arrays |
| range_sigma | Bereichs-Sigma des bilateralen Filters, Wertebereich [0, 1], Standardwert 0.4. |
| range_sigma_len | Länge des range_sigma-Arrays |
| space_sigma_pre | Räumliches Sigma der bilateralen Filterung bei IIR-Daten als Referenz, Wertebereich [0, 1], Standardwert 0.4. |
| space_sigma_pre_len | Länge des space_sigma_pre-Arrays |
| space_sigma_cur | Räumliches Sigma der bilateralen Filterung bei aktuellen Daten als Referenz, Wertebereich [0, 1], Standardwert 0.8. |
| space_sigma_cur_len | Länge des space_sigma_cur-Arrays |
9.6.4.3 Dehaze_Setting_V21_t
【Beschreibung】 Parameter der automatischen Dunstentfernungsfunktion definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| en | Funktionsschalter |
| air_lc_en | Ob Airlight Base zur unteren Begrenzung von Airlight verwendet wird |
| stab_fnum | Maximalwert für die Bildstabilisierung |
| sigma | IIR-gesteuertes Sigma |
| wt_sigma | Bildübergreifender WT-Filterkoeffizient |
| air_sigma | Bildübergreifender AIR-Filterkoeffizient |
| tmax_sigma | Bildübergreifender Tmax-Filterkoeffizient |
| pre_wet | IIR-Filterfaktor der Referenzdaten |
| DehazeData | Dunstentfernungs-Abstimmparameter |
9.6.4.4 EnhanceDataV21_t
【Beschreibung】 Eigenschaften der automatischen Enhance-Abstimmparameter definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| EnvLv | Umgebungshelligkeit |
| EnvLv_len | Länge des Umgebungshelligkeitsarrays |
| enhance_value | Allgemeine Kontraststärke, Wertebereich [0,16], empfohlener Bereich [1, 2] |
| enhance_value_len | Länge des enhance_value-Arrays |
| enhance_chroma | Verstärkungsparameter für die Chromatizität, Wertebereich [0, 16], empfohlener Bereich [1, 2] |
| enhance_chroma_len | Länge des enhance_chroma-Arrays |
9.6.4.5 Enhance_Setting_V21_t
【Beschreibung】 Eigenschaften der automatischen Enhance-Funktionsparameter definieren.
【Definition】
typedef struct Enhance_Setting_V21_s{
bool en;
float enhance_curve[CALIBDB_ADEHAZE_ENHANCE_CURVE_KNOTS_NUM];
EnhanceDataV21_t EnhanceData;
} Enhance_Setting_V21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| en | Enhance-Funktionsschalter. 0: aus, 1: ein. |
| enhance_curve | Niederfrequenzkurve. |
| EnhanceData | Enhance-Abstimmparameter. |
9.6.4.6 Hist_setting_V21_t
【Beschreibung】 Eigenschaften der automatischen Hist-Abstimmparameter definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| EnvLv | Umgebungshelligkeit |
| EnvLv_len | Länge des EnvLv-Arrays |
| hist_gratio | Histogrammspreizungsfaktor, Steuerkoeffizient des Histogrammausgleichs, Wertebereich [0, 32] |
| hist_gratio_len | Länge des hist_gratio-Arrays |
| hist_th_off | Histogrammstatistikschwelle, Bereich 0 bis 255, Standardwert 64 |
| hist_th_off_len | Länge des hist_th_off-Arrays |
| hist_k | Multiplikator der adaptiven Histogrammschwelle, Bereich 0 bis 7, Wert 2 |
| hist_k_len | Länge des hist_k-Arrays |
| hist_min | Minimum der Histogrammstatistikschwelle, laut Quelle Bereich 0,2 bis 0.016 |
| hist_min_len | Länge des hist_min-Arrays |
| hist_scale | Steuerkoeffizienten des Histogrammausgleichs, Wertebereich [0, 32] |
| hist_scale_len | Länge des hist_scale-Arrays |
| cfg_gratio | Softwarekonfiguration des Histogrammspreizungsfaktors bzw. Steuerkoeffizienten des Histogrammausgleichs, Wertebereich [0, 32] |
| cfg_gratio_len | Länge des cfg_gratio-Arrays |
9.6.4.7 Hist_setting_V21_t
【Beschreibung】 Eigenschaften der automatischen Hist-Funktionsparameter definieren.
【Definition】
typedef struct Hist_setting_V21_s{
bool en;
bool hist_para_en;
HistDataV21_t HistData;
} Hist_setting_V21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| en | Hist-Funktionsschalter |
| hist_para_en | Schalter zur Steuerung der Histogrammspreizung |
| HistData | Hist-Abstimmparameter |
9.6.4.8 CalibDbDehazeV21_t
【Beschreibung】 Eigenschaften der Abstimmparameter des automatischen Dunstentfernungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Enable | Funktionsschalter |
| cfg_alpha | Anteil der manuellen Softwarekonfiguration, Wertebereich 0, 1, Standardwert 1, Genauigkeit 0.01 |
| dehaze_setting | Parameter der automatischen Dunstentfernungsfunktion |
| enhance_setting | Parameter der automatischen Enhance-Funktion |
| hist_setting | Parameter der automatischen Hist-Funktion |
9.6.4.9 CalibDbV2_dehaze_v21_t
【Beschreibung】 Eigenschaften des automatischen Dunstentfernungsmoduls definieren.
【Definition】
typedef struct CalibDbV2_dehaze_V21_s{
CalibDbDehazeV21_t DehazeTuningPara;
} CalibDbV2_dehaze_V21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| DehazeTuningPara | Abstimmparameter des automatischen Dunstentfernungsmoduls |
9.6.4.10 mDehazeDataV21_t
【Beschreibung】 Manuelle DehazeData-Eigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| dc_min_th | Adaptiver WT-Statistikbereich, Wertebereich [16, 120], Standardwert 64, Genauigkeit 0.1. |
| dc_max_th | Adaptiver WT-Statistikbereich für stark belichtete Bereiche, Wertebereich [170, 255], Standardwert 192, Genauigkeit 0.1. |
| yhist_th | Statistikbereich stark belichteter Y-Komponentenbereiche, Wertebereich [170, 255], Standardwert 249, Genauigkeit 0.1 |
| yblk_th | Anteilsschwelle der Y-Komponentenblockanzahl, Wertebereich [0.002, 0.01], Standardwert 0.002, Genauigkeit 0.1. |
| dark_th | Adaptive WT-Mindestschwelle des Y-Komponentenblocks, Wertebereich [230, 250], Standardwert 250, Genauigkeit 0.1 |
| bright_min | Minimum der adaptiven AIR-Schwelle, Wertebereich [160, 200], Standardwert 180, Genauigkeit 0.1. |
| bright_max | Maximum der adaptiven AIR-Schwelle, Wertebereich [210, 250], Standardwert 240, Genauigkeit 0.1. |
| wt_max | Obergrenze der adaptiven wt-Anpassung, Wertebereich [0.75, 0.9], Standardwert 0.9, Genauigkeit 0.001. |
| air_min | Untergrenze der adaptiven air-Anpassung, Wertebereich [200, 220], Standardwert 200, Genauigkeit 0.001. |
| air_max | Obergrenze der adaptiven AIR-Anpassung, Wertebereich [230, 250], Standardwert 250, Genauigkeit 0.001. |
| tmax_base | Adaptiver tmax-Basiswert, Standard 125. Konfiguration: 200 (131), 210 (125), 220 (119), 230 (114), 240 (109), 250 (105); empfohlen 131-105 |
| tmax_off | Adaptiver Tmax-Festwert, Wertebereich [0.1, 0.5], Standardwert 0.1, Genauigkeit 0.1. |
| tmax_max | Maximum der adaptiven tmax-Anpassung, Wertebereich [0.1, 0.5], Standardwert 0.5, Genauigkeit 0.1. |
| cfg_wt | Softwarekonfiguration von wt, Bilddunstentfernungsstärke, Wertebereich [0, 1], Standardwert 0.8, Genauigkeit 0.001. |
| cfg_air | Softwarekonfiguration von air, atmosphärischer Lichtkoeffizient, Wertebereich [0, 255], Standardwert 210, Genauigkeit 0.001 |
| cfg_tmax | Softwarekonfiguration von tmax, maximaler Dunstentfernungswert, Wertebereich [0, 1], Standardwert 0.2, Genauigkeit 0.001. |
| bf_weight | Kombinationsgewicht der beiden bilateralen Filter, Wertebereich [0, 1], Standardwert 0.5, Genauigkeit 0.1. |
| dc_weitcur | Bilaterales Gewicht des Dunkelkanalanteils, Wertebereich [0, 1], Standardwert 1, Genauigkeit 0.1. |
| range_sigma | Bereichs-Sigma des bilateralen Filters, Wertebereich [0, 1], Standardwert 0.4, Genauigkeit 0.1. |
| Feldname | Beschreibung |
|---|---|
| space_sigma_pre | Räumliches Sigma der bilateralen Filterung bei IIR-Daten als Referenz, Wertebereich [0, 1], Standardwert 0.4, Genauigkeit 0.1. |
| space_sigma_cur | Räumliches Sigma der bilateralen Filterung bei aktuellen Daten als Referenz, Wertebereich [0, 1], Standardwert 0.8, Genauigkeit 0.1. |
9.6.4.11 mDehaze_setting_v21_t
【Beschreibung】 Eigenschaften der manuellen Dunstentfernungsfunktion definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| en | Funktionsschalter |
| air_lc_en | Ob Airlight Base zur unteren Begrenzung verwendet wird |
| stab_fnum | Maximalwert der Bildstabilisierung, Wertebereich [0,31], Standardwert 8, Genauigkeit 0.01 |
| sigma | IIR-gesteuertes Sigma, Wertebereich 0,255, Standardwert 6, Genauigkeit 1. |
| wt_sigma | Bildübergreifender wt-Filterkoeffizient, Wertebereich [0,255], Standardwert 8, Genauigkeit 1. |
| air_sigma | Bildübergreifender air-Filterkoeffizient, Wertebereich 0,255, Standardwert 12, Genauigkeit 1 |
| tmax_sigma | Bildübergreifender Tmax-Filterkoeffizient, Wertebereich [0,1], Standardwert 0.01, Genauigkeit 0.0001 |
| pre_wet | IIR-Filterkoeffizient der Referenzdaten, Wertebereich [0,1], Standardwert 0.01, Genauigkeit 0.0001. |
| DehazeData | Dunstentfernungs-Abstimmparameter |
9.6.4.12 mEnhanceDataV21_t
【Beschreibung】 Manuelle EnhanceData-Eigenschaft definieren.
【Definition】
typedef struct mEnhanceDataV21_s {
float enhance_value;
float enhance_chroma;
} mEnhanceDataV21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| enhance_value | Allgemeine Kontraststärke, Wertebereich [0,16], Standardwert 1.0, Genauigkeit 0.001. |
| enhance_chroma | Verstärkungsparameter für die Chromatizität, Wertebereich [0,16], Standardwert 1.0, Genauigkeit 0.001. |
9.6.4.13 mEnhance_setting_v21_t
【Beschreibung】 Eigenschaft der manuellen Enhance-Funktion definieren.
【Definition】
typedef struct mEnhance_Setting_V21_s {
bool en;
float enhance_curve[CALIBDB_ADEHAZE_ENHANCE_CURVE_KNOTS_NUM];
mEnhanceDataV21_t EnhanceData;
} mEnhance_Setting_V21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| en | Enhance-Funktionsschalter |
| enhance_curve | Niederfrequenzkurve |
| EnhanceData | Enhance-Abstimmparameter |
9.6.4.14 mHistDataV21_t
【Beschreibung】 Manuelle HistData-Eigenschaft definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| hist_gratio | Histogrammspreizungsfaktor, Steuerkoeffizient des Histogrammausgleichs, Wertebereich [0, 32], Standardwert nicht angegeben, Genauigkeit 0.01. |
| hist_th_off | Histogrammstatistikschwelle, Wertebereich [0, 255], Standardwert 64, Genauigkeit 0.01. |
| hist_k | Multiplikator der adaptiven Histogrammschwelle, Wertebereich [0, 7), Standardwert 2, Genauigkeit 0.01. |
| hist_min | Minimum der Histogrammstatistikschwelle, Wertebereich [0,2), Standardwert 0.016, Genauigkeit 0.01. |
| hist_scale | Steuerkoeffizient des Histogrammausgleichs, Wertebereich [0, 32], Standardwert 0.9, Genauigkeit 0.01. |
| cfg_gratio | Softwarekonfiguration des Histogrammspreizungsfaktors, Steuerkoeffizient des Histogrammausgleichs, Wertebereich [0, 32), Standardwert 1, Genauigkeit 0.01. |
9.6.4.15 mHist_setting_v21_t
【Beschreibung】 Eigenschaften der manuellen Hist-Funktion definieren.
【Definition】
typedef struct mHist_setting_V21_s {
bool en;
bool hist_para_en;
mHistDataV21_t HistData;
} mHist_setting_V21_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| en | Hist-Funktionsschalter. |
| hist_para_en | Schalter zur Steuerung der Histogrammspreizung. |
| HistData | Hist-Abstimmparameter. |
9.6.4.16 mDehazeAttr_t
【Beschreibung】 Eigenschaften des manuellen Dunstentfernungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Enable | Funktionsschalter. |
| cfg_alpha | Anteil manueller Softwarekonfiguration, Wertebereich [0,1], Standardwert 1, Genauigkeit 0.01. |
| dehaze_setting | Parameter der manuellen Dunstentfernungsfunktion |
| enhance_setting | Parameter der manuellen Enhance-Funktion |
| hist_setting | Parameter der manuellen Hist-Funktion |
9.6.4.17 adehaze_sw_v2_t
【Beschreibung】 Dunstentfernungseigenschaft definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Definitionen von rk_aiq_uapi_sync_t siehe Überblick/API-Beschreibung. |
| mode | API-Schema. |
| stAuto | Parameter des automatischen Dunstentfernungsmoduls. |
| stManual | Parameter des manuellen Dunstentfernungsmoduls. |
| stDehazeManu | Parameter der Dunstentfernungsstufe; nicht verwenden. |
| stEnhanceManu | Parameter der Kontraststufe; nicht verwenden. |
9.7 CPROC
9.7.1 Funktionsbeschreibung
CPRO (Color Processing) bietet grundlegende Farbanpassung durch Änderung von Helligkeit, Kontrast, Sättigung und Chromatizität innerhalb bestimmter Bereiche, um die gewünschte Farbwiedergabe zu erzielen. Das Modul verarbeitet Bilder in der YUV-Domäne.
9.7.2 Referenz der funktionsbezogenen APIs
9.7.3 Referenz der modulbezogenen APIs
9.7.3.1 rk_aiq_user_api2_acp_SetAttrib
【Beschreibung】
Eigenschaften des cpro-Moduls einstellen.
【Syntax】
XCamReturn rk_aiq_user_api2_acp_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaften des cproc-Moduls | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_acp.h
Bibliotheksdatei: librkaiq.so
9.7.3.2 rk_aiq_user_api2_acp_GetAttrib
【Beschreibung】
Aktuelle Eigenschaften des CPRO-Moduls abrufen.
【Syntax】
XCamReturn rk_aiq_user_api2_acp_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
acp_attrib_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaften des cproc-Moduls | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_acp.h
Bibliotheksdatei: librkaiq.so
9.7.4 Datentypen der modulbezogenen APIs
9.7.4.1 acp_attrib_t
【Beschreibung】 Parameter des CPROC-Moduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| brightness | Helligkeit, Bereich [0,255], entsprechender Bereich [-128,127], Standardwert 128 |
| contrast | Kontrast, Bereich [0,255], entsprechender Faktor [0, 1.992], Standardwert 128 |
| saturation | Sättigung, Bereich [0,255], entsprechender Faktor [0, 1.992], Standardwert 128 |
| hue | Chromatizität, Bereich [0,255], entsprechender Winkel [-90,87.188], Standardwert 128 |
9.8 IE
9.8.1 Funktionsbeschreibung
IE (Image Effect) stellt Bildeffekte wie Schwarzweiß bereit. Dieses Modul verarbeitet Bilder in der YUV-Domäne.
9.8.2 Referenz der funktionsbezogenen APIs
9.8.3 Referenz der modulbezogenen APIs
9.8.3.1 rk_aiq_user_api2_aie_SetAttrib
【Beschreibung】
Eigenschaften des IE-Moduls einstellen.
【Syntax】
XCamReturn rk_aiq_user_api2_aie_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
aie_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaften des IE-Moduls | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_aie.h
Bibliotheksdatei: librkaiq.so
9.8.3.2 rk_aiq_user_api2_aie_GetAttrib
【Beschreibung】
Aktuelle Eigenschaften des IE-Moduls abrufen.
【Syntax】
XCamReturn rk_aiq_user_api2_aie_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
aie_attrib_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaften des IE-Moduls | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_aie.h
Bibliotheksdatei: librkaiq.so
9.8.4 Datentypen der modulbezogenen APIs
9.8.4.1 aie_attrib_t
【Beschreibung】 Parameter des IE-Moduls definieren.
【Definition】
typedef struct aie_attrib_s {
rk_aiq_ie_effect_t mode;
} aie_attrib_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| mode | Effekttyp |
9.8.4.2 rk_aiq_ie_effect_t
【Beschreibung】 IE-Effekttyp definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RK_AIQ_IE_EFFECT_NONE | Keine Spezialeffekte |
| RK_AIQ_IE_EFFECT_BW | Schwarzweißeffekt |
| RK_AIQ_IE_EFFECT_NEGATIVE | Negativeffekt, nicht unterstützt |
| RK_AIQ_IE_EFFECT_SEPIA | Dunkelbrauner Effekt |
| RK_AIQ_IE_EFFECT_EMBOSS | Reliefeffekt |
| RK_AIQ_IE_EFFECT_SKETCH | Skizzeneffekt |
| RK_AIQ_IE_EFFECT_SHARPEN | Nicht unterstützt |
9.9 CSM
9.9.1 Funktionsbeschreibung
CSM (Color Space Matrix) ermöglicht die Parametereinstellung der RGB-zu-YUV-Konvertierung.
9.9.2 Referenz der funktionsbezogenen APIs
9.9.3 Referenz der modulbezogenen APIs
9.9.3.1 rk_aiq_user_api2_acsm_SetAttrib
【Beschreibung】
Eigenschaften des CSM-Moduls einstellen.
【Syntax】
XCamReturn rk_aiq_user_api2_acsm_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapi_acsm_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaft des CSM-Moduls | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_acsm.h
Bibliotheksdatei: librkaiq.so
【Vorsichtsmaßnahmen】
Bei attr.param.op_mode = RK_AIQ_OP_MODE_AUTO werden die integrierten CSM-Standardparameter von AIQ verwendet. Bei attr.param.op_mode = RK_AIQ_OP_MODE_MANUAL können CSM-Parameter konfiguriert werden.
attr.param.full_range kann nur auf TRUE gesetzt werden; der begrenzte Wertebereich lässt sich im CGC-Modul konfigurieren.
9.9.3.2 rk_aiq_user_api2_acsm_GetAttrib
【Beschreibung】
Aktuelle Eigenschaften des CSM-Moduls abrufen.
【Syntax】
XCamReturn rk_aiq_user_api2_acsm_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapi_acsm_attrib_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaft des CSM-Moduls | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_acsm.h
Bibliotheksdatei: librkaiq.so
9.9.4 Datentypen der modulbezogenen APIs
9.9.4.1 rk_aiq_uapi_acsm_attrib_t
【Beschreibung】 Parameter des CSM-Moduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Definitionen von rk_aiq_uapi_sync_t siehe Abschnitt Überblick/API-Beschreibung |
| rk_aiq_acsm_params_t | CSM-Parameter |
9.9.4.2 rk_aiq_acsm_params_t
【Beschreibung】 CSM-Modulparameter definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| op_mode | Modus: RK_AIQ_OP_MODE_AUTO oder RK_AIQ_OP_MODE_MANUAL |
| full_range | Ob der volle Wertebereich ausgegeben wird; Standardwert TRUE. Hinweis: Bei ISP30 darf dieses Attribut nur TRUE sein. Der begrenzte Wertebereich sollte über die CGC-Modul-API konfiguriert werden. |
| y_offset | Helligkeitsoffset, Bereich [0,63], Standardwert 0 |
| c_offset | Chromaoffset, Bereich [0,255], Standardwert 0 |
| coeff | 3x3-RGB-zu-YUV-Konvertierungsmatrix, Bereich [-2, 1.992], Standardwerte: [ 0.299, 0.587, 0.114, - 0.169, -0.331, 0.5, 0.5, -0.419, -0.081] |
9.10 Schärfung
9.10.1 Funktionsbeschreibung
Das Sharpen-Modul verbessert die Bildklarheit, indem es unter anderem die Kantenschärfung anpasst sowie Bilddetails und Texturen verstärkt.
9.10.2 Referenz der funktionsbezogenen APIs
9.10.2.1 rk_aiq_uapi2_setSharpness
【Beschreibung】
Schärfungsstufe einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setSharpness(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| level | Schärfungsstufe, Wertebereich [0,100], Standardwert 50 | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.10.2.2 rk_aiq_uapi2_getSharpness
【Beschreibung】
Schärfungsstufe abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getSharpness(const rk_aiq_sys_ctx_t* ctx, unsigned int*
level);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| level | Schärfungsstufe | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.10.3 Referenz der modulbezogenen APIs
9.10.3.1 rk_aiq_user_api2_asharpV4_SetAttrib
【Beschreibung】 Eigenschaften des Schärfungsalgorithmus einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_asharpV4_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_attrib_v4_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften der Rauschunterdrückung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_asharp_v4.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.10.3.2 rk_aiq_user_api2_asharpV4_GetAttrib
【Beschreibung】 Eigenschaften des Schärfungsalgorithmus abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_asharpV4_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_attrib_v4_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften der Rauschunterdrückung | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_asharp_v4.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.10.3.3 rk_aiq_user_api2_asharpV4_SetStrength
【Beschreibung】 Schärfungsstärke einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_asharpV4_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_strength_v4_t *pStrength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pStrength | Zeiger auf die Schärfungsstärkestruktur; der Prozentwert innerhalb der Struktur hat den Bereich 0.0-1.0 |
Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_asharp_v4.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.10.3.4 rk_aiq_user_api2_asharpV4_GetStrength
【Beschreibung】 Schärfungsstärke abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_asharpV4_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_strength_v4_t *pStrength);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| pStrength | Zeiger auf die Schärfungsstärkestruktur; der Prozentwert innerhalb der Struktur hat den Bereich 0.0-1.0 |
Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_asharp_v4.h, RkAiqHandleIntV3x.h
Bibliotheksdatei: librkaiq.so
9.10.4 Datentypen der modulbezogenen APIs
9.10.4.1 rk_aiq_sharp_attrib_v4_t
【Beschreibung】 Parameter des Schärfungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus siehe Abschnitt Überblick/API-Beschreibung |
| eMode | Eigenschaften des Schärfungsmoduls |
| stAuto | Parameter des automatischen Schärfungsmodus |
9.10.4.2 Asharp4_OPMode_t
【Beschreibung】
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ASHARP4_OP_MODE_INVALID | Ungültiger Modus des Schärfungsmoduls |
| ASHARP4_OP_MODE_AUTO | Automatischer Modus des Schärfungsmoduls |
| ASHARP4_OP_MODE_MANUAL | Algorithmuseinstellungen für den manuellen Modus des Schärfungsmoduls |
| ASHARP4_OP_MODE_REG_MANUAL | Registereinstellungen |
| ASHARP4_OP_MODE_MAX | Maximalwert der Schärfungsmodusaufzählung; ungültiger Modus |
9.10.4.3 Asharp_Auto_Attr_V4_t
【Beschreibung】 Automatischen Schärfungsmodus und die Algorithmuseigenschaftsparameter jeder ISO-Stufe definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stParams | Algorithmuseigenschaftsparameter des SHARP-Moduls für jede ISO-Stufe |
| stSelect | Vom Sharp-Modul berechneter Eigenschaftsparameter |
9.10.4.4 Asharp_Manual_Attr_V4_t
【Beschreibung】 Manuelle Eigenschaften des Schärfungsmoduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stSelect | Manuell gesetzte Sharp-Algorithmusparameter |
| stFix | Sharp-Registerwert |
9.10.4.5 RK_SHARP_Params_V4_t
【Beschreibung】 Manuelle Eigenschaften des Schärfungsmoduls definieren.
【Definition】
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;
【Felder】
| Parametername | Parametertyp | Kurzbeschreibung |
|---|---|---|
| Enable | Abstimmparameter | Aktivierungsschalter des Sharp-Moduls. 1: ein, 0: aus. |
| iso | Abstimmparameter | Verschiedene ISO-Stufen mit unterschiedlichen Abstimmparametern. Derzeit werden nur 13 Stufen unterstützt. |
| pbf_gain | Abstimmparameter | Multiplikator des Vorfilter-Sigma. Je größer der Wert, desto stärker die Filterung und desto weniger Rauschen und Details. Wertebereich [0.0, 2.0], Standardwert 1.0. |
| pbf_add | Abstimmparameter | Additiver Offset des Vorfilter-Sigma. Je größer der Wert, desto stärker die Filterung und desto weniger Rauschen und Details. Wertebereich [0, 1023], Standardwert 0. |
| pbf_ratio | Abstimmparameter | Vorfilter-Fusionsgewicht. Je größer der Wert, desto stärker die Filterung und desto weniger Rauschen und Details. Wertebereich [0.0, 1.0], Standardwert 0.5. |
| gaus_ratio | Abstimmparameter | Das Führungsbild der hochfrequenten bilateralen Filterung entsteht durch Fusion von Gauß-Filterergebnis und Originalbild. Je größer der Wert, desto größer das Führungsgewicht des gaußschen bilateralen Filters. Wertebereich [0.0, 1.0], Standardwert 0. |
| sharp_ratio | Abstimmparameter | Schärfungsstärke; größere Werte bewirken stärkere Schärfung. Wertebereich [0.0, 16], Standardwert 6. |
| bf_gain | Abstimmparameter | Multiplikator des Sigma der hochfrequenten bilateralen Filterung. Je größer der Wert, desto stärker die Filterung und desto weniger Rauschen und Details. Wertebereich [0.0, 2.0], Standardwert 1.0. |
| bf_add | Abstimmparameter | Additiver Sigma-Offset der hochfrequenten bilateralen Filterung. Größere Werte bewirken stärkere Filterung, weniger Rauschen und weniger Details. Wertebereich [0, 1023], Standardwert 0. |
| bf_add | Abstimmparameter | Fusionsgewicht der hochfrequenten bilateralen Filterung. Größere Werte bewirken stärkere Filterung, weniger Rauschen und weniger Details. Wertebereich [0.0, 1.0], Standardwert 0.5. |
| Parametername | Parametertyp | Kurzbeschreibung |
|---|---|---|
| luma_point / luma_sigma | Abstimmparameter | Verschiedenen Pixelhelligkeiten entsprechen unterschiedliche Rausch-SIGMA-Kurven. luma_point ist der Kurvenhelligkeitswert im Bereich [0, 1023]. luma_sigma ist die Rauschintensität im Bereich [0, 1023]. |
| luma_point / hf_clip | Abstimmparameter | Begrenzungsbereich der Hochfrequenzwerte bei unterschiedlichen Pixelhelligkeiten. Größere Werte erlauben eine höhere maximale Schärfungsstärke. Wertebereich [0, 1023], Standardwert 256. |
| luma_point / local_sharp_strength |
Abstimmparameter | Anteil bzw. Hochfrequenzüberlagerungsgewicht bei unterschiedlichen Pixelhelligkeiten. Je größer der Wert, desto mehr Hochfrequenzanteile dürfen überlagert werden und desto schärfer ist das Bild. Wertebereich [0, 1023], Standardwert 512. |
| prefilter_coeff | Abstimmparameter | Vorfilteroperatoren. |
| GaussianFilter_coeff | Abstimmparameter | Gauß-Filteroperatoren. |
| hfBilateralFilter_coeff | Abstimmparameter | Operatoren der hochfrequenten bilateralen Filterung. |
9.10.4.6 RK_SHARP_Params_V4_Select_t
【Beschreibung】 Algorithmuseigenschaften des manuellen Schärfungsmodus definieren.
【Definition】
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;
【Felder】
| Parametername | Parametertyp | Kurzbeschreibung |
|---|---|---|
| Enable | Abstimmparameter | Aktivierungsschalter des Sharp-Moduls. 1: ein, 0: aus. |
| iso | Abstimmparameter | Verschiedene ISO-Stufen mit unterschiedlichen Abstimmparametern. Derzeit werden nur 13 Stufen unterstützt. |
| pbf_gain | Abstimmparameter | Multiplikator des Vorfilter-Sigma. Je größer der Wert, desto stärker die Filterung und desto weniger Rauschen und Details. Wertebereich [0.0, 2.0], Standardwert 1.0. |
| pbf_add | Abstimmparameter | Additiver Offset des Vorfilter-Sigma. Je größer der Wert, desto stärker die Filterung und desto weniger Rauschen und Details. Wertebereich [0, 1023], Standardwert 0. |
| pbf_ratio | Abstimmparameter | Vorfilter-Fusionsgewicht. Je größer der Wert, desto stärker die Filterung und desto weniger Rauschen und Details. Wertebereich [0.0, 1.0], Standardwert 0.5. |
| gaus_ratio | Abstimmparameter | Das Führungsbild der hochfrequenten bilateralen Filterung entsteht durch Fusion von Gauß-Filterergebnis und Originalbild. Je größer der Wert, desto größer das Führungsgewicht des gaußschen bilateralen Filters. Wertebereich [0.0, 1.0], Standardwert 0. |
| sharp_ratio | Abstimmparameter | Schärfungsstärke; größere Werte bewirken stärkere Schärfung. Wertebereich [0.0, 16], Standardwert 6. |
| bf_gain | Abstimmparameter | Multiplikator des Sigma der hochfrequenten bilateralen Filterung. Je größer der Wert, desto stärker die Filterung und desto weniger Rauschen und Details. Wertebereich [0.0, 2.0], Standardwert 1.0. |
| bf_add | Abstimmparameter | Additiver Sigma-Offset der hochfrequenten bilateralen Filterung. Größere Werte bewirken stärkere Filterung, weniger Rauschen und weniger Details. Wertebereich [0, 1023], Standardwert 0. |
| bf_add | Abstimmparameter | Fusionsgewicht der hochfrequenten bilateralen Filterung. Größere Werte bewirken stärkere Filterung, weniger Rauschen und weniger Details. Wertebereich [0.0, 1.0], Standardwert 0.5. |
| Parametername | Parametertyp | Kurzbeschreibung |
|---|---|---|
| luma_point / luma_sigma | Abstimmparameter | Verschiedenen Pixelhelligkeiten entsprechen unterschiedliche Rausch-SIGMA-Kurven. luma_point ist der Kurvenhelligkeitswert im Bereich [0, 1023]. luma_sigma ist die Rauschintensität im Bereich [0, 1023]. |
| luma_point / hf_clip | Abstimmparameter | Begrenzungsbereich der Hochfrequenzwerte bei unterschiedlichen Pixelhelligkeiten. Größere Werte erlauben eine höhere maximale Schärfungsstärke. Wertebereich [0, 1023], Standardwert 256. |
| luma_point / local_sharp_strength |
Abstimmparameter | Anteil bzw. Hochfrequenzüberlagerungsgewicht bei unterschiedlichen Pixelhelligkeiten. Je größer der Wert, desto mehr Hochfrequenzanteile dürfen überlagert werden und desto schärfer ist das Bild. Wertebereich [0, 1023], Standardwert 512. |
| prefilter_coeff | Abstimmparameter | Vorfilteroperatoren. |
| GaussianFilter_coeff | Abstimmparameter | Gauß-Filteroperatoren. |
| hfBilateralFilter_coeff | Abstimmparameter | Operatoren der hochfrequenten bilateralen Filterung. |
9.10.4.7 RK_SHARP_Fix_V4_t
【Beschreibung】 Registerkonfiguration des manuellen Schärfungsmodus definieren.
【Definition】
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;
【Felder】
| Parametername | Parameterbeschreibung |
|---|---|
| sharp_clk_dis | clk-Gate-Einstellung des Sharp-Moduls; derzeit nicht unterstützt, Standardwert 0. |
| sharp_exgain_bypass | Ob das externe lokale Verstärkungsmodul umgangen wird; diese Einstellung wird derzeit nicht unterstützt, Standardwert 0. |
| sharp_center_mode | Ob die Schärfung den Bildmittelpunkt als Koordinatenursprung verwendet. Konfiguration derzeit nicht unterstützt, Standardwert 0. |
| sharp_bypass | Schärfungsmodul umgehen: 1 umgehen; 0 nicht umgehen |
| sharp_en | Schärfungsmodul aktivieren: 1 aktiviert; 0 deaktiviert |
| sharp_sharp_ratio | sharp_ratio: Schärfungsstärke, 0~15.9 |
| sharp_bf_ratio | Fusionsgewicht des bilateralen Filters, 0~1.0 |
| sharp_gaus_ratio | gaus_ratio: Gauß-Filter-Fusionsgewicht, Wertebereich [0.0, 1.0] |
| sharp_pbf_ratio | Fusionsgewicht der bilateralen Vorfilterung, Wertebereich [0.0, 1.0], Standardwert 0.5 |
| sharp_luma_dx7 | Abstand zwischen Punkt 6 und Punkt 7. Der tatsächliche Abstand beträgt 2^sw_sharp_luma_dx7. |
| sharp_luma_dx6 | Abstand zwischen Punkt 5 und Punkt 6. Der tatsächliche Abstand beträgt 2^sw_sharp_luma_dx6. |
| sharp_luma_dx5 | Abstand zwischen Punkt 4 und Punkt 5. Der tatsächliche Abstand beträgt 2^sw_sharp_luma_dx5. |
| sharp_luma_dx4 | Abstand zwischen Punkt 3 und Punkt 4. Der tatsächliche Abstand beträgt 2^sw_sharp_luma_dx4. |
| sharp_luma_dx3 | Abstand zwischen Punkt 2 und Punkt 3. Der tatsächliche Abstand beträgt 2^sw_sharp_luma_dx3. |
| sharp_luma_dx2 | Abstand zwischen Punkt 1 und Punkt 2. Der tatsächliche Abstand beträgt 2^sw_sharp_luma_dx2. |
| sharp_luma_dx1 | Abstand zwischen Punkt 0 und Punkt 1. Der tatsächliche Abstand beträgt 2^sw_sharp_luma_dx1. Hinweis: Der Gesamtabstand muss 1024 betragen. |
| sharp_pbf_sigma_inv | Kehrwert von Sharp-pbf-Sigma |
| sharp_bf_sigma_inv | Kehrwert von Sharp-bf-Sigma |
| sharp_pbf_coef | Bilateraler Vorfilterkern des Schärfungsmoduls |
| sharp_bf_coef | Bilaterale Filterkerne |
| sharp_gaus_coef | Gauß-Filterkern |
9.10.4.8 rk_aiq_sharp_strength_v4_t
【Beschreibung】 Konfigurationsstruktur der Rauschunterdrückungsstärke des Schärfungsmoduls definieren.
【Definition】
typedef struct rk_aiq_sharp_strength_v4_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_sharp_strength_v4_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Auswahl des synchronen/asynchronen Modus siehe Abschnitt Überblick/API-Beschreibung |
| percent | Schärfungsstärke, Wertebereich 0.0-1.0. |
9.11 Gamma
9.11.1 Funktionsbeschreibung
Das Gamma-Modul führt eine nichtlineare Umwandlung im Helligkeitsraum durch, um Bilder an das Ausgabegerät anzupassen. RK3588 unterstützt eine 49-Punkt-Gammakurve im logarithmischen Bereich mit folgenden Abszissen:
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 Referenz der funktionsbezogenen APIs
9.11.2.1 rk_aiq_uapi2_setGammaCoef
【Beschreibung】
Gammakurven mit GammaCoef und SlopeAtZero schnell einstellen. Die Kurve wird wie folgt erzeugt:
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);
}
【Syntax】
XCamReturn rk_aiq_uapi2_setGammaCoef(const rk_aiq_sys_ctx_t* ctx, float
GammaCoef, float SlopeAtZero);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| GammaCoef | Gammakoeffizient, Wertebereich [0,100], Standardwert 2.2, Genauigkeit 0.01 |
Eingabe |
| SlopeAtZero | Steigung im dunklen Bereich, Wertebereich [-0.05,0.05], Standardwert 0, Genauigkeit 0.001 |
Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beschreibung】
Die über die API gesetzte Gammakurve wird nicht szenenabhängig umgeschaltet. Ändert sich die Szene, stellen Sie die Kurve erneut über die API ein.
9.11.3 Datentypen der funktionsbezogenen APIs
9.11.4 Referenz der modulbezogenen APIs
9.11.4.1 rk_aiq_user_api2_agamma_SetAttrib
【Beschreibung】 Gamma-Softwareeigenschaften einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_agamma_v11_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const
rk_aiq_gamma_v11_attrib_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Struktur der Gamma-Softwareeigenschaften | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_agamma.h
Bibliotheksdatei: librkaiq.so
【Beschreibung】
Die über die API gesetzte Gammakurve wird nicht szenenabhängig umgeschaltet. Ändert sich die Szene, stellen Sie die Kurve erneut über die API ein.
9.11.4.2 rk_aiq_user_api2_agamma_GetAttrib
【Beschreibung】 Gamma-Softwareeigenschaften abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_agamma_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_gamma_attrib_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Struktur der Gamma-Softwareeigenschaften | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_agamma.h
Bibliotheksdatei: librkaiq.so
【Beschreibung】
9.11.5 Datentypen der modulbezogenen APIs
9.11.5.1 rk_aiq_gamma_op_mode_t
【Beschreibung】 Gamma-Betriebsart definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RK_AIQ_GAMMA_MODE_OFF | API ausgeschaltet |
| RK_AIQ_GAMMA_MODE_MANUAL | Manueller API-Modus |
| RK_AIQ_GAMMA_MODE_FAST | API-Schnellmodus |
9.11.5.2 Agamma_api_Fast_t
【Beschreibung】 Gamma-Eigenschaft im Schnellmodus definieren.
Gammakurven mit GammaBeef und SlopeAtZero schnell einstellen. Die Kurve wird wie folgt erzeugt (Schreibweise GammaBeef aus der Quelle):
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);
}
【Definition】
typedef struct Agamma_api_Fast_s {
bool en;
float GammaCoef;
float SlopeAtZero;
} Agamma_api_Fast_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| en | Funktionsschalter |
| GammaCoef | Gammakoeffizient, Wertebereich 0, 100, Standardwert 2.2, Genauigkeit 0.01 |
| SlopeAtZero | Steigung im dunklen Bereich: laut Quelle 0.05 und 0.05, Standardwert 0, Genauigkeit 0.001. Dies widerspricht dem zuvor angegebenen Bereich [-0.05,0.05]. |
9.11.5.3 GammaType_t
【Beschreibung】 Eigenschaft des X-Achsen-Abstandstyps der Gammakurve definieren.
【Definition】
typedef enum GammaType_e {
GAMMATYPE_LOG = 0,
GAMMATYPE_EQU = 1,
} GammaType_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| GAMMATYPE_LOG | Ungleichmäßige Abstände |
| GAMMATYPE_EQU | Gleichmäßige Abstände |
9.11.5.4 Agamma_api_manualV21_t
【Beschreibung】 Manuelle Gamma-Eigenschaft für RK356x definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Gamma_en | Funktionsschalter |
| Gamma_out_segnum | X-Achsen-Abstandstyp der manuellen Gammakurve, Standardwert GAMMATYPE_LOG |
| Gamma_out_offset | Korrekturkoeffizient der manuellen Gammakurve, Wertebereich [-2048, 2048], Standardwert 0, Genauigkeit 1. |
| Gamma_curve | Manuelle Gammakurve, Wertebereich [0,4095], Genauigkeit 1 |
9.11.5.5 Agamma_api_manualV30_t
【Beschreibung】 Manuelle Gamma-Eigenschaft für RK3588 definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Gamma_en | Funktionsschalter |
| Gamma_out_offset | Korrekturkoeffizient der manuellen Gammakurve, Wertebereich [-2048, 2048], Standardwert 0, Genauigkeit 1. |
| Gamma_curve | Manuelle Gammakurve, Wertebereich [0,4095], Genauigkeit 1 |
9.11.5.6 rk_aiq_gamma_attrV21_t
【Beschreibung】 Gamma-Eigenschaft für RK356x definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| mode | API-Modus |
| stManual | Manueller Gamma-Parameter |
| stFast | Schnellmodusparameter |
9.11.5.7 rk_aiq_gamma_attrV30_t
【Beschreibung】 Gamma-Eigenschaft für RK3588 definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| mode | API-Schema |
| stManual | Manueller Gamma-Parameter |
| stFast | Schnellmodusparameter |
9.11.5.8 rk_aiq_gamma_attr_t
【Beschreibung】 Gamma-Eigenschaft definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Zur Definition von rk_aiq_uapi_sync_t siehe Übersicht/API-Beschreibung |
| atrrV21 | Manuelle Gamma-Eigenschaft für den RK356x-Chip |
| atrrV30 | Manuelle Gamma-Eigenschaft für den RK3588-Chip |
9.12 CCM
9.12.1 Funktionsbeschreibung
Das CCM-Modul (Color Correction Matrix) führt Farbkorrektur auf Bildern durch.
9.12.2 Referenz der funktionsbezogenen APIs
9.12.2.1 rk_aiq_uapi2_setCCMMode
【Beschreibung】 CCM-Betriebsart einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setCCMMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Betriebsart; Wertebereich: {OP_AUTO, OP_MANUAL} |
Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Einstellen des manuellen/automatischen Modus siehe “sample_set_ccm_manual” / “sample_set_ccm_auto” in sample_accm_module.cpp.
9.12.2.2 rk_aiq_uapi2_getCCMMode
【Beschreibung】 CCM-Betriebsart abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getCCMMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Betriebsart; Wertebereich: {OP_AUTO, OP_MANUAL} |
Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Abrufen der Betriebsart siehe “sample_get_ccm_mode” in sample_accm_module.cpp.
9.12.2.3 rk_aiq_uapi2_setMCcCoef
【Beschreibung】 CCM-Matrix im manuellen Modus einstellen, einschließlich Farbkorrekturmatrix und R/G/B-Kanaloffset.
【Syntax】
XCamReturn rk_aiq_uapi2_setMCcCoef(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_ccm_matrix_t *mccm);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| mccm | CCM-Matrix im manuellen Modus einschließlich Farbkorrekturmatrix und R/G/B-Kanaloffset |
Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Einstellen einer manuellen CCM-Matrix siehe “sample_set_ccm_manual_matrix” in sample_accm_module.cpp.
9.12.2.4 rk_aiq_uapi2_getMCcCoef
【Beschreibung】 CCM-Matrix einschließlich Farbkorrekturmatrix und R/G/B-Kanaloffset abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getMCcCoef(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_ccm_matrix_t *mccm);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| mccm | CCM-Matrix einschließlich Farbkorrekturmatrix und R/G/B- Kanaloffset |
Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Abrufen der CCM-Matrix siehe “sample_get_ccm_manual_matrix” in sample_accm_module.cpp.
9.12.2.5 rk_aiq_uapi2_getACcmSat
【Beschreibung】 CCM-Sättigung im automatischen Modus abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getACcmSat(const rk_aiq_sys_ctx_t* ctx, float
*finalsat);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| finalsat | Sättigung; im manuellen Modus 0 | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zur CCM-Sättigung im automatischen Modus siehe “sample_get_accm_sat” in sample_accm_module.cpp.
9.12.2.6 rk_aiq_uapi2_getACcmMatrixName
【Beschreibung】 CCM-Matrixnamen im automatischen Modus abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getACcmMatrixName(const rk_aiq_sys_ctx_t* ctx, char
**ccm_name);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| ccm_name | CCM-Matrixname | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Abrufen der CCM-Sättigung im automatischen Modus siehe “sample_get_accm_matrix_name” in sample_accm_module.cpp (die Quelle schreibt hier Sättigung).
9.12.3 Datentypen der funktionsbezogenen APIs
9.12.3.1 opMode_t
【Beschreibung】 CCM-Betriebsart definieren.
【Definition】
typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUAL = 1,
OP_INVAL
} opMode_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| OP_AUTO | Automatikmodus |
| OP_MANUAL | Manueller Modus |
| OP_INVAL | Ungültiger Wert |
9.12.3.2 rk_aiq_ccm_matrix_t
【Beschreibung】 CCM-Matrix definieren.
【Definition】
typedef struct rk_aiq_ccm_matrix_s {
float ccMatrix[9];
float ccOffsets[3];
} rk_aiq_ccm_matrix_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ccMatrix | Farbkorrekturmatrix im manuellen Modus; Wertebereich [-8, 7.992] |
| ccOffsets | RGB-Komponentenoffset im manuellen Modus; Wertebereich [-4096, 4095] |
9.12.4 Referenz der modulbezogenen APIs
9.12.4.1 rk_aiq_user_api2_accm_v2_SetAttrib
【Beschreibung】 CCM-Eigenschaften einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_accm_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ccm_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaftsparameter von CCM | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_accm.h, rk_aiq_uapi_accm_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Einstellen der CCM-Eigenschaften siehe “sample_ccm_setCcmAttr” in sample_accm_module.cpp.
9.12.4.2 rk_aiq_user_api2_accm_GetAttrib
【Beschreibung】 CCM-Eigenschaften abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_accm_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ccm_attrib_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Parametereigenschaften von CCM | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_accm.h, rk_aiq_uapi_accm_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Abrufen der CCM-Eigenschaften siehe “sample_ccm_getCcmAttr” in sample_accm_module.cpp.
9.12.4.3 rk_aiq_user_api2_accm_QueryCcmInfo
【Beschreibung】 CCM-Informationen abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_accm_QueryCcmInfo(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ccm_querry_info_t *ccm_querry_info);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| ccm_querry_info | CCM-Abfrageinhalt | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_accm.h, rk_aiq_uapi_accm_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Abfragen von CCM-Informationen siehe “sample_query_ccm_info” in sample_accm_module.cpp.
9.12.5 Datentypen der modulbezogenen APIs
9.12.5.1 rk_aiq_ccm_op_mode_t
【Beschreibung】 CCM-Betriebsart definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RK_AIQ_CCM_MODE_INVALID | Ungültiger CCM-Modus |
| RK_AIQ_CCM_MODE_MANUAL | Manueller CCM-Modus |
| RK_AIQ_CCM_MODE_AUTO | Automatischer CCM-Modus |
9.12.5.2 rk_aiq_ccm_mccm_attrib_t
【Beschreibung】 Manuelle CCM-Eigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ccMatrix | Farbkorrekturmatrix; Wertebereich [-8, 7.992] |
| ccOffsets | RGB-Komponentenoffset; Wertebereich [-4096, 4095] |
| y_alpha_curve | Intensitätskonfiguration der Farbkorrekturstärke-Anpassungskurve in Abhängigkeit von der Pixelhelligkeit (12bit). Gültige Werte [0x0, 0x400]; 0x400 bedeutet einfache Intensität, 0x0 bedeutet keine Korrektur. |
| low_bound_pos_bit | Helligkeitsbereich des Knickpunkts der Pixelhelligkeits-Anpassungskurve (12bit): [0, 2^low_bound_pos_bit] und [4095-2^low_bound_pos_bit, 4095]. Gültige Werte [0,10]. |
9.12.5.3 rk_aiq_ccm_color_inhibition_t
【Beschreibung】 CCM-Farbunterdrückungsstufe definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sensorGain | Belichtungsverstärkungskomponente |
| level | Farbunterdrückungsstufe; Wertebereich [0,100]; Standardwert 0 |
9.12.5.4 rk_aiq_ccm_color_saturation_t
【Beschreibung】 Farbsättigungsstufe des automatischen CCM definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sensorGain | Belichtungsverstärkungskomponente |
| level | Farbsättigungsstufe; Wertebereich [0,100]; Standardwert 100 |
9.12.5.5 rk_aiq_ccm_accm_attrib_t
【Beschreibung】 Automatische CCM-Eigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| color_inhibition | CCM-Farbunterdrückungsstufe |
| color_saturation | CCM-Farbsättigungsstufe |
9.12.5.6 rk_aiq_ccm_attrib_t
【Beschreibung】 CCM-Eigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Synchrone/asynchrone Signale; Definition von rk_aiq_uapi_sync_t siehe Abschnitt Überblick/API-Beschreibung |
| byPass | Modulverarbeitung überspringen; true: CCM überspringen, false: CCM aktivieren |
| mode | Auswahl der Betriebsart; Wertebereich {RK_AIQ_CCM_MODE_MANUAL, RK_AIQ_CCM_MODE_AUTO} für manuellen bzw. automatischen Modus |
| stManual | Konfiguration der Eigenschaftsparameter im manuellen Modus |
| stAuto | Konfiguration der Eigenschaftsparameter im automatischen Modus |
| stTool | Parameterkonfiguration im Werkzeugmodus; keine Konfiguration erforderlich |
9.12.5.7 rk_aiq_ccm_querry_info_t
【Beschreibung】 CCM-Abfrageinformationen definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ccm_en | CCM aktiviert; true aktiviert, false deaktiviert |
| ccMatrix | Wirksame CCM-Korrekturmatrix; Wertebereich [-8,7.992] |
| ccOffsets | Wirksamer RGB-Komponentenoffset; Wertebereich [-4096,4095] |
| y_alpha_curve | Intensitätskonfiguration der Farbkorrekturstärke-Anpassungskurve in Abhängigkeit von der Pixelhelligkeit (12bit). Wertebereich [0x0, 0x400]. 0x400 bedeutet einfache Intensität, 0x0 bedeutet keine Korrektur. |
| low_bound_pos_bit | Helligkeitsbereich des Knickpunkts der Pixelhelligkeits-Anpassungskurve (12bit): [0, 2^low_bound_pos_bit] und [4095-2^low_bound_pos_bit, 4095]. Gültige Werte [0,10]. |
| color_inhibition_level | CCM-Farbunterdrückungsstufe (nur automatischer Modus) |
| color_saturation_level | CCM-Farbsättigungsstufe (nur automatischer Modus) |
| finalSat | Zur aktuellen Matrix gehörender Sättigungswert (nur automatischer Modus unterstützt) |
| ccmname1 | Name der Kalibriermatrix, die zur interpolierten Berechnung der aktuellen Matrix verwendet wird (nur automatischer Modus) |
| ccmname2 | Name der Kalibriermatrix, die zur interpolierten Berechnung der aktuellen Matrix verwendet wird (nur automatischer Modus) |
9.13 3DLUT
9.13.1 Funktionsbeschreibung
Das 3DLUT-Modul (3D-Lookup-Tabelle) führt eine Farbabbildung von Bildern im RGB-Raum durch.
9.13.2 Referenz der funktionsbezogenen APIs
9.13.2.1 rk_aiq_uapi2_setLut3dMode
【Beschreibung】 3DLUT-Betriebsart einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setLut3dMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Betriebsart; Wertebereich: {OP_AUTO, OP_MANUAL} |
Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Einstellen des manuellen/automatischen Modus siehe “sample_set_a3dlut_manual” / “sample_set_a3dlut_auto” in sample_a3dlut_module.cpp.
9.13.2.2 rk_aiq_uapi2_getLut3dMode
【Beschreibung】 3DLUT-Betriebsart abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getLut3dMode(const rk_aiq_sys_ctx_t* ctx, opMode_t
*mode);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| mode | Betriebsart | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Einstellen des manuellen/automatischen Modus siehe “sample_get_a3dlut_mode” in sample_a3dlut_module.cpp (die Quelle schreibt hier Einstellen).
9.13.2.3 rk_aiq_uapi2_setM3dLut
【Beschreibung】 Manuelle 3D-Lookup-Tabelle von 3DLUT einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setM3dLut(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_lut3d_table_t *mlut);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| mlut | 3D-Lookup-Tabelle | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Einstellen der manuellen 3D-Lookup-Tabelle von 3DLUT siehe “sample_set_a3dlut_manual_lut” in sample_a3dlut_module.cpp.
9.13.2.4 rk_aiq_uapi2_getM3dLut
【Beschreibung】 3D-Lookup-Tabelle von 3DLUT abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getM3dLut(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_lut3d_table_t *mlut);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| mlut | 3D-Lookup-Tabelle | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zu 3DLUT-3D-Lookup-Tabellen siehe “sample_get_a3dlut_lut” in sample_a3dlut_module.cpp.
9.13.2.5 rk_aiq_uapi2_getA3dLutStrth
【Beschreibung】 3DLUT-Anpassungsstärke abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getA3dLutStrth(const rk_aiq_sys_ctx_t* ctx, float alpha);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| alpha | 3DLUT-Modulationsstärke | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zur 3DLUT-Anpassungsstärke siehe “sample_get_a3dlut_strength” in sample_a3dlut_module.cpp.
9.13.2.6 rk_aiq_uapi2_getA3dLutName
【Beschreibung】 3DLUT-Tabellennamen im automatischen Modus abrufen.
【Syntax】
XCamReturn rk_aiq_uapi2_getA3dLutName(const rk_aiq_sys_ctx_t* ctx, char *name);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| name | 3DLUT-Tabellenname | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Abrufen des 3DLUT-Tabellennamens im automatischen Modus siehe “sample_get_a3dlut_lutname” in sample_a3dlut_module.cpp.
9.13.3 Datentypen der funktionsbezogenen APIs
9.13.3.1 opMode_t
【Beschreibung】 3DLUT-Betriebsart definieren.
【Definition】
typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUALl = 1,
OP_INVAL
} opMode_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| OP_AUTO | Automatikmodus |
| OP_MANUALl | Manueller Modus |
| OP_INVAL | Ungültiger Wert |
9.13.3.2 rk_aiq_lut3d_table_t
【Beschreibung】 3D-Lookup-Tabelle von 3DLUT definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| look_up_table_r | R-Kanal-Lookup-Tabelle im manuellen Modus; Wertebereich [0x0, 0x3ff] |
| look_up_table_g | G-Kanal-Lookup-Tabelle im manuellen Modus; Wertebereich [0x0, 0xfff] |
| look_up_table_b | B-Kanal-Lookup-Tabelle im manuellen Modus; Wertebereich [0x0, 0x3ff] |
9.13.4 Referenz der modulbezogenen APIs
9.13.4.1 rk_aiq_user_api2_a3dlut_SetAttrib
【Beschreibung】 3DLUT-Eigenschaft einstellen.
【Syntax】
XCamReturn rk_aiq_user_api2_a3dlut_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lut3d_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | 3DLUT-Parametereigenschaften | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_a3dlut.h, rk_aiq_uapi_a3dlut_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Einstellen der 3DLUT-Eigenschaft siehe “sample_3dlut_set3dlutAttr” in sample_a3dlut_module.cpp.
9.13.4.2 rk_aiq_user_api2_a3dlut_GetAttrib
【Beschreibung】 3DLUT-Eigenschaft abrufen.
【Syntax】
XCamReturn
rk_aiq_user_api2_a3dlut_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lut3d_attrib_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | 3DLUT-Parametereigenschaften | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_a3dlut.h, rk_aiq_uapi_a3dlut_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zum Abrufen von 3DLUT-Eigenschaften siehe “sample_3dlut_get3dlutAttr” und weitere Beispiele in sample_a3dlut_module.cpp.
9.13.4.3 rk_aiq_user_api2_a3dlut_Query3dlutInfo
【Beschreibung】 3DLUT-Informationen abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_a3dlut_Query3dlutInfo(const RkAiqAlgoContext *ctx,
rk_aiq_lut3d_querry_info_t *lut3d_querry_info );
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| lut3d_querry_info | 3DLUT-Abfrageinhalt | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdateien: rk_aiq_user_api2_a3dlut.h, rk_aiq_uapi_a3dlut_int.h
Bibliotheksdatei: librkaiq.so
【Beispiel】
Zu 3DLUT-Informationen siehe “sample_query_a3dlut_info” in sample_a3dlut_module.cpp.
9.13.5 Datentypen der modulbezogenen APIs
9.13.5.1 rk_aiq_lut3d_op_mode_t
【Beschreibung】 3DLUT-Betriebsart definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RK_AIQ_LUT3D_MODE_INVALID | Ungültiger 3DLUT-Modus |
| RK_AIQ_LUT3D_MODE_MANUAL | Manueller 3DLUT-Modus |
| RK_AIQ_LUT3D_MODE_AUTO | Automatischer 3DLUT-Modus |
9.13.5.2 rk_aiq_lut3d_mlut3d_attrib_t
【Beschreibung】 Manuelle 3DLUT-Eigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| look_up_table_r | R-Kanal-Lookup-Tabelle im manuellen Modus; Wertebereich [0x0, 0x3ff] |
| look_up_table_g | G-Kanal-Lookup-Tabelle im manuellen Modus; Wertebereich [0x0, 0xfff] |
| look_up_table_b | B-Kanal-Lookup-Tabelle im manuellen Modus; Wertebereich [0x0, 0x3ff] |
9.13.5.3 rk_aiq_lut3d_attrib_t
【Beschreibung】 3DLUT-Eigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Synchrone/asynchrone Signale; Definition von rk_aiq_uapi_sync_t siehe Abschnitt Überblick/API-Beschreibung |
| byPass | Modulverarbeitung überspringen; true: 3DLUT überspringen, false: 3DLUT aktivieren |
| mode | Auswahl der Betriebsart; Wertebereich {RK_AIQ_LUT3D_MODE_MANUAL, RK_AIQ_LUT3D_MODE_AUTO} für manuellen bzw. automatischen Modus |
| stManual | Konfiguration der Eigenschaftsparameter im manuellen Modus |
9.13.5.4 rk_aiq_lut3d_querry_info_t
【Beschreibung】 3DLUT-Abfrageinformationen definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| lut3d_en | 3DLUT aktiviert; true aktiviert, false deaktiviert |
| alpha | 3DLUT-Regelstärke; Wertebereich [0, 1.0], größere Werte bedeuten höhere Stärke; 1.0 |
| name | 3DLUT-Tabellenname; nur automatischer Modus unterstützt |
| look_up_table_r | R-Kanal-Lookup-Tabelle; Wertebereich [0x0, 0x3ff] |
| look_up_table_g | G-Kanal-Lookup-Tabelle; Wertebereich [0x0, 0xfff] |
| look_up_table_b | B-Kanal-Lookup-Tabelle; Wertebereich [0x0, 0x3ff] |
9.14 LDCH
9.14.1 Funktionsbeschreibung
LDCH korrigiert verzerrte Bilder. Unterstützt wird ausschließlich die Korrektur in horizontaler Richtung.
9.14.2 Referenz der Funktions-APIs
9.14.2.1 rk_aiq_uapi_setLdchEn
【Beschreibung】 Horizontale Verzeichnungskorrektur ein- oder ausschalten.
【Syntax】
XCamReturn rk_aiq_uapi2_setLdchEn(const rk_aiq_sys_ctx_t* ctx, bool en);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| en | Korrektur ein/aus | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.14.2.2 rk_aiq_uapi2_setLdchCorrectLevel
【Beschreibung】 Stärke der horizontalen Verzeichnungskorrektur einstellen.
【Syntax】
XCamReturn rk_aiq_uapi2_setLdchCorrectLevel(const rk_aiq_sys_ctx_t* ctx, int
correctLevel);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| correctLevel | Korrekturstärke, Wertebereich [0~255] | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_imgproc.h
Bibliotheksdatei: librkaiq.so
9.14.3 Referenz der Modul-APIs
9.14.3.1 rk_aiq_user_api2_aldch_SetAttrib
【Beschreibung】 FEC-Eigenschaft einstellen. (Die Vorlage bezeichnet die LDCH-Eigenschaft hier als FEC.)
【Syntax】
XCamReturn
rk_aiq_user_api2_aldch_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ldch_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | LDCH-Parameterattribute | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_aldch.h
Bibliotheksdatei: librkaiq.so
9.14.3.2 rk_aiq_user_api2_aldch_GetAttrib
【Beschreibung】 FEC-Eigenschaft abfragen. (Bezeichnung FEC aus der Vorlage beibehalten.)
【Syntax】
XCamReturn
rk_aiq_user_api2_aldch_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ldch_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | LDCH-Parameterattribute | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_aldch.h
Bibliotheksdatei: librkaiq.so
9.14.4 Datentypen der Modul-API
9.14.4.1 rk_aiq_ldch_attrib_t
【Beschreibung】 LDCH-Attributkonfiguration.
【Definition】
typedef struct rk_aiq_ldch_cfg_s {
rk_aiq_uapi_sync_t sync;
unsigned int en;
int correct_level;
} rk_aiq_ldch_cfg_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Synchrone/asynchrone Schnittstellenfunktion; zu rk_aiq_uapi_sync_t siehe die Übersicht |
| en | LDCH aktivieren/deaktivieren |
| correct_level | LDCH-Korrekturstärke einstellen, Wertebereich [0~255] |
9.15 DeBayer
9.15.1 Funktionsbeschreibung
DeBayer interpoliert ein CFA-Bild zu einem RGB-Bild mit vollständigen Farbwerten für jedes Pixel.
Unterstützte Bayer-Rohdatenformate sind RGGB/BGGR/GRBG/gbrg. Andere Formate wie CCCB und RGB-IR werden derzeit nicht unterstützt.
9.15.2 Referenz der Modul-APIs
9.15.2.1 rk_aiq_user_api_adebayer_SetAttrib
【Beschreibung】 Demosaik-Eigenschaften einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_adebayer_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
adebayer_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Demosaik-Eigenschaften | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_adebayer.h
Bibliotheksdatei: librkaiq.so
9.15.2.2 rk_aiq_user_api_adebayer_GetAttrib
【Beschreibung】 Demosaik-Eigenschaften abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_adebayer_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
adebayer_attrib_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Demosaik-Eigenschaften | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_uapi2_adebayer_int.h
Bibliotheksdatei: librkaiq.so
9.15.3 Datentypen der Modul-API
9.15.3.1 rk_aiq_debayer_op_mode_t
【Beschreibung】 Betriebsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RK_AIQ_DEBAYER_MODE_INVALID | Ungültiger DeBayer-Modus |
| RK_AIQ_DEBAYER_MODE_MANUAL | Manueller DeBayer-Modus |
| RK_AIQ_DEBAYER_MODE_AUTO | Automatischer DeBayer-Modus |
9.15.3.2 adebayer_attrib_manual_t
【Beschreibung】 Konfigurationseigenschaften im manuellen Modus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| filter1 | Filterkoeffizienten für den niederfrequenten Gradienten, Wertebereich [-8,7] |
| filter2 | Filterkoeffizienten für den hochfrequenten Gradienten, Wertebereich [-8,7] |
| gain_offset | Gradientenoffset bei der Berechnung der Schärfungsgewichtung für die G-Interpolation, Wertebereich [0,15] |
| sharp_strength | Stärke der G-Interpolation; größere Werte verstärken den Effekt, Wertebereich [0,4] |
| hf_offset | Richtungssteuerung: kleinere Werte erzeugen eher Artefakte in gleichmäßigen Bereichen, größere eher Aliasing an Kanten; Wertebereich [0,4095] |
| offset | Begrenzungsbereich der G-Interpolation; größere Werte erweitern den Bereich, Wertebereich [0,65535] |
| clip_en | Begrenzung der G-Interpolation: 0 aus, 1 ein |
| filter_g_en | Entfernung verstreuter G-Pixel: 0 aus, 1 ein |
| filter_c_en | Falschfarbenunterdrückung: 0 aus, 1 ein |
| thed0 | Größere Werte verringern die Wahrscheinlichkeit einer hochfrequenten Gewichtung, Wertebereich [0,16] |
| thed1 | Auswahl zwischen hohen und niedrigen Frequenzen; größere Werte verringern die Wahrscheinlichkeit einer niederfrequenten Auswahl, Wertebereich [0,16] |
| dist_scale | Größere Werte verringern die Wahrscheinlichkeit einer hochfrequenten Auswahl, Wertebereich [0,16] |
| cnr_strength | Stärke der Farbrauschunterdrückung; größere Werte verstärken die Unterdrückung, Wertebereich [0,9] |
| shift_num | Kleinere Werte vergrößern den Chroma-Begrenzungsbereich, Wertebereich [0,4] |
9.15.3.3 adebayer_attrib_auto_t
【Beschreibung】 Konfigurationseigenschaften im automatischen Modus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| enhance_strength[9] | Detail- und Texturverstärkung nach ISO. Die Indizes 0–8 entsprechen 50,100,200,400,800,1600,3200,6400,12800. Größere Werte erhöhen die Detailschärfe, aber auch Artefakte; Wertebereich [0~7] |
| low_freq_thresh | Größere Werte verringern die Wahrscheinlichkeit einer niederfrequenten Auswahl, Wertebereich [0~15] |
| high_freq_thresh | Größere Werte verringern die Wahrscheinlichkeit einer hochfrequenten Auswahl, Wertebereich [0~15] |
9.15.3.4 adebayer_attrib_t
【Beschreibung】 Konfigurationsattribute definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Synchrone/asynchrone Schnittstellenfunktion; zu rk_aiq_uapi_sync_t siehe die Übersicht |
| enable | 0: Bypass; 1: aktivieren |
| mode | DeBayer-Betriebsmodus |
| stManual | Manuelle DeBayer-Konfiguration |
| stAuto | Automatische DeBayer-Konfiguration |
9.16 DPCC
9.16.1 Funktionsbeschreibung
Defekte Pixel in Bildern erkennen und entfernen. Einzelheiten enthält die „Funktionsbeschreibung“ in Abschnitt 4.6 „DPCC“ des Dokuments Rockchip_Tuning_Guide_ISP30.
9.16.2 Referenz der Modul-APIs
9.16.2.1 rk_aiq_user_api2_adpcc_SetAttrib
【Beschreibung】 DPCC-Softwareeigenschaften einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_adpcc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_dpcc_attrib_V20_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Struktur der DPCC-Softwareeigenschaften | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_adpcc.h
Bibliotheksdatei: librkaiq.so
【Beschreibung】
9.16.2.2 rk_aiq_user_api2_adpcc_GetAttrib
【Beschreibung】 DPCC-Softwareeigenschaften abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_adpcc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_dpcc_attrib_V20_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Struktur der DPCC-Softwareeigenschaften | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_adpcc.h
Bibliotheksdatei: librkaiq.so
【Beschreibung】
9.16.3 Datentypen
9.16.3.1 rk_aiq_dpcc_attrib_V20_t
【Beschreibung】 Attribute zur Korrektur defekter Pixel definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| eMode | DPCC-Betriebsmodus definieren; Einzelheiten siehe AdpccOPMode_t |
| stAuto | Parametereinstellung für den automatischen Modus |
| stManual | Parametereinstellung für den manuellen Modus |
| sync | Synchrone/asynchrone Schnittstellenfunktion; zur Definition von rk_aiq_uapi_sync_t siehe Übersicht/API-Beschreibung |
9.16.3.2 AdpccOPMode_t
【Beschreibung】 DPCC-Betriebsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ADPCC_OP_MODE_INVALID | Ungültiger API-Modus |
| ADPCC_OP_MODE_AUTO | Automatischer API-Modus |
| ADPCC_OP_MODE_MANUAL | Manueller API-Modus |
| ADPCC_OP_MODE_TOOL | API-Werkzeugmodus |
| ADPCC_OP_MODE_MAX |
9.16.3.3 Adpcc_basic_params_select_t
【Beschreibung】 Eigenschaften der DPCC-Basisparameter definieren.
【Definition】
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
【Beschreibung】 Eigenschaften der DPCC-Basisparameter definieren.
【Definition】
typedef struct Adpcc_basic_params_s
{
Adpcc_basic_params_select_t arBasic[DPCC_MAX_ISO_LEVEL];
} Adpcc_basic_params_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| arBasic | DPCC-Basisparameter |
9.16.3.5 Adpcc_bpt_params_t
【Beschreibung】 Automatische DPCC-Eigenschaften definieren.
【Definition】
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
【Beschreibung】
【Definition】
typedef struct dpcc_pdaf_point_s
{
unsigned char y;
unsigned char x;
} dpcc_pdaf_point_t;
Das Modul ist noch nicht implementiert.
9.16.3.7 Adpcc_pdaf_params_t
【Beschreibung】 PDAF-Moduseigenschaften im automatischen Modus definieren.
【Definition】
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;
Das Modul ist noch nicht implementiert.
9.16.3.8 CalibDb_Dpcc_Fast_Mode_t
【Beschreibung】 Eigenschaften des Schnellmodus im automatischen Modus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Fast_mode_enable | Fast_mode ein/aus: 0 aus, 1 ein |
| ISO | ISO-Wert der Szene |
| fast_mode_single_en | Korrektur einzelner defekter Pixel: 0 aus, 1 ein |
| fast_mode_single_level | Stärke der Korrektur einzelner defekter Pixel, Wertebereich [0, 10] |
| fast_mode_double_en | Korrektur zweier defekter Pixel: 0 aus, 1 ein |
| fast_mode_double_level | Stärke der Korrektur zweier defekter Pixel, Wertebereich [0, 10] |
| fast_mode_triple_en | Korrektur mehrerer defekter Pixel: 0 aus, 1 ein |
| fast_mode_triple_level | Stärke der Korrektur mehrerer defekter Pixel, Wertebereich [0, 10] |
9.16.3.9 CalibDb_Dpcc_Sensor_t
【Beschreibung】 Eigenschaften des Schnellmodus im automatischen Modus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| en | Sensor-DPCC ein/aus: 0 aus, 1 ein |
| max_level | Maximale Stärke der Korrektur defekter Pixel |
| iso | ISO-Wert der Szene |
| level_single | Stärke der Korrektur einzelner defekter Pixel |
| level_multiple | Stärke der Korrektur mehrerer defekter Pixel |
9.16.3.10 Adpcc_bpt_params_select_t
【Beschreibung】 Im automatischen Modus ausgewählte Schnellmodus-Eigenschaften definieren.
【Definition】
typedef Adpcc_bpt_params_t Adpcc_bpt_params_select_t;
9.16.3.11 Adpcc_pdaf_params_select_t
【Beschreibung】 Im automatischen Modus ausgewählte PDAF-Moduseigenschaften definieren.
【Definition】
typedef Adpcc_pdaf_params_t Adpcc_pdaf_params_select_t
9.16.3.12 Adpcc_Auto_Attr_t
【Beschreibung】 Automatische DPCC-Eigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| stBasicParams | Basisparameter im automatischen Modus |
| stBptParams | Parameter für defekte Pixel im automatischen Modus |
| stPdafParams | PDAF-Modusparameter im automatischen Modus |
| stFastMode | Schnellmodusparameter im automatischen Modus |
| stSensorDpcc | Parameter der Sensorfunktion für defekte Pixel im automatischen Modus |
| stBasicSelect | Im automatischen Modus ausgewählte Basisparameter |
| stBptSelect | Im automatischen Modus ausgewählte Parameter für defekte Pixel |
| stPdafSelect | Im automatischen Modus ausgewählte PDAF-Modusparameter |
9.16.3.13 Adpcc_fast_mode_attr_t
【Beschreibung】 Eigenschaften des Schnellmodus im manuellen Modus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| Fast_mode_en | Fast_mode ein/aus |
| fast_mode_single_en | Korrektur einzelner defekter Pixel ein/aus |
| fast_mode_single_level | Stärke der Korrektur einzelner defekter Pixel, Wertebereich [0, 10] |
| fast_mode_double_en | Korrektur zweier defekter Pixel ein/aus |
| fast_mode_double_level | Stärke der Korrektur zweier defekter Pixel, Wertebereich [0, 10] |
| fast_mode_triple_en | Korrektur mehrerer defekter Pixel ein/aus |
| fast_mode_triple_level | Stärke der Korrektur mehrerer defekter Pixel, Wertebereich [0, 10] |
9.16.3.14 Adpcc_sensor_dpcc_attr_t
【Beschreibung】 Eigenschaften der Sensorfunktion für defekte Pixel im manuellen Modus definieren.
【Definition】
typedef struct Adpcc_sensor_dpcc_attr_s
{
bool en;
int max_level;
int single_level;
int double_level;
} Adpcc_sensor_dpcc_attr_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| en | Sensor-DPCC ein/aus |
| max_level | Maximale Stärke der Korrektur defekter Pixel |
| single_level | Stärke der Korrektur einzelner defekter Pixel |
| double_level | Stärke der Korrektur mehrerer defekter Pixel |
9.16.3.15 Adpcc_Manual_Attr_t
【Beschreibung】 Manuelle DPCC-Eigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| enable | DPCC im manuellen Modus ein/aus |
| stOnfly | Parameter für die dynamische Erkennung und Korrektur defekter Pixel des ISP-DPCC-Moduls im manuellen Modus |
| stBptParams | Parameter für die statische Korrektur defekter Pixel des ISP-DPCC-Moduls im manuellen Modus |
| stPdafParams | Parameter der PDAF-SPC-Funktion des ISP-DPCC-Moduls im manuellen Modus |
| stSensorDpcc | Parameter der Korrektur defekter Pixel des sensorseitigen DPCC-Moduls im manuellen Modus |
9.16.3.16 Adpcc_onfly_cfg_t
【Beschreibung】 Manuelle DPCC-Basisparameter definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| mode | Schnellmodus oder Expertenmodus |
| fastmode | Schnellmodus-Parametereinstellungen im manuellen Modus |
| expert_mode | Parametereinstellungen des Expertenmodus |
9.16.3.17 Adpcc_onfly_mode_t
【Beschreibung】 Manuelle DPCC-Basisparameter definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ADPCC_ONFLY_MODE_FAST | Schnellmodus |
| ADPCC_ONFLY_MODE_EXPERT | Expertenmodus |
| ADPCC_ONFLY_MODE_MAX | Ungültige Parametereinstellung |
9.16.3.18 CalibDb_Dpcc_Pdaf_t
【Beschreibung】 Attributparameter der PDAF-SPC-Werkzeugfunktion definieren.
【Definition】
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
【Beschreibung】 Eigenschaften des RK-Algorithmus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| rb_enable | Erkennung defekter Pixel im roten und blauen Kanal ein/aus |
| g_enable | Erkennung defekter Pixel im grünen Kanal ein/aus |
| rb_sw_mindis | Schwellenwert 1 für defekte Pixel im roten und blauen Kanal |
| g_sw_mindis | Schwellenwert 1 für defekte Pixel im grünen Kanal |
| sw_dis_scale_min | Schwellenwert 2 für defekte Pixel |
| sw_dis_scale_max | Schwellenwert 3 für defekte Pixel |
9.16.3.20 CalibDb_Dpcc_set_LC_t
【Beschreibung】 Eigenschaften des LC-Algorithmus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| rb_enable | Erkennung defekter Pixel im roten und blauen Kanal ein/aus |
| g_enable | Erkennung defekter Pixel im grünen Kanal ein/aus |
| rb_line_thr | Schwellenwert 1 für defekte Pixel im roten und blauen Kanal |
| g_line_thr | Schwellenwert 1 für defekte Pixel im grünen Kanal |
| rb_line_mad_fac | Schwellenwert 2 für defekte Pixel im roten und blauen Kanal |
| g_line_mad_fac | Schwellenwert 2 für defekte Pixel im grünen Kanal |
9.16.3.21 CalibDb_Dpcc_set_PG_t
【Beschreibung】 Eigenschaften des PG-Algorithmus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| rb_enable | Erkennung defekter Pixel im roten und blauen Kanal ein/aus |
| g_enable | Erkennung defekter Pixel im grünen Kanal ein/aus |
| rb_pg_fac | Schwellenwerte für defekte Pixel im roten und blauen Kanal |
| g_pg_fac | Schwellenwert für defekte Pixel im grünen Kanal |
9.16.3.22 CalibDb_Dpcc_set_RND_t
【Beschreibung】 Eigenschaften des RND-Algorithmus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| rb_enable | Erkennung defekter Pixel im roten und blauen Kanal ein/aus |
| g_enable | Erkennung defekter Pixel im grünen Kanal ein/aus |
| rb_rnd_thr | Schwellenwert 1 für defekte Pixel im roten und blauen Kanal |
| g_rnd_thr | Schwellenwert 1 für defekte Pixel im grünen Kanal |
| rb_rnd_offs | Schwellenwert 2 für defekte Pixel im roten und blauen Kanal |
| g_rnd_offs | Schwellenwert 2 für defekte Pixel im grünen Kanal |
9.16.3.23 CalibDb_Dpcc_set_RG_t
【Beschreibung】 Eigenschaften des RK-Algorithmus definieren. (Die Vorlage nennt hier RK trotz des Typnamens RG.)
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| rb_enable | Erkennung defekter Pixel im roten und blauen Kanal ein/aus |
| g_enable | Erkennung defekter Pixel im grünen Kanal ein/aus |
| rb_rg_fac | Schwellenwerte für defekte Pixel im roten und blauen Kanal |
| g_rg_fac | Schwellenwert für defekte Pixel im grünen Kanal |
9.16.3.24 CalibDb_Dpcc_set_RO_t
【Beschreibung】 Eigenschaften des RO-Algorithmus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| rb_enable | Erkennung defekter Pixel im roten und blauen Kanal ein/aus |
| g_enable | Erkennung defekter Pixel im grünen Kanal ein/aus |
| rb_ro_lim | Schwellenwerte für defekte Pixel im roten und blauen Kanal |
| g_ro_lim | Schwellenwert für defekte Pixel im grünen Kanal |
9.16.3.25 CalibDb_Dpcc_set_t
【Beschreibung】 Eigenschaften der Erkennungsbedingungen für defekte Pixel definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| rk | RK-Algorithmus |
| lc | LC-Algorithmus |
| pg | PG-Algorithmus |
| rnd | RND-Algorithmus |
| rg | RG-Algorithmus |
| ro | RO-Algorithmus |
9.16.3.26 CalibDb_Dpcc_Expert_Mode_t
【Beschreibung】 Eigenschaften des Werkzeug-Expertenmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| iso | ISO-Wert der Szene |
| stage1_Enable | Standardwert 1 |
| grayscale_mode | Schwarzweißmodus: 0 aus, 1 ein |
| rk_out_sel | RK-Erkennungsmodus für defekte Pixel: 0 Modus 1, 1 Modus 2, 2 Modus 3 |
| dpcc_out_sel | Korrekturmodus für defekte Pixel: 0 Median, 1 RK-Modus |
| stage1_rb_3x3 | Standardwert: 0 |
| stage1_g_3x3 | Standardwert: 0 |
| stage1_inc_rb_center | Standardwert 1 |
| stage1_inc_g_center | Standardwert 1 |
| stage1_use_fix_set | Integrierte Erkennungsbedingung für defekte Pixel: 0 aus, 1 ein |
| stage1_use_set3 | Dritte Erkennungsbedingung für defekte Pixel in set_cell: 0 aus, 1 ein |
| stage1_use_set2 | Zweite Erkennungsbedingung für defekte Pixel in set_cell: 0 aus, 1 ein |
| stage1_use_set1 | Erste Erkennungsbedingung für defekte Pixel in set_cell: 0 aus, 1 ein |
9.16.3.27 CalibDb_Dpcc_t
【Beschreibung】 DPCC-Werkzeugeigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| enable | Ein-/Ausschaltfunktion |
| version | Version |
| fast | Schnellmodus |
| expert | Expertenmodus |
| pdaf | Erkennungsbedingung für defekte Pixel im PADF-SPC-Funktionsmodus |
| sensor_dpcc | Korrekturparameter für defekte Pixel des sensorseitigen DPCC-Moduls |
9.16.3.28 rk_aiq_dpcc_attrib_t
【Beschreibung】 DPCC-Eigenschaften definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| eMode | API-Modus |
| stAuto | Automatischer DPCC-Modus |
| stManual | Manueller DPCC-Modus |
| stTool | DPCC-Werkzeugmodus |
9.17 LSC
9.17.1 Funktionsbeschreibung
Lens Shading Correction gleicht Randabschattungen aus, die aufgrund der optischen Eigenschaften und der ungleichmäßigen Lichtbrechung des Objektivs entstehen.
9.17.2 Referenz der Modul-APIs
9.17.2.1 rk_aiq_user_api2_alsc_SetAttrib
【Beschreibung】 Eigenschaften der Objektivabschattungskorrektur einstellen.
【Syntax】
XCamReturn
rk_aiq_user_api2_alsc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lsc_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaften der Objektivabschattungskorrektur | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_alsc.h
Bibliotheksdatei: librkaiq.so
9.17.2.2 rk_aiq_user_api2_alsc_GetAttrib
【Beschreibung】 Eigenschaften der Objektivabschattungskorrektur abfragen.
【Syntax】
XCamReturn
rk_aiq_user_api2_adebayer_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lsc_attrib_t *attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaften der Objektivabschattungskorrektur | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_alsc.h
Bibliotheksdatei: librkaiq.so
9.17.3 Datentypen
9.17.3.1 rk_aiq_lsc_attrib_t
【Beschreibung】 ISP-Eigenschaften der Objektivabschattungskorrektur definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Synchrone/asynchrone Schnittstellenfunktion; zur Definition von rk_aiq_uapi_sync_t siehe Abschnitt Übersicht/API-Beschreibung |
| bypass | LSC-Modul aktivieren: 1 aus 0 aktivieren |
| mode | Moduseinstellungen |
| stManual | Parametereinstellungen im manuellen Modus |
9.17.3.2 rk_aiq_lsc_op_mode_t
【Beschreibung】 ISP-Betriebsmodus der Objektivabschattungskorrektur definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RK_AIQ_LSC_MODE_INVALID | Ungültiger Modus |
| RK_AIQ_LSC_MODE_MANUAL | Manueller Modus |
| RK_AIQ_LSC_MODE_AUTO | Automatischer Modus |
9.17.3.3 rk_aiq_lsc_table_t
【Beschreibung】 ISP-Tabelle der Objektivabschattungskorrektur definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| r_data_tbl | Korrekturtabelle der R-Komponente Anzahl der Elemente [17x17] Wertebereich [1~7.99] Obere 3 Bit Ganzzahl, untere 8 Bit Nachkommastellen |
| gr_data_tbl | Korrekturtabelle der GR-Komponente Anzahl der Elemente [17x17] Wertebereich [1~7.99] Obere 3 Bit Ganzzahl, untere 8 Bit Nachkommastellen |
| gb_data_tbl | Korrekturtabelle der GB-Komponente Anzahl der Elemente [17x17] Wertebereich [1~7.99] Obere 3 Bit Ganzzahl, untere 8 Bit Nachkommastellen |
| b_data_tbl | Korrekturtabelle der B-Komponente Anzahl der Elemente [17x17] Wertebereich [1~7.99] Obere 3 Bit Ganzzahl, untere 8 Bit Nachkommastellen |
9.18 GIC
9.18.1 Funktionsbeschreibung
Das GIC-Modul korrigiert das Ungleichgewicht zwischen den Kanälen Gr und Gb und verbessert dadurch die Bildqualität bestimmter Szenen.
9.18.2 Referenz der Modul-APIs
9.18.2.1 rk_aiq_user_api2_agic_v2_SetAttrib
【Beschreibung】 GIC-Softwareeigenschaften einstellen.
【Syntax】
XCamReturn rk_aiq_user_api2_agic_v2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
const rkaiq_gic_v2_api_attr_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Struktur der GIC-Softwareeigenschaften | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_agic.h
Bibliotheksdatei: librkaiq.so
【Beschreibung】
Keine.
9.18.2.2 rk_aiq_user_api2_agic_v2_GetAttrib
【Beschreibung】 Gamma-Softwareeigenschaften abfragen. (Die Vorlage nennt hier Gamma, obwohl die API zum GIC-Modul gehört.)
【Syntax】
XCamReturn rk_aiq_user_api2_agic_v2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rkaiq_gic_v2_api_attr_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Struktur der GIC-Softwareeigenschaften | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_agic.h
Bibliotheksdatei: librkaiq.so
【Beschreibung】
9.18.3 Datentypen der Modul-API
9.18.3.1 rkaiq_gic_api_op_mode_t
【Beschreibung】 GIC-Betriebsmodus definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| RKAIQ_GIC_API_OPMODE_OFF | GIC ausgeschaltet |
| RKAIQ_GIC_API_OPMODE_AUTO | Manueller API-Modus (so in der Vorlage trotz AUTO) |
| RKAIQ_GIC_API_OPMODE_MANUAL | Manueller Modus |
9.18.3.2 rkaiq_gic_v2_param_selected_t
【Beschreibung】 Automatische/manuelle Eigenschaften für RK3588 definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| iso | ISO-Wert der Szene |
| bypass | Reserviert, nicht verwendet |
| gr_ratio | Reserviert, nicht verwendet |
| min_busy_thre | Erkennungsfähigkeit für strukturreiche Bereiche, Wertebereich [0, 1023], Standardwert 160 |
| min_grad_thr1 | Anzahl-Schwellenwert 1 für Bereiche ohne Kanten, GIC-Stärkeregelwert; Wertebereich [0, 1023], Standardwert 32 |
| min_grad_thr2 | Anzahl-Schwellenwert 2 für Bereiche ohne Kanten, GIC-Stärkeregelwert; Wertebereich [0, 1023], Standardwert 32 |
| k_grad1 | Ansprechschwelle 1 für Kanten (horizontaler und vertikaler Gradient), Wertebereich [0, 15], Standardwert 5 |
| k_grad2 | Ansprechschwelle 2 für Kanten (horizontaler und vertikaler Gradient), Wertebereich [0, 15], Standardwert 1 |
| gb_thre | Skalierungsfaktor, Wertebereich [0, 15], Standardwert 7 |
| maxCorV | Maximalen GB-Kompensationswert im Kantenbereich begrenzen; Wertebereich [0, 1023], Standardwert 40 |
| maxCorVboth | Maximalen GB-Kompensationswert in gleichmäßigen Bereichen ohne Kanten begrenzen; Wertebereich [0, 1023], Standardwert 8 |
| dark_thre | Schwellenwert 1 für dunkle Bereiche definieren; Wertebereich [0, 2047], Standardwert 120 |
| dark_threHi | Schwellenwert 2 für dunkle Bereiche definieren; Wertebereich [0, 2047], Standardwert 240 |
| k_grad1_dark | Kantenschwellenwert 1 (horizontaler und vertikaler Gradient) im dunklen Bildbereich; Wertebereich [0, 15], Standardwert 6 |
| k_grad2_dark | Kantenansprechschwelle 2 (horizontaler und vertikaler Gradient) im dunklen Bildbereich; Wertebereich [0, 15], Standardwert 1 |
| min_grad_thr_dark1 | Anzahl-Schwellenwert 1 für Bereiche ohne Kanten im dunklen Bildteil; Wertebereich [0, 1023], Standardwert 64 |
| min_grad_thr_dark2 | Anzahl-Schwellenwert 2 für Bereiche ohne Kanten im dunklen Bildteil; Wertebereich [0, 1023], Standardwert 32 |
| noiseCurve_0 | Rauschkurvenparameter 1 |
| noiseCurve_1 | Rauschprofilparameter 2 |
| globalStrength | Globale Regelung der Stärke des GB-Kompensationswerts; Wertebereich [0, 2], Standardwert 1 |
| Feldname | Beschreibung |
|---|---|
| NoiseScale | Aus der Rauschkurve die Rauschstandardabweichung des aktuellen Punkts bestimmen; mit noise_std *noise_scale den maximalen GB-Kompensationswert bestimmen |
| NoiseBase | Schwellenwert zur Unterdrückung einer Korrektur an Bildkanten: Zu den Berechnungsergebnissen des ersten und zweiten Gradienten noise_offset addieren und vergleichen. Gilt in einer Richtung gradx>2*grady, wird eine Kante angenommen und keine Korrektur vorgenommen |
| diff_clip | Maximalen GB-Kompensationswert begrenzen |
9.18.3.3 rkaiq_gic_v2_api_attr_t
【Beschreibung】 GIC-Attribute definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Zur Definition von rk_aiq_uapi_sync_t siehe Übersicht/API-Beschreibung |
| gic_en | Ein/aus |
| op_mode | Betriebsmodus |
| iso_cnt | Anzahl der ISO-Werte in den automatischen Parametern |
| auto_params | Automatische Parameter, ein Satz pro ISO-Wert; die Software berechnet die Werte automatisch durch ISO-Interpolation |
| manual_param | Manuelle Parameter; dieser Parametersatz wird fest verwendet |
9.19 CGC
9.19.1 Funktionsbeschreibung
CGC (Color Gamut Compression) dient zur Einstellung der Parameter für die Farbraumkompression.
9.19.2 Referenz der Funktions-APIs
9.19.3 Referenz der Modul-APIs
9.19.3.1 rk_aiq_user_api2_acgc_SetAttrib
【Beschreibung】
Eigenschaften des CGC-Moduls einstellen.
【Syntax】
XCamReturn rk_aiq_user_api2_acgc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapi_acgc_attrib_t attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaften des CGC-Moduls | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_acgc.h
Bibliotheksdatei: librkaiq.so
【Vorsichtsmaßnahmen】
Bei attr.param.op_mode = RK_AIQ_OP_MODE_AUTO werden die integrierten CGC-Standardparameter von AIQ verwendet. Bei attr.param.op_mode = RK_AIQ_OP_MODE_MANUAL können die CGC-Parameter konfiguriert werden.
9.19.3.2 rk_aiq_user_api2_acgc_GetAttrib
【Beschreibung】
Aktuelle Eigenschaften des CGC-Moduls abfragen.
【Syntax】
XCamReturn rk_aiq_user_api2_acgc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapi_acgc_attrib_t* attr);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| sys_ctx | AIQ-Kontextzeiger | Eingabe |
| attr | Eigenschaft des CGC-Moduls | Ausgabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api2_acgc.h
Bibliotheksdatei: librkaiq.so
9.19.4 Datentypen der Modul-API
9.19.4.1 rk_aiq_uapi_acgc_attrib_t
【Beschreibung】 API-Parameter des CGC-Moduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| sync | Zur Definition von rk_aiq_uapi_sync_t siehe Übersicht/API-Beschreibung |
| rk_aiq_acgc_params_t | CGC-Parameter |
9.19.4.2 rk_aiq_acgc_params_t
【Beschreibung】 Parameter des CGC-Moduls definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| op_mode | Modus: RK_AIQ_OP_MODE_AUTO (integrierte AIQ-Parameter verwenden) oder RK_AIQ_OP_MODE_MANUAL (benutzerkonfigurierbare Parameter verwenden) |
| cgc_ratio_en | Farbraumkompressionsmodus aktivieren oder deaktivieren; Standardwert FALSE |
| cgc_yuv_limit | Ausgabe im begrenzten Wertebereich; bei cgc_yuv_limit = FALSE wird CGC umgangen. Standardwert FALSE |
10. Statistiken
10.1 Übersicht
ISP30 unterstützt die Verarbeitung von Bilddaten zur Gewinnung der für die 3A-Regelalgorithmen AWB/AE/AF benötigten Statistikdaten. Der grundsätzliche Ablauf ist wie folgt:

10.2 Funktionsbeschreibung
10.2.1 AE-Statistik
Die AE-Hardwarestatistik umfasst hauptsächlich:
Gewichtete Histogrammstatistik mit 256 Abschnitten und blockweise R/G/B/Y-Mittelwerte auf Basis des RAW-Bereichs;
10.2.1.1 AE-Statistik auf Basis von RAW-Bildern
Die Modulstatistik gliedert sich in blockweise Helligkeitsstatistik und Histogrammstatistik. Je nach unterstützter Blockgröße und Verfügbarkeit unabhängiger Teilfensterstatistiken wird zwischen Big- und Lite-Modus unterschieden.
Big-Modus: Unterstützt maximal 15X15 und minimal 1X1 nicht unabhängige Teilfensterblöcke. Jeder Block liefert den Helligkeitsmittelwert der R/B-Kanäle mit 10 Bit und den Mittelwert des G-Kanals mit 12 Bit; standardmäßig werden 15X15 Blöcke verwendet. Zusätzlich können 4 unabhängige Teilfenster eingerichtet werden. Jedes liefert die Helligkeitssumme der R/B-Kanäle mit 29 Bit und die Summe des G-Kanals mit 32 Bit. Zur Berechnung der mittleren Helligkeit muss die Software durch die Pixelanzahl des jeweiligen Teilfensters dividieren. Die gewichtete Histogrammstatistik basiert auf der Blockanzahl und den zugewiesenen Gewichten; die effektive Pixelanzahl pro Helligkeitsabschnitt ist 28 Bit breit.
Lite-Modus: Unterstützt maximal 5X5 und minimal 1X1 nicht unabhängige Teilfensterblöcke. Jeder Block liefert den Helligkeitsmittelwert der R/B-Kanäle mit 10 Bit und den Mittelwert des G-Kanals mit 12 Bit; standardmäßig werden 5X5 Blöcke verwendet. Unabhängige Teilfenster werden nicht unterstützt. Die gewichtete Histogrammstatistik basiert auf der Blockanzahl und den zugewiesenen Gewichten; die effektive Pixelanzahl pro Helligkeitsabschnitt ist 28 Bit breit.
Auf der 3588-Plattform verwendet der Nicht-HDR-Belichtungsmodus standardmäßig BIG (15X15 nicht unabhängige Teilfenster). Im HDR-2-Bild-Modus wird ebenfalls BIG verwendet. Im HDR-3-Bild-Modus verwenden das kurz und das lang belichtete Bild BIG (15X15), das mittel belichtete Bild LITE (5X5 nicht unabhängige Teilfenster).
10.2.2 AWB-Statistik
Datenquelle der AWB-Hardwarestatistik:
Im HDR-Mehrbildmodus kann einer der 3 Kanäle L/M/S ausgewählt werden.
Im linearen Modus gibt es nur 1 Datenkanal.
Statistikberechnung nach Raw-BLC-LSC.
Die AWB-Hardwarestatistik umfasst Weißpunktstatistik und Blockstatistik.
Weißpunktstatistik
Im Hauptfenster werden die Summenwerte und Anzahlen von RGins und BGains in den Weißbereichen von 7 Lichtquellen und 2 Größen erfasst.
Im Teilfenster werden die Summenwerte und Anzahlen von RGins und BGains in den Weißbereichen von 4 Lichtquellen und 2 Größen erfasst.
RGin und BGain in den 4 UV- oder XY-Bereichen werden im jeweiligen Rahmen aufsummiert; außerdem wird die Anzahl der RGins erfasst. (Terminologie der Vorlage beibehalten.)
Blockstatistik: Das Bild wird in 15x15 Blöcke aufgeteilt; für jeden Block werden die R-, G- und B-Mittelwerte aller Punkte oder der Weißpunkte ermittelt.
10.2.3 AF-Statistik
AFHW-Hardwarestatistik:
Im HDR-Mehrbildmodus kann einer der 3 Kanäle L/M/S ausgewählt werden. Auch die nach Zusammenführung der 3 Kanäle entstehenden Daten werden als Eingang unterstützt.
Im linearen Modus gibt es nur 1 Datenkanal.
Unterstützt wird die FV-Ausgabe für jeweils 2 konfigurierbare Frequenzbänder in horizontaler und vertikaler Richtung.
Blockdiagramm des ISP30-AF-Hardwarestatistikmoduls

10.3 API-Referenz
10.3.1 rk_aiq_uapi_sysctl_get3AStatsBlk
【Beschreibung】
3A-Statistiken synchron abrufen.
【Syntax】
XCamReturn
rk_aiq_uapi_sysctl_get3AStatsBlk(const rk_aiq_sys_ctx_t* ctx, rk_aiq_isp_stats_t
**stats, int timeout_ms);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| stats | Zeiger auf die Statistikstruktur | Ausgabe |
| timeout_ms | Zeitlimit; -1 bedeutet unbegrenztes Warten, bis Statistikdaten vorliegen | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api_sysctl.h
Bibliotheksdatei: librkaiq.so
10.3.2 rk_aiq_uapi_sysctl_release3AStatsRef
【Beschreibung】
Die abgerufenen 3A-Statistikdaten freigeben; gemeinsam mit rk_aiq_uapi_sysctl_get3AStatsBlk verwenden.
【Syntax】
void
rk_aiq_uapi_sysctl_release3AStatsRef(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_isp_stats_t *stats);
【Parameter】
| Parametername | Beschreibung | Eingabe/Ausgabe |
|---|---|---|
| ctx | AIQ-Kontextzeiger | Eingabe |
| stats | Zeiger auf die Statistikstruktur | Eingabe |
【Rückgabewert】
| Rückgabewert | Beschreibung |
|---|---|
| 0 | Erfolg |
| Non-0 | Fehler; siehe Fehlercodetabelle |
【Voraussetzungen】
Headerdatei: rk_aiq_user_api_sysctl.h
Bibliotheksdatei: librkaiq.so
Referenzcode
SDK: external/camera_engine_rkaiq/rkisp_demo/demo/af_algo_demo
10.4 Datentypen
10.4.1 rk_aiq_isp_stats_t
【Beschreibung】 AIQ-3A-Statistiken.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| aec_stats | AE-Statistik |
| rk_aiq_isp_awb_stats2_v3x_t | AWB-Statistik |
| af_stats | AF-Statistik |
10.4.2 RKAiqAecStats_t
【Beschreibung】 AE-Dateninformationen definieren; Einzelheiten siehe Funktionsbeschreibung des AE-Abschnitts.
【Definition】
typedef struct RKAiqAecStats_s {
RkAiqAecHwStatsRes_t ae_data;
RKAiqAecExpInfo_t ae_exp;
} RKAiqAecStats_t;
【Felder】
| Feldname | Beschreibung |
|---|---|
| ae_data | Hardwarestatistik des AE-Moduls |
| ae_exp | Sensorbelichtungsinformationen des AE-Moduls |
10.4.2.1 RKAiqAecExpInfo_t
【Beschreibung】 Belichtungsparameterinformationen des AE-Moduls.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| LinearExp | Belichtungsparameterinformationen für Nicht-HDR-Modi, einschließlich tatsächlicher Belichtungswerte und Registerwerte im RK-Format |
| HdrExp | Belichtungsparameterinformationen für den HDR-Modus, einschließlich tatsächlicher Belichtungswerte und Registerwerte im RK-Format; unterstützt bis zu 3 Belichtungen |
| exp_i2c_params | Sensorregisterwerte der Belichtungsparameter; Belichtungsregisterparameter für AE-Lösungen von Drittanbietern |
| line_length_pixels | hts; der Wert wird durch die Konfigurationssequenz des Sensors bestimmt |
| frame_length_lines | vts; der Wert wird durch die Konfigurationssequenz des Sensors bestimmt |
| pixel_clock_freq_mhz | pclk in MHz; der Wert wird durch die Konfigurationssequenz des Sensors bestimmt |
【Vorsichtsmaßnahmen】
HdrExp enthält die Belichtungsparameterinformationen im HDR-Modus und unterstützt bis zu 3TO1. Bei HDR 2TO1 bezeichnet Index 0 die kurze und Index 1 die lange Belichtung; Index 2 ist ungültig. Bei HDR 3TO1 bezeichnet Index 0 die kurze, Index 1 die mittlere und Index 2 die lange Belichtung.
10.4.2.1.1 RkAiqExpParamComb_t
【Beschreibung】 Details der Belichtungsparameterinformationen des AE-Moduls.
【Felder】
typedef struct {
RkAiqExpRealParam_t exp_real_params; real value
RkAiqExpSensorParam_t exp_sensor_params;//RK reg value
} RkAiqExpParamComb_t;
| Feldname | Beschreibung |
|---|---|
| exp_real_params | Tatsächlicher physikalischer Wert der Belichtungskomponente |
| exp_sensor_params | Sensorregisterwert der Belichtungskomponente gemäß der RK-Belichtungseinstellung |
typedef struct RkAiqExpRealParam_s {
float integration_time;
float analog_gain;
float digital_gain;
float isp_dgain;
int iso;
int dcg_mode;
} RkAiqExpRealParam_t;
| Feldname | Beschreibung |
|---|---|
| integration_time | Belichtungsintegrationszeit in Sekunden (s) |
| analog_gain | Analoge Verstärkung/Gesamtverstärkung des Sensors als Faktor |
| digital_gain | Digitale Sensorverstärkung als Faktor; wenn diese die Genauigkeit der analogen Verstärkung ausgleicht, wird sie auf 1x gesetzt und der Gesamtverstärkungswert in analog_gain geschrieben |
| isp_dgain | Digitale ISP-Verstärkung als Faktor; derzeit ungültig, Standardwert 1x |
| iso | Gesamtverstärkungswert; ISO repräsentiert die Systemverstärkung mit dem konstanten Faktor 50: ISO = Gesamtverstärkung * 50 |
| dcg_mode | Dual Conversion Gain |
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;
| Feldname | Beschreibung |
|---|---|
| fine_integration_time | Registerwert für den Bruchteil einer Zeile der Sensorbelichtungsintegrationszeit; nur erforderlich, wenn der Sensor gebrochene Zeilen unterstützt |
| coarse_integration_time | Registerwert der Sensorbelichtungsintegrationszeit als Zeilenanzahl |
| analog_gain_code_global | Registerwerte der analogen Sensorverstärkung |
| digital_gain_global | Registerwerte der digitalen Sensorverstärkung |
| isp_digital_gain | Registerwert der digitalen ISP-Verstärkung; vorläufig ungültig |
【Vorsichtsmaßnahmen】
Die digitale Verstärkung erfüllt je nach Sensor unterschiedliche Aufgaben: Sie erweitert die Empfindlichkeit oder gleicht die Genauigkeit der analogen Verstärkung aus. Daher wird sie hier nicht separat aufgeführt; ihr Wert und die zugehörigen Registerwerte sind in der analogen Verstärkung enthalten.
Der Dual-Conversion-Gain-Modus hat drei Zustände: -1 bedeutet, dass der Sensor DCG nicht unterstützt, 0 bezeichnet LCG und 1 bezeichnet HCG.
10.4.2.1.2 RKAiqExpI2cParam_t
【Beschreibung】 I2c-Belichtungsparameter des AE-Moduls, normalerweise für AE von Drittanbietern.
【Definition】
#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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| bValid | Gültigkeitsfreigabe für I2c-Parameter: true: Registerwerte mit RKAiqExpI2cParam_t einstellen (üblicherweise für Drittanbieter-AE); false: Registerwerte anhand der Registerparameter im RK-Format einstellen |
| nNumRegs | Anzahl der einzustellenden Registerwerte |
| AddrByteNum | Bitlänge der Registeradresse; maximal 64 Elemente |
| RegValue | Array von Registerwerten mit maximal 64 Elementen |
| ValueByteNum | Bitlänge des Registerwerts; maximal 64 Elemente |
| DelayFrames | Array der Verzögerungen in Bildern für Registerwerte; maximal 64 Elemente |
【Vorsichtsmaßnahmen】
Dieser Registerparameter gilt nur, wenn die Drittanbieter-AE-Anwendung aktiv und bValid true ist. Andernfalls werden standardmäßig die Registerparameter im RK-Format aus RkAiqExpParamComb_t verwendet.
Es können maximal 64 Registerwerte eingestellt werden.
10.4.2.1.3 RkAiqIrisParamComb_t
【Beschreibung】 Blendenparameter des AE-Moduls.
【Definition】
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;
【Felder】
| Mitgliedsname | Untergeordnete Mitglieder | Beschreibung |
|---|---|---|
| PIris | step gain update |
P-Blendenparameter: Registerwert der P-Blendenstufe; äquivalenter Verstärkungswert dieser Stufe; Aktualisierungsflag für die P-Blendenstufe |
| DCIris | pwmDuty update |
DC-Blendenparameter: PWM-Tastverhältnis, Wertebereich 1~100; Aktualisierungsflag für die DC-Blendenparameter |
10.4.2.2 RkAiqAecHwStatsRes_t
【Beschreibung】 Hardwarestatistik des AE-Moduls.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| chn[3] | RAW-Bildstatistik des AE-Moduls nach BLC und AWB; kompatibel mit HDR- und Nicht-HDR-Modi, bis zu HDR 3TO1 S/M/L-Statistiken |
| extra | RAW-Bildstatistik des AE-Moduls vor DeBayer; im HDR-Modus die Statistik des zusammengeführten Bildes |
| yuvae | Blockinformationen des AE-Moduls auf Basis des RGB-Bilds vor Gamma [von der 3588-Plattform nicht unterstützt] |
| sihist | Histogramminformationen des AE-Moduls auf Basis des RGB-Bilds vor Gamma [von der 3588-Plattform nicht unterstützt] |
【Vorsichtsmaßnahmen】
Aec_Stat_Res_t chn[3] repräsentiert die Statistik der ersten 3 RAW-Datenpfade vor dem HDR-Merge-Modul. Im Nicht-HDR-Modus ist Index 0 gültig; alle anderen sind ungültig. Bei HDR 2TO1 bezeichnet Index 0 den kurz belichteten und Index 1 den lang belichteten Datenpfad; Index 2 ist ungültig. Bei HDR 3TO1 stehen Index 0 für den kurzen, Index 1 für den mittleren und Index 2 für den langen Belichtungsdatenpfad.
Vor dem RAW-basierten Statistikmodul liegen BLC und AWB; daher beeinflussen deren Verstärkungswerte die Statistik. Aec_Stat_Res_t extra bezeichnet im HDR-Modus die RAW-Bildstatistik nach der HDR-Zusammenführung. Vor diesem Statistikmodul liegen unter anderem BLC, AWB, HDRMERGE und TMO; deren Verstärkungen beeinflussen daher die Statistik. Wenn das AF-Modul eingeschaltet ist, ist dieser Statistikteil außerdem ungültig.
Die 3588-Plattform unterstützt keine Block- und Histogramminformationen auf Basis des RGB-Bilds vor Gamma.
10.4.2.2.1 Aec_Stat_Res_t
【Beschreibung】 RAW-Bildstatistik des AE-Moduls.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| rawae_big | RAW-basierte Blockstatistik im Big-Modus |
| rawae_lite | RAW-basierte Blockstatistik im Lite-Modus |
| rawhist_big | RAW-basierte Histogrammstatistik im BIG-Modus |
| rawhist_lite | RAW-basierte Histogrammstatistik im Lite-Modus |
【Vorsichtsmaßnahmen】
Zu den Unterschieden zwischen BIG und LITE bei RAW-Bildstatistiken siehe die Funktionsbeschreibung. Die Hauptunterschiede sind die Anzahl der Blöcke für die mittlere Helligkeit und die Unterstützung unabhängiger Teilfenster-Mittelwerte. Die RAW-basierten Histogrammstatistiken beider Modi verwenden dieselbe Datenstruktur.
Auf der 3588-Plattform verwendet der Nicht-HDR-Modus standardmäßig BIG (15X15 nicht unabhängige Teilfenster). Bei HDR mit 2 Bildern verwendet jedes Bild BIG (15X15). Bei HDR mit 3 Bildern verwenden die kurze und lange Belichtung BIG (15X15), die mittlere Belichtung LITE (5X5 nicht unabhängige Teilfenster).
10.4.2.2.2 rawaebig_stat
【Beschreibung】 Die RAW-basierte Big-Modus-Statistik enthält die mittlere R/G/B-Helligkeit von 15X15 nicht unabhängigen Teilfenstern und die R/G/B-Helligkeitssummen von 4 unabhängigen Teilfenstern.
【Definition】
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
【Felder】
| Feldname | Beschreibung |
|---|---|
| channelr_xy | Mittlere Helligkeit des R-Kanals nicht unabhängiger Teilfensterblöcke im BIG-Modus; 10 gültige Bit |
| channelg_xy | Mittlere Helligkeit des G-Kanals nicht unabhängiger Teilfensterblöcke im Big-Modus; 12 gültige Bit |
| channelb_xy | Mittlere Helligkeit des B-Kanals nicht unabhängiger Teilfensterblöcke im BIG-Modus; 10 gültige Bit |
| wndx_sumr | Helligkeitssumme des R-Kanals unabhängiger Teilfenster im Big-Modus; 29 gültige Bit |
| wndx_sumg | Helligkeitssumme des G-Kanals unabhängiger Teilfenster im BIG-Modus; 32 gültige Bit |
| wndx_sumb | Helligkeitssumme des B-Kanals unabhängiger Teilfenster im Big-Modus; 29 gültige Bit |
【Vorsichtsmaßnahmen】
Die RAW-basierte Big-Modus-Statistik enthält nur die 3 Kanäle R/G/B. Falls eine Y-Kanal-Statistik benötigt wird, kann zusätzlicher Softwarecode sie aus den R/G/B-Statistikwerten berechnen.
Die RAW-basierte BIG-Modus-Statistik umfasst 15X15 nicht unabhängige Teilfenster mit einer Mindestgröße von 16X4.
Die RAW-basierte BIG-Modus-Statistik umfasst 4 unabhängige Teilfenster. Ihre Positionen dürfen sich überlappen; ihre Größe darf jeweils 2k x 1k nicht überschreiten.
Die Strukturparameter channely_xy, wndx_channelr, wndx_channelg, wndx_channelb und wndx_channely werden in Software berechnet. Hierzu muss Code ergänzt werden, der die Hardwarestatistikwerte auswertet.
10.4.2.2.3 rawaelite_stat
【Beschreibung】 Die RAW-basierte Lite-Modus-Statistik enthält die mittlere R/G/B-Helligkeit von 5X5 nicht unabhängigen Teilfensterblöcken.
【Definition】
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
【Felder】
| Feldname | Beschreibung |
|---|---|
| channelr_xy | Mittlere R-Kanal-Helligkeit nicht unabhängiger Teilfensterblöcke im Lite-Modus; 10 gültige Bit |
| channelg_xy | Mittlere G-Kanal-Helligkeit nicht unabhängiger Teilfensterblöcke im Lite-Modus; 12 gültige Bit |
| channelb_xy | Mittlere B-Kanal-Helligkeit nicht unabhängiger Teilfensterblöcke im Lite-Modus; 10 gültige Bit |
【Vorsichtsmaßnahmen】
Die RAW-basierte Lite-Modus-Statistik enthält nur die 3 R/G/B-Kanäle von 5X5 nicht unabhängigen Teilfenstern. Eine benötigte Y-Statistik kann durch zusätzlichen Softwarecode aus R/G/B berechnet werden. Die Teilfenster müssen mindestens 16X4 groß sein.
channely_xy ist ein Softwareberechnungsparameter; zur Berechnung aus den Hardwarestatistikwerten muss Code ergänzt werden.
10.4.2.2.4 rawhist_stat
【Beschreibung】 RAW-basierte Histogrammstatistik.
【Definition】
struct rawhist_stat {
unsigned int bins[RAWHIST_BIN_N_MAX];
};
#define RAWHIST_BIN_N_MAX 256
【Felder】
| Feldname | Beschreibung |
|---|---|
| bins | Histogramm mit insgesamt 256 Abschnitten; pro Abschnitt 28 gültige Bit |
10.4.3 rk_aiq_isp_awb_stats2_v3x_t
【Beschreibung】 Weißabgleich-Hardwarestatistik definieren; sie umfasst hauptsächlich Weißpunkt- und Blockstatistiken.
Weißpunktstatistik
Im Hauptfenster werden Summenwerte und Anzahlen von RGins und BGain in den Weißbereichen von 7 Lichtquellen und 2 Größen erfasst;
im Teilfenster werden Summenwerte und Anzahlen von RGin und BGain in den Weißbereichen von 4 Lichtquellen und 2 Größen erfasst;
Summenwerte und Anzahlen von RGin und BGain in 4 zusätzlichen Rahmen im UV- oder XY-Bereich;
Helligkeitshistogramm der Weißpunkte;
Blockstatistik: Das Bild wird in 15x15 Blöcke aufgeteilt (siehe AWB-Blockschema), mit R-, G- und B-Mittelwerten aller Punkte oder Weißpunkte jedes Blocks.

Abbildung: AWB-Blockschema
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| light | Weißpunktstatistiken für unterschiedliche Lichtquellen im Hauptfenster; maximal RK_AIQ_AWB_MAX_WHITEREGIONS_NUM Lichtquellen |
| WpNo2 | Anzahl der Weißpunkte im Schnittbereich von XY- und UV-Bereich für unterschiedliche Lichtquellen im Hauptfenster; ohne Nachkommastellen |
| blockResult | RGB-Summen jedes Blocks; das Bild ist gleichmäßig in insgesamt 15x15 (RK_AIQ_AWB_GRID_NUM_TOTAL) Blöcke aufgeteilt, siehe AWB-Blockschema |
| multiwindowLightResult | Weißpunktstatistik unterschiedlicher Lichtquellen in mehreren Teilfenstern, maximal 4 Teilfenster. Nur die ersten 4 Lichtquellen werden erfasst; mittels Zeitmultiplex können alle erfasst werden |
| excWpRangeResult | Statistik der Punkte im Bereich excludeWpRange; nur die ersten vier Bereiche werden erfasst, maximal 4 Bereiche |
| WpNoHist | Weißpunkthistogramm: Anzahl der Weißpunkte je Bin ohne Nachkommastellen. Das Register xyRangeTypeForWpHist bestimmt, ob Weißpunkte im großen XY-Rahmen oder im XY-Rahmen gezählt werden |
【Vorsichtsmaßnahmen】
Für eine globale Weißpunktstatistik des Hauptfensters können die Weißpunktstatistiken aller Lichtquellen einfach zusammengeführt werden.
10.4.4 rk_aiq_awb_stat_wp_res_light_v201_t
【Beschreibung】 Weißpunktstatistikergebnis für eine Lichtquelle definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| XYType | Weißpunktstatistik von XY-Rahmen unterschiedlicher Größe für eine Lichtquelle; maximal RK_AIQ_AWB_XY_TYPE_MAX_V201 Rahmen, also 2 Rahmen |
10.4.5 rk_aiq_awb_stat_wp_res_v201_t
【Beschreibung】 Weißpunktstatistik im XY-Rahmen einer bestimmten Größe für eine Lichtquelle sowie Nicht-Weißpunktstatistik im Nicht-Weißpunktbereich definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| WpNo | Anzahl der Weißpunkte mit 22 Ganzzahl-Bit und 10 Nachkommabits; WpNo = Weißpunktzahl der ISP-Hardwarestatistik / 2^10 |
| RgainValue | Summe der R-Kanalwerte der Weißpunkte, 22 Ganzzahl-Bit und 10 Nachkommabits |
| BgainValue | Summe der G-Kanalwerte der Weißpunkte, 22 Ganzzahl-Bit und 10 Nachkommabits (G laut Vorlage trotz BgainValue) |
10.4.6 rk_aiq_awb_stat_blk_res_v201_t
【Beschreibung】 Statistikergebnisse für jeden Block definieren.
Bei blkMeasureMode = =RK_AIQ_AWB_BLK_STAT_MODE_ALL_V201 ist das erfasste Ergebnis die Summe aller Punkte des Blocks;
bei blkMeasureMode = =RK_AIQ_AWB_BLK_STAT_MODE_REALWP_V201 ist das Ergebnis die Summe aller Weißpunkte des Blocks;
blkMeasureMode ist das Register zur Steuerung des statistischen Inhalts eines Blocks.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| WpNo | Anzahl der Punkte im Block |
| Rvalue | Summe der R-Kanalwerte aller Punkte im Block |
| Gvalue | Summe der RG-Kanalwerte aller Punkte im Block (RG laut Vorlage) |
| Bvalue | Summe der RB-Kanalwerte aller Punkte im Block (RB laut Vorlage; Satzende unvollständig) |
10.4.7 rk_aiq_af_algo_stat_v30_t
【Beschreibung】 AF-Statistik definieren.
【Definition】
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;
【Felder】
| Feldname | Beschreibung |
|---|---|
| wndb_luma | Helligkeitswert des unabhängigen Fensters |
| wndb_sharpness | Schärfewert des unabhängigen Fensters |
| winb_highlit_cnt | Spitzlichtzähler des unabhängigen Fensters |
| wnda_luma | Helligkeitswert der 15*15 Teilfenster im Hauptfenster |
| wnda_fv_v1 | V1-Schärfewert der 15*15 Teilfenster im Hauptfenster |
| wnda_fv_v2 | V2-Schärfewert der 15*15 Teilfenster im Hauptfenster |
| wnda_fv_h1 | H1-Schärfewert der 15*15 Teilfenster im Hauptfenster |
| wnda_fv_h2 | H2-Schärfewert der 15*15 Teilfenster im Hauptfenster |
| wina_highlit_cnt | Spitzlichtzähler der 15*15 Teilfenster im Hauptfenster |
| int_state | Vom RK-AF-Algorithmus verwendet; kann ignoriert werden |
| focus_starttim | Vom RK-AF-Algorithmus verwendet; kann ignoriert werden |
| focus_endtim | Vom RK-AF-Algorithmus verwendet; kann ignoriert werden |
| zoom_starttim | Vom RK-AF-Algorithmus verwendet; kann ignoriert werden |
| zoom_endtim | Vom RK-AF-Algorithmus verwendet; kann ignoriert werden |
| sof_tim | Bildstartzeit dieses Datenbilds in ns |
| focusCode | Vom RK-AF-Algorithmus verwendet; kann ignoriert werden |
| zoomCode | Vom RK-AF-Algorithmus verwendet; kann ignoriert werden |
| focusCorrection | Vom RK-AF-Algorithmus verwendet; kann ignoriert werden |
| zoomCorrection | Vom RK-AF-Algorithmus verwendet; kann ignoriert werden |
| angleZ | Vom RK-AF-Algorithmus verwendet; kann ignoriert werden |
11. Debugging und FAQ
11.1 Versionsnummer ermitteln
AIQ stellt das Veröffentlichungsdatum der Version, die AIQ-Version, die IQ-Parser-Version und die Versionsinformationen der einzelnen ISP-Algorithmusmodule bereit.
11.1.0.1 Kurzfassung der Versionsinformationen abrufen
strings librkaiq.so | grep -w AIQ
AIQ: v0.1.6
11.1.0.2 Vollständige Versionsinformationen abrufen
1. Die AIQ-Bibliothek im SDK wird standardmäßig als Release-Version gebaut. Auf Debug umstellen, die AIQ-Bibliothek neu kompilieren und auf dem Gerät aktualisieren.
SDK/external/camera_engine_rkaiq/CMakeLists.txt:
if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
add_definitions(-DBUILD_TYPE_DEBUG)
endif()
Ändern in:
#if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
add_definitions(-DBUILD_TYPE_DEBUG)
#endif()
2. Bei der standardmäßigen Protokollstufe gibt die geladene und laufende AIQ-Bibliothek nichts aus. Die Protokollstufe des xcore-Moduls kann für die Ausgabe der AIQ-Versionsinformationen eingestellt werden:
export persist_camera_engine_log=0x1000000ff2
3. Beim AIQ-Start werden folgende Versionsinformationen ausgegeben:
************************** 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 Regeln zur Versionskompatibilität
Für die Kompatibilität zwischen AIQ, IQ Tool und ISP-Treiber gelten folgende Regeln:
v A . B. C
B ist hexadezimal dargestellt. bit[0:3] kennzeichnet die zueinander passende Version von AIQ und IQ Tool; bit[4:7] kennzeichnet die zueinander passende Version von AIQ und ISP-Treiber. Beispiele:
ISP-Treiber: v 1. 0x3.0 passt zu AIQ:v1.0x30.0 und AIQ:v1.0x40.0. (Versionsangaben der Vorlage beibehalten.)
IQ Tool: v 1. 0x3.0 passt zu AIQ:v1.0x33.0 und AIQ:v1.0x30.0. Ist C in der AIQ-Versionsnummer nicht 0, kann eine Versionsinkompatibilität auftreten. Für die Zuordnung zum IQ Tool sollte vorzugsweise eine AIQ-Version mit C = 0 verwendet werden.
11.2 AIQ-Protokollierung
11.2.1 Übersicht
AIQ verwendet 64 Bit zur Darstellung der Protokollstufen aller Module. Bitbelegung und Modulbeschreibungen:
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
Wie oben beschrieben, wird die Protokollstufe der einzelnen Module unter Linux durch die Umgebungsvariable persist_camera_engine_log gesteuert.
| Modul | Debug-Protokoll | Verbose-Protokoll |
|---|---|---|
| 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 |
Die aktuelle Protokollstufe lässt sich mit folgendem Befehl abfragen:
[root@RV1126_RV1109:/]# echo $persist_camera_engine_log
0x4014
11.2.2 AE
11.2.2.1 Konfigurationsanleitung
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Error | Standardmäßig aktiviert Schwerwiegender Fehler |
| Warning | Standardmäßig nicht aktiviert Warnung: Der Algorithmus kann den Fehler gegebenenfalls behandeln und weiterlaufen |
| Info | Standardmäßig nicht aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: keine Ereignisinformationen: Betriebsstatus und Bildrate des Algorithmus, üblicherweise nur bei Initialisierung, Auflösungswechsel und Änderung der Konfigurationsparameter ausgegeben Empfehlung: Zur Ermittlung von Betriebsstatus und Bildrate des Algorithmus |
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Debug | Standardmäßig nicht aktiviert Zusätzliche Informationen gegenüber Info: Bildweise Ausgabe: Bildnummer, zum Bild gehörige Belichtung, zum Bild gehörige AE-Statistik (Bildhelligkeit) und Belichtungsergebnis Ereignisinformationen: Empfehlung: Probleme wie Helligkeitsflackern anhand kontinuierlicher Bildhelligkeits-, Belichtungs- und weiterer Daten untersuchen |
| Verbose | Standardmäßig nicht aktiviert Zusätzliche Informationen gegenüber Debug: Bildweise Ausgabe: Berechnungsergebnisse des Algorithmus Ereignisinformationen: Empfehlung: Üblicherweise ausgeschaltet; aktivieren, wenn Debug zur Diagnose nicht ausreicht |
| Untermodul-Bit | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| bit[4] | Protokollstufe zur AE-Parameterkonfiguration Empfehlung: Beim Einlesen von IQ- oder API-Parametern anhand des Protokolls prüfen, ob die Konfiguration korrekt ist |
| bit[5] | Protokollierung des AE-Informationsverarbeitungsmoduls, das anhand der AE-Statistik Szenen- und Bildkennwerte berechnet Empfehlung: Statistikbezogene Helligkeitsinformationen auslesen |
| bit[6] | Protokollierung des AE-Belichtungsberechnungsmoduls Empfehlung: Informationen zu Belichtungsergebnissen auslesen |
| bit[7] | Protokollstufe des Airis-Blendenalgorithmus Empfehlung: Bei Problemen mit variabler Blende |
| bit[8:11] | Nicht belegt |
11.2.2.2 Interpretation des Protokolls
Aus Platzgründen wird hier nur die Debug-Stufe erläutert (0x1ff3, entsprechend Debug-Informationen aller AE-Untermodule).
AE-Protokoll im linearen Modus

Abbildung 3-1: AE-Protokoll im linearen Modus
Abbildung 3-1 zeigt ein AE-Protokollbeispiel im linearen Modus. Zeile 1:
Cur-Exp: FrmId=270,gain=0x36a,time=0x576,envChange=0,dcg=-1,pirs=0
Belichtungsparameterinformationen des aktuellen Bildes.
| Feldname | Beschreibung |
|---|---|
| FrmId | Nummer des aktuellen Bildes |
| gain | Registerwert der Sensorbelichtungsverstärkung für das aktuelle Bild |
| time | Registerwert der Sensorbelichtungszeit für das aktuelle Bild |
| envChange | Sprunghafte Änderung der Umgebungshelligkeit im aktuellen Bild: 0 keine, 1 sprunghafte Änderung |
| dcg | DCG-Modus des aktuellen Bildes: -1 Sensor unterstützt DCG nicht oder schaltet DCG intern um; 0 LCG; 1 HCG |
| pirs | Position des P-Iris-Blenden-Schrittmotors für das aktuelle Bild. Bei deaktivierter Airis-Funktion ist dieser Parameter ungültig und bedeutungslos |
Zeile 2:
Last-Res:FrmId=269,gain=0x356,time=0x576,pirs=0
Neue Belichtungsparameter aus dem letzten AE-Durchlauf. Einige entsprechen den Angaben unter (1) und werden hier nicht erneut erläutert. Durch Vergleich der Belichtungsprotokolle von Zeile 1 und 2 lässt sich feststellen, ob die aktuelle mit der neuen Belichtung übereinstimmt und die neue Belichtung somit wirksam geworden ist. Zeile 3:
================================= Linear-AE (enter)===============================
Eintritt in das AE-Regelalgorithmusmodul; Linear-AE kennzeichnet den aktuellen linearen Belichtungsmodus.
Zeile 4:
Framenum=270
Cur gain=6.826667,time=0.029987,pirisGain=0,RawMeanluma=29.564444,YuvMeanluma=34.875557,Is Converged=0
| Feldname | Beschreibung |
|---|---|
| Framenum | Nummer des aktuellen Bildes |
| gain | Sensorbelichtungsverstärkung des aktuellen Bildes |
| time | Sensorbelichtungszeit des aktuellen Bildes |
| pirisGain | Äquivalente Verstärkung der P-Iris-Blende für das aktuelle Bild. Bei deaktivierter Airis-Funktion ist dieser Parameter ungültig und bedeutungslos |
| RawMeanluma | Helligkeit des RAW-Bildes vor DeBayer für das aktuelle Bild, bereits um den Schwarzwert vermindert und mit AWB Gain multipliziert |
| YuvMeanluma | Helligkeit des RGB-Bildes vor Gamma für das aktuelle Bild; zur Beurteilung des Helligkeitseinflusses der Module nach DeBayer |
| IsConverged | Belichtung des aktuellen Bildes konvergiert: 0 nein, 1 ja |
Zeile 5:
AecClmExecute: NewExposure(0.180993) SplitGain(6.033096) SplitIntegrationTime(0.030000) SplitPirisGain(0)
| Feldname | Beschreibung |
|---|---|
| NewExposure | Neuer vom AE-Regelalgorithmus berechneter Belichtungswert |
| SplitGain | Neue Sensorbelichtungsverstärkung |
| SplitIntegrationTime | Neue Sensorbelichtungszeit |
| SplitPirisGain | Neue äquivalente Verstärkung der P-IRIS-Blende. Bei ausgeschalteter Airis-Funktion ist dieser Parameter ungültig und bedeutungslos |
Zeile 6:
calc result:SetPoint=22.000000,gain=6.023529,time=0.029987,piris=0,reggain=854,regtime=1398
Die endgültig eingestellte neue Belichtung
| Feldname | Beschreibung |
|---|---|
| SetPoint | Zielhelligkeitswert |
| gain | Endgültige neue Belichtungsverstärkung |
| time | Endgültige neue Belichtungszeit |
| piris | Endgültige neue äquivalente Verstärkung der P-IRIS-Blende. Bei ausgeschalteter Airis-Funktion ist dieser Parameter ungültig und bedeutungslos |
| reggain | Registerwert der endgültigen neuen Belichtungsverstärkung |
| regtime | Registerwert der endgültigen neuen Belichtungszeit |
Zusammenfassend lassen sich die Helligkeit des aktuellen Bildes RawMeanLuma und der zugehörige Zielwert setpoint ablesen. Die neue Belichtung wird durch Vergleich der Bildhelligkeit mit der Zielhelligkeit berechnet. AE-Protokoll im HDR-Modus:

Abbildung 3-2: AE-Protokoll im HDR-Modus
Zeile 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
Belichtungsparameterinformationen des aktuellen Bildes.
| Feldname | Beschreibung |
|---|---|
| FrmId | Nummer des aktuellen Bildes |
| S/M/L-gain | Registerwert der Sensorbelichtungsverstärkung für jedes aktuelle HDR-Bild. Bei HDR mit 2 Bildern ist S/M gültig, bei HDR mit 3 Bildern S/M/L |
| S/M/L-time | Registerwert der Sensorbelichtungszeit für jedes aktuelle HDR-Bild. Bei HDR mit 2 Bildern ist S/M gültig, bei HDR mit 3 Bildern S/M/L |
| envChange | Sprunghafte Änderung der Umgebungshelligkeit im aktuellen Bild: 0 keine, 1 sprunghafte Änderung |
| dcg | DCG-Modi für die 3 kurzen, mittleren und langen Belichtungen. Bei HDR mit 2 Bildern sind die ersten beiden Werte gültig und bezeichnen kurze und lange Belichtung. Bei HDR mit 3 Bildern bezeichnen alle drei Werte kurze, mittlere und lange Belichtung. -1: Sensor unterstützt DCG nicht oder schaltet intern um; 0: LCG; 1: HCG |
| pirs | Position des P-Iris-Blenden-Schrittmotors für das aktuelle Bild. Bei deaktivierter Airis-Funktion ist dieser Parameter ungültig und bedeutungslos |
Zeile 2:
Last-Res:FrmId=20,S-gain=0x5,S-time=0x8ca,M-gain=0x11,M-time=0x1a5e,L-gain=0x0,L- time=0x0
Neue Belichtungsparameter aus dem letzten AE-Durchlauf. Einige entsprechen den Angaben unter (1) und werden hier nicht erneut erläutert. Durch Vergleich der Belichtungsprotokolle von Zeile 1 und 2 lässt sich erkennen, ob die aktuelle mit der neuen Belichtung übereinstimmt und die neue Belichtung bereits wirksam ist.
Zeile 3:
================================= HDR-AE (enter)===============================
Eintritt in das AE-Regelalgorithmusmodul; HDR-AE kennzeichnet den aktuellen HDR-Belichtungsmodus.
Zeile 4:
AecRun: SMeanLuma=9.342692, MMeanLuma=37.698597,LMeanLuma=0.000000,TmoMeanluma=37.571430,Isconverged=0,Longfr m=0
| Feldname | Beschreibung |
|---|---|
| S/M/LMeanLuma | Mittlere Helligkeit jedes aktuellen HDR-Bildes. Bei HDR mit 2 Bildern ist S/M gültig, bei HDR mit 3 Bildern S/M/L |
| TmoMeanluma | Mittlere Ausgangshelligkeit des TMO-Moduls für das aktuelle Bild |
| Isconverged | Belichtung jedes aktuellen HDR-Bildes konvergiert: 0 nein, 1 ja |
| Longfrm | Langbelichtungsmodus des aktuellen Bildes: 0 aus, 1 ein |
Zeile 5:
Framenum=22 Cur Piris=0, Sgain=1.000000,Stime=0.002570,mgain=1.462177,mtime=0.025000,lgain=1.000000,ltime=0.000000
| Feldname | Beschreibung |
|---|---|
| Framenum | Nummer des aktuellen Bildes |
| s/m/lgain | Sensorbelichtungsverstärkung des aktuellen Bildes. Bei HDR mit 2 Bildern ist s/m gültig, bei HDR mit 3 Bildern s/m/l |
| s/m/ltime | Sensorbelichtungszeit des aktuellen Bildes. Bei HDR mit 2 Bildern ist s/m gültig, bei HDR mit 3 Bildern s/m/l |
| piris | Äquivalente Verstärkung der P-Iris-Blende für das aktuelle Bild. Bei deaktivierter Airis-Funktion ist dieser Parameter ungültig und bedeutungslos |
Zeile 6:
S-HighLightLuma=197.250000,S-Target=100.000000,S-GlobalLuma=9.342692,S-Target=19.959433
Protokoll des Regelalgorithmus für die kurze Belichtung
| Feldname | Beschreibung |
|---|---|
| S-HighLightLuma | Helligkeit des Spitzlichtbereichs der aktuellen kurzen Belichtung |
| S-Target | Zielhelligkeit des Spitzlichtbereichs der aktuellen kurzen Belichtung |
| S-GlobalLuma | Globale mittlere Helligkeit der aktuellen kurzen Belichtung |
| S-Target | Globale Zielhelligkeit der aktuellen kurzen Belichtung |
Zeile 7:
L-LowLightLuma=29.626642,L-Target=48.572094,L-GlobalLuma=37.698597,L-Target=77.620155
Protokoll des Regelalgorithmus für die lange Belichtung
| Feldname | Beschreibung |
|---|---|
| L-LowLightLuma | Helligkeit des dunklen Bereichs der aktuellen langen Belichtung |
| L-Target | Zielhelligkeit des dunklen Bereichs der aktuellen langen Belichtung |
| L-GlobalLuma | Globale mittlere Helligkeit der aktuellen langen Belichtung |
| L-Target | Globale Zielhelligkeit der aktuellen langen Belichtung |
Zeile 8:
calc result:piris=0,sgain=1.000000,stime=0.005081,mgain=1.862087,mtime=0.025000,lgain=0.000000,lti me=0.000000
Belichtungsergebnis des AE-Regelalgorithmus
| Feldname | Beschreibung |
|---|---|
| s/m/lgain | Endgültige neue Sensorbelichtungsverstärkung. Bei HDR mit 2 Bildern ist s/m gültig, bei HDR mit 3 Bildern s/m/l |
| s/m/ltime | Endgültige neue Sensorbelichtungszeit. Bei HDR mit 2 Bildern ist s/m gültig, bei HDR mit 3 Bildern s/m/l |
| piris | Endgültige neue äquivalente Verstärkung der P-IRIS-Blende. Bei deaktivierter Airis-Funktion ist dieser Parameter ungültig und bedeutungslos |
11.2.3 AWB
11.2.3.1 Konfigurationsanleitung
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Error | Standardmäßig aktiviert Schwerwiegender Fehler |
| Warning | Standardmäßig aktiviert Warnung; intern kann eine entsprechende Ausnahmebehandlung vorhanden sein |
| Info | Standardmäßig nicht aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: wbgain-Ergebnisse Ereignisinformationen: Empfehlung: |
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| debug | Standardmäßig nicht aktiviert Zusätzliche Informationen gegenüber Info: Bildweise Ausgabe: Konvergenzzustand des Weißabgleichs, Umgebungshelligkeit, Anzahl der Weißpunkte, Gesamtfarbtemperatur, Wahrscheinlichkeiten der ersten vier besonders wahrscheinlichen Lichtquellen usw. Ereignisinformationen: Ausgabe zugehöriger Attribute nach Aufruf der AWS-API (AWS laut Vorlage) Empfehlung: Bei begrenzter Protokollgröße lassen sich mit dieser Stufe die wichtigsten Diagnoseinformationen erfassen |
| Verbose | Standardmäßig nicht aktiviert Zusätzliche Informationen gegenüber Debug: Bildweise Ausgabe: Weißpunktstatistiken jeder Lichtquelle (Weißabgleichsverstärkung, Weißpunktanzahl), strategiebezogene Zwischenergebnisse usw. Ereignisinformationen: Empfehlung: Diese Stufe zur Erfassung vollständiger Diagnoseprotokolle verwenden |
| Untermodul-Bit | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| bit[4:11] | Nicht belegt |
11.2.3.2 Interpretation des Protokolls
Siehe „Rockchip_Color_Optimization_Guide_ISP2x_CN“.
11.2.4 AF
11.2.4.1 Konfigurationsanleitung
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Error | Standardmäßig aktiviert Schwerwiegender Fehler |
| Warning | Standardmäßig nicht aktiviert Warnung; intern kann eine entsprechende Ausnahmebehandlung vorhanden sein |
| Info | Standardmäßig nicht aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: Endergebnis des Fokussuchalgorithmus Ereignisinformationen: Empfehlung: |
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| debug | Standardmäßig nicht aktiviert Zusätzliche Informationen gegenüber Info: Bildweise Ausgabe: FV-Statistikwerte, Motorposition Ereignisinformationen: Fokusauslösung, Suche nach der scharfen Position, Zoom, Fokusnachführung, Fokussierung Empfehlung: Diese Stufe zur Erfassung vollständiger Diagnoseprotokolle verwenden |
| Verbose | Standardmäßig nicht aktiviert Zusätzliche Debugging-Informationen gegenüber Debug: keine Bildweise Ausgabe: Ereignisinformationen: Empfehlung: keine |
| Untermodul-Bit | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| bit[4:11] | Nicht belegt |
11.2.4.2 Interpretation des Protokolls
11.2.5 MERGE
11.2.5.1 Konfigurationsanleitung
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Info | Standardmäßig nicht aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: noch nicht verwendet Ereignisinformationen: noch nicht verwendet Empfehlung: ausgeschaltet lassen |
| debug | Standardmäßig nicht aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: Merge-Diagnoseinformationen Ereignisinformationen: noch nicht verwendet Empfehlung: Aktivieren, wenn die Bildhelligkeit nicht den Erwartungen entspricht oder der Kontrast nach TMO nicht ausreicht |
| Verbose | Standardmäßig nicht aktiviert Zusätzliche Debugging-Informationen gegenüber Verbose (so in der Vorlage): Bildweise Ausgabe: Merge-bezogene Belichtungsinformationen Ereignisinformationen: noch nicht verwendet Empfehlung: Bei Bildflackern anhand des AE-Protokolls prüfen, ob TMO während des Flackerns aktiv ist; zur Diagnose durch RK-Mitarbeiter verwenden |
| Untermodul-Bit | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| bit[4:11] | Nicht belegt |
11.2.5.2 Interpretation des Protokolls
Im linearen Modus sieht das Merge-Protokoll wie folgt aus:

Im HDR-Modus mit langer Basisbelichtung lautet die Merge-Protokollstufe 10000000ff3.

| Name | Description |
|---|---|
| FrameID | Bildnummer |
| HDRFrameNum | Anzahl der HDR-Bilder |
| LongFrmMode | Langbelichtungsmodus: 0 aus, 1 ein |
| MergeApiMode | API-Modus |
| EnvLv | Umgebungshelligkeit |
| MoveCoef | Bewegungsvariablen |
| bypass | Bypass des aktuellen Bildes: 0 aus, 1 ein |
| BaseFrm | Basisbelichtungsmodus: 0 lange, 1 kurze Belichtung |
| OECurve_smooth | Steigung der Überbelichtungskurve des aktuellen Bildes, Wertebereich [0,200]; durch Rückskalierung der JSON-Parameter mit Faktor 200 ermittelt |
| OECurve_offset | Offset der Überbelichtungskurve des aktuellen Bildes, Wertebereich [108,280] |
| MDCurveMS_smooth | Steigung der Bewegungskurve zwischen mittlerer und kurzer Belichtung im aktuellen Bild, Wertebereich [0,200]; durch Rückskalierung der JSON-Parameter mit Faktor 200 ermittelt |
| MDCurveMS_offset | Offset der Bewegungskurve zwischen mittlerer und kurzer Belichtung im aktuellen Bild, Wertebereich [0.26,100]; durch Rückskalierung der JSON-Parameter mit Faktor 100 ermittelt |
| MDCurveLM_smooth | Steigung der Bewegungskurve zwischen langer und mittlerer Belichtung im aktuellen Bild, Wertebereich [0,200]; durch Rückskalierung der JSON-Parameter mit Faktor 200 ermittelt |
| MDCurveLM_offset | Offset der Bewegungskurve zwischen langer und mittlerer Belichtung im aktuellen Bild, Wertebereich [0.26,100]; durch Rückskalierung der JSON-Parameter mit Faktor 100 ermittelt |
Im HDR-Modus mit kurzer Basisbelichtung lautet die Merge-Protokollstufe 10000000ff3.

| Name | Description |
|---|---|
| FrameID | Bildnummer |
| HDRFrameNum | Anzahl der HDR-Bilder |
| LongFrmMode | Langbelichtungsmodus: 0 aus, 1 ein |
| MergeApiMode | API-Modus |
| EnvLv | Umgebungshelligkeit |
| MoveCoef | Bewegungsvariablen |
| bypass | Bypass des aktuellen Bildes: 0 aus, 1 ein |
| BaseFrm | Basisbelichtungsmodus: 0 lange, 1 kurze Belichtung |
| OECurve_smooth | Steigung der Überbelichtungskurve des aktuellen Bildes, Wertebereich [0,200]; durch Rückskalierung der JSON-Parameter mit Faktor 200 ermittelt |
| OECurve_offset | Offset der Überbelichtungskurve des aktuellen Bildes, Wertebereich [108,280] |
| MDCurve_Coef | Regelkoeffizient des aktuellen Bildes, Wertebereich [0,1], Standardwert 0.05, Genauigkeit 0.0001 |
| MDCurve_ms_thd0 | Regelkoeffizient der kurzen Belichtung im aktuellen Bild, Wertebereich [0,1], Standardwert 0.0, Genauigkeit 0.1 |
| MDCurve_lm_thd0 | Regelkoeffizient der langen Belichtung im aktuellen Bild, Wertebereich [0,1], Standardwert 0.0, Genauigkeit 0.1 |
11.2.6 DRC
11.2.6.1 Konfigurationsanleitung
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Info | Standardmäßig nicht aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: noch nicht verwendet Ereignisinformationen: noch nicht verwendet Empfehlung: ausgeschaltet lassen |
| debug | Standardmäßig nicht aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: DRC-Diagnoseinformationen Ereignisinformationen: noch nicht verwendet Empfehlung: Aktivieren, wenn die Bildhelligkeit nicht den Erwartungen entspricht oder der Kontrast nach TMO nicht ausreicht |
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Verbose | Standardmäßig nicht aktiviert Zusätzliche Debugging-Informationen gegenüber Verbose (so in der Vorlage): Bildweise Ausgabe: DRC-bezogene Belichtungsinformationen Ereignisinformationen: noch nicht verwendet Empfehlung: Bei Bildflackern anhand des AE-Protokolls prüfen, ob TMO während des Flackerns aktiv ist; zur Diagnose durch RK-Mitarbeiter verwenden |
| Untermodul-Bit | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| bit[4:11] | Nicht belegt |
11.2.6.2 Interpretation des Protokolls
Bei DRC-Protokollstufe 20ff3:

| Name | Description |
|---|---|
| FrameID | Bildnummer |
| HDRFrameNum | Anzahl der HDR-Bilder |
| LongFrmMode | Langbelichtungsmodus: 0 aus, 1 ein |
| DRCApiMode | API-Modus |
| EnvLv | Umgebungshelligkeit |
| bypass | Bypass des aktuellen Bildes: 0 aus, 1 ein |
| Enable | DRC ein/aus |
| DrcGain | DRC-Blockverstärkung des aktuellen Bildes, Wertebereich [1,8] |
| Alpha | DrcGain-Alpha-Wert des aktuellen Bildes, Wertebereich [0,1] |
| Clip | DrcGain-Clip-Wert des aktuellen Bildes, Wertebereich [0,64] |
| Strength | HiLight-Detailsteuerung im Spitzlichtbereich des aktuellen Bildes, Wertebereich [0,1] |
| CompressMode | CompressSetting-Modus des aktuellen Bildes |
| LocalWeit | Lokales Gewicht des aktuellen Bildes, Wertebereich [0, 1]: 0 global, 1 vollständig lokal; Standardwert 0 |
| LocalAutoEnable | Automatische LocalWeit-Steuerung des aktuellen Bildes ein/aus, Wertebereich [0,1], Standardwert 1, Genauigkeit 1 |
| LocalAutoWeit | Automatischer LocalWeit-Wert des aktuellen Bildes, Wertebereich [0,1], Standardwert 0.4, Genauigkeit 0.01 |
| GlobalContrast | Globaler Kontrast des aktuellen Bildes, Wertebereich [0,1], Standardwert 0, Genauigkeit 0.01 |
| LoLitContrast | Kontrast im dunklen Bereich des aktuellen Bildes, Wertebereich [0,1], Standardwert 0, Genauigkeit 0.01 |
11.2.7 NR&Sharp
11.2.7.1 Konfigurationsanleitung
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| error | Standardmäßig aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: schwerwiegende Fehler, die einen Softwareabsturz verursachen können Ereignisinformationen: noch nicht verwendet Empfehlung: aktivieren |
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Info | Standardmäßig nicht aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: sämtliche Funktionsaufrufe ohne Registerwerte; insgesamt umfangreiche Ausgabe Ereignisinformationen: noch nicht verwendet Empfehlung: Bei normaler Bildwirkung und ohne Fehler nicht aktivieren. Registerwerte vorzugsweise mit dem Befehl io ausgeben |
| debug | Standardmäßig nicht aktiviert Zusätzliche Informationen gegenüber Info: Bildweise Ausgabe: sämtliche Funktionsaufrufe einschließlich umfangreicher Registerwertausgaben Ereignisinformationen: noch nicht verwendet Empfehlung: Bei schwerwiegenden Bildfehlern aktivieren und das Protokoll RK zur Diagnose bereitstellen |
| Untermodul-Bit | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| bit[4:11] | Nicht belegt |
11.2.7.2 Interpretation des Protokolls
11.2.8 Dhz&Ehz
11.2.8.1 Konfigurationsanleitung
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Info | Standardmäßig nicht aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: noch nicht verwendet Ereignisinformationen: noch nicht verwendet Empfehlung: |
| debug | Standardmäßig nicht aktiviert Zusätzliche Informationen gegenüber Info: Bildweise Ausgabe: DHZ- und Ehz-Diagnoseinformationen Ereignisinformationen: Empfehlung: |
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Verbose | Standardmäßig nicht aktiviert Zusätzliche Debugging-Informationen gegenüber Verbose (so in der Vorlage): Bildweise Ausgabe: noch nicht verwendet Ereignisinformationen: noch nicht verwendet Empfehlung: |
| Untermodul-Bit | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| bit[4:11] | Nicht belegt |
11.2.8.2 Interpretation des Protokolls
Bei aktivierter Enhance-Funktion lautet die Dehaze-Protokollstufe 2000ff3.

| Name | Description |
|---|---|
| FrameID | Bildnummer |
| byPassProc | Bypass des aktuellen Bildes: 0 aus, 1 ein |
| ISO | ISO |
| Dehaze module en | Dehaze-Modul ein/aus |
| Dehaze en | Dehaze-Funktion ein/aus |
| Enhance en | Verstärkungsfunktion ein/aus |
| Hist en | Hist-Funktion ein/aus |
| EnvLv | Umgebungshelligkeit des aktuellen Bildes |
| enhance_value | Allgemeine Kontraststärke des aktuellen Bildes, Wertebereich [0,16], empfohlener Bereich [1, 2] |
| enhance_chroma | Verstärkungsparameter für die Chromatizität des aktuellen Bildes, Wertebereich [0,16], empfohlener Bereich [1, 2] |
| enhance_value_reg | Registerwert der allgemeinen Kontraststärke des aktuellen Bildes |
| enhance_chroma_reg | Registerwert des Verstärkungsparameters für die Chromatizität des aktuellen Bildes |
Bei aktivierter Dehaze-Funktion und cfg_alpha=0 lautet die Dehaze-Protokollstufe 2000ff3.

| Name | Description |
|---|---|
| FrameID | Bildnummer |
| byPassProc | Bypass des aktuellen Bildes: 0 aus, 1 ein |
| ISO | ISO |
| Dehaze module en |
Dehaze-Modul ein/aus |
| Dehaze en | Dehaze-Funktion ein/aus |
| Enhance en | Verstärkungsfunktion ein/aus |
| Hist en | Hist-Funktion ein/aus |
| cfg_alpha | Anteil der Softwarekonfiguration, Wertebereich [0,1], Standardwert 1, Genauigkeit 0.01 |
| EnvLv | Umgebungshelligkeit des aktuellen Bildes |
| air_max | Obergrenze der AIR-Anpassung des aktuellen Bildes, Wertebereich [230, 250], Standardwert 250 |
| air_min | Untergrenze der AIR-Anpassung des aktuellen Bildes, Wertebereich [230, 250], Standardwert 200 (Widerspruch zum Bereich aus der Vorlage beibehalten) |
| tmax_base | Adaptiver tmax-Basiswert des aktuellen Bildes, Standardwert 125. Zuordnung: 200 (131), 210 (125), 220 (119), 230 (114), 240 (109), 250 (105); empfohlen 131-105 |
| wt_max | Obergrenze der wt-Anpassung des aktuellen Bildes, Wertebereich [0.75, 0.9], Standardwert 0.9 |
Bei aktivierter Dehaze-Funktion und cfg_alpha=1 lautet die Dehaze-Protokollstufe 2000ff3.

| Name | Description |
|---|---|
| FrameID | Bildnummer |
| byPassProc | Bypass des aktuellen Bildes: 0 aus, 1 ein |
| ISO | ISO |
| Dehaze module en |
Dehaze-Modul ein/aus |
| Dehaze en | Dehaze-Funktion ein/aus |
| Enhance en | Verstärkungsfunktion ein/aus |
| Hist en | Hist-Funktion ein/aus |
| cfg_alpha | Anteil der Softwarekonfiguration, Wertebereich [0,1], Standardwert 1, Genauigkeit 0.01 |
| EnvLv | Umgebungshelligkeit des aktuellen Bildes |
| cfg_air | Softwarekonfigurierter atmosphärischer Lichtkoeffizient air des aktuellen Bildes, Wertebereich [0, 255], Standardwert 210 |
| cfg_tmax | Softwarekonfigurierter tmax-Wert des aktuellen Bildes, maximaler Entnebelungswert, Wertebereich [0, 1], Standardwert 0.2 |
| cfg_wt | Softwarekonfigurierter wt-Wert des aktuellen Bildes, Entnebelungsstärke, Wertebereich [0, 1], Standardwert 0.8 |
Bei aktivierter Hist-Funktion lautet die Dehaze-Protokollstufe 2000ff3.

| Name | Description |
|---|---|
| FrameID | Bildnummer |
| byPassProc | Bypass des aktuellen Bildes: 0 aus, 1 ein |
| ISO | ISO |
| Dehaze module en |
Dehaze-Modul ein/aus |
| Dehaze en | Dehaze-Funktion ein/aus |
| Enhance en | Verstärkungsfunktion ein/aus |
| Hist en | Hist-Funktion ein/aus |
| cfg_alpha | Anteil der Softwarekonfiguration, Wertebereich [0,1], Standardwert 1, Genauigkeit 0.01 |
| EnvLv | Umgebungshelligkeit des aktuellen Bildes |
| hist_para_en | Histogrammspreizung des aktuellen Bildes ein/aus |
| hist_gratio | Histogrammspreizungsfaktor bzw. Regelkoeffizient des Histogrammausgleichs für das aktuelle Bild, Wertebereich [0, 32] |
| hist_th_off | Statistikschwelle des Histogramms des aktuellen Bildes, Wertebereich [0, 255], Standardwert 64 |
| hist_k | Faktor der adaptiven Histogrammschwelle des aktuellen Bildes, Wertebereich [0, 7), Standardwert 2 |
| hist_min | Mindestwert der Histogrammstatistikschwelle des aktuellen Bildes, Wertebereich [0,2], Standardwert 0.016 |
| hist_scale | Regelkoeffizient des Histogrammausgleichs für das aktuelle Bild, Wertebereich [0, 32] |
| cfg_gratio | Softwarekonfigurierter Histogrammspreizungsfaktor bzw. Regelkoeffizient des Histogrammausgleichs für das aktuelle Bild, Wertebereich [0, 32] |
11.2.9 CamHW
11.2.9.1 Konfigurationsanleitung
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Error | Standardmäßig aktiviert Schwerwiegender Fehler |
| Warning | Standardmäßig nicht aktiviert Warnung; der Algorithmus verfügt gegebenenfalls über eine Ausnahmebehandlung |
| Protokollstufe | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| Info | Standardmäßig nicht aktiviert Grundlegende Debugging-Informationen: Bildweise Ausgabe: Ereignisinformationen: Empfehlung: |
| Debug | Standardmäßig nicht aktiviert Zusätzliche Informationen gegenüber Info: Bildweise Ausgabe: Ereignisinformationen: Empfehlung: |
| Verbose | Standardmäßig nicht aktiviert Zusätzliche Informationen gegenüber Debug: Bildweise Ausgabe: Ereignisinformationen: Empfehlung: Mit Vorsicht verwenden, da große Informationsmengen auf einmal ausgegeben werden können |
| Low1 | Standardmäßig nicht aktiviert Zusätzliche Informationen gegenüber Debug: Bildweise Ausgabe: Ereignisinformationen: Funktionsaufrufpfad Empfehlung: |
| Untermodul-Bit | Beschreibung und Aktivierungsempfehlungen |
|---|---|
| bit[4] | Protokollierung des Untermoduls 30 für die HWI-Ablaufsteuerung Empfehlung: Gemeinsam mit den folgenden Untermodulen aktivieren |
| bit[5] | Protokollierung der Untermodule Isp30Params und Isp30PollThread für ISP-Parameter, Datenströme, Ereignisse usw. Empfehlung: Bei vermuteter Fehlzuordnung von Parametern und Videobildern, fehlerhaftem Timing und ähnlichen Problemen; im Offline-Readback-Modus bei unterbrochenem Datenfluss und ähnlichen Problemen |
| bit[6] | Protokollierung des Untermoduls SensorHw für den Kamerasensor Empfehlung: Bei vermuteten Problemen mit CIS-Belichtungseinstellungen usw. |
| bit[7] | Protokollierung des Untermoduls FlashLight für die Aufhelllichtsteuerung Empfehlung: Bei Problemen mit der Aufhelllichtsteuerung |
| bit[8] | Protokollierung des Untermoduls LensHw für die Objektivmotorsteuerung Empfehlung: Bei Motorsteuerungsproblemen usw. |
| bit[9] | Untermodul 30SpThread ein/aus; für die interne Modulverwendung reserviert |
| bit[10:11] | Nicht belegt |
11.2.9.2 Interpretation des Protokolls
Untermodul CamHwIsp20

Das obige Protokoll wird beim Laden der AIQ-Bibliothek nur einmal ausgegeben. Es zeigt die Verbindungen zwischen Kamerasensor, ISP und ISPP anhand der Analyse der Media-Knoten-Topologie. Daraus lässt sich erkennen, ob der Kamerasensor ordnungsgemäß erkannt wurde.

Das obige Protokoll zeigt die neuen Parameter, welche die HWI-Schicht an den ISP-Treiber übergibt. Die Konfiguration erfolgt derzeit praktisch für jedes Bild. Die Bedeutungen sind:
| Feldname | Beschreibung |
|---|---|
| ispparam ens | Modul-Aktivierungsbit; Bitdefinitionen siehe HWI/ISP20/rk_isp20_hw.H |
| en_up | Aktualisierungsbit der Modulaktivierung; ein gesetztes Bit 1 bedeutet, dass das zugehörige Aktivierungsbit aktualisiert werden muss |
| cfg_up | Aktualisierungsbit der Modulparameter; 1 bedeutet, dass die Modulparameter aktualisiert werden müssen |
| device | Videoknoten des ISP-Parametermoduls |

Das obige Protokoll zeigt die Übermittlung neuer Parameter durch die HWI-Schicht an den ISPP-Treiber. Dies erfolgt praktisch für jedes Bild; die Bedeutung entspricht dem zuvor beschriebenen ISP-Modul.
Untermodul Isp20PollThread

Das obige Protokoll zeigt den Start des Readbacks eines Bildes im Readback-Modus. Im normalen Readback-Betrieb wird es für jedes Bild ausgegeben. Die Bedeutungen sind:
| Feldname | Beschreibung |
|---|---|
| frame | RAW-Bildnummer, beginnend bei 0 |
| sof_ts | SOF-Zeitstempel des Bildes |
| frame_ts | Zeitstempel des Abschlusses der Erfassung in DDR |
| readback | Anzahl der ISP-Readbacks |

Das obige Protokoll zeigt den Umlauf der RAW-Puffer im Readback-Modus. Es wird in diesem Modus für jedes Bild ausgegeben. Die Bedeutungen sind:
| Members | Description |
|---|---|
| handle_rx_buf | Rückgabe an VICAP/isp_tx, nachdem der ISP ein Bild verarbeitet hat |
| dev_index | Geräteindex für lange, mittlere und kurze Belichtung. Gleicher dev_index in den Protokollen von handle_tx_buf und handle_rx_buf bezeichnet dieselben Daten |
| sequence | Bildnummer, beginnend bei 0 |
Untermodul SensorHw

Das obige Protokoll zeigt im linearen Modus das Einstellen einer neuen Belichtung im Sensortreiber. Der Aufruf erfolgt bei einer neuen Belichtung. Die Bedeutungen sind:
| Members | Description |
|---|---|
| frameid | Bildnummer des SOF-Ereignisses |
| handle_sof | SOF-Ereignisrückruffunktion, einmal pro Bild; verarbeitet die Belichtungseinstellung |
| exp_list size | Anzahl neuer Belichtungszeiten in der Belichtungsliste, die noch nicht an den Treiber übergeben wurden |
| gain_list size | Anzahl neuer Belichtungsverstärkungen in der Belichtungsliste, die noch nicht an den Treiber übergeben wurden |
| working_mode | Aktueller Betriebsmodus; 0 bedeutet normal |
| set_time | Neue Belichtungszeit in der SOF-Nachricht vorhanden, die an den Treiber übergeben werden muss |
| set_gain | Neue Belichtungsverstärkung in der SOF-Nachricht vorhanden, die an den Treiber übergeben werden muss |
| a-gain, time | Neue Belichtungszeit, Verstärkungsregisterwert |
11.3 RAW-/YUV-Bilder erfassen
RAW-Daten sind die unverarbeiteten Ausgabedaten des CIS. Bei Bayer-RAW-Sensoren handelt es sich um Bayer-RGB-Daten mit 8/12/14 Bit. CIS-RAW-Daten werden üblicherweise in folgenden Situationen benötigt:
1. Wenn die vom ISP verarbeiteten YUV-Ausgabedaten fehlerhaft sind, sollen die RAW-Eingangsdaten des ISP dynamisch erfasst und analysiert werden, um festzustellen, ob das Problem vom CIS stammt. 2. Vor der Abstimmung der Bildqualität müssen CIS-RAW-Daten zur Kalibrierung der Modulparameter erfasst werden.
11.3.1 Speicherformat der RAW-Daten
11.3.1.1 Ungepacktes Speicherformat
Die Speicheranordnung von raw12-Daten wird anhand eines 4-Byte-Speicherabschnitts dargestellt:

Editierbare Transkription (die Originalabbildung enthält bereits chinesische Beschriftungen):
| Bits des Speicherworts | Pixel | Pixelbits |
|---|---|---|
| 31:20 | Pixel 0 | 11:0 |
| 19:16 | Pixel 0 | - - - - |
| 15:4 | Pixel 1 | 11:0 |
| 3:0 | Pixel 1 | - - - - |
11.3.1.2 Gepacktes Speicherformat
Die Speicheranordnung von raw12-Daten wird anhand eines 4-Byte-Speicherabschnitts dargestellt:

Editierbare Transkription (die Originalabbildung enthält bereits chinesische Beschriftungen):
| Bits des Speicherworts | Pixel | Pixelbits |
|---|---|---|
| 31:24 | Pixel3 | 7:0 |
| 23:12 | Pixel2 | 11:0 |
| 11:0 | Pixel1 | 11:0 |
11.3.1.3 RK-RAW V1.0

Editierbare Transkription (die Originalabbildung enthält bereits chinesische Beschriftungen):
| Parametername | Typ | Länge (Byte) | Beschreibung |
|---|---|---|---|
| Kennung | unsigned short | 2 | Fest 0x8080 |
| Headerlänge | unsigned short | 2 | Fest 128 |
| Bildindex | unsigned int | 4 | Bildindex |
| Breite | unsigned short | 2 | Bildbreite |
| Höhe | unsigned short | 2 | Bildhöhe |
| Bittiefe | unsigned char | 1 | Bittiefe des Bildes |
| Bayer-Format | unsigned char | 1 | 0: BGGR; 1: GBRG; 2: GRBG; 3: RGGB |
| Anzahl der HDR-Bilder | unsigned char | 1 | 1: linear, kurz; 2: HDR2, lang+kurz; 3: HDR3, lang+mittel+kurz |
| Aktueller Bildtyp | unsigned char | 1 | 1 kurz; 2 mittel; 3 lang |
| Speichertyp | unsigned char | 1 | 0 gepackt; 1 ungepackt |
| Zeilenabstand | unsigned short | 2 | Byte |
| Effektiver Zeilenabstand | unsigned short | 2 | Byte |
| Reserviert | unsigned char | 107 | Reserviert |
| RAW-DATEN | RAW | W * H * BPP | RAW-DATEN |
11.3.1.4 RK-RAW V2.0
Das Format RK-RAW V2.0 besteht aus Startkennung, Datenblock und Endkennung.
Definition des Formatblocks
Ein Datenblock besteht aus drei Teilen: Kennungs-ID, Blocklänge und Blockdaten. Jede Kennungs-ID besitzt einen eindeutigen festen Wert.

Editierbare Transkription (die Originalabbildung enthält bereits chinesische Beschriftungen):
| Element | Typ | Länge (Byte) | Standardwert | Beschreibung |
|---|---|---|---|---|
| Startkennung | u16 | 2 | 0xFF00 | Dateianfang |
| Blockkennung | u16 | 2 | 0xFF01 | RAW-Informationen |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| Blockkennung | u16 | 2 | 0xFF02 | RAW-Daten im Normalmodus |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| Blockkennung | u16 | 2 | 0xFF03 | RAW der kurzen HDR2/HDR3-Belichtung |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| Blockkennung | u16 | 2 | 0xFF04 | RAW der langen HDR2-/mittleren HDR3-Belichtung |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| Blockkennung | u16 | 2 | 0xFF05 | RAW der langen HDR3-Belichtung |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| Blockkennung | u16 | 2 | 0xFF06 | Bildstatistik |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| Blockkennung | u16 | 2 | 0xFF07 | ISP-Registerformat |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| Blockkennung | u16 | 2 | 0xFF08 | ISP-Register |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| Blockkennung | u16 | 2 | 0xFF09 | ISPP-Registerformat |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| Blockkennung | u16 | 2 | 0xFF0a | ISPP-Register |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| Blockkennung | u16 | 2 | 0xFF0b | Plattforminformationen |
| Blocklänge | u32 | 4 | - | |
| Blockdaten | ||||
| … | ||||
| Endkennung | u16 | 2 | 0x00FF | Dateiende |
Nicht alle dargestellten Blöcke sind erforderlich; mehrere können nach Bedarf kombiniert werden. Beispielsweise kann eine RKRawV2-Datei nur „Raw Blocks“, „Raw Blocks“ und „Frame Statistics Blocks“ enthalten. Mindestens diese drei Blöcke werden empfohlen, damit die Datei sinnvoll nutzbar ist. (Die doppelte Bezeichnung „Raw Blocks“ stammt aus der Vorlage.)
Definition des RAW-Informationsblocks

Editierbare Transkription (die Originalabbildung enthält bereits chinesische Beschriftungen):
| Element | Typ | Länge (Byte) | Standardwert | Beschreibung |
|---|---|---|---|---|
| Version | u16 | 2 | 0x0200 | 0x0200=v2.0 |
| Sensorname | string | 32 | - | Sensormodell |
| Szene/Licht | string | 32 | - | Aufnahmeszene/Lichtquelle |
| Bildnummer | u32 | 4 | - | Bildnummer |
| Breite | u16 | 2 | - | Bildbreite in Pixeln |
| Höhe | u16 | 2 | - | Bildhöhe in Pixeln |
| Bittiefe | u8 | 1 | - | Bittiefe des Bildes |
| Bayer-Format | u8 | 1 | - | 0 BGGR; 1 GBRG; 2 GRBG; 3 RGGB |
| HDR-Bildanzahl | u8 | 1 | - | 1 linear; 2 lang+kurz; 3 lang+mittel+kurz |
| Speicherformat | u8 | 1 | - | 0 gepackt; 1 ungepackt |
| Zeilenabstand | u16 | 2 | - | Byte |
| Effektiver Zeilenabstand | u16 | 2 | - | Byte |
| Bytereihenfolge | u8 | 1 | - | 0 Big-Endian; 1 Little-Endian |
Definition des RAW-Datenblocks
Dieser Datenabschnitt kann RAW-Bilddaten, einen Puffer-fd oder eine virtuelle Adresse der RAW-Bilddaten enthalten. Bei Verwendung der zugehörigen API muss der Datentyp des Blocks über Parameter angegeben werden; Einzelheiten siehe rk_aiq_rawbuf_type_t.

Editierbare Transkription (die Originalabbildung enthält bereits chinesische Beschriftungen):
| Element | Typ | Länge (Byte) | Beschreibung |
|---|---|---|---|
| RAW-Daten | - | heightwidthN; ungepackt N=2; gepackt N=bpp/8 | RAW-Daten, 0xFF02–0xFF05 |
Definition des Bildstatistikblocks

Editierbare Transkription (die Originalabbildung enthält bereits chinesische Beschriftungen):
| Element | Typ | Länge (Byte) | Standardwert | Beschreibung |
|---|---|---|---|---|
| Version | u16 | 2 | 0x0200 | Raw: 0x0200=v2.0 |
| Bildnummer | u32 | 4 | - | Bildnummer |
| Normal_Exp | float | 4 | - | Belichtungszeit im linearen Modus |
| Normal_Gain | float | 4 | - | Belichtungsverstärkung im linearen Modus |
| Normal_Exp_REG | u32 | 4 | - | SENSOR-Register der linearen Belichtungszeit |
| Normal_Gain_REG | u32 | 4 | - | SENSOR-Register der linearen Verstärkung |
| HDR_Exp_L | float | 4 | - | Lange HDR3-Belichtungszeit |
| HDR_Gain_L | float | 4 | - | Verstärkung der langen HDR3-Belichtung |
| HDR_Exp_L_REG | u32 | 4 | - | SENSOR-Register der langen HDR3-Belichtungszeit |
| HDR_Gain_L_REG | u32 | 4 | - | SENSOR-Register der langen HDR3-Verstärkung |
| HDR_Exp_M | float | 4 | - | Mittlere HDR3-/lange HDR2-Belichtungszeit |
| HDR_Gain_M | float | 4 | - | Verstärkung der mittleren HDR3-/langen HDR2-Belichtung |
| HDR_Exp_M_REG | u32 | 4 | - | SENSOR-Register der mittleren HDR3-/langen HDR2-Belichtungszeit |
| HDR_Gain_M_REG | u32 | 4 | - | SENSOR-Register der mittleren HDR3-/langen HDR2-Belichtungszeit (Originalbeschreibung widerspricht dem Gain-Feldnamen; zu prüfen) |
| HDR_Exp_S | float | 4 | - | Kurze HDR3/HDR2-Belichtungszeit |
| HDR_Gain_S | float | 4 | - | Verstärkung der kurzen HDR3/HDR2-Belichtung |
| HDR_Exp_S_REG | u32 | 4 | - | SENSOR-Register der kurzen HDR3/HDR2-Belichtungszeit |
| HDR_Gain_S_REG | u32 | 4 | - | SENSOR-Register der kurzen HDR3/HDR2-Belichtungszeit (Originalbeschreibung widerspricht dem Gain-Feldnamen; zu prüfen) |
| AWB_Rgain | float | 4 | - | Weißabgleichsverstärkung |
| AWB_Bgain | float | 4 | - | Weißabgleichsverstärkung |
Definition des Registerformatblocks

Editierbare Transkription (die Originalabbildung enthält bereits chinesische Beschriftungen):
| Element | Typ | Länge (Byte) | Standardwert | Beschreibung |
|---|---|---|---|---|
| Version | u16 | 2 | 0x0200 | 0x0200=v2.0 |
| Bildnummer | u32 | 4 | - | Registerbasisadresse (wie in der Abbildung) |
| Basisadresse | u32 | 4 | - | Registerbasisadresse |
| Offsetadresse | u32 | 4 | - | Startoffsetadresse |
| Anzahl | u32 | 4 | - | Registeranzahl |
Definition des Registerblocks

Editierbare Transkription (die Originalabbildung enthält bereits chinesische Beschriftungen):
| Element | Typ | Länge (Byte) | Beschreibung |
|---|---|---|---|
| Registerdaten | - | - | Registerdaten, 0xFF08/0xFF0a |
Definition des Plattforminformationsblocks

Editierbare Transkription (die Originalabbildung enthält bereits chinesische Beschriftungen):
| Element | Typ | Länge (Byte) | Beschreibung |
|---|---|---|---|
| Chipmodell | string | 32 | |
| ISP-Version | string | 32 | |
| AIQ-Version | string | 32 |
11.3.2 Erfassung von RAW-/YUV-Daten
12. Fehlercodes
| Fehlercode | Beschreibung |
|---|---|
| 0 | Erfolg |
| -1 | Fehlgeschlagen |
| -2 | Ungültiger Parameter |
| -3 | Nicht genügend Arbeitsspeicher |
| -4 | Dateioperation fehlgeschlagen |
| -5 | Fehler im Analysemodul |
| -6 | Fehler im ISP-Modul |
| -7 | Fehler im Sensortreiber |
| -8 | Fehler bei einer Thread-Operation |
| -9 | Fehler bei einer IOCTL-Operation |
| -10 | Timingfehler |
| -20 | Zeitüberschreitung |
| -21 | Außerhalb des gültigen Bereichs |
| -255 | Unbekannter Fehler |
13. Abkürzungen
| Abkürzung | Vollständige Bezeichnung |
|---|---|
| CIS | Camera Image Sensor – Kamerabildsensor |
| RkAiq | Rockchip Automatical Image Quality – automatische Rockchip-Bildqualität |
| ISP | Image Signal Process – Bildsignalverarbeitung |
| IQ Tuning | Image Quality Tuning – Abstimmung der Bildqualität |
