【機械の目 Vol.5】撮影日の異なる同一地点の映像から差分抽出は可能か?

始めに...今回の記事は、完全に実験段階のものです。
下記のような妄想めいたビジョンに対して、どこまで具現化に肉薄できるか?についてのドキュメンタリーとしてお読みいただければ幸いです。
妄想めいたビジョン
- 似たような画像を比較して、変わった部分だけを見ることができたら...
- 人が映像や画像を見るまでもなく、以前と何か変わっているということを自動的にチェックしてくれたら...
そんな夢のような話を少しでも現実的にすべく、特徴点抽出の技術と、差分抽出の技術にトライしています※。
※このトライアルは、R&Dセンターと株式会社コネクティボさんで共同してやっています。
考えていること
もし
- 巡視点検の記録映像で、類似するシーンの特定を"正確な緯度経度"と"物体認識"で行えた
- 同じ場所に同じものが写っている複数の候補から、画像類似度で2枚を抽出することができた
- 抽出した任意二枚の映像を特徴点抽出して、幾何補正をした上で、差分を抽出することができた
としたら
⇒人はすべての画像の比較を自分の目でする必要はなく、機械の目がマークしてくれた"変わっているらしい"部分のみを見て、自らの視覚情報処理の大半を肩代わりさせられないか?
記録映像の画像比較が有効である理由
以下のようなことは言えませんか?
例えば、いつも通勤で通る道すがら、突然新しいコンビニが出来ていて
「はて?ここは以前なんだったかな?」
例えば、ある映像が少しづつ変化していくのがバラエティのTVでクイズになっているのはなぜ?
(二枚の画像を並べればわかるのに、時系列で変化しても気づけない!)
【人間は、ゆっくりとした時系列変化に気づけない。記憶もあいまい】
【人間が変化に気づくのは大きな変化として認知できた場合だけ。細かな変化には気づけない】
「土木構造物の経年変化、設備、施設の故障、欠落に気付くことで予防的な保全や修繕計画への根拠としたい。」と言う時に、人の記憶だけを頼ることはできない(だから点検調書などで写真添付や映像記録のエビデンスを残す必要がある)...という仮説。理由は前述の通り。
これまでの画像比較(差分抽出)
ネットで画像比較、差分抽出を検索をすると、多くは、
- 正確に同じ位置
- アングルが同じ
- 同一サイズの画像を比較する
ことを前提として差分画像(ドットの引き算)を得るものが見つかります。
WinMergeに簡易画像比較の機能が加わりましたし、ImageMagickのcompositeコマンドでも差分画像を得られます。
今、欲しいのは、屋外の巡視点検で人が見ているリアルな映像を使って、過去の同一地点との差分を見出すことです。
その特徴は
- 天候の変化がある
明度、彩度、露出が異なる - アングルが違う
毎回全く同じアングルで撮影できることはあり得ない - 撮影されている範囲が違う
画角も離隔距離も違います
つまり、映っている対象の特徴を把握した上で、似通っている度合いを評価し、その結果によって二枚の画像をマッピングし、片方をもう片方に合わせた上で、差分を見つけなければなりません。
そのような手法として、OpenCVで実装されている特徴点抽出、マッチング、差分抽出の機能を使えないかどうか検証してみます。
特徴点抽出、幾何変形、差分抽出
OpenCV(インテルが開発しオープンに提供)に一礼をして
- 特徴点抽出、マッピング
- 幾何変形
- 差分抽出
グレイスケール(階調差による検出)
RGB(色情報の差分)
GSoC背景差分(背景情報の除去)
を実行してみます。
プログラムの細かな内容はともかく、まずは結果をご覧ください。
レタッチした静止画の二枚を比較する場合
一枚の写真をPhotoshopで編集して、編集した部分をプログラムが探せるかどうかを確認しました。
(「抽出できて当たり前でしょ!」という声が聞こえてきそうです)
ここでは、実際に高速道路上を走行した際の車載映像から、実際に使いそうなシーンを抽出して、加工を加えました。
- コンクリートの傷、クラック

- ガードレールの錆

- 街路灯の消失

- 看板が消失

- 看板が傾く

- クッションポールの消失

- 植生の変化

全く同じ画像を加工した場合は、RGBの差分において、かなり正確に変化点が分かります。
つまり、正確に撮影時の条件や画角を選択できれば、綺麗に差分を出せる可能性があると言えます。
図面やテキストデータなどPCデータを比較する場合
(すでに良く行われている内容ですが)Office文書の差分をマークする※とか、図面の編集箇所をマークアップするようなことです。
Excelで書いたレイアウト図を若干変えてみました。
※ちなみにPCデータの編集履歴管理は、WinMergeというソフトウェアでできます。

テキストエディタで文字を変更した場合でもわかるのかを試してみました。(もちろん、テキストの変更管理はdiffなどでやるのが普通ですね)
テキストやExcelではあまり面白くありませんが、図面の変更点を表示するならアリかもしれません。
ただし、どこがどのように代わっているのかを説明する手段はなく、ただ絵的に代わっていると指摘するに留まります。
少し変化のある写真(イラスト)を比較する場合
サイゼリヤのキッズメニューの"間違い探し"を大人の方法解決する!として、河本の実験室というblog記事 がありました。
ここに過去問がいっぱいあるので、ダウンロードして検証してみました。





引用元:サイゼリヤホーム > エンターテイメント > キッズメニュー間違い探し
撮影日の違う同一地点の映像を比較してみると...
- 人が見れば同じ場所だと分かるが

- 人が見れば同じ場所だと分かるが

- 木が生い茂ったのが分かるような

- ビニールシートが無くなっているのが分かるような

- なんとなく草が生えたことが分かるような...

画角や色合いが変化しただけで、全く検出できなくなります。
また、仮に変化が検出できたとしても、それ以上にノイズが多く、変化部分に気づくことが難しいです。
結果は惨敗
元々の目標である"撮影日の異なる映像で変化部分を自動抽出する"には程遠く、完全に惨敗です。
ロバスト性(回転や変形、拡大縮小)があるとされている特徴点抽出に期待が高かっただけに、少々残念な結果となりました。
精度を上げるためにまだまだやるべきこと
"撮影日の異なる映像で変化部分を自動抽出する"チャレンジを成功させるために、映像の前加工が必要なのではないか?と考えています。
- 構図を合わせること
- 色や明るさの分布を正規化すること
- 領域を識別すること※1
"変化を見つけたいところ"と"変化を無視しても良いところ"の区分
変化を無視しても良いところ・・を機械的に除去できないか - 変化として抽出した"理由"を説明すること※2
"何がどこに写っている"を先に評価し、その結果同士を比較する?
※1 領域を識別すること:
ディープラーニングのMask R-CNNというのがあり、領域の識別ができるようです。正確に領域識別ができれば、識別された領域ごとに比較をすることで、不要な対象を省くことが出来るかもしれません。
※2 理由の説明:特に"理由の説明"は、人が見るべきところを選択する際に必要不可欠な要件です。
▼この記事を書いたひと

R&Dセンター 松井 良行
R&Dセンター 室長。コンピュータと共に35年。そしてこれからも!
おすすめの関連記事
- 【機械の目 Vol.4】4K動画から生成した静止画をディープラーニングに利用する
- 【機械の目 Vol.3】4K動画から長尺写真を生成する
- 【機械の目 Vol.2】4K動画から生成した静止画に位置情報を付ける