見出し画像

ちまたで話題の点群とは?!点群を使ったアプリ開発の現場から

こんにちは!
エム・ソフトのXRソリューション課、新卒入社4年目の阿部と申します。
主にXR関連や点群を使ったアプリを開発しています。

今回は、様々な業界で話題となっている「“点群”とはなにか?」について説明してみたいと思います。
また、実際に私が“点群”を用いたアプリケーション開発に携わることで得た知見や、“点群”ではどんなことができるのか、運用するにあたってどんな知識が必要なのかを紹介していきます。


私が点群を知ったきっかけ

初めて、“点群”という言葉を聞いたのは2019年、私は大学3年生でした。

当時私はVRについて学んでおり、就職活動前に長期インターンシップ先を探していました。

そこでVR×点群のプロトタイプ開発を行っている企業を見つけたことが“点群”に興味を持つきっかけになりました。

現在では、私は点群を利用する測量業界向けアプリの機能追加開発を行っています。
具体的には、お客様の要望に合わせた機能追加を行うため、その機能ごとに設計から開発、保守までを担当しています。

私が担当した仕事の中でも一番長い期間開発に携わっており、もうすぐ2年になります。

点群とは?

そもそも点群とは、3次元空間を点の集合として捉えることをいいます。
また、3Dレーザースキャナーなどを用いて、物体や環境の表面を点の集まりとして捉えることで得たデータのことを点群データといいます

点群データの優れているところは、その正確さにあります。
点と点との間隔は1mmから設定可能であり、1点1点が座標や色など、様々な情報を保持しています。
数百万点の点群として扱うこともあり、それだけの密度の点群を描画すると、まるで3Dオブジェクトのように表示することができます。

描画された点群

点の集まりなら3Dオブジェクトでもよいのではないか?
画像で代用できないのか?
といった意見が出ることがあります。

たしかに3Dオブジェクトであれば、隙間もなくきれいに描画されると思いますが、そのオブジェクトを用意するのに多くの時間やコストをかけることになってしまいます。
 
その点、3Dレーザースキャナーは広範囲を一瞬で計測することが可能です。
さらには移動しながらの計測も可能であり、広範囲のデータを活用できるようにするまでの時間が短いというメリットがあります。

車やドローンなどに搭載して点群を取得すれば、地形データの取得も容易です。
最近ではスマホのLiDAR機能を使って比較的容易に点群を取得することもできます。

また点群は、1点1点に詳細で多彩な情報を持っているため、データの取得後に正確な測量を行うことも可能です。
 
逆にいうと、詳細な情報を大量に持ちすぎるため、ファイル容量が大きくなってしまったり、高性能のコンピュータが必要になるというデメリットもあります。
しかし点群には、そのデメリットを超える価値があるため、建築業界や測量業界などで広く活用されつつあります。

点群の利用方法

私が開発に携わっているアプリでは点群の描画のほかに、様々な解析機能を保有しています。
それらの解析結果をファイルとして書き出し、分析などに使うことができます。
 
では、アプリ内でどのようなことができるのか、どのような知識が必要かを簡単に説明していこうと思います。

点群の見え方

まずは描画する点群のサイズについてみてみましょう。

点群はただ連ねて描画するだけではありません。ひと工夫するだけで見え方の印象は大きく変わります。
例えば、点群に近づいてみると、粗い点群では隙間から奥が見えてしまいます。そこで点群のサイズを変えてみます。

サイズを変更し表示された点群を比較

するとどうでしょうか?
隙間が開いていておぼろげにしか見えていなかった建造物の輪郭までがくっきり見えるようになりました。
視覚的にも何を見ているかわかりやすくなりましたね。

これはVRだと特に効果的で、点の隙間を埋めることで視界のリアリティが上がります。また、頂点の間を面で埋めてしまうメッシュ化といった技術もあります。
 
このほかにもRGB値や反射強度、標高別などに色分けすることで、解析や測量のニーズに合わせた描画を行うこともできます。
 
ちなみに、もっとも簡単な点群は座標情報だけを持った点群です。メモ帳でテキストファイルとしてXYZ座標を入力するだけで作成することができます。

txtデータで作成した点群ファイルサンプル

点群の解析

次に点群の解析方法について説明します。

前述のとおり点群は1点1点に色や座標など様々な情報を所持しています。
その情報から地面や建物など、何の点群なのかを分別することができ、特定の点群の抽出や除去なども可能です。

また、抽出した点群データを基にCADデータの作成もできます。これらを行うためには、1点1点の3次元座標や分類情報、色情報などが必要になってきます。
 
