gradient_lut_build — DRIVE tacscalib op

• Datenarten: matrix × matrix → table

• Aufruf: import fullseye as fs; fs.ledger.gradient_lut_build(rgb_rows, normal_rows, bins: 'int' = 125, positions=None, image_shape=None, flat_rgb=None, flat_positions=None, min_rows_poly: 'int' = 30, ridge: 'float' = 0.001, pool: 'bool' = True) -> 'dict' (die Implementierung direkt: import tacscalib; tacscalib.gradient_lut_build(rgb_rows, normal_rows, bins: 'int' = 125, positions=None, image_shape=None, flat_rgb=None, flat_positions=None, min_rows_poly: 'int' = 30, ridge: 'float' = 0.001, pool: 'bool' = True) -> 'dict'; aus dem Register: opsdrive.get("gradient_lut_build"))

Verwendung

Beispielbasierte Gradienten-LUT: teilt (Neigung θ, Richtung φ) der Normalen in bins × bins und trägt in jedes Bin den Mittelwert der RGB-Werte der hineinfallenden Pixel ein (np.add.at summiert auch doppelte Indizes). rgb_rows (P, 3), normal_rows (P, 3).

Mit positions ((P, 2) = (Zeile, Spalte)) und image_shape die positionsabhängige Variante: Für Bins mit mindestens min_rows_poly Zeilen wird RGB = 6 Koeffizienten · [x², y², xy, x, y, 1] angepasst (x, y über die Bildgröße auf −1..1 skaliert; kleiner Ridge auf allem außer dem konstanten Term). Mit pool=True leihen sich Bins mit wenigen Zeilen die Positionsterme (5 Koeffizienten) des im Winkel nächsten Polynom-Bins und passen nur den konstanten Term an den Mittelwert ihrer eigenen Zeilen an —— schlägt man nur in Bins mit angepassten Positionstermen nach, fallen alle Bins mit kleiner Neigung weg und 0–15° wird zur Totzone (eine Falle aus dem Prototyp). flat_rgb ((F, 3), bei der Positionsvariante auch flat_positions (F, 2)) sind Zeilen, die als „flache Beispiele“ = Normale (0, 0, 1) hinzugefügt werden (z. B. Ringe fern vom Kontakt; schwache Ground Truth).

Rückgabe: bins, mean_rgb (bins, bins, 3) (leere Bins sind nan), count (bins, bins), centre_normals (bins, bins, 3), n_rows, n_flat, coef ((bins, bins, 6, 3) oder None), basis ("unit"), image_shape, poly_bins / pooled_bins (Anzahl der Bins mit angepassten / geliehenen Positionstermen). Raises ValueError: Formabweichung / bins < 4 / min_rows_poly < 6 / 0 Zeilen / nicht endlich / nur eines von positions und image_shape / nur flat_positions.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• poc_tacscalib_sphere_lut — py -3.11 examples/poc_tacscalib_sphere_lut.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

Gleiche Kategorie (tacscalib)

calib_pack_load · sphere_normals_known · lights_fit_from_sphere · membrane_predict_rgb · gradient_lut_invert · normal_error_map · sphere_cap_height · field_position_sweep


*Provenance: tacscalib.py — DRIVE Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.