輪郭断片のマージ許容は最シャープ条件で実測する — ピントが合うほど隙間は広がる
画像処理
OpenCV
アルゴリズム
知識
判断
運用
エッジ検出ベースの輪郭は、ピントが合う(シャープな)フレームほど細くなり、ボケると太る。このため、帯や罫線で分割された対象の断片同士を隙間の許容値でマージする処理は、「ボケたフレームでは成立するのに、最良のピントのフレームだけで崩れる」という直感に反する逆転を起こす。静止画や軽いボケでチューニングした隙間許容値は、実機のオートフォーカスが合焦した瞬間に境界を跨ぐ。
判断基準
- 断片間隙間の許容閾値は、想定する最シャープの入力(ボケなし)での実測隙間に対してマージンを持たせて決める。実測値との差が数 % 未満(今回の例: 実測 7.1% vs 閾値 7%)なら、フレームごとの揺らぎで成否が反転する不安定帯にある。
- 隙間許容を広げるときの副作用(隣接する別対象同士の誤結合)は、隙間ではなく別の不変量(合成後の充填率、対象のアスペクト比など)に分担させ、隙間閾値自体は形状揺らぎの吸収に専念させる。
- マルチパス検出(二値化系・エッジ系など複数の前処理を併用)では、分割断片が別々のパスに現れることがある。マージをパス内に閉じず、全パスの断片を集めたパス横断マージも用意する。
- 画面録画ベースの再現ハーネスは鮮鋭度が実機より低い。録画は再エンコード(解像度縮小+圧縮)でソフト化しており、実機のネイティブ解像度でだけ発生する鮮鋭度依存の不具合を「再現しない=直った」と誤判定する。実機で再現するのにハーネスで再現しない場合は、まず入力の鮮鋭度差を疑う。
検証方法
ボケ量を 0〜1.5px 程度で振った決定的な摂動フレーム列で検出を回し、「シャープなフレームだけで候補が消える」逆転がないことを確認する。失敗フレームでは断片一覧(位置・サイズ)をログし、隙間の実測値と閾値の差を数値で確認してから閾値を動かす。緩和後は隣接対象の誤結合回帰(複数対象の同時撮影シーン)を必ず同時に確認する。画面録画由来のフレームを使う回帰には、アンシャープマスク(ガウシアンぼかしとの差分強調)で実機相当の鮮鋭度を模擬した変種を必ず併設し、素の録画とシャープ化の両方で通ることを合格条件にする。