はじめに
高度経済成長期から半世紀以上が経過し、当時整備された道路や橋梁などのインフラの老朽化と、その維持管理が大きな社会的課題となっています。
こうしたインフラを効率的に維持管理するうえで、損傷箇所や設備の位置情報を取得し、GIS上で点検結果や補修履歴と結び付けて管理することは有効な手段です。「何が、どこにあり、どのような状態なのか」を地理空間情報として把握することで、現地確認や補修計画に活用できます。
その情報を取得する方法の一つが、道路や鉄道を走行する車両に搭載したカメラの映像を、AIで解析する仕組みです。映像から損傷箇所や付属物を検出し、その結果を位置情報と結び付けることで、点検作業の効率化が期待されます。
ただし、車載カメラの映像から道路のひび割れやポットホール等の損傷、標識などの道路付属物を検出し、地図上に表示するときには、混同してはいけないものがあります。
「どこから撮影したか」と「何がどこに存在するか」は、異なる情報です。
また、「何回検出したか」と「地物がいくつ存在するか」も異なります。
車両の位置を高精度に測定できても、それだけで映像に写る地物の位置が正確に求まるわけではありません。同様に、画像認識の精度が高くても、複数のフレームに写った同じ地物を繰り返し数えれば、実際の地物数とは異なる結果になります。
本記事では、車載映像から得られた検出結果を、インフラ維持管理に利用できる地理空間情報へ変換する際の注意点を、投影幾何と計数のモデルに基づき、数式と具体例を交えて整理します。
1. 撮影位置・画像座標・地物位置を分ける
時刻 $t$ における情報を、次のように表します。
| 記号 | 意味 | 単位・座標系 |
|---|---|---|
| $\mathbf G_t$ | GNSSアンテナの位置 | 世界座標、m |
| $\mathbf C_t$ | カメラの投影中心の位置 | 世界座標、m |
| $\mathbf X_j$ | 静止した地物 $j$ の代表点の位置 | 世界座標、m |
| $\mathbf p_{tj}=(u,v,1)^\top$ | 地物の対応点の画像座標 | 同次画像座標 |
| $R_t$ | カメラ座標から世界座標への回転 | 回転行列 |
| $K$ | カメラ内部パラメータ | 焦点距離・主点など |
計算には、緯度・経度を直接用いず、局所的なメートル単位の座標系などを用います。
そもそも、GNSSアンテナとカメラは同じ場所にはありません。車体座標でのアンテナからカメラへのベクトルを $\boldsymbol\ell$、車体から世界への回転を $R_{WB,t}$ とすると、剛体固定を仮定して、
\mathbf C_t=\mathbf G_t+R_{WB,t}\boldsymbol\ell
となります。この取り付け位置の差に加えて、カメラの取り付け角度と、撮影時刻・測位時刻の対応も必要です。
映像ファイルや各フレームに付いた位置情報は、通常、こうしたセンサー側の位置を表します。画像中のすべての地物の位置を表すものではありません。
2. カメラは3次元の地物を2次元の画像面へ投影する
厳密には、地物の像はレンズを介して撮像面に形成されます。「レンズに投影された位置」ではなく、3次元空間から画像面への投影として扱います。
レンズ歪みを補正したピンホールカメラモデルでは、次式で表せます。[1]
s_{tj}\mathbf p_{tj}=K R_t^\top(\mathbf X_j-\mathbf C_t)
ここで $s_{tj}$ は、画像への投影で失われる奥行きに関係するスカラーです。逆向きに整理すると、
\mathbf X_j=\mathbf C_t+\lambda_{tj}\mathbf d_{tj},
\qquad
\mathbf d_{tj}=\frac{R_tK^{-1}\mathbf p_{tj}}
{\|R_tK^{-1}\mathbf p_{tj}\|},
\qquad \lambda_{tj}>0
となります。$\mathbf d_{tj}$ は世界座標での視線方向、$\lambda_{tj}$ はカメラから対象点までの距離です。
画像上の1点から得られるのは視線方向であり、その視線上のどこに対象があるかは、それだけでは決まりません。
物体検出の矩形やセグメンテーションのマスクも、基本的には画像内の位置・領域です。緯度・経度や実空間での面積が、自動的に求まったわけではありません。
GNSSを高精度化しても、対象までの距離は消えない
カメラ位置が完全に分かっていると仮定し、それを地物位置として登録すると、
\widehat{\mathbf X}_{tj}=\mathbf C_t
です。このとき3次元の位置誤差は、
\mathbf e_{tj}=\widehat{\mathbf X}_{tj}-\mathbf X_j
=-\lambda_{tj}\mathbf d_{tj},
\qquad \|\mathbf e_{tj}\|=\lambda_{tj}
となります。これは測位のばらつきではなく、観測地点と対象地点の取り違えです。
例えば、カメラから水平方向に20 m先の損傷を撮影した場合、カメラ位置を損傷位置として地図に登録すれば、水平位置は20 mずれます。GNSSの誤差を数cmにしても、この20 mの違いは残ります。
2次元地図では、上式の誤差の水平成分を評価します。斜距離と水平距離を混同してはいけません。
3. 位置を求めるために必要な空間的制約
不足している距離を決めるには、画像以外の情報、または複数画像の幾何関係が必要です。
| 方法 | 距離や位置を決める手掛かり | 主な成立条件 |
|---|---|---|
| ステレオカメラ | 左右画像の視差 | 校正、対応点、基線長 |
| 複数フレームの三角測量 | 移動による視線の変化 | 同一の物理点の対応、カメラ姿勢、十分な視差 |
| LiDARなどとの融合 | 対象までの測距 | センサー間の校正、時刻同期、対応付け |
| 路面・既知の3次元地図との交差 | 視線と既知面の交点 | 面の位置・形状の精度 |
| 学習による単眼深度推定 | 学習した距離の手掛かり | 対象環境での距離スケールと誤差の検証 |
単眼深度推定で深度画像が得られても、実距離が必要な用途ではスケールと精度の確認が必要です。また、単眼の相対的な3次元復元には、実空間のスケールと座標系を与える処理が必要になります。
路面が平面なら、完全な3次元モデルを作らなくてもよい
路面を局所的に、法線 $\mathbf n$ と定数 $b$ による平面
\mathbf n^\top\mathbf X+b=0
で近似できる場合を考えます。先ほどの視線を代入すると、
\lambda_{tj}=-\frac{\mathbf n^\top\mathbf C_t+b}
{\mathbf n^\top\mathbf d_{tj}},
\qquad
\mathbf X_j=\mathbf C_t+\lambda_{tj}\mathbf d_{tj}
と求まります。ただし、分母が0でなく、交点がカメラの前方にあり、対象点がその路面上にあることが条件です。視線が路面とほぼ平行なら、推定は誤差に敏感になります。
平面上の座標と画像座標の関係は、ホモグラフィとしても表せます。[2] したがって、道路損傷の位置推定に、常に密な3次元復元が必要なわけではありません。
一方、路面の勾配・段差や車体の揺れを無視すれば誤差が生じます。標識板など路面から離れた対象に、路面との交差をそのまま適用することもできません。標識の「位置」を支柱の接地点で定義するなら、その接地点の同定が必要です。
必要なのは、対象に適合する空間的制約を用い、その誤差を検証することです。
高精度な測位だけでは、位置精度を保証できない
距離 $r$ の対象に対して、視線方向の角度誤差が $\delta\theta$ ラジアンあると、微小角近似で横方向のずれは、
\delta x\approx r\,\delta\theta
となります。20 m先で1度の誤差なら、約0.35 mです。
また、直進・等速の近似で、時刻のずれ $\Delta t$ によるカメラ位置のずれは、
\delta x_{\mathrm{time}}\approx v|\Delta t|
です。時速40 km、時刻差0.1秒なら約1.11 mになります。旋回中は姿勢のずれも加わります。
一般には、位置推定 $\mathbf X=g(\mathbf q)$ に含まれる測位、姿勢、画像座標、距離、時刻などの不確かさを、一次近似で
\Sigma_X\approx J\Sigma_qJ^\top,
\qquad J=\frac{\partial g}{\partial\mathbf q}
と伝播させて評価できます。ただし、これは局所的な近似であり、誤った対応付けや誤った路面モデルまで自動的に評価するものではありません。独立した基準点・実測対象との照合も必要です。
4. 300回検出しても、地物が300個あるとは限らない
ここでは、30 fpsで撮影し、全フレームを処理する場合を考えます。30 fps以上かどうかは撮影設定によります。間引いて処理する場合は、録画のfpsではなく、実際の処理頻度を使います。
同じ地物が見え続ける時間を $T_j$ 秒、有効な処理頻度を $f$ fpsとすると、写り込むフレーム数は、おおよそ
n_j\approx fT_j
です。30 fpsで10秒間写れば約300フレームです。
さらに、同じ撮影幾何のもとで、対象が見える間に車両が進む距離を $L_j$、一定の走行速度を $v>0$ とすると、
T_j\approx\frac{L_j}{v},
\qquad n_j\approx\frac{fL_j}{v}
となります。つまり、同じ地物でも、遅く走るほど観測回数が増えます。
例として、$f=30$ fps、$L_j=30$ mを仮定します。
| 走行速度 | m/s | 見える時間 | フレーム数の概算 |
|---|---|---|---|
| 60 km/h | 16.67 | 1.8秒 | 54 |
| 30 km/h | 8.33 | 3.6秒 | 108 |
| 10 km/h | 2.78 | 10.8秒 | 324 |
この表は、視界・遮蔽などの条件を固定した理想化です。実際の検出回数は、認識漏れやブレにも依存します。停止中には $L_j/v$ の式を使えませんが、対象が見え続ければ停止時間に応じて観測回数が増えます。
地物 $j$ の可視フレーム集合を $\mathcal V_j$、フレーム $t$ で1回検出できる確率を $p_{tj}$ とすると、分割・誤検出を除いた検出回数の期待値は、
\mathbb E[N_j]=\sum_{t\in\mathcal V_j}p_{tj}
です。この期待値の式にフレーム間の独立性は不要です。一定の $p$ を仮定すれば $\mathbb E[N_j]\approx pfL_j/v$ となります。
同一地物の連続観測は相互に似ているため、300フレームを300件の独立した地物や独立した検証標本として扱うこともできません。
5. 未補正のヒートマップは何を表しているのか
フレーム $t$ の検出数を $m_t$、撮影地点の水平位置を $\mathbf c_t$、平滑化のためのカーネルを $k_h$ とします。全検出を撮影地点に置いたヒートマップは、
H_{\mathrm{raw}}(\mathbf x)
=\sum_t m_t\,k_h(\mathbf x-\mathbf c_t)
と書けます。
この値には、地物の存在だけでなく、滞在時間、走行速度、フレーム処理頻度、通過回数、可視範囲、検出漏れ、分割検出が混ざります。低速走行や信号待ちの場所が強くなる可能性があります。
しかも、その強い場所は「対象を観測した車両の場所」であり、「対象が存在する場所」とは限りません。一つの固定地物が、車両の走行軌跡に沿った複数の点として記録されることになります。
これを、そのまま「損傷件数の密度」や「道路の劣化度」と呼ぶことはできません。
一方、ヒートマップという表現方法自体が不適切なのではありません。重複を統合した地物の水平位置を $\mathbf x_j$ とすれば、例えば
H_{\mathrm{object}}(\mathbf x)
=\sum_{j=1}^{M}w_j\,k_h(\mathbf x-\mathbf x_j)
と定義できます。$w_j=1$ なら件数、適切に測定した面積や重症度を重みにすれば、その指標の空間分布になります。密度を表すなら、カーネルの正規化、帯域幅、単位も明記します。
ただし、重複を除くだけで未検出の地物まで補えるわけではありません。地域を比較するなら、調査範囲や検出性能の違いも確認する必要があります。
道路区間ごとの指標なら、例えば
D_s=\frac{U_s}{\ell_s}
と定義できます。$U_s$ は調査で確認した区間 $s$ 内のユニークな損傷件数、$\ell_s$ は調査済み延長です。車線別の調査なら、分母を車線延長にするなど、集計対象を揃えます。複数回走った距離と、重複を除いた調査対象延長も区別します。
単純に検出回数へ速度を掛けても、地物の同一性、可視距離、遮蔽、分割数、位置の違いは解決しません。一定距離ごとにフレームを抽出する方法は速度による偏りを抑えますが、地物の一意化を保証するものではありません。
6. アノテーションの単位も「個数」を変える
一つの長いひび割れを一つの矩形で囲む場合と、複数の短い部分に分けて囲む場合では、同じ現象に対する教師ラベルの個数が変わります。
フレーム $t$ において、地物 $j$ に対応する検出の個数を $a_{tj}$ とすると、全フレームでの検出総数は、誤検出などを除いた単純化のもとで、
N_{\mathrm{det}}=\sum_t\sum_j a_{tj}
です。$a_{tj}$ は未検出なら0、一つとして検出されれば1、三つに分割されれば3になります。
一つの地物が300フレームで毎回三つに分割されれば、検出は900件です。しかし、管理対象としての地物が900個存在することにはなりません。
アノテーション方針は学習結果に影響しますが、出力の分割数を完全に決定するわけではありません。画像の切り出し、遮蔽、閾値、後処理でも変化します。また、複数地物を一つにまとめて検出する場合は、過少計数も生じます。
特にひび割れは、「何を一件と数えるか」自体を定義する必要があります。用途によっては、件数より、延長、面積、幅、区間ごとの損傷率が適切です。
セマンティックセグメンテーションはクラス領域を示すもので、地物IDを直接与えません。インスタンスセグメンテーションも、単独フレームでの分離だけでは、フレームをまたぐ同一性を保証しません。
マスクの画素数は実面積ではない
画像座標から路面座標への写像を $\mathbf x=g(u,v)$ とし、その座標が対象平面上のメートル単位の直交座標なら、マスク $\Omega$ に対応する面積は、
A=\iint_{\Omega}
\left|\det\frac{\partial g}{\partial(u,v)}\right|\,du\,dv
と表せます。遠近によって1画素が表す面積が変わるため、斜めから撮影したマスクの画素数を、そのまま実面積として比較できません。起伏のある表面の面積には、さらに表面形状を扱う必要があります。
7. 追跡IDと、管理台帳の地物IDは同じではない
複数物体追跡は、検出結果をフレーム間で対応付ける技術です。例えばSORTは、検出に基づく追跡とデータ対応付けを扱う研究です。[3]
ただし、追跡が途切れれば同じ地物に別IDが付くことがあり、逆に異なる地物のIDが入れ替わることもあります。別日に再走行したときの同一地物判定も、短時間の映像内追跡だけでは解決しません。
さらに、同じ物体を追跡できても、矩形の中心が常に同じ物理点を示すとは限りません。視点や遮蔽で矩形中心は変わるため、その中心を無条件に三角測量するのは危険です。
管理用データでは、少なくとも次の三つを分けると整理しやすくなります。
| 情報 | 内容 |
|---|---|
| 観測 | 撮影日時、フレーム、撮影位置・姿勢、矩形・マスク、分類スコア |
| 地物 | 一意なID、位置・形状、種類、位置推定法、位置の不確かさ |
| 点検時点の状態 | 地物IDと点検日時に対応する損傷の程度、確認結果、補修状況 |
同じ点検走行で繰り返し写ったことと、別日の点検で再確認したことは、意味が異なります。観測履歴を残しながら、集計対象に応じて統合する必要があります。
なお、分類スコアが高いことは、位置誤差が小さいことを意味しません。認識の確からしさと、位置の不確かさは別の属性です。
8. インフラメンテナンスで評価すべきもの
適否は、最終的な用途と必要精度に対して判断します。
| 用途 | 撮影地点への表示の位置付け | 追加して確認すべきこと |
|---|---|---|
| 映像の検索・再確認 | 観測地点の索引として利用できる | 撮影地点である旨、日時と映像の対応 |
| 要確認区間の抽出 | 粗い候補抽出として利用できる場合がある | 区間の誤割当、重複、検出漏れ |
| 損傷位置・設備位置の台帳化 | 撮影位置の代入だけでは位置根拠が不足する | 対象位置の推定、地物の一意化、実測との照合 |
| 補修数量・施工箇所の決定 | そのまま数量・位置の根拠にはできない | 要求精度、寸法・面積、現地確認など |
実測した地物位置 $\mathbf x_j^{\mathrm{ref}}$ と推定位置 $\widehat{\mathbf x}_j$ を、一対一に対応させて水平位置を評価するなら、例えば
\mathrm{RMSE}_{xy}=
\sqrt{\frac1M\sum_{j=1}^{M}
\|\widehat{\mathbf x}_j-\mathbf x_j^{\mathrm{ref}}\|^2}
を使えます。併せて誤差の95パーセンタイル、最大値、地物単位の適合率・再現率、重複率、過剰統合を確認します。対応できなかった地物は、位置誤差の集計から消すだけでなく、未検出・誤検出として別に評価します。
同じ区間を異なる速度で走行して、地物数と位置がどれだけ変化するかを検証することも有効です。画像単位の検出精度だけでは、この問題は評価できません。
9. 車載映像とAI物体検出結果を地図に展開する道路維持管理の事例
このような空間解析を取り入れた実例として、アーバンエックステクノロジーズ社の「RoadManager路面評価」があります。
https://urbanx-tech.com/news/2768
同社の公式説明では、車載映像から3次元復元を行って路面の鳥瞰図を生成し、50 cm四方のグリッドへひび割れを割り当てて評価する手法が示されています。
関連する公開特許では、SfMによる点群・カメラ姿勢の推定、GPS走行経路を利用したスケール推定、路面平面への画像投影、画像座標から鳥瞰図座標への損傷情報の変換が説明されています。
これは、画像認識の結果を実空間の路面上に対応付けるために、幾何学的な処理を組み合わせた例です。
おわりに
車載映像とAI物体検出による道路維持管理手法は有用と考えますが、画像上の検出結果を管理可能な地理空間情報にするには、空間解析等の適切な後処理が必要になります。
\boxed{\text{撮影位置}\ne\text{地物位置}}
\qquad
\boxed{\text{検出回数}\ne\text{地物数}}
この二つの区別は、GNSSの精度や画像認識モデルの性能を上げるだけでは解消しません。
対象位置への変換根拠、同一地物の統合、計数単位の定義、用途に応じた精度検証を欠いた結果を、正確な損傷位置や損傷件数としてインフラ維持管理の判断に用いることは適切ではありません。
一方、撮影地点を示した観測記録や、現地確認のための候補抽出として使うことには意味があります。何を計測し、何を推定し、何を数えているのかを明示することが、信頼できる道路点検データの出発点です。
参考資料
- OpenCV — Camera Calibration and 3D Reconstruction — ピンホールカメラモデルと内部・外部パラメータ。
- OpenCV — Basic concepts of the homography explained with code — 平面と画像の射影関係。
- Bewley et al., Simple Online and Realtime Tracking, ICIP 2016 — 検出結果のフレーム間対応付けを扱う追跡研究。
本記事の速度別計数例、ヒートマップの比較式、誤差例は、上記の基礎概念を踏まえて説明用に構成・導出したものです。特定の点検規格の合否基準を示すものではありません。