register_ecc — MATCHREG intensityreg op

• Data kinds: image2d × image2d → table

• Call: import fullseye as fs; fs.ledger.register_ecc(fixed, moving, motion='affine', n_iter=200, eps=1e-06, warp_init=None, levels=1, smooth_sigma=1.1, nonpositive='raise', min_rho=0.0) (implementation को सीधे call करना हो तो import intensityreg; intensityreg.register_ecc(fixed, moving, motion='affine', n_iter=200, eps=1e-06, warp_init=None, levels=1, smooth_sigma=1.1, nonpositive='raise', min_rho=0.0), registry से लेना हो तो opsmatchreg.get("register_ecc"))

• GPU: नहीं (केवल CPU reference implementation)

उपयोग

Enhanced correlation coefficient (ECC) को अधिकतम करने वाले parametric transform से moving को fixed पर मिलाता है। → table (kind="registration")।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

Evangelidis & Psarakis(2008)の前向き加法の反復: 毎回 moving と勾配を今の変換で標本化し、急降下画像 G = ∇I · ∂W/∂p(平均を引く)とゼロ平均の 2 枚から、相関係数の 2 次近似の最大へ Δp を解く。相関係数は明るさのアフィンな違い(利得とずれ)に不変 —— 負の利得(白黒の反転) や折り返しのある対応には効かない(分母が 0 以下になったら ValueError。それには register_mi)。

motion: "translation"(2)/ "euclidean"(3、回転 + 並進)/ "affine"(6)/ "homography"(8)。levels > 1 で粗から細のピラミッド(OpenCV の findTransformECC には無い追加。初期のずれの許容が広がる —— register_capture_range で測れる)。

実測(96×96 の featmatch.synthetic_scene、3 次スプラインで合成、tests/test_intensityreg.py

が固定): 並進 (2.5, -1.5) px の誤差 < 0.05 px、アフィンの 4 隅誤差 < 0.1 px、OpenCV 5.0 の findTransformECC と変換の差 < 0.05 px。

Args:

fixed: 基準(テンプレート)の 2-D 画像。

moving: 合わせる 2-D 画像(大きさは違ってよい)。

motion: ECC_MOTIONS。

n_iter: 段ごとの反復の上限。

eps: 相関係数の変化がこれ未満で収束。

warp_init: 初期の変換(2×3 / 3×3、fixed → moving)。None なら恒等。

levels: ピラミッドの段数(1 = 原寸だけ、None なら最も粗い段が 16 px 以上で最大 3 段)。

smooth_sigma: 前処理のガウスの σ [px] (OpenCV の gaussFiltSize=5 は σ ≈ 1.1)。0 で無し。

nonpositive: 相関の 2 次近似の分母が 0 以下になったとき(初期値が遠い・撮像が違う)。"raise"

(既定、OpenCV と同じく ValueError)/ "step"(相関を正へ戻す λ を選んで続ける。初期のずれの

許容が広がることがある —— register_capture_range で測れる)。

min_rho: 収束した相関係数がこれ未満なら ValueError("step" で白黒反転の組を「合った」と

返さないための床)。

Returns:

dict(kind="registration", method="ecc")。warp (3,3) / flow2d (2,H,W) の

(dy, dx) / warped(fixed の格子へ戻した moving、外側は 0)/ valid / valid_fraction /

metric_name="ecc_rho" / metric(返す warp での相関係数)/ iterations / converged /

history(反復ごとの、その反復の更新前の warp の相関。反復の上限で止まったときは

history[-1] は返す warp の値ではなく metric と違いうる)/ model / image_shape。

Raises:

ValueError: 画像が不正 / motion が違う / 引数が値域外 / 初期の変換が特異 / 反復が発散 /

テンプレートが画像の外へ出た / 相関が負で ECC が定義できない(nonpositive="raise")/

収束した相関が min_rho 未満。

उपयोग की विस्तृत guide

• matching_registration family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_multimodal_mi_registration — py -3.11 examples/poc_multimodal_mi_registration.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

features_match · ransac_homography · ransac_fundamental · registration_to_flow2d

इसी category के (intensityreg)

register_mi · register_ffd · registration_to_flow2d · register_accuracy_map · register_capture_range


*Provenance: intensityreg.py — MATCHREG operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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