gradient_lut_invert — DRIVE tacscalib op

• 数据种类:rgb × table × image2d → normalmap

• 调用: import fullseye as fs; fs.ledger.gradient_lut_invert(rgb, table: 'dict', mask=None, min_count: 'int' = 1, method: 'str' = 'coarse', coarse: 'int' = 3, topk: 'int' = 2, chunk: 'int' = 1024) -> 'np.ndarray'(要直接调用实现,import tacscalib; tacscalib.gradient_lut_invert(rgb, table: 'dict', mask=None, min_count: 'int' = 1, method: 'str' = 'coarse', coarse: 'int' = 3, topk: 'int' = 2, chunk: 'int' = 1024) -> 'np.ndarray';从台账取用则 opsdrive.get("gradient_lut_invert"))

用法

RGB (H, W, 3) → 法线 (H, W, 3):在非空 bin(count ≥ min_count)中取颜色最接近者的中心法线。位置相关版的表(向 gradient_lut_build 传入 positions 所得)先按像素位置预测各 bin 的颜色,再进行比较。

method="coarse"(默认):在每个 coarse × coarse bin 的区块放一个代表(行数最多的 bin),选出颜色最近的前 topk 个区块,只在各自周围 3 × 3 区块内比较全部 bin(粗 → 细)。"exact":全部 bin 穷举(基准)。颜色 → 法线是多峰的(相距很远的 bin 颜色几乎相同),因此粗 → 细与穷举不一定选中同一个 bin:在第 1 台实机上约 9 成一致,不一致的像素其角误差中位数也几乎相同(由门测量)。mask 之外为 (0, 0, 1)。min_count 是所用 bin 行数的下限:无噪声的合成数据取 1 即可,但在实机上只有 1 行的 bin (第 1 台的 24 张标定图中有 624 个)其颜色平均就是噪声本身,保持 1 会使恢复的深度偏 +18 %(行数 10 以上为 +6 %)。反之,只在拟合了位置项的 bin 中查找(min_count=min_rows_poly)则倾斜 0〜15° 成为盲区。Raises ValueError:形状 / mask 的形状 / method 拼写错误 / coarse·topk·chunk 小于 1 / 可用 bin 为 0 / 位置相关版中图像大小不同。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者、年份)与用途见上面的族使用指南。

可运行的示例(实际调用该算子并已验证的样例)

• poc_tacscalib_sphere_lut — py -3.11 examples/poc_tacscalib_sphere_lut.py

类型可衔接的下一个算子(可接受 normalmap 作为输入)

spin_from_marker_sequence · carla_transform_matrix · carla_pose_to_world · carla_camera_pose · carla_xy_yaw · carla_scene_load · town_chain · osm_parse

同类别(tacscalib)

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


*Provenance: tacscalib.py — DRIVE 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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