オープンイノベーションvol.45 【損傷個所を診るためのビューア"てんかく忍者QGISプラグイン"のプロトタイプの機能】

vol.45 【損傷個所を診るためのビューア

前回記事
vol.44 【損傷個所を診るためのビューア"てんかく忍者QGISプラグイン"のプロトタイプを紹介します】

では、プラグインから出力されるアウトプット"Excel帳票、Excel報告書"を中心にご紹介しました。


これらの帳票が現場の求める「これやがな、これこれ」になっているかどうかが気掛かりですが、今回は、「これやがな」「もっと詳しく教えて」な仮想利用者がいる想定で、もう少し詳しくプラグインの機能についてご紹介していきます。

■前回までのまとめ 

・損傷個所の一覧を翌日で提供可能
・現場の目視点検で利用するチェックリストを提供

■今回補足する内容

・・・とはいえ、

・根拠としている損傷スコアや損傷レベルが正しいかどうかを検証したい
・画像で確認したい
・地形的な特徴との関連を知りたい
・統計的に損傷情報を把握したい
・計画保全に必要な情報を整理したい
・現実のスナップショットとして損傷画像のデータベースが欲しい

「悪いところを確認し、修繕の手配をする」に加えて「そもそも全体的にどういう傾向にあるの?」とか「次にどこが傷みそうか」「過去にどのような修繕をどこにしてきたのか」など、「もう少し"エビデンスやデータから読み取れること"を元に、俯瞰で把握したいったニーズがあるのではないか?」という仮説で、QGISプラグインに様々な機能を実装しました。

「そこまではいらん」と言われてしまうと企画倒れなのですが、まずは「データから何が分かる(可能性がある)」のかを見ていきましょう。

■てんかく忍者QGISプラグインの機能

てんかく忍者QGISプラグインは、QGIS LTS 3.40.8で動作します。
空間データベースとして*.gpkg、YOLO物体検出済み動画として_yolo.mp4を使用します。

データ読込

弊社より提供する空間データベースgpkgとYOLO物体検出実行済の動画_yolo.mp4を読み込みます。

 

gpkgの読み込み mp4の読み込み
01_choose_gpkg.png 02_choose_mp4.png

初期画面
03_initial.png

 

 

データグリッド

 

読み込んだ空間情報をデータグリッドに展開します。

データグリッド
04_grid.png

 

並び替え・列入れ替え
12_ideal_grid.png

任意列でのソートや列の移動に対応します。

編集可能列(comment、noteなど)へのコメント記入が可能です。

 

地図表示(QGISに備わっている機能)

 

・QGISの機能によって撮影箇所がポイント表示されます
・任意列または複合列の演算結果をヒートマップ表示、ポイントの色、大きさ表現が可能です

・任意地図オブジェクトレイヤの重ね合わせやON/OFFが可能です
・拡大縮小、移動、レイヤの透過、背景地図の選択が可能です

 

マップ
00_main.png

上記の例では、損傷スコアの値でヒートマップを描き、更に損傷レベルでポイントの色と大きさを変更しています。

またKPマスタを重ねて、ラベルを表示し、「今どこを見ているのか」を視覚的に確認できるようにしているのと、遊間の場所示す"|"印を追加しています。  

レイヤ
16_layers.png

カスタムポインタ
20_custom_pointer.png

 

ビューア

・グリッドや地図上で選択した地点の画像を表示します
・拡大縮小移動が可能です。
・属性情報が左上に、キロ程(KP)が右下にオーバーレイされます
・画像処理による鮮明化が自動実行され明瞭な写真を表示します
・一度閲覧した画像は元データと同じ場所のimages/にjpegとして保存されます

グリッドで選択したレコードの画像を表示
06_view_image.png

属性オーバーレイ(ビューア左上)
07_overlay.png

KP表示(ビューア右下)
08_kp_overlay.png

拡大表示
11_detail_view.png

画像処理

ビューアで表示される静止画は、画像処理※が施されており、暗い画像やコントラストが低い画像が、明るく、明瞭に表示されるように調整されています。

