fullseye

register_ecc — MATCHREG intensityreg op

使い方

強度相関係数(ECC)を最大にするパラメトリックな変換で moving を fixed に合わせる。→ table(kind="registration")。

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

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

実測(96×96 の :func: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: :data: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"(相関を正へ戻す λ を選んで続ける。初期のずれの 許容が広がることがある —— :func: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 未満。

詳しい使い方ガイド

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

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

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

features_match · ransac_homography · ransac_fundamental · registration_to_flow2d

同カテゴリ(intensityreg)

register_mi · register_ffd · registration_to_flow2d · register_accuracy_map · register_capture_range


Provenance: intensityreg.py — MATCHREG operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

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