piv_peak_locking — PIV assess op

• Data kinds: flow2d → table

• Call: import fullseye as fs; fs.ledger.piv_peak_locking(flow, bins=20) (implementation को सीधे call करना हो तो import pivops; pivops.piv_peak_locking(flow, bins=20), registry से लेना हो तो opspiv.get("piv_peak_locking"))

उपयोग

peak locking की शक्ति। भिन्नात्मक भाग का distribution uniform से कितना हटा है।

Subpixel estimation में एक bias होता है जो वास्तविक displacement के भिन्नात्मक भाग को, जब वह 0 या 0.5 के पास हो, उनकी ओर खींचता है (PIV की पाठ्यपुस्तकीय systematic error, जो इसलिए उत्पन्न होती है क्योंकि correlation peak का shape fit किए गए function के shape से अलग होता है)। जब तक flow एक समान न हो, भिन्नात्मक भाग लगभग समान रूप से वितरित होना चाहिए, और उससे विचलन मापा जाता है।

index c0 एक chi-square प्रकार का विचलन है जो sample size से स्वतंत्र है:

sum((n_i - n_bar)^2 / n_bar) / (bins - 1)। समान वितरण से sampling करने पर अपेक्षित मान 1 आता है, इसलिए 1 के आसपास यह समान वितरण से अलग नहीं पहचाना जा सकता; जितना बड़ा, उतना अधिक biased।

★ लेकिन यह index मानता है कि "वास्तविक displacement का भिन्नात्मक भाग समान है"। कम windows या धीरे-धीरे बदलते displacement वाले fields में, ground truth का अपना c0 भी बड़ा हो जाता है (मापा गया: linear ramp के ground truth के लिए 82 —— window grid में केवल 19 columns हैं, इसलिए भिन्नात्मक भाग केवल असतत रूप से दिखता है)। इसलिए c0 को उसी इनपुट के ground truth से तुलना करके पढ़ें।

निर्णायक निदान कुछ और है —— एक समान translation के भिन्नात्मक भाग को 0 से 0.9 तक बदलें और देखें कि अनुमान विकर्ण पर हैं या नहीं। मापा गया (win=32, density 0.02):

========== ================= ==================

method RMS of frac. err. max abs. error

========== ================= ==================

gauss3 0.0037 px 0.0088 px

parabolic 0.0104 px 0.0151 px

centroid 0.2259 px 0.3701 px

========== ================= ==================

centroid वास्तविक 0.1 के लिए 0.02 और 0.9 के लिए 0.98 उत्तर देता है —— integers की ओर खींचने वाला पाठ्यपुस्तकीय S-curve। यह पुष्टि करता है कि जो दिखना चाहिए था वह दिखा, और यह implementation का दोष नहीं है (इसीलिए सभी 3 रखे गए हैं)।

Args:

flow: (2, h, w)।

bins: भिन्नात्मक भाग के histogram की classes की संख्या।

Returns:

dict: c0 (दोनों components को मिलाकर index), hist ((2, bins)),

frac_mean / frac_std, bins।

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

• piv_displacement 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 करते हैं)

• piv_field_analysis_tour — py -3.11 examples/piv_field_analysis_tour.py

• poc_battery_electrode_breathing — py -3.11 examples/poc_battery_electrode_breathing.py

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

—

इसी category के (assess)

piv_sample_at_windows · piv_error_stats · piv_time_statistics


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

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