← 概要へ戻る

網目密度の自動測定アプリ

網目密度の自動測定アプリ

背景・課題

生地の品質管理では「1インチあたりの穴数(C: 横方向、R: 縦方向)」を測ります。現場では専用の拡大鏡(1インチ角の開口部と目盛を持つ治具)を生地に当て、目で数えて用紙に手書きし、後から表計算ソフトへ入力していました。目視では0.5刻みが限界で、撮影位置ごとに数え直す手間も大きく、記録の転記ミスも避けられません。 制約も厳しい条件でした。撮影者・距離・ズーム・傾きは毎回変わり、固定できません。端末は現場のiPadで、アプリストアを経由せずに配れること、通信が不安定でも動くことが前提です。そこで「撮った1枚から、コード側で撮影条件のばらつきを吸収して自動で数える」ことを目標にしました。

背景・課題

主要機能・特徴

拡大鏡の目盛から開口部の四隅を自動で見つけ、1インチあたりの穴数を横(C)・縦(R)で出します。結果は画像の上に番号付きの目盛として重ねて描くので、作業者は「どこまで数えた値なのか」を目で確認できます。 複数枚を一括で読み込んで一覧表にし、品質マークとあわせてCSVで書き出せます。表示はタイ語を既定に、日本語・英語へ切り替え可能です。現場の言語で使えることを、機能の一部として設計しました。

主要機能・特徴

技術選定・アーキテクチャ

配布経路の制約から、アプリは npm・ビルド・外部CDNを使わない単一のHTMLファイルとして作りました。iPadのファイルアプリやブラウザ(組み込みビューア含む)で開くだけで動き、通信が無い場所でも使えます。処理はすべて端末内のCanvas 2Dで完結し、写真が外部へ出ることもありません。 機械学習も検討しましたが、学習に使える正解付きの画像が数十枚しかなく、丸暗記になるリスクが高いため見送りました(導入するなら、構造が既知であることを活かした合成データでの学習を想定しています)。代わりに、物理的に保証されている事実――開口部は1インチ正方である――を基準に置く、決定的な画像処理で組み立てました。 処理の流れ: 写真 → 目盛の先端から開口部の四隅 → ホモグラフィで1200px=1インチの正方形に正対化 → 穴の検出と2次元格子フィッティング(失敗時は1次元の周期推定) → 倍音補正 → 0.5刻みへ丸め。

技術選定・アーキテクチャ

技術的工夫:「1インチ」を基準に置く

撮影距離・ズーム・傾きが毎回違うと、「何ピクセルが何ミリか」が分かりません。そこで開口部の1インチ正方形を基準にしました。四隅が求まればホモグラフィ(8自由度)で正方形に変換でき、1200px=1インチが自動的に成り立つので、px/inch を別に求める必要がなくなります。台形歪みと傾きも同じ一手で消えます。 四隅の精度が全体を決めるため、実測で辺ごとの信頼度を調べました。目盛が細かい辺(1mm)は粗い辺より4〜13倍安定していたので、四角は「細かい2辺の交点+目盛の間隔×1インチ」だけから組む設計に変えました。構造上つねに正方形になるため、縦横比が崩れた誤検出が原理的に起きません。これだけで測定できる枚数が31→33枚に増えました。 さらに、目盛の先端が開口部の縁のわずかに外で終わる分だけ四角が平行移動していることを、手動ラベルと実機での指調整という独立した2系統の実測が同じ値(約1.5%)を示すことで確かめ、補正しました。

改善前
改善前
改善後
改善後

技術的工夫:信用できない値は出さない

品質管理の数値は、間違った値が出るほうが「測れない」より危険です。そこで、四角の縦横比が実物の歪みの範囲(実測で最大約2.9%)を超えたとき、目盛が検算で食い違ったとき、格子の占有率が足りないときは、値を出さず、撮り直しの具体的な指示を表示します。 この方針は、速度改善にも適用しました。ソートを累積和に置き換える最適化などで処理時間を27〜45%短縮しましたが、すべて「出力が1ビットも変わらない」ことを確認できたものだけを採用しています(表示が後から変わる遅延処理は、数値への信頼を損なうため採りませんでした)。

技術的工夫:信用できない値は出さない

技術的工夫:自動で駄目なら、指で直せる

自動検出が外れる画像は必ずあります。そのとき作業者が詰まらないよう、四隅を指でつまんで動かすと即座に測り直す操作を用意しました。つかんだ位置が指の下で飛ばないこと、ルーペで拡大して確認できること、操作中の案内が画面の隅を隠さないことなど、iPadで触って詰めました。 組み込みビューアには、確認ダイアログを無視する、ファイル保存を遮断する、画面タップのたびにヘッダーが出入りして表示サイズが変わる、といった癖があります。確認は自前のダイアログに、保存は本文の表示とコピーに置き換え、写真の大きさ変化は ResizeObserver で追従させて、枠が写真から離れないようにしました。

技術的工夫:自動で駄目なら、指で直せる

検証の姿勢:失敗の記録を残す

精度改善は、仮説→実測→採否の繰り返しです。2次元FFT、ハフ変換、走査線ごとの本数カウント、残差を品質指標に使う案などを実際に試し、効かなかった理由を数値つきで記録しました。たとえば走査線カウントは、横糸がはしご状に並ぶ構造のため糸を数え落とすことを突き止め、補正すれば偏りは消えるものの、既存方式と誤差が強く相関して改善にならないことまで確認して撤去しました。 定数は必ず実測で決め、調整に使った画像と使っていない画像に分けて過適合を確認します。当初の仮説が外れていても(自己相関の導入では想定した効き方は実測で否定され、別の理由で改善が出ました)、結果を正直に記録することを徹底しています。

検証の姿勢:失敗の記録を残す

成果・インパクト

50枚の実写サンプルで、49枚が測定でき、両軸とも目視値から±0.5以内が34枚(69%)、±1.0以内が39枚でした。調整に使っていない16枚でも悪化しないことを確認しています。処理時間は1枚あたり、PCで約2秒、iPadで約4秒です。 課題も把握しています。表示は0.5刻みが限界で(四隅を数ピクセル動かすだけで生値が約0.14動くため、0.1刻みはまだ信頼できません)、測定できなかった1枚は手動の四隅調整で救う運用です。新しい色や形状の生地は、現状の探索範囲の外に出ると経路ごと外れることまで切り分け済みで、製品ごとの範囲切り替えを今後対応していきます。誠実に測れる範囲を広げ続けることを、このアプリの開発方針にしています。

成果・インパクト
← 概要へ戻る