tb_local_std — 2D typed op

• データ種: signal → signal

• 呼び出し: fullseye.apply(img, "tb_local_std", a=0.5, b=0.5) (2-D は 1 画像 + 2 スカラつまみ a,b∈[0,1] のモデル)

tb_local_std: input → output

*図は合成の入力 128×128 で実際に走らせた出力。左が入力、右が出力。点群は上から見た散布(明るさ = z)、1-D 列は折れ線、体積は z 方向の最大値投影、動画は中央フレーム、複素画像は振幅、絵にならない返り値は値そのもの。*

つまみ a を振る(0.1 / 0.5 / 0.9、もう一方は既定):

▸ tb_local_std: つまみ a を振った図 (docs サイト)

*つまみ b は出力を変えない(実測: 0.1 / 0.5 / 0.9 で同一)。*

段階(前置きの op → この op。左から順):

▸ tb_local_std: 段階の図 (docs サイト)

別の画像でも(合成シーン / 写真 / 硬貨。上段が入力、下段がその出力。つまみは既定):

▸ tb_local_std: 別の画像での出力 (docs サイト)

使い方

Rolling standard deviation with a stated error bound.

The 1-D counterpart of the image operator local_std (HALCON's deviation_image): the variance is taken after subtracting the mean (E[x^2] - E[x]^2 loses its significant digits on a signal that sits far from zero), unbiased by n/(n-1), and the residual bias of the square root removed by c4(n), so the estimate of sigma itself is unbiased.

*window* is the number of samples in the sliding window, rounded up to the next odd number so the window can be centred (10 becomes 11). The error bound below is computed from the window actually used, so the number quoted stays true. The 2-D side does the same thing — _k(a) snaps the knob to 3/5/7/9 — and the typed bridge that exposes this op as tb_local_std scales the knob continuously, so an even value arrives whenever the knob lands between two odd ones. The relative standard error of each estimate is 1/sqrt(2(n-1)) — 35 % for a 5-sample window, 11 % for 41. Quote it next to any noise figure:

a rolling sigma over 9 samples is +- 25 %, which is wider than most of the changes people try to read off it.

Returns an array the same length as *x* (the ends are reflected).

Typed bridge of the 1d op local_std into the 2-D evolution registry: the same implementation, called under the op(v, a, b) convention. a drives window (default 9); b is unused.

参考(サンプルデータ・文献)

• サンプルデータ カタログ(DL URL / ライセンス) — 2-D は skimage.data(BSD/public)+ 合成、3-D は実データ源(Stanford/PDS 等)の DL URL。

• 演算子の来歴・参考文献 — この op 族の元になった研究/手法の出典。

Studio で試す

下のプログラムは実際に走ることを確かめてある(図と同じ入力)。Studio のヘルプではこのブロックがボタンになり、その場で読み込んで実行できる。

img_to_signal 0.50 0.50
tb_local_std 0.50 0.50

▸ このパイプラインを読み込む  ·  読み込んで実行

実行できる例(この op を実際に呼ぶ検証済みサンプル)

次の例は元の台帳 op local_std を呼ぶもの。この橋渡し op は同じ実装を fn(v, a, b) 規約に合わせただけなので、挙動はそのまま当てはまる(呼び出し形だけ違う)。

• gallery2d_texture_freq — py -3.11 examples/gallery2d_texture_freq.py

型が繋がる次の op(signal を入力に取れる)

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. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。*

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