ブリネル圧痕径の画像計測:合成画像でコードを確かめる
OpenCV でブリネル圧痕の直径を自動計測し HBW を計算するサンプルコードを、真値が分かっている合成画像で期待どおり動くか確かめました。技術デモであり、実際の圧痕の計測結果ではありません。
最新の再実行:2026-11-05
背景
ブリネル硬さでは圧痕の 2 方向の直径を読み取ります。画像で自動計測すれば読み取りの手間を減らせますが、それにはコードがピクセルを正しく mm に換算し、輪郭の当てはめと硬さの計算を正しく行い、画像が不適切なときは誤った値を黙って出さずに拒否する必要があります。
入力
スクリプトが作る合成グレースケール画像(1200 × 1200 ピクセル):明るい背景に暗い楕円の「圧痕」を置き、縁をぼかしてガウスノイズを加えたものです。校正値は 0.005 mm/ピクセル、試験条件は F = 29420 N、D = 10 mm と仮定しています。画像と結果は下のスクリプトで再生成できます。
処理の流れ
- ガウスぼかしの後、大津の方法で自動二値化し、オープニング処理で小さなノイズを除きます。
- 面積が最大の輪郭に楕円を当てはめて 2 軸の長さ(ピクセル)を求め、校正値を掛けて mm に換算します。
- 結果を信頼できるか確認します。輪郭が画像の端に接していないか、2 軸の差が 5% を超えていないか、輪郭が当てはめた楕円の 97% を満たしているかを見て、満たさない場合は値を出しません。
- ISO 6506-1 の定義式で HBW を計算し、平均直径 d が 0.24D〜0.6D の範囲にあるか確認します。
出力
真値と計測値の比較
| 真値 d1 / d2(ピクセル) | 計測 d1 / d2(ピクセル) | d 真値 → 計測(mm) | HBW 真値 → 計測 | 有効範囲内 |
|---|---|---|---|---|
| 800 / 800 | 799.5 / 799.5 | 4.0000 → 3.9975 (-0.06%) | 228.8 → 229.1 (+0.13%) | はい |
| 800 / 780 | 799.6 / 779.5 | 3.9500 → 3.9478 (-0.06%) | 234.9 → 235.2 (+0.12%) | はい |
| 500 / 500 | 499.9 / 499.8 | 2.5000 → 2.4993 (-0.03%) | 601.6 → 601.9 (+0.05%) | はい |
| 1000 / 990 | 999.4 / 989.4 | 4.9750 → 4.9719 (-0.06%) | 144.1 → 144.3 (+0.14%) | はい |
| 400 / 400 | 399.9 / 399.9 | 2.0000 → 1.9995 (-0.03%) | 945.5 → 946.1 (+0.06%) | いいえ |
明るさにむらがある場合
- 階調差 0: d = 3.9975 mm(-0.06%)
- 階調差 40: d = 3.9978 mm(-0.05%)
- 階調差 80: d = 3.9978 mm(-0.06%)
- 階調差 120: 結果を出さずに拒否:輪郭が画像の端に接し、当てはめた楕円の 84% しか満たさない
検証方法
合成画像は真値が分かっているので直接比較できます。5 組の直径の偏差は -0.06%〜-0.03%、HBW の偏差は +0.05%〜+0.14% でした。400 / 400 ピクセルの組は d = 2.0 mm で 0.24D = 2.4 mm を下回り、コードは正しく「有効範囲外」と判定しました。直線的な明るさの勾配を加えると、階調差 0・40・80 では結果はほぼ変わらず、120 では分割が信頼できなくなりコードは値を出しませんでした。2026 年 11 月 5 日に OpenCV 5.0.0 で再実行し、出力はリポジトリの記録と一行ずつ一致しました。
制限
- 合成画像には実際の圧痕の盛り上がった縁、傷、反射、レンズのゆがみがありません。この結果はコードの論理が正しいことを示すだけで、実際の試料での計測精度は分かりません。
- 校正値は仮定です。実際の計測ではスケールでピクセル寸法を決め、計測システムの不確かさを評価する必要があります。
- 5% と 97% の妥当性のしきい値は合成画像用の例で、実画像に使う前に決め直す必要があります。
- この例は ISO 6506-2 に沿って計測システムを検証しておらず、規格に適合した計測方法として使うことはできません。