img_to_projection_profile — 2D bridge op

Data kinds: imagesignal

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

img_to_projection_profile: input → output

*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):

img_to_projection_profile: knob a sweep (docs site)

Sweeping knob b (0.1 / 0.5 / 0.9, the other knob at its default):

img_to_projection_profile: knob b sweep (docs site)

On other images (synthetic scene / photo / coins. Top row: inputs, bottom row: their outputs. Knobs at default):

img_to_projection_profile: other inputs (docs site)

*The 4th column is a colour (H,W,3) input. This op handles colour without crossing channels (it does not convolve the colour channel as a third spatial axis).*

Usage

> This operator's description has not been translated yet. The original text follows as it is.

画像を 1 方向へ潰した射影プロファイルを 1-D の signal にする ―― 版面解析の基本量。

`img_to_signal` が「1 本の行/列をそのまま読む」のに対し、こちらは**全行(全列)を

束ねて 1 本にまとめる**。文字列の切れ目・罫線・帯の境目は、1 本の走査線では雑音に

埋もれるが、潰すと谷として立ち上がる。

• `b → 向き。b < 0.5` で縦に潰して長さ W(列ごとの代表値。横に並んだ字の

切れ目が谷になる)、`b >= 0.5` で横に潰して長さ H(行ごと。行間が谷になる)。

`img_to_signal と同じく b が向きを決めるが、a` の意味は違う。

• `a` → 上側トリム率。潰す軸の値を大きい順に並べ、上位

`m = max(1, round((1-a) * N)) 個だけを平均する。a=0` はただの平均射影

(古典的な projection profile そのもの)、`a=1` は最大値射影(MIP)、

その間は「外れ値だけを残して均す」連続的な折衷になる。

• 返り値: 1-D float64。正規化しない(値域は入力のまま。[0,1] の画像なら [0,1])。

長さは向きで決まる(W または H)。空フレームは一定値の列になる。

なぜノブがトリム率なのか: 平均射影は雑音に強いが、細い線 1 本が背景に薄められて

消える。最大値射影は細い線を残すが、輝点 1 個で列全体が持ち上がる。どちらを選んでも

失うものがあるので、どれだけ捨てるかをノブにして取引を明示した。`a` を上げると

細い構造が残り、下げると雑音が均される ―― 単調で、両端が古典的な 2 つの射影に一致する。

暗い字には前段で反転を。この op は大きい方を残すので、白地に黒字のまま渡すと

トリムが背景を拾う。`invert(台帳)を挟めば、a` が「濃い字のところ」を残す。

先行と対応: 平均射影は文書解析の古典そのもの(Postl 1986 / Baird 1987 が傾き

推定に使った量)で、HALCON では `gray_projections`(水平・垂直の濃淡射影)に

あたる —— 対応表で **covered: false** だった op を、これが埋める。上位トリムで

最大値射影へ連続に寄せる族は、蛍光顕微鏡の時間フレーム融合で使われる

分位点射影(上側 75 % 点を取る)と同じ発想だが、こちらは上位 m 個の平均

なので 両端が厳密に平均射影と最大値射影に一致し、その間が単調になる。

使いどころ: 行の切り出し(横に潰して谷を探す)、字の切り出し(縦に潰す)、罫線検出、

帯の境目、`deskew` が内部で使っている判定量の可視化。下流は 1-D 関数の族

(`tb_smooth_funct_1d_gauss / tb_local_min_funct_1d / tb_derivate_funct_1d`)。

Detailed usage guide

gallery2d_bridge family guide

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.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Try it in Studio

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_projection_profile 0.50 0.50

▸ Load this pipeline  ·  Load & run

Runnable examples (verified samples that actually call this op)

gallery2d_bridgepy -3.11 examples/gallery2d_bridge.py

Ops the type connects to (they accept 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

Same category (bridge)

img_to_points · img_to_keypoints · img_to_signal · img_to_counts · img_to_matrix · img_to_video · img_to_volume · img_to_lightfield


*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.