wave_dominant_frequency — MATH wave op

• Data kinds: image2d → table

• Call: import fullseye as fs; fs.ledger.wave_dominant_frequency(image, window='hann') (implementation को सीधे call करना हो तो import mathops; mathops.wave_dominant_frequency(image, window='hann'), registry से लेना हो तो opsmath.get("wave_dominant_frequency"))

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

उपयोग

छवि की सबसे प्रबल आवर्तता (DC को छोड़कर 2-D FFT का सबसे बड़ा शिखर) की आवृत्ति, आवर्तकाल और दिशा लौटाता है (table)।

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

平均を引き、window="hann"(既定)なら 2-D の Hann 窓を掛けてから fft2 のパワーの最大(DC は除く)を探し、山の 3 点に対数の放物線を行・列それぞれで当ててビンより細かく読む(wave_fringe_period の 2-D 版。あちらは 1 軸の周期だけ)。window="none" は窓を掛けない(周期が画像幅にちょうど整数個入るときだけ厳密)。

返す dict: fx / fy(列方向・行方向の空間周波数 [cycles/px]、山は fx >= 0 の半平面に揃える)、freq_cpp(hypot(fx, fy))、period_px(1 / freq_cpp)、angle_deg(波数ベクトルの向き = 縞に垂直な向き。+列から +行へ回る角で [0, 180)。縞 cos(2π(x cosθ + y sinθ)/p) なら θ)、peak_fraction(山のビンとその鏡像が DC 以外の全パワーに占める割合 = 周期の確からしさ)、window。

★前提: 照明むらのような低周波は山を奪う(画像より長い周期は DC の隣に出る)。むらがある画像は先に背景を引くか高域通過を掛けること。

空の入力(image が 0 要素)は ValueError。拒否(ValueError): 2-D でない、どちらかの辺が 8 画素未満、非有限の値、平らな画像(周期が無い)、未知の window。

पूरी family का input contract (fail-closed)

mathops के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):

• complex input से ValueError — float64 में ज़बरदस्ती बदलने पर imaginary part चुपचाप छूट जाता है (numpy केवल ComplexWarning देता है और "सही दिखने वाला पर गलत" real number लौटाता है)। .real/.imag/abs() स्पष्ट रूप से लिखें, या complex data संभालने वाले complexops का उपयोग करें।

• masked array (masked elements वाला) से ValueError — mask हटाकर नीचे के raw values इस्तेमाल करने वाला implicit conversion अस्वीकार है। भरना है या हटाना है, यह स्पष्ट रूप से बताएँ।

• हर input पर NaN/Inf से ValueError (गिनती बताकर अस्वीकार — क्योंकि यह पूरे परिणाम में फैल जाता है)।

• Shape सख़्त है: 1-D और 2-D को implicit रूप से promote या broadcast नहीं किया जाता (vector slot में matrix या matrix slot में vector देने पर ValueError; reshape स्पष्ट रूप से करें)।

• Size की सीमा: matrix लेने वाले ops और stat_histogram के bins, mathops.MAX_ELEMENTS (2^26 ≈ 6.7 करोड़ elements) से अधिक होने पर ValueError देते हैं।

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

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

• wave_dominant_frequency_grating — py -3.11 examples/wave_dominant_frequency_grating.py

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

dynsys_poincare_section · dwt_inverse · chebyshev_eval_nd

इसी category के (wave)

wave_membrane_mode · wave_mode_frequencies · wave_nodal_lines · wave_two_slit · wave_fringe_period · wave_grating_orders


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

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