座標情報を用いた解析処理ということは、3次元情報を扱うということになります。
つまり、これらの測定や解析を実装するためには、数学や物理の知識が必要になってくるということです。ベクトル、線形代数といった単語を皆さんは覚えていますでしょうか?
(私はすっかり忘れていたので猛勉強中です)

ベクトルについておさらい

 例えばO地点に人が立った時、A地点にあるオブジェクトが視野角範囲内に見えるかどうかを判別する機能を作成するとしましょう。O,A地点は点群データから座標として取得できます。
 
O地点の座標から立った時の身長〇mを高さ方向に足した座標をOとします。視界先の注視点B、視野角と仰俯角はどのくらいあるかを定義してあげる必要があります。
また、最終的に角度を取得する必要があるため、座標Oからオブジェクト座標Aまでの「ベクトルOA」も求める必要があります。

これらを視野角、仰俯角それぞれで求めるため2次元ベクトルでそれぞれ式にすると範囲内にオブジェクトが存在するかがわかります。

あとは「ベクトルOA」間に障害物となる点群が存在しないことも確認しないといけませんね!
 
もう一つ例を見てみます。
特定の四角柱範囲内の点群だけを非表示にしたいとします。この機能を実装するには非表示にする範囲を定めなければなりません。

そこで、点群を上から見た時の座標4点と非表示にする高さの最大値最小値を設定することで非表示範囲を定めることにしました。ここからは各頂点の外積を用いることで範囲内かを定めます。

ここまでくれば後は高さ方向の座標が範囲内かを確認すれば、四角柱の中に点が存在するかわかりますね!
このように点群の点情報から得たパラメータを使い、解析機能を実装しています。
 
いかがでしたか?
ほかにも2点間の距離計測や、特定の範囲内に点が存在しない時に点を描画しないようにするノイズ処理など様々な機能が存在します。
 
これらの解析方法を駆使することで、本来であれば時間とリソースがかかってしまう測量や解析を簡単に行えるアプリケーションを私たちは開発しています。

点群×VRアプリケーション

記事の冒頭でも話しましたが、点群とVRアプリを組み合わせたアプローチも存在します。

学生時代のインターンシップでの経験を活かし、仕事でも点群ビューアーアプリのVR対応を行いました。
Windowsアプリとは違いVRアプリとして提供することで、あたかも現実空間にいるかのような体験が得られます。
 
しかし、VRアプリケーションもパソコンへの要求スペックが高く、加えて大量の点群の描画を行うため、かなりコンピュータに負荷がかかってしまうのが課題となっています。
表示範囲を限定したり、不要な点群をあらかじめ間引いたりする工夫が必要になります。
 
将来この問題が解消されれば、家にいながらスマホ一つで観光地への旅行や、賃貸マンションの見学などもできるようになるかもしれません。

さぁ、点群を触ってみよう

それでは実際に点群データを見てみましょう!

点群データはWebからサンプルをインストールできます。私がよく利用するのは、国土交通省が収集した3次元点群データです。
国がこのようにデータを提供していることからも、この技術に力が入っていることがわかりますね。
 
点群データはこちらのサイトからダウンロードができます。
今回は無料でダウンロードできる“静岡県 富士山南東部・伊豆東部”の点群データを使用します。
見つけたらLPデータ オリジナル・グラウンドデータを選択し、気になる地点を選択、ダウンロードしてみましょう。

G空間情報センター

表示方法については、今回は無料でダウンロードできる点群描画アプリの“CloudCompare”を使用します。

インストールが完了したらファイルから先ほどダウンロードした点群データを”File” > ”Open”から表示してみましょう。

ダウンロードした静岡の初島の点群

まとめ

今回は“点群”とはなにか、実際に私が開発に携わっている“点群”を使ったアプリケーションがどんなものかについて紹介をさせていただきました。
 
点群とは3次元空間を点の集合としてあらわしたものであり、1点1点に様々な情報が詰め込まれています。
それらの情報を用いて解析や描画を行うことで、現実世界の解析と同等レベルのことがアプリケーション内で実現できるのです。

また、点群を扱うには数学や物理の知識を必要とすることが多いことをお伝えしました。
もし、開発に興味がある方は、OpenCVやOpen3d、PCL(Point Cloud Library)を検索してみるといいかもしれません。
 
今回紹介したもの以外でも、エム・ソフトでは点群にかかわる仕事をしております!

今回の記事を読んで少しでもエム・ソフトに興味を持っていただけたなら幸いです。点群のほかにも様々な分野の開発を行っています。
ぜひ公式サイトも見てみてください!

最後までお読みいただき、ありがとうございました。

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!