solid op• 資料種類:image2d → table
• 呼叫: import fullseye as fs; fs.ledger.speckle_quality(img: 'Any') -> 'dict[str, float]'(要直接呼叫實作,import dic; dic.speckle_quality(img: 'Any') -> 'dict[str, float]';從台帳取用則 opspiv.get("speckle_quality"))
以 4 個數字回傳所拍攝的散斑是否適合 DIC。
pivops 與 fullseye 中都沒有(speckle_filter 是 SAR 斑點雜訊的 去除,是另一回事)。用於在拍攝現場判定「這個圖案能否量測」的介面。
參數
img 散斑影像(2 維)。輝度的標度不限,但 coverage
以影像內最小、最大值為基準的相對閾值來計數。
回傳值為 dict:
mig 平均輝度梯度 sqrt(mean(Ix² + Iy²))。
Pan 等人的 DIC 品質指標。位移變異數的下限
由 σ_noise / (mig √N) 決定,因此它
小的話怎麼做都量不出來。
grad_rms 僅 x 方向的 sqrt(mean(Ix²))。
coverage 超過 0.2*(max-min) + min 的像素比例。
mean_blob_diameter_px 斑點平均直徑 [px] 的估計值(見下)。
★ mean_blob_diameter_px 是估計而不是量測
以線性內插求出扣除平均後影像的自相關徑向平均降到 0.5 的半徑
R½,回傳 diameter = √2 · R½。√2 的依據:隨機撒布 1σ 半徑 r 的
高斯斑點所得場的自相關是 1σ 為 r√2 的高斯,因此
R½ = 2r√(ln2),斑點的 FWHM 為 2r√(2ln2),比值恰好是 √2。
也就是說,只有在斑點為高斯且位置無相關這一假定之下才與 FWHM 一致。
實測(左:解析散斑,改變 1σ 半徑並調整個數使覆蓋率一致。
右:piv_synth_particles,diameter_px 是 2σ,因此 FWHM 為
1.1774 × diameter_px):
1σ r FWHM 估計 比 | d_px FWHM 估計 比 cov mig
0.6 1.41 1.36 0.97 | 1.5 1.77 1.80 1.02 0.043 0.1351
1.0 2.35 2.39 1.01 | 2.5 2.94 2.93 1.00 0.106 0.1676
1.6 3.77 3.77 1.00 | 4.0 4.71 4.69 1.00 0.159 0.1775
2.5 5.89 5.77 0.98 | 6.0 7.06 7.01 0.99 0.286 0.1764
4.0 9.42 9.18 0.97 |
高斯斑點在 3 % 以內。真實的散斑(印刷、噴塗)並非
高斯,因此這張表是確認換算的算術正確,
而不是實拍中的精度。會偏向哪裡:
• 斑點形狀不是高斯時,√2 的換算本身就會偏。
• 有低頻不均(照明梯度)時,自相關的尾部被抬高,結果偏大。請先做高通濾波。
• 自相關是循環相關(FFT),因此有週期性背景時會被擾亂。
• 環的代表半徑使用環內半徑的平均。若使用 bin 編號,半徑 1 的環中會混入對角的 √2,在 1σ=0.6 px 時直徑為 0.80 倍(偏小 2 成)。
★ MIG 是截斷下限的指標,而不是要最大化的目標函數
在上面左表中,mig 斑點越細越大(1σ=4.0 時 0.0384,
1σ=0.6 時 0.1127,2.9 倍)。但直徑 1.4 px 的散斑取樣
不足,在 examples/poc_dic_strain.py 第 9 節的實測中偏差與離散都
最差。最大化 MIG 會選中量不了的散斑。
右表的粒子像在 d=4.0 達到頂點,d=6.0 時略微下降 ——
同一指標會因輸入的產生方式而單調或不單調,因此
不要看絕對值,而要用於同樣拍法之間的比較。
★ coverage 的閾值不是 Otsu
是 0.2*(max-min) + min 的固定閾值。Otsu 假定雙峰分布,但
散斑的輝度分布常因斑點重疊而呈單峰,用 Otsu 的話
閾值會隨影像變動而無法比較。固定的話至少
同一標度的影像之間可以比較。
★ MIG 有單位
「輝度 / px」。以 8 bit 整數原樣傳入或正規化到 [0, 1] 後傳入,
會相差 255 倍。只能在同一標度的影像之間比較。
fail-closed
• 不是 2 維 / 小於 8x8 / 含 NaN、Inf。
• 影像完全均勻(max == min)—— 1 個斑點也沒有。
• 自相關不降到 0.5 以下(斑點比視野大)—— 只有此時 mean_blob_diameter_px 為 nan。其餘 3 個照常回傳。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• 演算法的正典(作者、年份)與用途見上面的族使用指南。
• piv_field_analysis_tour — py -3.11 examples/piv_field_analysis_tour.py
table 作為輸入)—
solid)strain_from_displacement · correlation_quality
*Provenance: dic.py — PIV 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.