tb_estimate_point_normals — 2D typed op

Data kinds: pointspoints

Call: fullseye.apply(img, "tb_estimate_point_normals", a=0.5, b=0.5) (the 2-D model is one image plus two scalar knobs a,b∈[0,1])

*No figure: this op takes points as input. A Studio program starting from an image cannot reach that type — see the runnable examples below for how it is used.*

Usage

Point cloud (N,3) → unit normals (the smallest eigenvector of the local k-nearest-neighbor covariance = PCA).

> The detailed description below is the original text — the summary and the headings are translated.

FPFH/SHOT/点-面 ICP が要る法線を raw 点群から生成。向きの規約は 2 面:

viewpoint=None(既定)= 重心から外向き(閉じた物体の全周点群向け)/

viewpoint 指定 = 視点(センサ)向き(Hoppe 1992 / PCL 規約。単一視点スキャンの

可視面はセンサ側を向くのが物理的に正しい。pointcloud.estimate_normals と同規約)。

旧版(〜2026-08-30)は viewpoint 指定でも「視点から遠ざける」符号で、単一視点

スキャンという本来用途で全点が裏返っていた。返り値 normals (N,3)。

2-D 進化レジストリへ橋渡しした 3d の op `estimate_point_normals。実装は同じで、呼び出し規約だけ op(v, a, b) に合わせてある。ak(既定 16)を振る。b` は未使用。

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

Runnable examples (verified samples that actually call this op)

• (none yet)

Ops the type connects to (they accept points as input)

identity · tb_points_to_voxel · tb_iss_keypoints · tb_angle_3points · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal

Same category (typed)

tb_points_to_voxel · tb_iss_keypoints · tb_angle_3points · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal · tb_voxel_grid_downsample


*Provenance: ops.py — 2D operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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