features_sift — MATCHREG featmatch op

• Data kinds: image2d → table

• Call: import fullseye as fs; fs.ledger.features_sift(image, n_octaves=None, n_scales=3, sigma=1.6, contrast_threshold=0.04, edge_threshold=10.0, max_features=2000, double_image=True) (implementation को सीधे call करना हो तो import featmatch; featmatch.features_sift(image, n_octaves=None, n_scales=3, sigma=1.6, contrast_threshold=0.04, edge_threshold=10.0, max_features=2000, double_image=True), registry से लेना हो तो opsmatchreg.get("features_sift"))

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

उपयोग

SIFT feature points और 128-आयामी descriptors (DoG के extrema, Lowe 2004)। → table (kind="features")।

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

DoG(ガウスの差)のスケール空間で 3×3×3 の極値を探し、2 次の当てはめで副画素・副スケールへ詰め、低コントラスト(|D| * n_scales < contrast_threshold、画像は [0, 1] の尺度)と稜線(ヘッセ行列の固有値比が edge_threshold 超)を捨てる。向きは勾配の 36 ビンの山(最大の 0.8 倍以上の山ごとに 1 点、同じ位置に複数の向きが出る)、記述子は 4×4 のマス × 8 方向。

座標の約束: xy は原画像の (x, y) 画素(画素の中心が整数)。double_image=True の拡大は標本点 i/2 の双線形なので、拡大後の座標の半分がちょうど原画像の座標になる(OpenCV の拡大は画素中心の扱いが違い、点が約 0.25 px ずれる —— 位置を直接比べるときの注意)。

実測(256×256 の synthetic_scene、tests/test_featmatch.py が固定): 90 度回転の対でホモグラフィの 4 隅誤差 < 0.5 px、0.5 倍の縮小で < 1.5 px、OpenCV の SIFT(5.0)と同じ対で 4 隅誤差が同じ桁。

限界: 記述子の組み立てはキーポイントごとの Python ループ(2000 点で数秒)。アフィン不変ではない(強い遠近では壊れる。features_accuracy_table で条件ごとに測れる)。

Args:

image: 2-D の濃淡画像(値の尺度は [0, 1] を想定。コントラストのしきい値がこの尺度)。

n_octaves: オクターブ数。None なら log2(min(H, W)) - 3(最低 1)。

n_scales: 1 オクターブあたりの尺度の数(Lowe の s、既定 3)。

sigma: 土台の σ(既定 1.6)。原画像は σ=0.5 のぼけを持つと仮定する。

contrast_threshold: 低コントラストを捨てるしきい値(既定 0.04)。

edge_threshold: 稜線を捨てる固有値比 r(既定 10)。

max_features: 応答の強い順に残す上限。

double_image: 最初に 2 倍へ拡大するか(既定 True、小さな特徴が拾える)。

Returns:

dict(kind="features", detector="sift")。xy (N,2) / scale (N,) [px] /

angle (N,) [度] / response (N,) / octave (N,) / descriptors (N,128) float32 /

descriptor_kind="float" / image_shape。

Raises:

ValueError: 2-D でない / 16 px 未満 / 非有限 / 定数画像 / 引数が値域外。

उपयोग की विस्तृत 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_part_locate_features — py -3.11 examples/poc_part_locate_features.py

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

features_match · ransac_homography · ransac_fundamental · registration_to_flow2d

इसी category के (featmatch)

features_orb · features_match · ransac_homography · ransac_fundamental · features_accuracy_table


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

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