solid op• 数据种类:image2d → table
• 调用:import dic; dic.speckle_quality(img: 'Any') -> 'dict[str, float]'(或 opspiv.get("speckle_quality"))
> 该算子的说明尚无译文,以下照原文给出。
撮ったスペックルが DIC に向いているかを 4 つの数字で返す。
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)なので、周期性のある背景があると乱れる。
• 環の代表半径は環内の半径の平均を使う。ビン番号を使うと半径 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 は 2 峰の分布を仮定するが、
スペックルの輝度分布は斑点の重なりで単峰になることが多く、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。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• 算法的正典(作者・年份)与用途见上面的族使用指南。
• (暂无)
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.