IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社構造計画研究所の特許一覧

特許7164652モデル生成装置、モデル生成方法、及びモデル生成プログラム
<>
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図1
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図2
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図3
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図4
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図5
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図6
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図7
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図8
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図9
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図10
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図11
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図12
  • 特許-モデル生成装置、モデル生成方法、及びモデル生成プログラム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-24
(45)【発行日】2022-11-01
(54)【発明の名称】モデル生成装置、モデル生成方法、及びモデル生成プログラム
(51)【国際特許分類】
   G06F 30/13 20200101AFI20221025BHJP
   G06F 30/10 20200101ALI20221025BHJP
   G06T 17/20 20060101ALI20221025BHJP
   G06Q 50/08 20120101ALI20221025BHJP
【FI】
G06F30/13
G06F30/10 100
G06T17/20
G06Q50/08
【請求項の数】 5
(21)【出願番号】P 2021043304
(22)【出願日】2021-03-17
(65)【公開番号】P2022142994
(43)【公開日】2022-10-03
【審査請求日】2021-03-17
【新規性喪失の例外の表示】特許法第30条第2項適用 令和2年9月17日 2020年電子情報通信学会ソサイエティ大会オンライン開催(URL:https://www.ieice-taikai.jp/2020society/jpn/index.html)にて公開
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和2年度、総務省、「カメラ画像による電波伝搬予測と無線ネットワーク自動設計に関する研究開発(185103006)」、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】591280197
【氏名又は名称】株式会社構造計画研究所
(74)【代理人】
【識別番号】100085660
【弁理士】
【氏名又は名称】鈴木 均
(74)【代理人】
【識別番号】100149892
【弁理士】
【氏名又は名称】小川 弥生
(74)【代理人】
【識別番号】100185672
【弁理士】
【氏名又は名称】池田 雅人
(72)【発明者】
【氏名】海部 太郎
(72)【発明者】
【氏名】岡村 航
(72)【発明者】
【氏名】吉敷 由起子
【審査官】松浦 功
(56)【参考文献】
【文献】特開2019-003621(JP,A)
【文献】米国特許出願公開第2020/0364929(US,A1)
【文献】中国特許出願公開第111986322(CN,A)
【文献】岡村航 外4名,屋内環境における点群データを用いたレイトレース解析に適用可能な3次元平面モデル構築手法の提案および電波伝搬評価,2021年電子情報通信学会総合大会講演論文集 通信1,一般社団法人電子情報通信学会,2021年02月23日,p.113
【文献】伊達宏昭,環境・構造物の3次元レーザ計測点群の取得と自動モデリング,シミュレーション,一般社団法人日本シミュレーション学会,2019年12月15日,第38巻,第4号,pp.9-15
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00 -30/28
G06T 17/00 -17/30
G06Q 50/08
(57)【特許請求の範囲】
【請求項1】
屋内点群データの入力を受け付けるデータ入力部と、
ユーザによる入力パラメータの設定を受け付けるパラメータ設定部と、
前記入力パラメータに基づいて内部パラメータを生成するパラメータ生成部と、
入力された前記屋内点群データに基づいて高さのヒストグラムを生成するヒストグラム生成部と、
前記高さのヒストグラムに基づいて、前記屋内点群データから天井データ及び床データを検出する床・天井検出部と、
前記天井データに対して領域成長法を施し、1以上の部屋領域を分離する部屋領域分離部と、
分離された各部屋の天井データの輪郭を検出する輪郭検出部と、
検出された輪郭と、前記床データにおける床の高さ、前記天井データにおける天井の高さと、から各部屋の平面モデルを作成する部屋モデル生成部と、
を備え、
前記入力パラメータは、部屋の数を含み、
前記パラメータ生成部は、前記部屋領域分離部が分離した部屋領域の数と前記入力パラメータとして設定される部屋の数とが異なる場合、前記内部パラメータを再度生成し、
再度生成された前記内部パラメータに基づいて前記平面モデルを生成する、
ことを特徴とするモデル生成装置。
【請求項2】
請求項1に記載のモデル生成装置において、
前記屋内点群データは、予めフィルタ処理されたフィルタ処理済屋内点群データであり、
前記入力パラメータは、さらに前記フィルタ処理済屋内点群データにおける点群の間隔を含む、
ことを特徴とするモデル生成装置。
【請求項3】
請求項1又は2に記載のモデル生成装置において、
部屋の輪郭を用いて部屋内部の物体の点群を部屋ごとに分離する物体分離部と、
分離した点群を用いて物体モデルを生成する物体モデル生成部と、
を備えることを特徴とするモデル生成装置。
【請求項4】
プロセッサによって実行されるモデル生成方法であって、
ユーザによる屋内点群データの入力を受け付け、
ユーザによる入力パラメータの設定を受け付け、
前記入力パラメータに基づいて内部パラメータを生成し、
入力された前記屋内点群データに基づいて、高さのヒストグラムを生成し、
前記高さのヒストグラムに基づいて、屋内点群データから天井データ、床データを検出し、
前記天井データに対して領域成長法を施し、部屋領域を分離し、
分離された各部屋の天井データの輪郭を検出し、
検出された輪郭と、前記床データにおける床の高さ、前記天井データにおける天井の高さと、から各部屋の平面モデルを作成し、
前記入力パラメータは、部屋の数を含み、
分離した前記部屋領域の数と前記入力パラメータとして設定される部屋の数とが異なる場合、前記内部パラメータを再度生成し、
再度生成された前記内部パラメータに基づいて前記平面モデルを生成する、
ことを特徴とするモデル生成方法。
【請求項5】
プロセッサに実行させるモデル生成プログラムであって、
ユーザによる屋内点群データの入力を受け付け、
ユーザによる入力パラメータの設定を受け付け、
前記入力パラメータに基づいて内部パラメータを生成し、
入力された前記屋内点群データに基づいて、高さのヒストグラムを生成し、
前記高さのヒストグラムに基づいて、屋内点群データから天井データ、床データを検出し、
前記天井データに対して領域成長法を施し、部屋領域を分離し、
分離された各部屋の天井データの輪郭を検出し、
検出された輪郭と、前記床データにおける床の高さ、前記天井データにおける天井の高さと、から各部屋の平面モデルを作成し、
前記入力パラメータは、部屋の数を含み、
分離した前記部屋領域の数と前記入力パラメータとして設定される部屋の数とが異なる場合、前記内部パラメータを再度生成し、
再度生成された前記内部パラメータに基づいて前記平面モデルを生成する、
ことを特徴とするモデル生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、屋内点群データから屋内の3Dモデルを作成するモデル生成装置、モデル生成方法、及びモデル生成プログラムに関する。
【背景技術】
【0002】
屋内点群データから屋内の3Dモデルを作成する技術が知られており、このような3Dモデルを電波伝播シミュレータ向けに用いたいという需要がある。
電波伝播シミュレータに読み込める形式のメッシュ3Dモデルを作成する技術があるが、メッシュ化により作成したモデルは穴が空いたり面が細かくなったりする等、電波伝播シミュレーションには向かないことがある。
メッシュ化によらない3Dモデル作成技術として、例えば、特許文献1の装置は、建物の内部について取得された3次元の屋内点群データを読み込み、読み込んだ屋内点群データから平面を抽出し、抽出した平面を床面、天井面、壁面に分類する。そして、分類した床面、天井面、壁面をポリゴン化して3次元モデルを生成する。
また、特許文献2には、3D計測によって得られた計測点群情報に基づいて、床面、天井面、壁面がある部屋の3次元モデル情報を生成する情報処理装置が開示されている。
計測点群情報における計測点の数を高さ方向に計数し、高さ方向の計測点の数の分布を特定する。
高さ方向の上側の計測点群情報における、計測点数が最も多い高さの平面を天井面として特定する。高さ方向の下側の計測点群情報における計測点数が最も多い高さの平面を床面として特定する。
天井面、床面を特定したあと、天井面、床面夫々からの垂直面(壁面)を特定して、床面、天井面、壁面がある部屋の3次元モデル情報を生成する。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2019-168976公報
【文献】特開2018-151835公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
引用文献1、2に開示されて技術を適用することで、電波伝播シミュレータ向けの3Dモデルを作成することができる。
しかし、従来の方法にはユーザが設定すべきパラメータも多く、不慣れなユーザが3Dモデルを簡易に作成することが出来ないという問題があった。
本発明は、上記の問題を鑑みてなされたものであり、屋内点群データから、電波伝播シミュレータにも利用可能な3Dモデルを簡易的に作成可能とする。
【課題を解決するための手段】
【0005】
上記の課題を解決するために、本発明は、屋内点群データの入力を受け付けるデータ入力部と、ユーザによる入力パラメータの設定を受け付けるパラメータ設定部と、前記入力パラメータに基づいて内部パラメータを生成するパラメータ生成部と、入力された前記屋内点群データに基づいて高さのヒストグラムを生成するヒストグラム生成部と、前記高さのヒストグラムに基づいて、前記屋内点群データから天井データ及び床データを検出する床・天井検出部と、前記天井データに対して領域成長法を施し、1以上の部屋領域を分離する部屋領域分離部と、分離された各部屋の天井データの輪郭を検出する輪郭検出部と、検出された輪郭と、前記床データにおける床の高さ、前記天井データにおける天井の高さと、から各部屋の平面モデルを作成する部屋モデル生成部と、を備え、前記入力パラメータは、部屋の数を含み、前記パラメータ生成部は、前記部屋領域分離部が分離した部屋領域の数と前記入力パラメータとして設定される部屋の数とが異なる場合、前記内部パラメータを再度生成し、再度生成された前記内部パラメータに基づいて前記平面モデルを生成する、モデル生成装置を特徴とする。
【発明の効果】
【0006】
上記のように構成したので、本発明によれば、屋内点群データから、電波伝播シミュレータにも利用可能な3Dモデルを簡易的に作成可能とすることができる。
【図面の簡単な説明】
【0007】
図1】フィルタ処理済みの屋内点群データの一例を示す図である。
図2】屋内点群データから作成した高さのヒストグラムを示す図である。
図3】天井データ、床データを分離する前の屋内点群データを示す図である。
図4】天井データ、床データを分離した後の屋内点群データを示す図である。
図5】領域成長法によって部屋領域に分離した天井データを示す図である。
図6】部屋の輪郭を検出した投影画像を示す図である。
図7】簡易物体モデルを示す図である。
図8】メッシュ物体モデルを示す図である。
図9】本実施形態のモデル生成装置が生成した屋内3Dモデルを示す図である。
図10】本実施形態のモデル生成装置の機能構成を説明する図である。
図11】平滑閾値、曲率閾値の自動調整を説明する図である。
図12】モデル生成装置のCPUが実行するモデル生成処理の流れを説明するフローチャート(その1)である。
図13】モデル生成装置のCPUが実行するモデル生成処理の流れを説明するフローチャート(その2)である。
【発明を実施するための形態】
【0008】
以下に、図面を参照して、本発明の実施の形態を詳細に説明する。
本実施形態は、屋内点群(Point Cloud)データから電波伝播シミュレーション(レイトレース解析)向けの屋内3Dモデルを作成するモデル生成アルゴリズムと、これを実行するモデル生成装置に関する。
本実施形態のモデル生成装置は、特に、モデル生成アルゴリズムのためのパラメータ設定の一部を自動化することに特徴を有する。
本実施形態のモデル生成装置は、ユーザが容易に設定可能なパラメータから、モデル生成アルゴリズムのための内部パラメータを生成し、生成した内部パラメータに基づいてモデル生成アルゴリズムを実行する。さらに、アルゴリズムの実行結果(モデル生成結果)と、ユーザが設定したパラメータとに基づいて、必要なパラメータを自動で調整する。
本実施形態によれば、屋内点群データから屋内3Dモデルを生成するためのアルゴリズムに精通していないユーザであっても、容易にかつ短時間で電波伝播シミュレーションに適した屋内3Dモデルを生成することが出来る。
【0009】
本実施形態では、領域成長法といった既存のアルゴリズムを活用して屋内点群データを1以上の部屋領域に分離する。その後、画像処理技術を用いることにより、電波伝播シミュレーションに適した屋内3Dモデルと屋内に存在する物体の3Dモデル(物体モデル)とを作成する。
屋内点群データから電波伝播シミュレーション向けの屋内3Dモデルを完全に手動で作成するには、数日から数週間が必要であったが、本実施形態のモデル生成装置は、数十分程度の計算で屋内モデル、物体モデルを作成することが出来る。
また、電波伝播シミュレーション向け3Dモデルを作成するための既知の方法は、ユーザが自ら設定すべきパラメータが多く、適切な値に設定するのが難しいという問題があった。本実施形態のモデル生成装置は、ユーザが容易に設定できるパラメータを使ってモデルを作成可能である。また既知の方法では屋内の物体をモデル化することも難しかったが、本実施形態のモデル生成装置は、屋内の物体をモデル化することもでき、物体の影響を考慮した電波伝播シミュレーションが可能となる。
【0010】
本実施形態のモデル生成装置の動作について概略を説明する。ユーザは、モデル生成装置が起動した後、別途作成したフィルタ処理済みの屋内点群データをモデル生成装置に入力し、フィルタ処理時の点の間隔、想定される屋内の部屋の数等のユーザパラメータを入力する。
モデル生成装置は、ユーザパラメータから内部パラメータを自動的に生成、調整し、モデル作成フローを実行してモデル作成結果を表示装置に出力する。
出力結果がユーザパラメータ(部屋の数)と適合しているかをユーザが判断することができる。出力結果がユーザパラメータと適合している場合、モデル生成装置は3Dモデルを出力する。適合していない場合、モデル生成装置は、内部パラメータを調整し直して再度モデル作成フローを実行する。
【0011】
以下に、本実施形態のモデル生成装置の構成と、モデル生成処理について詳細に説明する。
図1は、フィルタ処理済みの屋内点群データの一例を示す図である。
図1に示される屋内点群データは、3Dレーザースキャナーを用いて屋内をスキャンすることで得られる点の集合である。図1の屋内点群データは事前にフィルタ処理を行っている。フィルタ処理は、点群データに対する処理を高速化するために、点を間引き、点群の密度を下げる処理である。フィルタ処理には、例えばVoxel Grid filterと呼ばれる手法を用いることが出来る。Voxel Grid filterは、点群内に3次元の立方格子を配置し、各格子内に存在する点群の重心を各点の近似点であると見なして元の屋内点群データをその重心1点に差し替える手法である。
これによって、屋内点群データを一定間隔に間引き、点群の密度を下げることが出来る。図1に示す屋内点群データは、例えば1cm間隔で点数を削減している。
フィルタ処理済みの屋内点群データ1は、フィルタ処理を施された状態で、外部装置からあるいは記憶媒体を介して入力されてもよいし、フィルタ処理前の屋内点群データをモデル生成装置10がフィルタ処理することで得られてもよい。なお、以下の説明で屋内点群データ1と記載した場合、特に説明がない場合にはフィルタ処理済の屋内点群データを指すものとする。
【0012】
[天井・床分離]
本実施形態のモデル生成方法において、モデル生成装置は、まず天井・床分離処理を行う。この天井・床分離処理において、モデル生成装置は、図1に示したフィルタ処理済みの屋内点群データ1から、高さのヒストグラムを作成する。
図2は高さのヒストグラムを示す図である。3Dスキャンによって得られた屋内点群データ1に含まれる点は、夫々高さの情報を有している。高さのヒストグラム2は、屋内点群データ1における、高さが同じ点の数の分布を示している。なお、屋内点群データ1において天井と床の高さに点が多く集まると考えられる。モデル生成装置10は、この点を利用してヒストグラム2の中でも数が多いピーク箇所に基づいて、屋内点群データ1から天井データと床データの分離、抽出を行う。
【0013】
すなわち、モデル生成装置は、図2のヒストグラム2における2つのピーク箇所を天井、床の高さとみなして天井面、床面を検出する。モデル生成装置は、ヒストグラム2におけるピーク箇所のうち、高さが高い方のピーク箇所に属する点群を天井面に対応する天井データ2Aとして検出する。また、モデル生成装置は、ヒストグラム2のピーク箇所のうち、高さが低い方のピーク箇所に属する点群を床面に対応する床データ2Bとして検出する。そして、モデル生成装置は、検出した天井データ2A、床データ2Bを屋内点群データ1から分離、抽出する。
【0014】
図3は、天井データ、床データを分離する前の屋内点群データを示す図であり、図4は、天井データ、床データを分離した後の、屋内点群データ1Aを示す図である。
図3の状態の屋内点群データ1Aでは、屋内に存在するテーブルなどの物体を視認することができないが、図4の状態の屋内点群データ1Aでは、天井データ、床データが分離しており、屋内に存在する物体の物体点群データ2Cを視認することが出来る。屋内点群データ1に含まれる物体点群データ2Cは、屋内に存在する物体の3Dモデル化に利用することが出来る。
屋内点群データ1から天井データ2A、床データ2Bを分離することにより、屋内に存在する物体を、それぞれの物体の点群ごとに容易に分離することが出来る。
下記に説明する[物体モデル化]処理において物体の点群を個々の物体に分離する際、距離によるクラスタ分類を行うが、この際、床が存在すると、床を通じて物体同士を同じクラスタと分類してしまう。そこで、天井データ2Aとともに床データ2Bも分離した屋内点群データ1Aを作成する。
【0015】
[セグメンテーション処理]
次に、モデル生成装置は、セグメンテーション処理を行う。セグメンテーション処理は、天井データを1以上の部屋領域に分離、分割する処理である。
セグメンテーション処理において、モデル生成装置は、上記の天井・床分離処理で分離・抽出した天井データ2Aに対して、点群処理の一手法である領域成長法(Region Growing)を施して、天井データ2Aを1以上の部屋領域に分離する。領域成長法は点群処理手法の一例であり、天井データ2Aを分離することができればその他の方法を採用しても構わない。
【0016】
領域成長法について説明する。一般に、領域成長法は、画素値(輝度)などの条件を満たす空間的に連続する画素を一つの領域として認識する手法である。上記の条件を満たす任意の画素を「シード点」として手動で決定し、ラベルをつける。そして、シード点近傍で条件を満たす画素に同一のラベルをつける処理を繰り返す。
それに対して、本実施形態の領域成長法は特に点群に対して適用したものであり、点群に含まれる点を画素値に対応させ、点群に含まれる点の曲率値や法線などを用いてシード点や条件を定める。
すなわち、本実施形態の領域成長法の処理では、点群に含まれる点の曲率値と下記の「曲率閾値」とを用いてシード点を決定し、シード点の法線とシード点の隣接点の法線とがなす角度と下記の「平滑閾値」とに基づいて、シード点と同じ領域に属する隣接点を決定する。シード点を基準とした点の分類を繰り返し行うことによって、モデル生成装置は、シード点を基点とした領域の成長とを行う。シード点の隣接点とは、シード点から所定範囲(点数)内に存在する点である。隣接点を規定する範囲は、下記に説明するパラメータにて設定される。
【0017】
本実施形態における領域成長法の処理を詳しく説明する。
まず、モデル生成装置は、領域成長法の対象とする点群に含まれる点を曲率値で並び替えるソート処理を行う。そしてモデル生成装置は、上記ソート済の点群から曲率値が最も小さい点を最小曲率点として選択する。この最小曲率点がシード点となる。最小曲率点を選択する基準となる閾値が「曲率閾値」であり、モデル生成装置は、曲率閾値よりも小さい曲率値を有する点を最小曲率点として選択し、この最小曲率点をシード点として領域の成長を行う。最小曲率点は平坦領域に位置しており、より平坦な領域から領域の成長を行うことで、セグメントの数を少なくする(多くなりすぎないようにする)ことが出来るためである。「曲率閾値」は、下記に説明するパラメータにて設定される。
【0018】
モデル生成装置は、決定したシード点から領域を成長させるにあたり、「平滑条件(Smoothness constraint)」に関して十分に近い点同士を一つの領域(セグメント)に分類する。同一セグメント内の点は平滑面を構成するので、互いの法線の角度が大きく異ならない(点の法線同士がなす角度が小さい)。よってモデル生成装置は、互いの法線がなす角度より小さい点同士を同一セグメント内の点とみなす。点同士を同一セグメントとみなす法線同士の角度の閾値が「平滑閾値」である。
モデル生成装置は、シード点の隣接点のうち、その法線とシード点の法線とがなす角度が平滑閾値よりも小さい点を、シード点と同じセグメントに属する点とする。「平滑閾値」は、下記に説明するパラメータにて設定される。
【0019】
領域成長法による処理の出力結果は、セグメントの集合であり、セグメントは同じ平滑面の一部とみす点の集合である。セグメントを規定するにあたり平滑条件を設定していることにより、壁の境界で平滑面が終了する(領域の成長が止まる)ことが担保される。
本実施形態について言えば、天井面の点群データ(天井データ2A)では、部屋と部屋の間に扉等による隙間が生じることが想定される。そして、その隙間付近の点は、シード点に対する法線の角度が「平滑閾値」を大きく超え、領域(セグメント)の拡大(成長)が止まると考えられる。従って領域成長法によって天井面(天井データ2A)が1以上の部屋領域に好適に分離されることが期待される。従って、部屋領域を分離する用途では、領域成長法がより好ましい方法であると言える。
【0020】
本実施形態の領域成長法の処理は、以下のように行われる。
モデル生成装置は、上記のソート処理を行い、曲率閾値よりも曲率が小さい最小曲率点をシード点としてラベル付けし、「シード群」に追加する。モデル生成装置は、未ラベルの点が点群内に無くなるまで、各シード点から領域の成長を開始する処理を実行する。
【0021】
モデル生成装置は、各シード点について隣接点を探した後、以下の処理を実行する。
(1)モデル生成装置は、各隣接点の法線と現在のシード点の法線との間の角度が上記の平滑閾値よりも小さい場合、その隣接点を現在の領域(セグメント)に追加してシード点と同じラベルを付ける。この処理を現在のシード点の全ての隣接点について行う。
(2)モデル生成装置は、曲率について全ての隣接点を検証し、曲率値が曲率閾値よりも小さい隣接点を「シード群」に追加する。
(3)モデル生成装置は、現在のシード点を「シード群」から削除する。次のシード点について、(1)、(2)の処理を実行し、処理済のシード点を「シード群」から削除する。「シード群」が空になると、領域を成長させきったことになるため、処理を終了する。
【0022】
図5は、領域成長法によって天井データを部屋領域に分離した状態を示す図である。
本実施形態の場合、領域成長法を用いた結果、天井データ2Aの点群を3つのセグメントとしての部屋領域(部屋領域3a、部屋領域3b、部屋領域3c)に分離することが出来た。
なお、図5から明らかなように領域成長法によって分離された各部屋領域の輪郭や部屋領域同士の境界は不明確であり、これを屋内3Dモデルの作成に供することは難しい。よって、下記のように部屋領域の輪郭を検出して明確にするための処理を行う。
【0023】
[画像処理・輪郭近似]
図6は、部屋の輪郭を検出した投影画像を示す図である。
モデル生成装置は、図5で分離した部屋領域3a~3cの天井データを夫々二次元(xy平面)に投影した投影画像4a~4cを作成し、この投影画像に対して画像処理技術を適用することにより、部屋領域3a~3cの輪郭を多角形5a~5cとして検出する。
検出された輪郭が多くの点を含むと、電波伝播シミュレーションに適さないモデルが作成されてしまうので、モデル生成装置は、多角形5a~5cを検出する際には、投影画像4a~4cの輪郭を少ない点で近似するようにする。
【0024】
[部屋モデル化]
モデル生成装置は、検出した多角形5a~5cと、天井データ2A及び床データ2Bの高さの情報を用いて、各部屋の部屋3Dモデル6a~6c(図9参照)を作成する。
以上が、屋内3Dモデルを作成する手順である。
【0025】
[物体モデル化]
次に、部屋内に存在する物体の3Dモデルを作成する手順を説明する。
モデル生成装置は、図6に示す部屋の輪郭(多角形5a~5c)を用いて、物体の点群2C(図4)を部屋領域(セグメント)ごとに分離する。そしてモデル生成装置は、部屋領域(セグメント)毎に分離した物体2Cの点群にクラスタリング処理を行い、個々の物体点群を分離する。
ここで行うクラスタリング処理は、ユークリッドクラスタリング(Euclidian Clustering)である。ユークリッドクラスタリングは、一定の距離以内にある点を同じクラスタとみなす処理である。
さらにモデル生成装置は、クラスタリング処理によって分離した個々の物体の点群に対し、下記の2種類のモデル化処理(簡易物体モデル化、メッシュ物体モデル化)の何れかを実施して物体モデルを得る。
【0026】
図7は、簡易物体モデルを示す図である。簡易物体モデル化では、物体の点群を二次元(xy平面)に投影した画像を作成し、部屋領域に対して行った処理と同様の処理によって、物体の輪郭を検出する。そして、検出した輪郭と、物体の最大高、最小高を用いて多角形近似を行い、物体を多角柱によりモデル化する。その結果、図7に示す簡易物体モデルを得る。
【0027】
図8は、メッシュ物体モデルを示す図である。メッシュ物体モデル化では、例えば、点群処理手法の一つであるメッシュ化(GST:Greedy Surface Triangulation)によるモデル化を行い、図8に示すメッシュ物体モデルを得る。
簡易物体モデル化、メッシュ物体モデル化のどちらで生成されたモデルであっても、市販の電波伝播シミュレータに読み込むことが可能である。
【0028】
図9は、本実施形態のモデル生成装置が生成した屋内3Dモデルを示す図である。
図9に示す屋内3Dモデル6は、多角形5aに基づく部屋3Dモデル6aと、多角形5bに基づく部屋3Dモデル6bと、多角形5cに基づく部屋3Dモデル6cと、を含んでいる。さらに、部屋3Dモデル6a~6c内には、物体モデル7を含んでいる。
【0029】
図10は、本実施形態のモデル生成装置の機能構成を説明する図であり、(a)はハードウェアによる機能ブロック図、(b)はソフトウェアによる機能ブロック図である。
図10(a)に示すように、モデル生成装置10は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、モデル生成装置10の機能を実現するプログラムを実行するCPU(Central Processing Unit)11と、CPU11による処理のために各種のプログラムや一時データ、変数が展開されるRAM(Random Access Memory)12と、プログラムやデータが格納されるHDD(Hard Disk Drive)13や不図示のROM(Read Only Memory)と、I/Oインターフェイス14と、読書装置15と、ネットワークI/F16と、表示装置17と、マウスやキーボードなどの入力装置18と、を備えている。
【0030】
CPU11は、モデル生成装置10が備えて制御部を実現する制御回路の一例であり、制御回路としては、その他にマルチコアCPU、FPGA(Field Programmable Gate Array)、PLD(Programmable Logic Device)などのプロセッサを適用することができる。
HDD13は、内蔵するハードディスク(Hard Disk)を駆動するドライブ装置であり、HDD13は記憶媒体としてのハードディスクに格納されたプログラムやデータを読み出し、またハードディスクにデータを書き込む。
【0031】
また、モデル生成装置10は、FD(Floppy Disk)、CD(Compact Disc)やDVD(Digital Versatile Disc)、BD(Blu-ray(登録商標) Disk)などの光学ディスク、フラッシュメモリなどの着脱可能な記憶媒体200に対してプログラムやデータを読み書きする読書装置15を備えてもよい。
読書装置15は、FDD(Floppy Disk Drive)、CDD(Compact Disc Drive)、DVDD(Digital Versatile Disc Drive)、BDD(Blu-ray (登録商標)Disk Drive)、USB(Universal Serial Bus)などである。
CPU11、RAM12、HDD13、I/Oインターフェイス14、読書装置15は、例えば内部バスを介して接続されている。
モデル生成装置10は、ネットワークI/F16を介して他装置からフィルタ処理済又はフィルタ処理前の屋内点群データを入力することが出来る。モデル生成装置10は、屋内点群データを格納した記憶媒体から読書装置15によってフィルタ処理済又はフィルタ処理前の屋内点群データを得ても良い。
モデル生成装置10は、I/Oインターフェイス14を介して接続された3Dスキャナから屋内点群データを入力されてもよい。その場合はとくに、モデル生成装置10は3Dスキャナから入力された屋内点群データにフィルタ処理をする機能を有することが望ましい。
【0032】
図10(b)に示すように、CPU11は、制御部10Aとして、データ入力部31と、パラメータ設定部32と、パラメータ生成部33と、ヒストグラム生成部34と、床・天井検出部35と、部屋領域分離部36と、輪郭検出部37と、部屋モデル生成部38と、物体分離部39と、物体モデル生成部40と、を実行する。
これらの処理部は、モデル生成装置10の制御部10Aの機能を実現するプログラムであり、当該プログラムは、HDD13に含まれるハードディスクや記憶媒体200に格納され得る。プログラムは、HDD13や読書装置15によってハードディスクや記憶媒体200からRAM12に読み出されてCPU11によって実行される。
RAM12やHDD13は、モデル生成装置10の記憶部10Bを構成する。
記憶部10Bは、主に、点群データ記憶部51、パラメータ記憶部52と、を備える。
【0033】
データ入力部31は、フィルタ処理済の屋内点群データ1の入力を受け付け、点群データ記憶部51に格納する。
パラメータ設定部32は、例えば入力装置18を用いたユーザによるパラメータ(ユーザパラメータ)の設定入力を受け付ける。
パラメータ生成部33は、ユーザパラメータに基づいて内部パラメータを自動設定し又は自動調整し、パラメータ記憶部52に格納する。
ヒストグラム生成部34は、屋内点群データ1に含まれる点毎の高さ情報に基づいて、高さのヒストグラム2を生成する。
【0034】
床・天井検出部35は、高さのヒストグラム2に基づいて屋内点群データから天井データ2A、床データ2Bを検出し、屋内点群データ1から天井データ2A、床データ2Bを分離する。
部屋領域分離部36は、天井データ2Aに対して領域成長法を施し、部屋領域を分離する。
輪郭検出部37は、分離された各部屋の天井データを二次元に投影した画像を作成し、画像処理を用いて部屋の輪郭を検出する。
部屋モデル生成部38は、検出された輪郭と、天井データ2A、床データ2Bにおける床の高さ、天井の高さから各部屋の屋内3Dモデルを作成する。
物体分離部39は、部屋の輪郭を用いて部屋内部の物体の点群を部屋ごとに分離する。
物体モデル生成部40は、物体の点群から物体モデルを生成する。
点群フィルタ部41は、外部装置からフィルタ処理前の屋内点群データが入力された場合に、入力された屋内点群データに対してフィルタ処理を施す。
【0035】
モデル生成装置10は、以下に示す処理によってモデル生成アルゴリズムのための内部パラメータの自動生成、自動調整を行う。
モデル生成装置10のユーザは、モデル生成装置10に対して、フィルタ処理における点の間隔(フィルタ間隔)、想定される部屋の面積、物体の表面積、想定される部屋の検出数、部屋領域の最大点数、物体の輪郭の最大点数、を設定する。
このとき、モデル生成装置10は、これらの情報を指定するユーザパラメータとして、filter_spacing、room_min_area、room_max_area、obj_min_area、obj_max_area、room_num、room_max_vertices、obj_max_vertices等の設定入力を受け付ける。
【0036】
filter_spacingは、フィルタ処理におけるフィルタ間隔を指定するパラメータである。
room_min_area、room_max_areaは、検出される部屋の最小面積、最大面積を夫々指定するパラメータである。
obj_min_area、obj_max_areaは、検出される物体の最小表面積、最大表面積を夫々指定するパラメータである。
room_numは、想定される部屋の検出数、あるいは検出が想定される部屋数を指定するパラメータである。
room_max_verticesは、部屋領域の輪郭の最大頂点数を指定するパラメータである。
obj_max_verticesは、物体の輪郭の最大頂点数を指定するパラメータである。
【0037】
モデル生成装置10は、上記のユーザパラメータを用いて、下記のように内部パラメータを生成する。
モデル生成装置10は、ユーザパラメータroom_min_area、room_max_areaで指定される部屋の最小面積、最大面積と、ユーザパラメータfilter_spacingで指定されるフィルタ間隔と、に基づいて、内部パラメータrc_minsize、rc_maxsizeを生成する。
rc_minsizeは、部屋として検出される領域の最小点数を指定するパラメータである。
rc_maxsizeは、部屋として検出される領域の最大点数を指定するパラメータである。
具体的には、rc_minsize、rc_maxsizeは夫々、
rc_minsize=round(room_min_area/μ2)
rc_maxsize=round(room_max_area/μ2)
ただし、μ=filter_spacing(フィルタ間隔)
を演算することによって得られる。ここで、roundは四捨五入によって値をまるめる演算を意味する。下記についても同様である。
【0038】
モデル生成装置10は、ユーザパラメータobj_min_area、obj_max_areaで指定される物体の最小表面積、最大表面積と、ユーザパラメータfilter_spacingで指定されるフィルタ間隔とに基づいて、内部パラメータos_minizie、os_maxsizeを生成する。
os_minizieは、物体として検出される領域の最小点数を指定するパラメータである。
os_maxsizeは、物体として検出される領域の最大点数を指定するパラメータである。
具体的には、上記os_minizie、os_maxsizeは夫々、
os_minsize=round(obj_min_area/μ2)
os_maxsize=round(obj_max_area/μ2)
ただし、μ=filter_spacing(フィルタ間隔)
を演算することによって得られる。
これらに加えて、内部パラメータksearch_neighboursを設定してもよい。これは法線計算のアルゴリズムで使用するパラメータである。
内部パラメータpixel_coeffを設定してもよい。これは1mが何ピクセルに対応するかを示すパラメータである。
内部パラメータrc_flagを設定してもよい。通常は0とするが、rc_flagの値が1である場合、天井全体を1部屋とみなす。
【0039】
またモデル生成装置10は、room_numで指定される部屋数と領域成長法で分離した部屋数とが合致するように領域成長法の内部パラメータrc_curv_thresh、rc_smooth_thresh、rc_neighboursの自動生成、自動調整を行う。
rc_curv_threshは、上記に説明したように、領域成長法の対象とする点群からシード点として採用するための「最小曲率点」を選択するための上記曲率閾値であり、曲率値がこの曲率閾値以下である最小曲率点がシード点として選択される。
rc_smooth_threshは、領域成長法の対象とする点群内の一の点が所定のセグメントに属するか否かを判定するためのパラメータである。すなわち、一のシード点の隣接点である一の点がシード点と同じ領域(セグメント)に属するか否かを、この隣接点とシード点との法線の角度に基づいて判断する上記の平滑閾値である。シード点の法線との角度が「平滑閾値」以下となる法線を有する隣接点が、このシード点と同じく領域(セグメント)に属するものとされる。
rc_neighboursは、シード点から領域を拡大する際にシード点から探索する隣接点の数(探索範囲)を指定するパラメータである。つまり、モデル生成装置10は、シード点を基点にrc_neighboursで定められている数の隣接点に対して、その法線がrc_smooth_threshを満たすか否かを判定するのである。rc_smooth_threshを満たす点がなくなるまで判定を繰り返すことなく、適切な範囲内で判定をすることにより処理負荷が過度に高くなることを防ぐことが出来る。
【0040】
モデル生成装置10は、領域成長法において、平滑閾値と曲率閾値とを用いて点群をセグメントに分類する。すなわちモデル生成装置10は、曲率閾値を満たす点をシード点に決定し、シード点の法線との角度が平滑閾値を満たす法線を有する点をシード値と同じセグメントに分類する。
平滑閾値、曲率閾値ともに0以上の値である。どちらも閾値も、大きくなるほど点同士が同じ領域とみなされ易くなり、その結果、検出される領域数(セグメント数)は少なくなる。
モデル生成装置10は、一般的な設定値(平滑閾値=3.0degree、曲率閾値=1.0)を基点として最適な平滑閾値と曲率閾値の組み合わせを二分探索的に調整する。
【0041】
モデル生成装置10は、具体的には、rc_smooth_thresh(平滑閾値)、rc_curv_thresh(曲率閾値)の二分探索的な自動設定、自動調整を以下のように行う。
図11は、平滑閾値、曲率閾値の自動調整を説明する図である。
下記の説明において、平滑閾値の単位degreeについては表示を省略している。
(lhs+rhs)/2=(3.0,1.0)を満たすように、lhs=(0,0)、rhs(6.0,2.0)とする。モデル生成装置10は、lhs=(0,0)とrhs=(6.0,2.0)の間で、最適な設定値(平滑閾値,曲率閾値)の組み合わせを探る処理を行う。
(1)(lhs+rhs)/2=((0,0)+(6.0,2.0))/2から上記の一般的な設定値A(3.0,1.0)が得られる。
モデル生成装置10は、この設定値Aによって領域成長法を実施して、天井データ2Aを部屋領域に分離する。分離された部屋領域数が、room_numで指定される部屋数と一致すれば処理は終了である。
(2-1)分離された部屋領域数が、room_numで指定される部屋数よりも大きければ、設定値Aを新たなlhsとして、(lhs+rhs)/2=((3.0,1.0)+(6.0,2.0))/2を演算し、新たな設定値B1(4.5,1.5)を得る。
(2-2)分離された部屋領域数が、room_numで指定される部屋数よりも小さければ、設定値Aを新たなrhsとして、(lhs+rhs)/2=((0,0)+(3.0,1.0))/2を演算し、新たな設定値B2(1.5,0.5)を得る。
【0042】
上記設定値B1を得た場合、設定値B1を用いて領域成長法を実施して天井データ2Aを部屋領域に分離する。分離された部屋領域数が、room_numで指定される部屋数と一致すれば処理は終了である。
(3-1)分離された部屋領域数が、room_numで指定される部屋数よりも大きければ、設定値B1を新たなlhsとして、(lhs+rhs)/2=((4.5,1.5)+(6.0,2.0))/2を演算し、新たな設定値C1を得る。
(3-1)分離された部屋領域数が、room_numで指定される部屋数よりも小さければ、設定値B1を新たなrhsとして、(lhs+rhs)/2=((3.0,1.0)+((4.5,1.5))/2を演算し、新たな設定値C2を得る
【0043】
上記で設定値B2を得た場合、設定値B2を用いて領域成長法を実施して天井データ2Aを部屋領域に分離する。分離された部屋領域数が、room_numで指定される部屋数と一致すれば処理は終了である。
(3-3)分離された部屋領域数が、room_numで指定される部屋数よりも大きければ、((1.5,0.5))である設定値B2を新たなlhsとして、(lhs+rhs)/2=((1.5,0.5)+(3.0,1.0))/2を演算し、新たな設定値C3を得る。
(3-4)分離された部屋領域数が、room_numで指定される部屋数よりも小さければ、((1.5,0.5))である設定値B2を新たなrhsとして、(lhs+rhs)/2=((0.0,0.0)+((1.5,0.5))/2を演算し、新たな設定値C4を得る。
【0044】
さらに、新たな設定値C1、C2、C3、C4を用いて領域成長法を実施して天井データ2Aを分離し、分離結果とroom_numで指定される部屋数と比較することを行う。
上記に説明した処理を同様に繰り返し行うが、一定回数を繰り返しても検出される部屋領域数と、room_numで指定される部屋数とが一致しない場合は、近しい数となった時点で終了してもよい。
【0045】
またモデル生成装置10は、room_max_verticesで指定される部屋領域の輪郭の最大頂点数と、obj_max_verticesで指定される物体の輪郭の最大頂点数を超えないように輪郭近似のパラメータ(wd_epsilon、os_epsilon)を自動調整する。
Douglas Peuckerアルゴリズムでは、モデル生成装置10は、epsilonの値を用いて輪郭を簡易化する。epsilonの値を大きくすると輪郭がより簡易化された結果となる。
自動調整の方法は、wd_epsilon、os_epsilon何れの場合も、epsilon=0.001に設定し、Douglas Peuckerアルゴリズムを実施して輪郭を簡易化する。
【0046】
簡易化後の部屋の頂点数>room_max_verticesで指定される最大頂点数
あるいは
簡易化後の物体の頂点数>obj_max_verticesで指定される最大頂点数
である場合には、モデル生成装置10はepsilonを2倍にし、再度Douglas Peuckerアルゴリズムを実行する。
簡易化後の部屋の頂点数>room_max_verticesで指定される最大頂点数
あるいは
簡易化後の物体の頂点数>obj_max_verticesで指定される最大頂点数
でない場合には、モデル生成装置10は調整を完了する。
【0047】
図12図13は、モデル生成装置のCPUが実行するモデル生成処理の流れを説明するフローチャートである。
CPU11は、ステップS101において、屋内点群データが入力されたか否かを判定する。
屋内点群データが入力されたと判定した場合(ステップS101でYes)、CPU11は、ステップ102において、ユーザパラメータが入力されたか否かを判定する。
上記したように、入力されるユーザパラメータは、フィルタ処理におけるフィルタ間隔を指定するfilter_spacing、検出される部屋の最小面積、最大面積を夫々指定するroom_min_area、room_max_area、検出される物体の最大表面積、最小表面積を夫々指定するobj_min_area、obj_max_area、検出が期待される部屋数を指定するroom_num、部屋領域の輪郭の最大頂点数を指定するroom_max_vertices、物体の輪郭の最大頂点数を指定するobj_max_verticesである。
【0048】
ユーザパラメータが入力されたと判定した場合(ステップS102でYes)、CPU11は、ユーザパラメータに基づいて、内部パラメータを自動設定し、パラメータ記憶部52に格納する。
特にCPU11は、パラメータroom_min_area、room_max_areaで指定される部屋の最小面積、最大面積と、filter_spacingで設定されるフィルタ間隔とに基づいて、部屋として検出される領域の最小点数を指定する内部パラメータrc_minsize、最大点数を指定する内部パラメータrc_maxsizeを生成する。
またモデル生成装置10は、obj_min_area、obj_max_areaで指定される物体の最小表面積、最大面積とfilter_spacingで指定されるフィルタ間隔とに基づいて、物体として検出される領域の最小点数(os_minizie)、最大点数(os_maxsize)を生成する。
【0049】
CPU11は、ステップS104において、屋内点群データに基づいて、高さのヒストグラムを作成する。
CPU11は、ステップS105において、作成したヒストグラムから、入力された屋内点群データにおける床面の屋内点群データ(床データ)と天井面の屋内点群データ(天井データ)を検出する。
CPU11は、[ヒストグラムの最大値]×fc_cutoff_coeff以上の値を持つビンをピークとして検出する。内部パラメータfc_cutoff_coeffは、ヒストグラムにおける最大のビンに対しピークとして検出するビンの閾値を決定する割合である。なおfc_cutoff_coeffは、自動設定、自動調整の対象とはならない固定パラメータである。
CPU11は、ピークとして検出されたビンクラスタのうち、高さが一番低い場所を床、それ以外を天井群とみなす。
ピーク検出がうまく行かない場合、内部パラメータfc_min_thresh、fc_max_threshで指定される天井の最小高さ、最大高さを用い、高さがfc_min_thresh以上且つfc_max_thresh以下であるのすべての点を天井データとみなすようにしてもよい。fc_min_thresh、fc_max_threshは、自動設定、自動調整の対象とはならない固定パラメータである。
【0050】
CPU11は、ステップS106において、内部パラメータrc_neighbours、rc_smooth_thresh、rc_curv_threshを用いて天井データに対する領域成長法を行い、天井データの点群を1以上の部屋領域に相当するセグメントに分離する。rc_smooth_thresh、rc_curv_threshの値については、上記したように初期値として一般的な値を用いる。
CPU11は、天井データの点群をセグメントに分離したあとセグメントに含まれる点数がステップS103で生成したrc_minsize以上、rc_maxsize以下であるときにそのセグメントを採用し、そうでない場合は採用しない。
【0051】
CPU11は、ステップS107において、分離した部屋領域を二次元に投影して各部屋の平面画像を作成する。CPU11は、セグメントに分離したそれぞれの天井データを部屋領域とみなし、夫々の部屋領域の点群を二次元に投影した画像データ(平面画像)を作成する。
point_size=1.414×100×μ(フィルタ間隔)を演算することにより、点群を二次元画像に投影するときの半径(単位:pixel)を設定してもよい。このpoint_sizeは、部屋領域の点群を投影する場合にも、物体の点群を投影する場合にも用いることが出来る。
【0052】
CPU11は、ステップS108において、平面画像に画像処理を行って各部屋の輪郭を検出し、Douglas Peuckerアルゴリズムによって輪郭の頂点数を削減する。このとき、簡易化する程度を示す指標である内部パラメータwd_epsilonが用いられる。CPU11は、初期値としてwd_epsilon=0.001と設定してDouglas Peuckerアルゴリズムを実施し、部屋領域の輪郭を簡易化する。
CPU11は、S109において、簡易化後の部屋の最大頂点数がroom_max_verticesで指定される最大頂点数よりも大きいか否かを判定する。簡易化後の部屋の頂点数がroom_max_verticesで指定される最大頂点数よりも大きい場合(S109でYes)、CPU11は、S110においてwd_epsilonを2倍にする調整を行い、ステップS108に戻ってDouglas Peuckerアルゴリズムを実行する。簡易化後の部屋の頂点数がroom_max_verticesで指定される最大頂点数と同じか小さい場合(S109でNo)、CPU11は、wd_epsilonの調整を完了して次のステップに処理を移す。
【0053】
CPU11は、ステップS111において、部屋領域数が、ユーザがroom_numに指定した部屋数に一致しているかを判定する。一致しないと判定した場合(ステップS111でNo)、CPU11は、ステップS112において、上記に説明したように領域成長法に用いるパラメータrc_smooth_thresh、rc_curv_threshを設定しなおす。そしてステップS106に処理を戻し、部屋領域の分離から処理をやりなおす。調整をしてもステップS111で分離した部屋数がユーザ指定の数と一致しない場合は、一番近い部屋数を用いればよい。
【0054】
部屋領域数が、ユーザがroom_numに指定した部屋数に一致すると判定した場合(ステップS111でYes)、CPU11は、ステップS113において、部屋の輪郭を用いて各部屋内部の物体の点群を分離する。
CPU11は、ステップS113において、上記ステップS108で簡易化した部屋の輪郭を用いて屋内の物体を分離する。
物体の分離にあたり、CPU11は、内部パラメータdist_from_wall、wd_max_verticesを用いる。
dist_from_wallは、壁からどの程度の距離だけ内側にあれば部屋内部の点と見なすかを決める閾値であり、CPU11は、壁の内側且つ壁からの距離がdist_from_wall以上の点を物体の点とみなす。dist_from_wallは自動設定、自動調整の対象とはならない固定パラメータである。
wd_max_verticesは自動設定、自動調整の対象とはならない固定パラメータである。
【0055】
分離した物体をモデル化するが、上記したように、モデル生成装置10は、簡易物体モデル化とメッシュ物体モデル化とを行うことができる。このフローチャートでは、簡易物体モデル化を主に説明する。簡易物体モデル化は、部屋の輪郭を検出した場合と同様の手法を用いて物体の輪郭を検出し、検出した物体をモデル化する方法である。
簡易物体モデル化は、物体を分離する際の距離閾値である内部パラメータos_toleranceと、ステップS103で生成したos_minsize、os_maxsizeを用いる。os_toleranceは自動設定、自動調整の対象とはならない固定パラメータである。
CPU11は、os_toleranceで指定される距離よりも離れていない点同士を同じ物体に属すとみなし、この距離以上離れている点同士を別の物体と属すとみなすことにより、ステップS113で分離した物体を個々の物体に分離する。
さらにCPU11は、分離した個々の物体のうち、点数が、os_minsizeで指定される数よりも多く、且つos_maxsizeで指定される数よりも少ないものを物体として採用し、それ以外の物体を採用しない。
【0056】
CPU11は、ステップS115において、ステップS114で分離した個々の物体の点群を二次元に投影した画像データ(平面画像)を作成する。
CPU11は、平面画像に画像処理を行って各物体の輪郭を検出し、このときDouglas Peuckerアルゴリズムによって頂点数を削減する。このとき、輪郭の頂点数を削減する際に簡易化する程度を示す指標である内部パラメータos_epsilonが用いられる。CPU11は、まず初期値としてos_epsilon=0.001に設定してDouglas Peuckerアルゴリズムを実施し、物体の輪郭を簡易化する。
【0057】
CPU11は、S117において、簡易化後の物体の頂点数>obj_max_verticesで指定される最大頂点数であるか否かを判定する。簡易化後の物体の頂点数>obj_max_verticesで指定される最大頂点数である場合(S117でYes)、CPU11は、S118においてos_epsilonを2倍にする調整を行い、ステップS108に戻ってDouglas Peuckerアルゴリズムを実行する。簡易化後の物体の頂点数<obj_max_verticesで指定される最大頂点数である場合(S117でNo)、CPU11は、wd_epsilonの調整を完了し、次のステップに処理を移す。
【0058】
CPU11は、ステップS119において、部屋の輪郭と、上記ヒストグラムに基づく床と天井の高さから、部屋の3Dモデルを作成する。
CPU11は、ステップS120において、物体の輪郭、最小高さ、最大高さに基づいて、物体の3Dモデルを作成する。
CPU11は、ステップS119、ステップS120で夫々作成した部屋の3Dモデル、物体の3Dモデルによって、図9に示すような屋内3Dモデルを生成する。
【0059】
なお、メッシュ物体モデル化は、以下のように行う。CPU11は、Greedy Surface Triangulation(GST)アルゴリズムを用いて物体のメッシュ化を行う。メッシュ物体モデル化において、CPU11は、内部パラメータom_search_radius、om_mu、om_neighbours、om_max_surface_angle、om_min_angle、om_max_angleを用いる。
om_search_radiusは、メッシュ化する三角形の最大許容距離を示すGSTパラメータである。
om_muは、探索する近傍の大きさを制御するパラメータである。
om_neighboursは、探索する近傍の大きさを制御するパラメータである。
om_max_surface_angleは、鋭いエッジがあり、2つの三角形が互いにとても接近している場合に対処するためのパラメータである。
om_min_angleは、メッシュ化する三角形の最小角度を示すパラメータである。
om_max_angleは、メッシュ化する三角形の最大角度を示すパラメータである。
CPU11は、上記のパラメータによって物体をメッシュ化し、Quadratic Decimation(QD)アルゴリズムを用いてメッシュの数を削減する。その際には、目標削減面数の割合を示す内部パラメータom_target_reductionを用いる。
【0060】
なお、図1の屋内点群データから、物体なしで部屋モデルのみを生成した場合、面数は54であり、計算時間は5分16秒であった。
部屋モデルに加えて簡易物体モデルの生成を行った場合、面数は全部で2447であり、計算時間は12分01秒であった。
部屋モデルに加えてメッシュ物体モデルの生成を行った場合、面数は331264であり、計算時間は5時間36分18秒であった。
簡易物体モデルはメッシュ物体モデルに比べて面数も少なく、計算時間を大幅に削減できることが分かる。
【0061】
なお、図12図13に示した処理は一例であり異なる順序で行っても良い。例えばステップS106で部屋領域を分離したあと、部屋領域の輪郭検出に関わるステップS107~S110を行う前に、ステップS111の判断と、ステップS112のrc_smooth_thresh、rc_curv_threshの更新を行ってもよい。
【0062】
以上のように構成したことにより、本実施形態によれば、ユーザは、部屋数などの簡単なパラメータを設定入力するのみで、屋内点群データから、簡単に屋内3Dモデルを作成することが出来る。また従来は難しかった部屋内に存在するテーブルや椅子などの物体も部屋とともに3Dモデル化することができる。その結果、電波伝播シミュレーション(レイトレース解析)により適した屋内3Dモデルを屋内点群データから作成することができる。
【符号の説明】
【0063】
10 モデル生成装置、11 CPU、12 RAM、13 HDD、14 I/Oインターフェイス、15 読書装置、16 ネットワークI/F、17 表示装置、18 入力装置、30A 制御部、30B 記憶部、31 データ入力部、32 パラメータ設定部、33 パラメータ生成部、34 ヒストグラム生成部、35 床・天井検出部、36 部屋領域分離部、37 輪郭検出部、38 部屋モデル生成部、39 物体分離部、40 物体モデル生成部、200 記憶媒体、41 点群フィルタ部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13