morphology op• Data kinds: image → image
• Call: fullseye.apply(img, "persistence_map", 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):
▸ persistence_map: knob a sweep (docs site)
Sweeping knob b (0.1 / 0.5 / 0.9, the other knob at its default):
▸ persistence_map: knob b sweep (docs site)
On other images (synthetic scene / photo / coins. Top row: inputs, bottom row: their outputs. Knobs at default):
▸ persistence_map: 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).*
> This operator's description has not been translated yet. The original text follows as it is.
閾値を選ばずに「山の目立ち具合」を測る(0 次元パーシステンス)。
閾値を 1 つ選ぶと適用範囲が狭まる —— という矛盾は「**全部の閾値を試して、結果が
変わらない所だけ残す**」ことで解ける。高い方から水位を下げていき、新しい山が現れた
高さ(誕生)と、その山がより高い山に飲まれた高さ(消滅)の差を、その山の
persistence(目立ち具合) とする。地形でいう「突出度(prominence)」そのもの。
出力は各画素に「その画素が属する山の persistence」を入れた地図。`a` は残す下限
(これ未満の山は 0 にする)、`b` は連結の仕方(0.5 未満で 4 近傍、以上で 8 近傍)。
**`h_maxima / MSER との違い**: xsk2_h_maxima は h` をひとつ選んで
「それ以上の山」を返す —— つまり閾値を 1 つ選んでいる。こちらは**全部の h に
ついての答えを 1 枚に畳んだもの**なので、後から好きな水準で切れる。MSER は
「面積が安定な領域」を探すので似た発想だが、あちらは領域の形、こちらは高さ。
適用条件: (1) 画像全体で一番高い山は消滅しないので、`最大値 - 最小値` を
persistence とする(慣例)。そのため背景は全体最大の値(1.0)を持つ ——
背景は一番最後に処理され、そのときには成分がすべて併合されているので、位相的には
確かに全体成分に属する。山の高さを読む地図であって、背景を 0 にする地図ではない。
背景を落としたいなら閾値 op と掛けるか、`a で下限を上げること(a=0.45` で
高さ 0.3 の山だけが消え、1.0 と 0.6 は残ることを実測した)。(2) 平坦な台地(同じ値が続く)は 1 つの山として
扱われる。(3) 計算は画素を降順に走査する union-find なので、大きな画像では
`h_maxima` より遅い。
• gallery2d_morphology family guide
• 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.
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.
persistence_map 0.35 0.50
▸ Load this pipeline · Load & run
• gallery2d_morphology — py -3.11 examples/gallery2d_morphology.py
image as input)identity · gaussian · mean_box · bilateral · unsharp · median · min_filter · max_filter
morphology)gerode · gdilate · gopen · gclose · runlength_smear · tophat · bothat · morph_grad
*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.