※ガンマ補正、CLAHE、自動露出調整

元画像
09_before_image.png
表示画像(ガンマ補正、CLAHE、自動露出補正)
10_after_image.png

絞り込み機能

・キロ程範囲や任意列の値指定による絞り込みが出来ます。
・絞り込みはドロップダウンとマウスクリックだけで簡単に実行できます。
・再検索は"ぱんくずボタン"でワンタッチで実行できます。
・任意列として下記の項目を予め利用可能です
 gnss受信モード:RTK-FIX、RTK-FLOAT、DGPS-FIX、GPS-FIX
 チェックフラグ:True/False
 damage_level:ユーザ毎定義による
 yolo_status:detected/silent
 dominant_class:YOLOモデル定義による
 

列の追加機能

 

グリッドに新たなユーザ列を追加します。
※追加列の名称は予め設定しておく必要があります。(comment,note、annotationなど)
グリッドに追加した列は元のgpkgやExcel帳票に追加されます

 

列の追加
17_add_col.png

 

書き出しメニュー
13_function_button.png

 

編集内容の保存

グリッドでの編集内容を明示的に元のgpkgに保存する場合に利用します。

画像一覧出力

 グリッドに表示されているレコードと関連する画像を一括で出力します。件数に拠りますが、膨大な時間(10000件で2-3時間)が掛かります。

※画像一覧出力中は他の操作を行えません。夜間など操作しない時間帯での処理をお勧めします

  

ヒートマップ出力

 YOLO損傷検出のクラス毎の検出数をKPで集計してグラフ化します。

1Km毎に1枚のpng画像が出力されます。
他のデータマイニングツール等で利用できるcsvデータ"yolo_detections_export.csv"を出力します
→frame_number,kp,class,conf,bbox_x1,bbox_y1,bbox_x2,bbox_y2,bbox_area  

分析・まとめ

YOLO検出結果から損傷スコア、損傷レベルを演算し、グリッド列、元データに結果を書き込みます。
上記演算結果をaggregated_damage_score.csvとして書き出します
→frame_number,damage_score,kp,damage_level

YOLO損傷検出の共起グラフを生成します
上記演算結果を説明したclass_cooccuraence_matrix_note.txtを生成します。
損傷レベルをKP1Km毎、全体でグラフ化した損傷スコアグラフ(png形式)を生成します。  

KP割り当て・列追加

KPマスタを参照して、撮影地点の緯度経度から最近接のKPに割り当てる機能です。

データグリッドへの反映と同時に、レイヤへの書き込みを実行します。 

Tenkaku操作座敷→補足属性
15_utils.png
KP列の追加
18_add_kp.png

 

 

各機能の実行時間(例)

操作 実行内容 所要時間 経過時間
QGIS起動 QGIS+プラグイン起動 33秒 33秒
mp4,gpkg選択 NASからファイルを選択 2.5秒 35.5秒
一覧表示 データ選択後の初期表示 10秒 45.5秒
絞り込み・並び替え フィルタ適用、KP昇順並び替え 8秒 53.5秒
エクセル出力 17,000件のExcel出力→NAS 53秒 106.5秒
画像一括出力 17,000件の画像出力→NAS 10,615秒 10,721.5秒
ヒートマップ出力 総延長17Km分のヒートマップ出力 131秒 10,852.5秒
分析・まとめ 総延長17Km分の分析・グラフ出力 280秒 11,132.5秒
報告書出力 報告書Excelの出力→NAS 168秒 11,300.5秒

 

 

▼この記事を書いたひと

001@2x.png

R&Dセンター 松井 良行

R&Dセンター 技術戦略担当部長。コンピュータと共に35年。そしてこれからも!

 

お問い合わせ

ご意見・ご質問などお気軽にお問い合わせ下さい。
ナカシャクリエイテブ株式会社

●富士見事務所 TEL : 052-228-8744(交通部営業課) FAX : 052-323-3337(交通部共通)
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711  地図

PoCのお問い合わせ:交通部営業課
技術的なお問い合わせ:R&Dセンター

Email:メールでのお問い合わせ