低コントラスト境界の輪郭検出は CLAHE 強調パスを併用し外側輪郭限定でノイズを抑える
画像処理
OpenCV
アルゴリズム
知識
判断
白背景に白い対象のように境界の輝度差がほぼない場合、通常閾値の Canny や adaptiveThreshold では境界が全く出ず、パラメータ(閾値・blockSize・膨張)をいくら調整しても輪郭は現れない。手掛かりが対象周囲の淡い影しかないためで、この場合は CLAHE(局所コントラスト強調)を前段に入れたエッジ検出パスを既存パスに追加すると、影の境界が明瞭なエッジとして現れ、ほぼ閉じた輪郭リングが得られる。
判断基準
- 中間画像(二値化結果・エッジ画像)を可視化し、境界がそもそも画素として存在しないことを確認してから CLAHE 採用を判断する。閾値調整で拾える弱い境界なら CLAHE は不要。
- CLAHE は背景の微細テクスチャやノイズも同時に増幅するため、そのまま全輪郭を候補にすると過検出や既存ケースの位置ずれ回帰が起きる。CLAHE パスは外側輪郭のみ(OpenCV では RETR_EXTERNAL)に限定し、モルフォロジーのクローズも強めにして、輪郭リングの外形だけを候補化するとノイズ増幅の副作用を抑えられる。
- 追加パスは既存パスと併用して候補を統合し、重複は IoU・包含率ベースの統合フェーズに任せる。
落とし穴
- パラメータの盲目的な調整を繰り返す前に中間画像を可視化する。境界が存在しないのか、存在するが閾値で落ちているのかで打ち手が全く異なる。
- パス追加はフレームあたりの処理時間を増やす。リアルタイム検出ではフレーム処理時間を実測し、許容範囲か確認する。
検証方法
低コントラストの実写サンプルで対象全体の輪郭が1件検出されること、および既存の通常コントラストのサンプル群で検出数・位置の回帰がないことをテストで確認する。