typed op• Data kinds: points → signal
• Call: fullseye.apply(img, "tb_farthest_point_sampling", a=0.5, b=0.5) (the 2-D model is one image plus two scalar knobs a,b∈[0,1])

*The figure is the actual output on a synthetic 128×128 input. Left: input, right: output. Point clouds are drawn as a top-down scatter (brightness = z), 1-D series as a line plot, volumes as the maximum-intensity projection along z, videos as the middle frame, complex images as magnitude; return values that are not pictures are shown as the values themselves.*
Sweeping knob a (0.1 / 0.5 / 0.9, the other knob at its default):
▸ tb_farthest_point_sampling: knob a sweep (docs site)
*Knob b does not change the output (measured: identical at 0.1 / 0.5 / 0.9).*
Stages (the ops that come before → this op, left to right):
▸ tb_farthest_point_sampling: stages (docs site)
On other images (synthetic scene / photo / coins. Top row: inputs, bottom row: their outputs. Knobs at default):
▸ tb_farthest_point_sampling: other inputs (docs site)
Farthest point sampling based on geodesic distance (even thinning). → an array of selected indices (n,) int.
> The detailed description below is the original text — the summary and the headings are translated.
`start` を最初の代表点にし、「既に選んだ点集合への測地距離が最大の点」を 1 つずつ追加する
貪欲法(FPS)。距離は `knn_graph(points, k)` の無向 kNN グラフ上の Dijkstra で測り、既選択
集合への距離は各代表点の単源距離の要素ごと最小 `mind` として保持、代表点を 1 つ足すたびに
`mind = min(mind, d_new)` で更新する。代表点 1 つにつき Dijkstra 1 回なので計算量は n 回分の
単源最短路。乱数は使わず決定的。
• `points: (N,3) 点群。n: 欲しい点数。N を超えると N` に、負なら 0 に丸める
(0 なら空配列)。
• `k: kNN グラフの近傍数(既定 8)。start: 最初の代表点(start % N` で範囲内に折り返す)。
• 返り値は選んだ順の添字列(先頭が `start)。points[idx]` で代表点群になる。
罠: グラフが複数の連結成分に分かれていると、不達の点は距離 `inf` なので未到達の成分が先に
選ばれる(argmax が `inf` を拾う)。「離れた塊から先に取る」挙動になるので、成分ごとに
均等に間引きたいなら `euclidean_cluster` 等で分けてから使う。
2-D 進化レジストリへ橋渡しした 3d の op `farthest_point_sampling。実装は同じで、呼び出し規約だけ op(v, a, b) に合わせてある。a が k(既定 8)を振る。b` は未使用。
• 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.
The program below has been verified to run (same input as the figure). In Studio's help this block becomes buttons that load and run it on the spot.
img_to_points 0.50 0.50 tb_farthest_point_sampling 0.50 0.50
▸ Load this pipeline · Load & run
The examples below call the underlying ledger op farthest_point_sampling. This bridge op is the same implementation adapted to the fn(v, a, b) convention, so the behaviour carries over unchanged (only the call form differs).
• geodesic_distance — py -3.11 examples_3d/geodesic_distance.py
• pointcloud_downsampling — py -3.11 examples_3d/pointcloud_downsampling.py
signal as input)identity · tb_create_funct_1d_array · tb_smooth_funct_1d_gauss · tb_smooth_funct_1d_mean · tb_derivate_funct_1d · tb_integrate_funct_1d · tb_zero_crossings_funct_1d · tb_abs_funct_1d
typed)tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · 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.