<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s121216099</article-id>
<article-id pub-id-type="publisher-id">sensors-12-16099</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Automatic Method for Building Indoor Boundary Models from Dense Point Clouds Collected by Laser Scanners</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Valero</surname><given-names>Enrique</given-names></name><xref ref-type="aff" rid="af1-sensors-12-16099"><sup>1</sup></xref><xref ref-type="aff" rid="af2-sensors-12-16099"><sup>2</sup></xref><xref ref-type="corresp" rid="c1-sensors-12-16099"><sup>*</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Adán</surname><given-names>Antonio</given-names></name><xref ref-type="aff" rid="af2-sensors-12-16099"><sup>2</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Cerrada</surname><given-names>Carlos</given-names></name><xref ref-type="aff" rid="af1-sensors-12-16099"><sup>1</sup></xref></contrib></contrib-group>
<aff id="af1-sensors-12-16099">
<label>1</label>School of Computer Engineering, Universidad Nacional de Educación a Distancia (UNED), C/Juan del Rosal, 16, 28040 Madrid, Spain; E-Mail: <email>ccerrada@issi.uned.es</email></aff>
<aff id="af2-sensors-12-16099">
<label>2</label>3D Visual Computing and Robotics Lab, Universidad de Castilla-La Mancha (UCLM), Paseo de la Universidad, 4, 13071 Ciudad Real, Spain; E-Mail: <email>Antonio.Adan@uclm.es</email></aff>
<author-notes>
<corresp id="c1-sensors-12-16099">
<label>*</label>Author to whom correspondence should be addressed; E-Mail: <email>evalero@issi.uned.es</email>; Tel.: +34-91-398-6477.</corresp></author-notes>
<pub-date pub-type="collection">
<month>12</month>
<year>2012</year></pub-date>
<pub-date pub-type="epub">
<day>22</day>
<month>11</month>
<year>2012</year></pub-date>
<volume>12</volume>
<issue>12</issue>
<fpage>16099</fpage>
<lpage>16115</lpage>
<history>
<date date-type="received">
<day>31</day>
<month>08</month>
<year>2012</year></date>
<date date-type="rev-recd">
<day>30</day>
<month>10</month>
<year>2012</year></date>
<date date-type="accepted">
<day>08</day>
<month>11</month>
<year>2012</year></date></history>
<permissions>
<copyright-statement>© 2012 by the authors; licensee MDPI, Basel, Switzerland</copyright-statement>
<copyright-year>2012</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>In this paper we present a method that automatically yields Boundary Representation Models (B-rep) for indoors after processing dense point clouds collected by laser scanners from key locations through an existing facility. Our objective is particularly focused on providing single models which contain the shape, location and relationship of primitive structural elements of inhabited scenarios such as walls, ceilings and floors. We propose a discretization of the space in order to accurately segment the 3D data and generate complete B-rep models of indoors in which faces, edges and vertices are coherently connected. The approach has been tested in real scenarios with data coming from laser scanners yielding promising results. We have deeply evaluated the results by analyzing how reliably these elements can be detected and how accurately they are modeled.</p></abstract>
<kwd-group>
<kwd>3D modeling</kwd>
<kwd>B-rep models</kwd>
<kwd>laser scanners</kwd>
<kwd>3D data processing</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>During the last decade laser scanners have gained popularity in architecture, engineering, construction and facility management (AEC/FM). Other measurement methods such as total stations, measuring tapes and based-stereo-camera prototypes are too time-consuming or inaccurate compared to scanners, particularly in large-scale environments. Moreover the high density provided by a single scan (which could be over several million points) makes this technology very suitable for use in the 3D modeling of facilities.</p>
<p>Most of the time, the dense raw data provided from scanners are manipulated by a designer or processed by an engineer in order to create a simplified model of the scenario. This well known reverse engineering process is applied to 3D model creation. Thus, a simplified model provides a high-level representation of the scenario that ranges from a single CAD model, in which a wall is represented as a set of independent planar surfaces, to a Building Information Model (BIM), in which a wall is thought as a volumetric object composed by multiple surfaces with several relevant properties like color, material, cost, <italic>etc.</italic> Much of the emphasis in previous works has been on creating visually realistic non-parametric models rather than accurate parametric ones. Some examples in this category include methods by El-Hakim <italic>et al.</italic>[<xref ref-type="bibr" rid="b1-sensors-12-16099">1</xref>], which is focused on indoor environments and Früh <italic>et al.</italic>[<xref ref-type="bibr" rid="b2-sensors-12-16099">2</xref>] and Remondino <italic>et al.</italic>[<xref ref-type="bibr" rid="b3-sensors-12-16099">3</xref>], which are focused on outdoor environments. In these cases, a great part of the modeling process is supervised by the modeler so that it cannot be said that models are obtained in an automatic manner.</p>
<p>In this paper we introduce a method that automatically yields Boundary Representation Models (B-rep) for indoors after processing dense point clouds collected by laser scanners from key locations through an existing facility. The 3D model then represents the current state of the building, what is named as the “as-is condition”. This model does not necessarily have to be coincident with either the designed (“as-designer condition”) or the built model (“as-built condition”). In fact, the facility could have lightly been modified or restored from its initial design. In other occasions, we cannot access to the design drawings or they merely do not exist. Thus, the automatic creation of “as-is models” of inhabited scenarios is a challenging research field which is gaining attention from different applications including architecture, engineering, robotics, <italic>etc.</italic>[<xref ref-type="bibr" rid="b4-sensors-12-16099">4</xref>].</p>
<p>Although there are not many publications dealing with the automatic creation of 3D models, in the last years several interesting works related with some of the stages of this process can be found in the literature. A review for automatic reconstruction of as-built building information models can be found in [<xref ref-type="bibr" rid="b4-sensors-12-16099">4</xref>]. The process of creating a single-semantic model can vary depending on the input and expected output. Generally, the automatic modeling process can be divided into three steps: data acquisition, data processing and data modeling, and most of the published papers concentrate on the second stage: data processing.</p>
<p>In this framework, 3D data processing means processing millions of unstructured 3D data in order to obtain higher level data structures. Several approaches that convert 3D data into high-level representations in buildings context can be found over the last years. We can here distinguish between proposals to detect and model single objects or particular parts of large scenarios and those than completely model indoors and outdoors.</p>
<p>As regards the first sort of proposals, one of the earlier works that obtain 3D models from laser scanner in a local space context is the one of Kwon <italic>et al.</italic>[<xref ref-type="bibr" rid="b5-sensors-12-16099">5</xref>]. They introduce a set of algorithms for fitting sparse point clouds to a set of single volumetric primitives (cuboids, cylinders and spheres) which can be extended to groups of primitives belonging to the same object. An automated recognition/retrieval approach for 3D CAD objects in the construction context is presented in [<xref ref-type="bibr" rid="b6-sensors-12-16099">6</xref>]. In [<xref ref-type="bibr" rid="b7-sensors-12-16099">7</xref>] a semiautomatic method to match 3D existing models to data of industrial building steel structures is proposed. The author develops a variant of the ICP algorithm for data registration in order to recognize CAD models objects in large site laser scans. The method is semiautomatic because a coarse registration needs to be performed manually. The same author presents in [<xref ref-type="bibr" rid="b8-sensors-12-16099">8</xref>] a plane based registration system for coarse registration of laser scanners data with 3D models in the context of AEC/FM industry. The approach is based on finding planes from the point cloud and matching them with the ones extracted from the 3D models. Nevertheless, the matching process is performed by hand. Other authors [<xref ref-type="bibr" rid="b9-sensors-12-16099">9</xref>] propose the combination of point clouds, acquired by means of laser scanners, and photogrammetry in order to generate 3D models of a building under construction. The work of Rusu <italic>et al.</italic>[<xref ref-type="bibr" rid="b10-sensors-12-16099">10</xref>] correctly recognizes and localizes relevant kitchen objects including cupboards, kitchen appliances, and tables. They interpret the improved point clouds in terms of rectangular planes and 3D geometric shapes. One of the innovations consists of including a novel multi-dimensional tuple representation for point clouds and robust, efficient and accurate techniques for computing these representations, which facilitate the creation of hierarchical object models.</p>
<p>Detailed models of part of the walls and building façades are obtained in [<xref ref-type="bibr" rid="b2-sensors-12-16099">2</xref>,<xref ref-type="bibr" rid="b11-sensors-12-16099">11</xref>–<xref ref-type="bibr" rid="b13-sensors-12-16099">13</xref>]. In [<xref ref-type="bibr" rid="b11-sensors-12-16099">11</xref>,<xref ref-type="bibr" rid="b12-sensors-12-16099">12</xref>] the data processing goes from detecting windows through low data density regions to discover other data patterns in the façade. In [<xref ref-type="bibr" rid="b13-sensors-12-16099">13</xref>] important façade elements such as walls and roofs are distinguished as features. Then, the knowledge about the features’ sizes, positions, orientations, and topology is introduced to recognize these features in a segmented laser point cloud. Früh <italic>et al.</italic>[<xref ref-type="bibr" rid="b2-sensors-12-16099">2</xref>] develop a set of data processing algorithms for generating textured façade meshes of cities from a series of scans, corresponding to vertical 2D surfaces, obtained by a laser scanner. Thrun <italic>et al.</italic> developed a plane extraction method based on the expectation-maximization algorithm [<xref ref-type="bibr" rid="b14-sensors-12-16099">14</xref>]. Other researchers have proposed plane sweep approaches to find planar regions [<xref ref-type="bibr" rid="b15-sensors-12-16099">15</xref>,<xref ref-type="bibr" rid="b16-sensors-12-16099">16</xref>]. Valero <italic>et al.</italic>[<xref ref-type="bibr" rid="b17-sensors-12-16099">17</xref>] focus on the modeling of those linear moldings that typically surround doorways, windows, and divide ceilings from walls and walls from floors.</p>
<p>With respect to the automatic creation of complete indoor models, geometric surfaces or volumetric primitives can be fitted to a 3D point cloud to model walls, doors, ceilings, columns, beams, and other structures of interest. In its most simple format, the modeled primitives are annotated with labels (e.g., “wall”). In a higher modeling degree, spatial and functional relationships between nearby structures and spaces are established. Interesting developments can be seen in [<xref ref-type="bibr" rid="b18-sensors-12-16099">18</xref>] and [<xref ref-type="bibr" rid="b19-sensors-12-16099">19</xref>]. In these works, Adan <italic>et al.</italic> identify and model the main structural components of an indoor environment (walls, floors, ceilings, windows, and doorways) despite the presence of significant clutter and occlusion, which occur frequently in natural indoor environments, but they deal with rectangular rooms. Furthermore, in the present work we present an approach to identify walls in rooms with more complicated geometries. Okorn <italic>et al.</italic>[<xref ref-type="bibr" rid="b20-sensors-12-16099">20</xref>] present an automated method for creating accurate 2D floor plan models of building interiors. They project the points onto a 2D ground plane and create a histogram of points density, from which line segments corresponding to walls are extracted using a Hough Transform. The first steps of our proposal seem to be inspired in the same strategy since we also project the points to extract the approximate 2D wall’s location. Nevertheless, this is only used to later retrieve the corresponding 3D data and delimitate with precision the points belonging to the walls.</p>
<p>This work aims to make progress in the creation of automatic 3D models from point clouds provided by scanners [<xref ref-type="bibr" rid="b21-sensors-12-16099">21</xref>]. The contributions of this work lie in three points: accuracy of the model, coherent representation and evaluation of the method. First, we propose a voxelization (discretization) of the space with which to accurately define the planes fitted to the points belonging to the ceiling, floor and walls of the facility. Second, we generate a complete boundary representation model of the indoor in which faces, edges and vertices are coherently connected. Third, once the method is designed and implemented, we make a performance evaluation by measuring the geometric modeling accuracy, the recognition accuracy and the relationship modeling accuracy. The following sections explain the main stages to achieve a complete B-rep model of interiors and present the results obtained.</p></sec>
<sec sec-type="methods">
<label>2.</label>
<title>3D Data Segmentation</title>
<sec>
<label>2.1.</label>
<title>Floor and Ceiling Segmentation</title>
<p>The first stage in the 3D model creation process consists of efficiently segmenting the data obtained by the scanner from different positions. Here we assume that preprocessing stages like outliers/noise filtering and data registration are done, so that our input is an unstructured large cloud of points.</p>
<p>One of the problems which arise in the automatic walls detection is the voxelization of the space in the sense of which the best voxels’ size is and where the origin of the space is set. In [<xref ref-type="bibr" rid="b18-sensors-12-16099">18</xref>,<xref ref-type="bibr" rid="b19-sensors-12-16099">19</xref>] this aspect is not tackled. In the present work, we deal with the optimization of the voxels’ size, allowing us to adjust more precisely and at the same time, the ceiling, floor and walls of rectangular rooms into the voxel planes. Thus, a voxel plane contains the majority of the data of each wall.</p>
<p>First of all, we face up the identification and segmentation of the floor and the ceiling of the room. The method proposed in this section assumes that, as it is usual in construction, floor and ceiling are parallel structures. From here on the word “wall” will be indistinctly used to refer any flat indoor structure (ceiling, floor or wall). Our approach is based on creating an optimum discretization of the space (from here on called “voxel space”) and then accurately defining the planes which contain the maximum number of points which lie in the floor and ceiling.</p>
<p>Formally, the voxel space can be defined in a universal coordinate system (UCS) by means of the voxel size (<italic>ε</italic>, <italic>δ</italic>, <italic>σ</italic>) and the coordinates of centroid’s voxel (<italic>v<sub>x</sub></italic>, <italic>v<sub>y</sub></italic>, <italic>v<sub>z</sub></italic>), <italic>v<sub>z</sub></italic> being voxel’s height, according to the construction context.</p>
<p>Assuming cubic voxels, our objective is then addressed on determining the minimum voxel size, characterized by the parameter <italic>ε</italic>, and the first coordinate of the voxel plane <italic>v<sub>z</sub></italic> which contains the maximum number of the points belonging to a wall. Once the voxelization of the space is carried out, most of the points belonging, for example, to the floor are contained in a narrow parallelepiped <italic>M</italic> whose height is <italic>ε</italic> (see <xref ref-type="fig" rid="f1-sensors-12-16099">Figure 1(a)</xref>). The uncertainty in <italic>ε</italic> can be limited by means of the flatness specifications provided in the construction standards.</p>
<p>The trade-off between the size of the voxels and the number of points contained in <italic>M</italic> is regulated by the objective function (1), in which <italic>p(ε</italic>, <italic>v<sub>z</sub></italic><italic>)</italic> is the percentage of the data contained in <italic>M.</italic> Therefore, this function evaluates the percentage of the wall’s data contained in a voxel plane <italic>versus</italic> the voxel’s size. <xref ref-type="fig" rid="f1-sensors-12-16099">Figure 1</xref> shows the voxelization of the space according to the definition of the volume <italic>M</italic> for the floor (<italic>M<sub>a</sub></italic>) and the ceiling (<italic>M<sub>b</sub></italic>):
<disp-formula id="FD1">
<label>(1)</label>
<mml:math id="mm1" display="block">
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>ε</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mi>z</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>p</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>ε</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mi>z</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mi>ε</mml:mi></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>In order to obtain the maximum value of function <italic>F</italic>, attaining the maximum number of the wall’s data inside a voxel plane, different restricted ranges are defined for variables <italic>ε</italic> and <italic>v<sub>z</sub></italic>. On the one hand, <italic>ε</italic> is delimited by the range [<italic>ε<sub>1</sub></italic>, <italic>ε<sub>2</sub></italic>] in which <italic>ε<sub>1</sub></italic> corresponds to the precision of the scanner (in our case, 1 cm) and<italic>ε<sub>2</sub></italic> is determined by the flatness tolerance, allowed in the international specification DIN 18202.</p>
<p>On the other hand, <italic>v<sub>z</sub></italic> is initialized in the position <italic>m</italic>, which corresponds to the maximum value of the data distribution around the wall. For each value of <italic>ε</italic> in the range [<italic>ε<sub>1</sub></italic>, <italic>ε<sub>2</sub></italic>] the value of <italic>v<sub>z</sub></italic> is evaluated for the range [<italic>m</italic> − <italic>ε</italic>, <italic>m + ε</italic>] and function <italic>F</italic> is then calculated. Once this process is finished, the maximum value of <italic>F</italic> (<italic>max F</italic> in <xref ref-type="table" rid="t3-sensors-12-16099">Algorithm 1</xref>) provides the optimum values <italic>ε’</italic> and <italic>v’<sub>z</sub></italic> respectively. The algorithm is shown below.</p>
<p>When the algorithm is separately applied for ceiling and floor, two different voxel space configurations are generated. Let (<italic>v’<sub>z,a</sub></italic>, <italic>ε’<sub>a</sub></italic>) and (<italic>v’<sub>z,b</sub></italic>, <italic>ε’<sub>b</sub></italic>) be the position and voxel size parameters calculated for the floor and the ceiling of the room. We propose a new function <italic>G</italic> which integrates both voxelization proposals.</p>
<table-wrap id="t3-sensors-12-16099" position="float">
<label>Algorithm 1.</label>
<caption>
<p>Calculation of optimum values <italic>ε’</italic> and <italic>v’<sub>z</sub></italic>.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top"><italic>F</italic>(<italic>ε</italic>,<italic>v<sub>z</sub></italic>)← 3D data distribution in axis Z</td></tr>
<tr>
<td align="left" valign="top"><italic>m←</italic> fitted Gaussian function</td></tr>
<tr>
<td align="left" valign="top"><italic>max F← F(ε<sub>1</sub></italic><italic>,m)</italic></td></tr>
<tr>
<td align="left" valign="top"><bold>for each</bold> <italic>ε</italic><bold>←</bold><italic>ε</italic><sub>1</sub> to <italic>ε</italic><sub>2</sub><bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">  <bold>for each</bold> <italic>z</italic><bold>←</bold><italic>m-ε</italic> to <italic>m+ε</italic> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">    <italic>F</italic>(<italic>ε</italic>,<italic>z</italic>)</td></tr>
<tr>
<td align="left" valign="top">    <bold>if</bold><italic>F</italic>(<italic>ε</italic>,<italic>z</italic>) &gt; <italic>max F</italic> <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">      <italic>max F← F</italic>(<italic>ε</italic>,<italic>z</italic>); <italic>ε’ ← ε ; v’<sub>z</sub></italic><italic>← z</italic></td></tr>
<tr>
<td align="left" valign="top">    <bold>end</bold></td></tr>
<tr>
<td align="left" valign="top">  <bold>end</bold></td></tr>
<tr>
<td align="left" valign="top"><bold>end</bold></td></tr></tbody></table></table-wrap>
<p><xref ref-type="disp-formula" rid="FD2">Equation (2)</xref> imposes one unique voxel size <italic>E</italic> and the positions of the planes of voxels <italic>V’<sub>z,a</sub></italic> and <italic>V’<sub>z,b</sub></italic>, attaining the maximum value of G which provide us the best simultaneous planes of voxels for ceiling and floor. The new proposed function to optimize is as follows:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math id="mm2" display="block">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mtext>argmax</mml:mtext></mml:mrow></mml:mrow>
<mml:mi mathvariant="normal">Ω</mml:mi></mml:msub>
<mml:mo>{</mml:mo>
<mml:mi>G</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi></mml:mrow></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>}</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">Ω</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>E</mml:mi>
<mml:mo>∈</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mi>ε</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mi>ε</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo stretchy="false">]</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi></mml:mrow></mml:msub>
<mml:mo>∈</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mi>ε</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mi>ε</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:mo stretchy="false">]</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi></mml:mrow></mml:msub>
<mml:mo>∈</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mo>,</mml:mo></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mi>ε</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mo>,</mml:mo></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mi>ε</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:mo stretchy="false">]</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi></mml:mrow></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo>}</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi></mml:mrow>
<mml:mi>a</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi></mml:mrow>
<mml:mi>b</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula><italic>p<sub>a</sub></italic> and <italic>p<sub>b</sub></italic> are the occupation percentages for the parameters <italic>ε’<sub>a</sub></italic> and <italic>ε’<sub>b</sub></italic>. The pseudocode of the algorithm which obtains <italic>G</italic> is detailed in <xref ref-type="table" rid="t4-sensors-12-16099">Algorithm 2</xref>.</p>
<table-wrap id="t4-sensors-12-16099" position="float">
<label>Algorithm 2.</label>
<caption>
<p>Obtaining the function <italic>G</italic>.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top"><bold>for each</bold> <italic>ε ← ε</italic><sub>1</sub> to <italic>ε</italic><sub>2</sub> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">  <bold>for each</bold> <italic>z ← z<sub>a</sub>−ε/2</italic> to <italic>z<sub>a</sub>+ε/2</italic> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">    calculate <italic>ceiling voxel centroid b</italic></td></tr>
<tr>
<td align="left" valign="top">    calculate number of points in intervals <italic>a</italic> and <italic>b</italic></td></tr>
<tr>
<td align="left" valign="top">    calculate percentage of points <italic>p<sub>a</sub></italic> and <italic>p<sub>b</sub></italic></td></tr>
<tr>
<td align="left" valign="top">  <bold>end</bold></td></tr>
<tr>
<td align="left" valign="top">  <bold>for each</bold> <italic>z ← z<sub>b</sub>−ε/2</italic> to <italic>z<sub>b</sub>+ε/2</italic> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">    calculate <italic>ceiling voxel centroid a</italic></td></tr>
<tr>
<td align="left" valign="top">    calculate number of points in intervals <italic>a</italic> and <italic>b</italic></td></tr>
<tr>
<td align="left" valign="top">    calculate percentage of points <italic>p<sub>a</sub></italic> and <italic>p<sub>b</sub></italic></td></tr>
<tr>
<td align="left" valign="top">  <bold>end</bold></td></tr>
<tr>
<td align="left" valign="top"><bold>end</bold></td></tr>
<tr>
<td align="left" valign="top"><italic>G = maximum(sum(p<sub>a</sub>,p<sub>b</sub>))</italic></td></tr></tbody></table></table-wrap></sec>
<sec>
<label>2.2.</label>
<title>Performance Tests</title>
<p>The approach detailed above has been tested in simulated and real data. <xref ref-type="fig" rid="f1-sensors-12-16099">Figure 1</xref> shows an example of the results obtained under simulation. In <xref ref-type="fig" rid="f1-sensors-12-16099">Figure 1(b)</xref> a front view of a simulated point cloud of a room is depicted. It can be seen two dense point regions, which correspond to the floor and ceiling, and sparse regions which simulate the rest of the sensed points in the room. The maximum values of two Gaussian functions fitted to the data distribution determine the initial values of <italic>v<sub>z,a</sub></italic> and <italic>v<sub>z,b</sub></italic>. <xref ref-type="fig" rid="f1-sensors-12-16099">Figure 1(c)</xref> shows the voxels planes projected over the plane YZ, the 3D data and two slices in red and blue that contain the majority of the sensed points. The red voxels plane contains points of the floor and the blue one contains points of the ceiling. We tested the algorithm over twenty simulated rooms. The occupation percentage averages for ceiling and floor were 96.9% and 92.1% respectively.</p>
<p><xref ref-type="fig" rid="f1-sensors-12-16099">Figure 1(d)</xref> presents the result for a real case. We illustrate the 3D data sensed by a laser scanner from five positions of an inhabited classroom. The data segments corresponding to the ceiling and floor are painted in cyan and red. The total point cloud was composed by 1.5 million points, and the size of the segmented regions was 187,000 points for the ceiling and 95,000 points for the floor.</p></sec>
<sec>
<label>2.3.</label>
<title>Walls Segmentation</title>
<sec>
<label>2.3.1.</label>
<title>Rectangular Indoor Plans</title>
<p>In this section we present an approach to segment 3D data corresponding to each one of the walls of a rectangular indoor plan. A rectangular plan is the easiest case to be dealt with. The strategy explained in Section 2.1 can here be extended by considering three pairs of parallel voxels planes, so that the <xref ref-type="disp-formula" rid="FD2">Equation (2)</xref> can be easily extended. The objective is to find six parallelepipeds (slices) with centers <italic>c<sub>i</sub></italic>, <italic>i = 1,…6</italic> and with a common width <italic>ε</italic> which contain the maximum number of points belonging to the walls of the room. Formally, the objective is:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math id="mm3" display="block">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:munder>
<mml:mrow>
<mml:mtext>argmax</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>G</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>ε</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:munder></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>ε</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:mn>...</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mn>6</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mn>6</mml:mn></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>ε</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mi>ε</mml:mi>
<mml:mo>∈</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mi>ε</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext></mml:mrow></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mi>ε</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>∈</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mi>ε</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mi>ε</mml:mi>
<mml:mo>′</mml:mo></mml:msup></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mn>6</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula></p></sec>
<sec>
<label>2.3.2.</label>
<title>Arbitrary Indoor Plans</title>
<p>Assuming that floor and ceiling lie in parallel planes, the approach proposed in Section 2.1 can always be used to detect the floor and the ceiling in any non-rectangular room of a building. <xref ref-type="fig" rid="f2-sensors-12-16099">Figure 2(b)</xref> illustrates the extraction of the points belonging to the floor and ceiling of an arbitrary plan. However, the identification of the walls is a more complex task.</p>
<p>The projection of the 3D data from a specific viewpoint allows us to obtain a normalized binary image in which each pixel can be occupied by one or more 3D points (white pixels in <xref ref-type="fig" rid="f3-sensors-12-16099">Figure 3(b)</xref>) or not. From here on, we will denote <italic>I</italic> the projected image of the data from a top view. This image will help us to obtain a coarse location and position of the walls which will be later refined. The segmentation process is as follows.</p>
<p>After creating the image <italic>I</italic>, the boundary of the room is extracted and, through a Hough Transform algorithm, the set of edges corresponding to the walls in the projected image are detected in a 2D context. As the reader may suppose, if a wall or the connectivity between two walls is completely occluded by a piece of furniture or a constructive component, the boundary of the room does not fit to the walls but these components. Once the room boundaries are demarcated, the points out of the boundaries are removed automatically. Afterwards, we figure out the intersections between edges and obtain the corners in the image. <xref ref-type="fig" rid="f3-sensors-12-16099">Figure 3</xref> shows the steps of the segmentation process: (a) 3D point cloud viewed from the top of the room; (b) Discretization of the view and generation of binary image <italic>I</italic>; (c) Boundary extraction in <italic>I.</italic> (d) Edge and corner detection.</p>
<p>Assuming vertical walls, the segments and corners in the image signify planes and edges in the 3D context. And the planes will be used to segment the 3D points which lie into each wall. Thus, we calculate the mean square distance of the point cloud to the walls and classify each point into a wall. <xref ref-type="fig" rid="f4-sensors-12-16099">Figure 4</xref> shows the segmentation of points belonging to the walls for two different rooms.</p></sec></sec></sec>
<sec>
<label>3.</label>
<title>Creation of B-Rep Models</title>
<p>The segmentation stage provides the set of points belonging to each wall (including floor and ceiling) of the indoor scene. The following step consists of converting this raw information into high level surface representation. Within the 3D representation models universe we have chosen the boundary representation (B-rep) model [<xref ref-type="bibr" rid="b22-sensors-12-16099">22</xref>]. In B-rep, a shape is described by a set of surface elements along with the connectivity information which describe the topological relationship between the elements.</p>
<p>The process to achieve a B-rep of an interior space starts calculating the planes which best fit every set of the segments associated to the walls. To do this, we have used the Singular Value Decomposition (SVD) technique [<xref ref-type="bibr" rid="b23-sensors-12-16099">23</xref>]. Through SVD, the closeness between the plane and the segmented points is easily calculated. The steps to calculate the plane equation that best fits a generic set of points are shown below.</p>
<p>Each point cloud <italic>P = (p<sub>1</sub>,p<sub>2</sub>,…,p<sub>n</sub></italic><italic>)</italic>, corresponding to a wall, can be fit to a plane defined by the equation:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math id="mm4" display="block">
<mml:mrow>
<mml:mi mathvariant="normal">Π</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>A</mml:mi>
<mml:mo> </mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>B</mml:mi>
<mml:mo> </mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>C</mml:mi>
<mml:mo> </mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>D</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:math></disp-formula></p>
<p>The best fit plane is that which minimizes the sum of the distances between every point <italic>p<sub>i</sub></italic> and the plane <italic>Π</italic>. Therefore, we can calculate each fit plane by minimizing the expression:
<disp-formula id="FD5">
<label>(5)</label>
<mml:math id="mm5" display="block">
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>B</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>C</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mo>|</mml:mo></mml:mrow></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>A</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>B</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>C</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>Setting the partial derivative with respect to <italic>D</italic> equal to zero, we obtain:
<disp-formula id="FD6">
<label>(6)</label>
<mml:math id="mm6" display="block">
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>B</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>C</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mn>0</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>in which <italic>p<sub>0</sub></italic><italic>= (x<sub>0</sub></italic><italic>, y<sub>0,</sub></italic><italic>z<sub>0</sub></italic><italic>)</italic> is the centroid of <italic>P</italic>. Replacing (6) in (5):
<disp-formula id="FD7">
<label>(7)</label>
<mml:math id="mm7" display="block">
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>|</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mn>0</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mn>0</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mn>0</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mo>|</mml:mo></mml:mrow></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>A</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>B</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>C</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>Let us introduce the matrix <italic>M</italic> = [<italic>p<sub>1</sub> − p<sub>0</sub> p<sub>2</sub> − p<sub>0 …</sub> p<sub>n</sub> − p<sub>0</sub></italic>]<italic><sup>T</sup></italic>, in which <italic>p<sub>i</sub></italic><italic>= (x<sub>i</sub>, y<sub>i</sub>, z<sub>i</sub>)</italic> and <italic>p<sub>0</sub></italic><italic>= (x<sub>0</sub>, y<sub>0</sub>, z<sub>0</sub>)</italic>, and the vector <italic>v =</italic> [<italic>A  B  C</italic>]<italic><sup>T</sup></italic>. We can show the problem over a matrix representation:
<disp-formula id="FD8">
<label>(8)</label>
<mml:math id="mm8" display="block">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mi>T</mml:mi></mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>M</mml:mi></mml:mrow>
<mml:mi>T</mml:mi></mml:msup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mi>T</mml:mi></mml:msup>
<mml:mi>v</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>This expression is called a Rayleigh Quotient and is minimized by the eigenvector of <italic>M<sup>T</sup></italic><italic>M</italic> that corresponds to its smallest eigenvalue. Next, we use the singular decomposition of <italic>M</italic> = <italic>USV<sup>T</sup></italic>, in which the columns of <italic>V</italic> are the singular vectors of <italic>M</italic> and the eigenvectors of <italic>M<sup>T</sup></italic><italic>M</italic>. Therefore, the solution of <xref ref-type="disp-formula" rid="FD5">Equation (5)</xref>, provide us the normal of the plane <italic>Π</italic>, 
<inline-formula>
<mml:math id="mm9" display="inline">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">Π</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>A</mml:mi></mml:mtd>
<mml:mtd>
<mml:mi>B</mml:mi></mml:mtd>
<mml:mtd>
<mml:mi>C</mml:mi></mml:mtd></mml:mtr></mml:mtable>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:math></inline-formula>. The parameter <italic>D</italic> is calculated from <xref ref-type="disp-formula" rid="FD6">Equation (6)</xref>.</p>
<p>The last stage consists of calculating the intersections between connected planes. Note that the topological relationship between the walls is established as the edges and corners are extracted in figure <italic>I</italic>. So, we know which planes have to be themselves intersected and, therefore, we can find the 3D edges and corners of the room. For instance, the ceiling and floor’s planes pairwise intersect with each wall’s plane and define the edges at the top and down of the room; and vertices are extracted after intersecting three planes.</p>
<p><xref ref-type="fig" rid="f5-sensors-12-16099">Figure 5</xref> illustrates an example with the results of our approach. Part (a) represents the planes fitted to the walls and part (b) shows the set of labeled vertices of the room. <xref ref-type="fig" rid="f4-sensors-12-16099">Figure 4(c)</xref> contains the relationship graph in which adjacent faces in the diagram share one edge.</p></sec>
<sec sec-type="results">
<label>4.</label>
<title>Results</title>
<p>Our approach was tested on panoramic range data appertaining to inhabited interiors. Note that we are dealing with very complex scenarios, in which furniture and other objects contribute to clutter and occlusions. They contain a wide variety of objects that occlude not only the walls, but also the ceiling and floor. Three to six laser scans were taken per room. A FARO Photon laser scanner provided 38 million points per room. <xref ref-type="fig" rid="f7-sensors-12-16099">Figures 7</xref> and <xref ref-type="fig" rid="f8-sensors-12-16099">8</xref> show the resulting 3D B-rep models for two rooms.</p>
<p>In this section we present the results obtained for two different inhabited indoors. These interiors do not have rectangular but arbitrary plans. The first room corresponds to the Virtual Reality Lab at the Escuela Técnica Superior de Ingenieros Industriales (UCLM). The second one is the living room of a private flat.</p>
<p>After defining the B-rep model we aim to investigate the accuracy of the obtained models. Firstly, we determine the error committed when we represent the walls of the rooms by means of planes. We thus measure the quadratic distance of every point of the walls to the corresponding plane. Distances between the sensed points and the planes are represented in colormaps in <xref ref-type="fig" rid="f6-sensors-12-16099">Figure 6(a)</xref> for different walls of the lab and (b) for two walls belonging to the living room. It can be seen different regions where an important variation of color is produced. These areas can be owing to typical objects hanging on the wall (pictures, posters, and so on), moldings and doorframes. Of course, some of the errors come from the fact that the walls, ceiling and floor are not totally flat. The corresponding error means, for both inhabited interiors, are presented in <xref ref-type="table" rid="t1-sensors-12-16099">Table 1</xref>, in which <italic>d̄</italic> represents the mean value for the distances between each 3D point and its corresponding plane.</p>
<p>The mean error of the fitted planes ranged between 0.59 and 4.64 cm for the lab and between 0.19 and 6.5 cm for the room. In any case, for the majority of the walls the mean error is around below 2 centimeters, despite being severely occluded by tables and chairs. On the other hand, the wall which fitted worse was number 2 of the lab. In this case, there was a big projection panel which largely occluded the wall. Most points sensed in this part of the room corresponded to the panel, so that the calculated plane fitted the panel instead of fitting the wall.</p>
<p>We focused most of our analysis on understanding the performance of our modeling results, since this aspect of the algorithm is considerably less studied than planar wall modeling. We considered two aspects of the performance: first, how reliably the walls can be detected, and second, how accurately they are modeled. To answer the first question, we compared the detected walls with walls of the ground truth model. No fails were reported in this aspect and all existing walls were correctly detected. Failed detections mainly might occur in severe occlusion circumstances.</p>
<p>The second question was tackled first generating the geometrical ground truth of the scenes. We constructed by hand the ground truth models of the rooms with the help of a Leica DISTOTM A6 laser tape measure, which provides 1 millimeter accuracy. In order to assess the error committed, the ground truth models were then compared with our 3D models (see <xref ref-type="fig" rid="f7-sensors-12-16099">Figures 7</xref> and <xref ref-type="fig" rid="f8-sensors-12-16099">8</xref>). The results are summarized in <xref ref-type="table" rid="t2-sensors-12-16099">Table 2</xref>.</p>
<p>We first compared the lengths of the vertical and horizontal edges of each face of the ground truth models with ours and the difference between are denoted as <italic>d<sub>v</sub></italic> and <italic>d<sub>h</sub></italic> in <xref ref-type="table" rid="t2-sensors-12-16099">Table 2</xref>. The value of <italic>d<sub>v</sub></italic> was similar for all pairs of walls; around 0.87 cm for the lab and 0.80 cm for the living room. The smallest value of <italic>d<sub>h</sub></italic> in the living room was for number 3. In this case, the mean value was less than 2 cm in both rooms.</p>
<p>In order to compare the accuracy of the orientation of the faces, we calculated the difference between the respective normal vectors (<italic>α</italic> in <xref ref-type="table" rid="t2-sensors-12-16099">Table 2</xref>). The smallest faces yielded a high rate in <italic>α</italic>, which distorted the average value. Thus, although the mean value of <italic>α</italic> were 1.59° and 1.85° for the lab and the living room respectively, in the majority of the faces <italic>α</italic> was less than this value.</p>
<p>Once we have presented the results for these two inhabited interiors, we can establish some difference between them. The living room has more and smaller walls than the laboratory, what might lead the reader to believe that the segmentation process is particularly complicated in this case. However, if we compare the mean values for the different parameters in <xref ref-type="table" rid="t1-sensors-12-16099">Tables 1</xref> and <xref ref-type="table" rid="t2-sensors-12-16099">2</xref>, the deviations with the ground truth are lower in the living room’s case. This result can be due to the fact that a multitude of pieces of furniture occlude the walls of the room and, consequently, the segmentation process may yield more imprecise segments.</p></sec>
<sec sec-type="conclusions">
<label>5.</label>
<title>Conclusions</title>
<p>Automatic creation of “as-is models” of inhabited scenarios is a challenge research field which is gaining attention from different applications in AEC/FM contexts. In this paper an approach for automatically creating Boundary Representation Models (B-rep) from dense point clouds collected by laser scanners is presented.</p>
<p>The method here proposed is based on segmenting the data by optimizing the discretization of the space. We make a 2D projection of the data in the voxel space and coarsely determine the segments in which the points lie. The voxels’ size is adjusted to the walls, taking into account the flatness tolerances in construction, improving the approach of previous works [<xref ref-type="bibr" rid="b18-sensors-12-16099">18</xref>,<xref ref-type="bibr" rid="b19-sensors-12-16099">19</xref>] in which predefined voxels’ sizes were used. Then the boundary representation model is generated by intersecting the planes that contains the 3D segments, calculating the faces, edges and vertices, and establishing the relationship between components. This idea has been tested in arbitrary shape plans providing excellent results.</p>
<p>The results lead us to state that the majority of the wall’s points were correctly segmented. We have also evaluated the performance and accuracy of our method comparing the ground truth and the query B-rep models. Overall modeling accuracy for the AEC domain typically needs to be at least within 2.5 cm of the ground truth, so that the precision of our model is clearly above the standard (between 0.8 cm and 1.88 cm for vertical and horizontal edges).</p>
<p>This research is a part of a larger project which aims to obtain automated reverse engineering of buildings including more complex semantic models. Future improvements to the method will be addressed in two lines: extend the method to non-flat walls and generate B-rep models including details (paintings, panels, <italic>etc.</italic>) and parts of the walls (moldings, doorframes, windows frames, <italic>etc.</italic>) in inhabited buildings. As other potential applications, these 3D models can be helpful to create, in an automatic manner, virtual scenes in which digitized objects are introduced in order to generate virtual exhibitions as the ones shown in [<xref ref-type="bibr" rid="b24-sensors-12-16099">24</xref>–<xref ref-type="bibr" rid="b26-sensors-12-16099">26</xref>].</p></sec></body>
<back>
<ack>
<p>This research has been carried out under contract with the Spanish CICYT through the DPI-2008-05444, DPI 2009-14024-C02-01 and DPI2011-26094 projects. It also belongs to the activities carried out in the frame of the RoboCity2030-II excellence research network of the CAM (ref. S2009/DPI-1559).</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-12-16099"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>El-Hakim</surname><given-names>S.F.</given-names></name><name><surname>Boulanger</surname><given-names>P.</given-names></name><name><surname>Blais</surname><given-names>F.</given-names></name><name><surname>Beraldin</surname><given-names>J.A.</given-names></name></person-group><article-title>A system for indoor 3D mapping and virtual environments</article-title><source>Proc. SPIE</source><year>1997</year><volume>3174</volume><fpage>21</fpage><lpage>35</lpage></citation></ref>
<ref id="b2-sensors-12-16099"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Früh</surname><given-names>C.</given-names></name><name><surname>Jain</surname><given-names>S.</given-names></name><name><surname>Zakhor</surname><given-names>A.</given-names></name></person-group><article-title>Data processing algorithms for generating textured 3D building facade meshes from laser scans and camera images</article-title><source>Int. J. Comput. Vis</source><year>2005</year><volume>61</volume><fpage>159</fpage><lpage>184</lpage><pub-id pub-id-type="doi">10.1023/B:VISI.0000043756.03810.dd</pub-id></citation></ref>
<ref id="b3-sensors-12-16099"><label>3.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Remondino</surname><given-names>F.</given-names></name><name><surname>El-Hakim</surname><given-names>S.</given-names></name><name><surname>Gonzo</surname><given-names>L.</given-names></name></person-group><article-title>3D Virtual Reconstruction and Visualization of Complex Architectures</article-title><conf-name>Proceedings of 3rd International Workshop on 3D Virtual Reconstruction and Visualization of Complex Architectures (3D-Arch)</conf-name><conf-loc>Trento, Italy</conf-loc><conf-date>25–28 February 2009</conf-date></citation></ref>
<ref id="b4-sensors-12-16099"><label>4.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tang</surname><given-names>P.</given-names></name><name><surname>Huber</surname><given-names>D.</given-names></name><name><surname>Akinci</surname><given-names>B.</given-names></name><name><surname>Lipman</surname><given-names>R.</given-names></name><name><surname>Lytle</surname><given-names>A.</given-names></name></person-group><article-title>Automatic reconstruction of as-built building information models from laser-scanned point clouds: A review of related techniques</article-title><source>Automat. Constr</source><year>2010</year><volume>19</volume><fpage>829</fpage><lpage>843</lpage><pub-id pub-id-type="doi">10.1016/j.autcon.2010.06.007</pub-id></citation></ref>
<ref id="b5-sensors-12-16099"><label>5.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kwon</surname><given-names>S.</given-names></name><name><surname>Kim</surname><given-names>F.</given-names></name><name><surname>Haas</surname><given-names>C.</given-names></name><name><surname>Liapi</surname><given-names>K.A.</given-names></name></person-group><article-title>Fitting range data to primitives for rapid local 3D modeling using sparse point range clouds</article-title><source>Automat. Constr</source><year>2004</year><volume>13</volume><fpage>67</fpage><lpage>81</lpage><pub-id pub-id-type="doi">10.1016/j.autcon.2003.08.007</pub-id></citation></ref>
<ref id="b6-sensors-12-16099"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bosche</surname><given-names>F.</given-names></name><name><surname>Haas</surname><given-names>C.</given-names></name></person-group><article-title>Automated retrieval of 3D CAD model objects in construction range images</article-title><source>Automat. Constr</source><year>2008</year><volume>17</volume><fpage>499</fpage><lpage>512</lpage><pub-id pub-id-type="doi">10.1016/j.autcon.2007.09.001</pub-id></citation></ref>
<ref id="b7-sensors-12-16099"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bosche</surname><given-names>F.</given-names></name></person-group><article-title>Automated recognition of 3D CAD model objects in Laser scans and calculation of as-built dimensions for dimensional compliance control in construction</article-title><source>Automat. Constr</source><year>2010</year><volume>24</volume><fpage>107</fpage><lpage>118</lpage></citation></ref>
<ref id="b8-sensors-12-16099"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bosche</surname><given-names>F.</given-names></name></person-group><article-title>Plane-based registration of construction laser scans with 3D/4D building models</article-title><source>Adv. Eng. Informat</source><year>2012</year><volume>26</volume><fpage>90</fpage><lpage>102</lpage><pub-id pub-id-type="doi">10.1016/j.aei.2011.08.009</pub-id></citation></ref>
<ref id="b9-sensors-12-16099"><label>9.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>El-Omari</surname><given-names>S.</given-names></name><name><surname>Moselhi</surname><given-names>O.</given-names></name></person-group><article-title>Integrating automated data acquisition technologies for progress reporting of construction projects</article-title><source>Automat. Constr</source><year>2011</year><volume>20</volume><fpage>699</fpage><lpage>705</lpage><pub-id pub-id-type="doi">10.1016/j.autcon.2010.12.001</pub-id></citation></ref>
<ref id="b10-sensors-12-16099"><label>10.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Rusu</surname><given-names>R.B.</given-names></name><name><surname>Marton</surname><given-names>Z.C.</given-names></name><name><surname>Blodow</surname><given-names>N.</given-names></name><name><surname>Dolha</surname><given-names>M.</given-names></name><name><surname>Beetz</surname><given-names>M.</given-names></name></person-group><article-title>Towards 3D point cloud based object maps for household environments</article-title><source>Rob. Auton. Syst</source><year>2008</year><volume>56</volume><fpage>927</fpage><lpage>941</lpage><pub-id pub-id-type="doi">10.1016/j.robot.2008.08.005</pub-id></citation></ref>
<ref id="b11-sensors-12-16099"><label>11.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Bohm</surname><given-names>J.</given-names></name><name><surname>Becker</surname><given-names>S.</given-names></name><name><surname>Haala</surname><given-names>N.</given-names></name></person-group><article-title>Model Refinement by Integrated Processing of Laser Scanning and Photogrammetry</article-title><conf-name>Proceedings of 2nd International Workshop on 3D Virtual Reconstruction and Visualization of Complex Architectures (3D-Arch)</conf-name><conf-loc>Zurich, Switzerland</conf-loc><conf-date>12–13 July 2007</conf-date></citation></ref>
<ref id="b12-sensors-12-16099"><label>12.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Bohm</surname><given-names>J.</given-names></name></person-group><article-title>Façade Detail from Incomplete Range Data</article-title><conf-name>Proceedings of the ISPRS Congress</conf-name><conf-loc>Beijing, China</conf-loc><conf-date>3–11 July 2008</conf-date></citation></ref>
<ref id="b13-sensors-12-16099"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pu</surname><given-names>S.</given-names></name><name><surname>Vosselman</surname><given-names>G.</given-names></name></person-group><article-title>Knowledge based reconstruction of building models from terrestrial laser scanning data</article-title><source>ISPRS J. Photogramm</source><year>2009</year><volume>64</volume><fpage>575</fpage><lpage>584</lpage><pub-id pub-id-type="doi">10.1016/j.isprsjprs.2009.04.001</pub-id></citation></ref>
<ref id="b14-sensors-12-16099"><label>14.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Thrun</surname><given-names>S.</given-names></name><name><surname>Martin</surname><given-names>C.</given-names></name><name><surname>Liu</surname><given-names>Y.</given-names></name><name><surname>Hähnel</surname><given-names>D.</given-names></name><name><surname>Emery-Montemerlo</surname><given-names>R.</given-names></name><name><surname>Chakrabarti</surname><given-names>D.</given-names></name><name><surname>Burgard</surname><given-names>W.</given-names></name></person-group><article-title>A realtime expectation-maximization algorithm for acquiring multiplanar maps of indoor environments with mobile robots</article-title><source>IEEE Trans. Robot</source><year>2004</year><volume>20</volume><fpage>433</fpage><lpage>443</lpage><pub-id pub-id-type="doi">10.1109/TRA.2004.825520</pub-id></citation></ref>
<ref id="b15-sensors-12-16099"><label>15.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hähnel</surname><given-names>D.</given-names></name><name><surname>Burgard</surname><given-names>W.</given-names></name><name><surname>Thrun</surname><given-names>S.</given-names></name></person-group><article-title>Learning compact 3D models of indoor and outdoor environments with a mobile robot</article-title><source>Rob. Auton. Syst</source><year>2003</year><volume>44</volume><fpage>15</fpage><lpage>27</lpage><pub-id pub-id-type="doi">10.1016/S0921-8890(03)00007-1</pub-id></citation></ref>
<ref id="b16-sensors-12-16099"><label>16.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Budroni</surname><given-names>A.</given-names></name><name><surname>Böhm</surname><given-names>J.</given-names></name></person-group><article-title>Toward Automatic Reconstruction of Interiors from Laser Data</article-title><conf-name>Proceedings of Virtual Reconstruction and Visualization of Complex Architectures (3D-Arch)</conf-name><conf-loc>Venice, Italy</conf-loc><conf-date>22–24 August 2005</conf-date></citation></ref>
<ref id="b17-sensors-12-16099"><label>17.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Valero</surname><given-names>E.</given-names></name><name><surname>Adan</surname><given-names>A.</given-names></name><name><surname>Huber</surname><given-names>D.</given-names></name><name><surname>Cerrada</surname><given-names>C.</given-names></name></person-group><article-title>Detection, Modeling, and Classification of Moldings for Automated Reverse Engineering of Buildings from 3D Data</article-title><conf-name>Proceedings of International Symposium on Automation and Robotics in Construction (ISARC)</conf-name><conf-loc>Seoul, Korea</conf-loc><conf-date>2–4 March 2011</conf-date><fpage>546</fpage><lpage>551</lpage></citation></ref>
<ref id="b18-sensors-12-16099"><label>18.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Adan</surname><given-names>A.</given-names></name><name><surname>Xiong</surname><given-names>X.</given-names></name><name><surname>Akinci</surname><given-names>B.</given-names></name><name><surname>Huber</surname><given-names>D.</given-names></name></person-group><article-title>Automatic Creation of Semantically Rich 3D Building Models from Laser Scanner Data</article-title><conf-name>Proceedings of the International Symposium on Automation and Robotics in Construction (ISARC)</conf-name><conf-loc>Seoul, Korea</conf-loc><conf-date>2–4 March 2011</conf-date><fpage>342</fpage><lpage>347</lpage></citation></ref>
<ref id="b19-sensors-12-16099"><label>19.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Adan</surname><given-names>A.</given-names></name><name><surname>Huber</surname><given-names>D.</given-names></name></person-group><article-title>3D Reconstruction of Interior Wall Surfaces under Occlusion and Clutter</article-title><conf-name>Proceedings of International Conference on 3D Imaging, Modeling, Processing, Visualization and Transmission (3DIMPVT)</conf-name><conf-loc>Hangzhou, China</conf-loc><conf-date>16–20 May 2011</conf-date><fpage>275</fpage><lpage>281</lpage></citation></ref>
<ref id="b20-sensors-12-16099"><label>20.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Okorn</surname><given-names>B.E.</given-names></name><name><surname>Xiong</surname><given-names>X.</given-names></name><name><surname>Akinci</surname><given-names>B.</given-names></name><name><surname>Huber</surname><given-names>D.</given-names></name></person-group><article-title>Toward Automated Modeling of Floor Plans</article-title><conf-name>Proceedings of the Fourth International Symposium on 3D Data Processing, Visualization and Transmission</conf-name><conf-loc>Paris, France</conf-loc><conf-date>18–20 May 2010</conf-date></citation></ref>
<ref id="b21-sensors-12-16099"><label>21.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Valero</surname><given-names>E.</given-names></name><name><surname>Adan</surname><given-names>A.</given-names></name><name><surname>Cerrada</surname><given-names>C.</given-names></name></person-group><article-title>Automatic construction of 3D basic-semantic models of inhabited interiors using laser scanners and RFID sensors</article-title><source>Sensors</source><year>2012</year><volume>12</volume><fpage>5705</fpage><lpage>5724</lpage><pub-id pub-id-type="doi">10.3390/s120505705</pub-id><pub-id pub-id-type="pmid">22778609</pub-id></citation></ref>
<ref id="b22-sensors-12-16099"><label>22.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Mortenson</surname><given-names>M.</given-names></name></person-group><source>Geometric Modeling</source><edition>1st ed</edition><publisher-name>John Wiley and Sons</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>1985</year></citation></ref>
<ref id="b23-sensors-12-16099"><label>23.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Golub</surname><given-names>G.</given-names></name><name><surname>Reinsch</surname><given-names>C.</given-names></name></person-group><article-title>Singular value decomposition and least square solutions</article-title><source>Numer. Math</source><year>1970</year><volume>14</volume><fpage>403</fpage><lpage>420</lpage><pub-id pub-id-type="doi">10.1007/BF02163027</pub-id></citation></ref>
<ref id="b24-sensors-12-16099"><label>24.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Corcoran</surname><given-names>F.</given-names></name><name><surname>Demaine</surname><given-names>J.</given-names></name><name><surname>Picard</surname><given-names>M.</given-names></name><name><surname>Dicaire</surname><given-names>L.</given-names></name><name><surname>Taylor</surname><given-names>J.</given-names></name></person-group><article-title>Inuit3D: An Interactive Virtual 3D Web Exhibition</article-title><conf-name>Proceedings of the Conference on Museums and the Web</conf-name><conf-loc>Boston, MA, USA</conf-loc><conf-date>17–20 April 2002</conf-date></citation></ref>
<ref id="b25-sensors-12-16099"><label>25.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Walczak</surname><given-names>K.</given-names></name><name><surname>Cellary</surname><given-names>W.</given-names></name><name><surname>White</surname><given-names>M.</given-names></name></person-group><article-title>Virtual museum exhibitions</article-title><source>IEEE Computer</source><year>2006</year><volume>39</volume><fpage>93</fpage><lpage>95</lpage></citation></ref>
<ref id="b26-sensors-12-16099"><label>26.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Monnerat</surname><given-names>M.</given-names></name><name><surname>Romano</surname><given-names>P.</given-names></name><name><surname>Grillo</surname><given-names>O.</given-names></name><name><surname>Haguenauer</surname><given-names>C.</given-names></name><name><surname>Azevedo</surname><given-names>S.</given-names></name><name><surname>Cunha</surname><given-names>G.</given-names></name></person-group><article-title>The Dinos Virtuais Project: A virtual approach of a real exhibition</article-title><source>IADIS Int. J. WWW/Internet</source><year>2010</year><volume>8</volume><fpage>136</fpage><lpage>150</lpage></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Tables</title>
<fig id="f1-sensors-12-16099" position="float">
<label>Figure 1.</label>
<caption>
<p>(<bold>a</bold>) Representation of the voxelized space. (<bold>b</bold>) and (<bold>c</bold>) Simulated data of the interior of a room and final discretization of the space. Blue and red planes of voxels containing the majority of the points of floor and ceiling. (<bold>d</bold>) Real segmentation. Point cloud sensed in a room and segmented points belonging to ceiling (cyan) and floor (blue).</p></caption>
<graphic xlink:href="sensors-12-16099f1.gif"/></fig>
<fig id="f2-sensors-12-16099" position="float">
<label>Figure 2.</label>
<caption>
<p>Segmentation of floor and ceiling in rectangular (<bold>a</bold>) and arbitrary (<bold>b</bold>) plans. (a) shows the segments of the four walls of the rectangular indoor presented in <xref ref-type="fig" rid="f1-sensors-12-16099">Figure 1(d)</xref>.</p></caption>
<graphic xlink:href="sensors-12-16099f2.gif"/></fig>
<fig id="f3-sensors-12-16099" position="float">
<label>Figure 3.</label>
<caption>
<p>Stages in a wall segmentation process. (<bold>a</bold>) Visualization of the point cloud from a zenital viewpoint. (<bold>b</bold>) Binary image generated after discretization. (<bold>c</bold>) Boundary detection. (<bold>d</bold>) Defining edges and corners in the image.</p></caption>
<graphic xlink:href="sensors-12-16099f3.gif"/></fig>
<fig id="f4-sensors-12-16099" position="float">
<label>Figure 4.</label>
<caption>
<p>Retrieval of 3D points corresponding to the walls.</p></caption>
<graphic xlink:href="sensors-12-16099f4.gif"/></fig>
<fig id="f5-sensors-12-16099" position="float">
<label>Figure 5.</label>
<caption>
<p>(<bold>a</bold>) Planes fitting the walls. Note that the planes (in red) do not represent the walls but the planes which fit the walls. They are merely used to illustrate the intersections of such planes. (<bold>b</bold>) Labeled vertices of the room. (<bold>c</bold>) Decomposition of a solid in simple objects. Relationship between topological elements in the test room.</p></caption>
<graphic xlink:href="sensors-12-16099f5a.gif"/>
<graphic xlink:href="sensors-12-16099f5b.gif"/></fig>
<fig id="f6-sensors-12-16099" position="float">
<label>Figure 6.</label>
<caption>
<p>Deviation of the data to the fitted planes for two walls of the lab (<bold>a</bold>) and two walls of the living room. (<bold>b</bold>) Colorbars are coded in centimeters.</p></caption>
<graphic xlink:href="sensors-12-16099f6.gif"/></fig>
<fig id="f7-sensors-12-16099" position="float">
<label>Figure 7.</label>
<caption>
<p>Images of the tested lab (<bold>top</bold>). Our model and the ground truth model (<bold>bottom</bold>).</p></caption>
<graphic xlink:href="sensors-12-16099f7.gif"/></fig>
<fig id="f8-sensors-12-16099" position="float">
<label>Figure 8.</label>
<caption>
<p>Planar image of the living room (<bold>top</bold>). Our model and the ground truth model (<bold>bottom</bold>).</p></caption>
<graphic xlink:href="sensors-12-16099f8.gif"/></fig>
<table-wrap id="t1-sensors-12-16099" position="float">
<label>Table 1.</label>
<caption>
<p>Mean deviation of the scanned data to fitted walls.</p></caption>
<table frame="hsides" rules="rows">
<thead>
<tr>
<th align="center" valign="bottom"><bold>Lab</bold></th>
<th align="center" valign="bottom"><bold>Wall 1</bold></th>
<th align="center" valign="bottom"><bold>Wall 2</bold></th>
<th align="center" valign="bottom"><bold>Wall 3</bold></th>
<th align="center" valign="bottom"><bold>Wall 4</bold></th>
<th align="center" valign="bottom"><bold>Wall 5</bold></th>
<th align="center" valign="bottom"><bold>Wall 6</bold></th>
<th align="center" valign="bottom"><bold>Wall 7</bold></th>
<th align="center" valign="bottom"><bold>Wall 8</bold></th>
<th align="center" valign="bottom"><bold>Mean</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle"><italic>d̄</italic> [cm]</td>
<td align="center" valign="middle">1.13</td>
<td align="center" valign="middle">4.64</td>
<td align="center" valign="middle">1.71</td>
<td align="center" valign="middle">0.59</td>
<td align="center" valign="middle">0.81</td>
<td align="center" valign="middle">1.44</td>
<td align="center" valign="middle">1.23</td>
<td align="center" valign="middle">1.16</td>
<td align="center" valign="middle"><bold>1.58</bold></td></tr></tbody></table>
<table frame="hsides" rules="rows">
<thead>
<tr>
<th align="center" valign="bottom"><bold>Living room</bold></th>
<th align="center" valign="bottom"><bold>Wall 1</bold></th>
<th align="center" valign="bottom"><bold>Wall 2</bold></th>
<th align="center" valign="bottom"><bold>Wall 3</bold></th>
<th align="center" valign="bottom"><bold>Wall 4</bold></th>
<th align="center" valign="bottom"><bold>Wall 5</bold></th>
<th align="center" valign="bottom"><bold>Wall 6</bold></th>
<th align="center" valign="bottom"><bold>Wall 7</bold></th>
<th align="center" valign="bottom"><bold>Wall 8</bold></th>
<th align="center" valign="bottom"><bold>Wall 9</bold></th>
<th align="center" valign="bottom"><bold>Wall 10</bold></th>
<th align="center" valign="bottom"><bold>Wall 11</bold></th>
<th align="center" valign="bottom"><bold>Wall 12</bold></th>
<th align="center" valign="bottom"><bold>Wall 13</bold></th>
<th align="center" valign="bottom"><bold>Wall 14</bold></th>
<th align="center" valign="bottom"><bold>Wall 15</bold></th>
<th align="center" valign="bottom"><bold>Wall 16</bold></th>
<th align="center" valign="bottom"><bold>Mean</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle"><italic>d̄</italic> [cm]</td>
<td align="center" valign="middle">0.55</td>
<td align="center" valign="middle">1.11</td>
<td align="center" valign="middle">0.82</td>
<td align="center" valign="middle">0.19</td>
<td align="center" valign="middle">6.52</td>
<td align="center" valign="middle">4.60</td>
<td align="center" valign="middle">0.24</td>
<td align="center" valign="middle">1.86</td>
<td align="center" valign="middle">0.33</td>
<td align="center" valign="middle">0.57</td>
<td align="center" valign="middle">0.49</td>
<td align="center" valign="middle">4.11</td>
<td align="center" valign="middle">0.44</td>
<td align="center" valign="middle">0.4</td>
<td align="center" valign="middle">0.28</td>
<td align="center" valign="middle">1.08</td>
<td align="center" valign="middle"><bold>1.47</bold></td></tr></tbody></table></table-wrap>
<table-wrap id="t2-sensors-12-16099" position="float">
<label>Table 2.</label>
<caption>
<p>Parameters calculated for each pair of walls.</p></caption>
<table frame="hsides" rules="rows">
<thead>
<tr>
<th align="center" valign="bottom"><bold>Lab</bold></th>
<th align="center" valign="bottom"><bold>Wall 1</bold></th>
<th align="center" valign="bottom"><bold>Wall 2</bold></th>
<th align="center" valign="bottom"><bold>Wall 3</bold></th>
<th align="center" valign="bottom"><bold>Wall 4</bold></th>
<th align="center" valign="bottom"><bold>Wall 5</bold></th>
<th align="center" valign="bottom"><bold>Wall 6</bold></th>
<th align="center" valign="bottom"><bold>Wall 7</bold></th>
<th align="center" valign="bottom"><bold>Wall 8</bold></th>
<th align="center" valign="bottom"><bold>Wall 9</bold></th>
<th align="center" valign="bottom"><bold>Wall 10</bold></th>
<th align="center" valign="bottom"><bold>Mean</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">α (º)</td>
<td align="center" valign="top">1.09</td>
<td align="center" valign="top">0.09</td>
<td align="center" valign="top">1.12</td>
<td align="center" valign="top">1.58</td>
<td align="center" valign="top">6.62</td>
<td align="center" valign="top">4.83</td>
<td align="center" valign="top">0.08</td>
<td align="center" valign="top">0.45</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top"><bold>1.59</bold></td></tr>
<tr>
<td align="center" valign="top"><italic>d<sub>v</sub></italic>(<italic>cm</italic>)</td>
<td align="center" valign="top">0.81</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.89</td>
<td align="center" valign="top">0.90</td>
<td align="center" valign="top">0.90</td>
<td align="center" valign="top">0.89</td>
<td align="center" valign="top">0.89</td>
<td align="center" valign="top">0.90</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top"><bold>0.87</bold></td></tr>
<tr>
<td align="center" valign="top"><italic>d<sub>h</sub></italic>(<italic>cm</italic>)</td>
<td align="center" valign="top">0.52</td>
<td align="center" valign="top">3.21</td>
<td align="center" valign="top">1.83</td>
<td align="center" valign="top">1.96</td>
<td align="center" valign="top">1.12</td>
<td align="center" valign="top">0.60</td>
<td align="center" valign="top">0.98</td>
<td align="center" valign="top">4.86</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top"><bold>1.88</bold></td></tr></tbody></table>
<table frame="hsides" rules="rows">
<thead>
<tr>
<th align="center" valign="bottom"><bold>Living room</bold></th>
<th align="center" valign="bottom"><bold>Wall 1</bold></th>
<th align="center" valign="bottom"><bold>Wall 2</bold></th>
<th align="center" valign="bottom"><bold>Wall 3</bold></th>
<th align="center" valign="bottom"><bold>Wall 4</bold></th>
<th align="center" valign="bottom"><bold>Wall 5</bold></th>
<th align="center" valign="bottom"><bold>Wall 6</bold></th>
<th align="center" valign="bottom"><bold>Wall 7</bold></th>
<th align="center" valign="bottom"><bold>Wall 8</bold></th>
<th align="center" valign="bottom"><bold>Wall 9</bold></th>
<th align="center" valign="bottom"><bold>Wall 10</bold></th>
<th align="center" valign="bottom"><bold>Wall 11</bold></th>
<th align="center" valign="bottom"><bold>Wall 12</bold></th>
<th align="center" valign="bottom"><bold>Wall 13</bold></th>
<th align="center" valign="bottom"><bold>Wall 14</bold></th>
<th align="center" valign="bottom"><bold>Wall 15</bold></th>
<th align="center" valign="bottom"><bold>Wall 16</bold></th>
<th align="center" valign="bottom"><bold>Wall 17</bold></th>
<th align="center" valign="bottom"><bold>Wall 18</bold></th>
<th align="center" valign="bottom"><bold>Mean</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">α (º)</td>
<td align="center" valign="top">2.25</td>
<td align="center" valign="top">10.3</td>
<td align="center" valign="top">0.95</td>
<td align="center" valign="top">2.49</td>
<td align="center" valign="top">0.12</td>
<td align="center" valign="top">0.72</td>
<td align="center" valign="top">6.62</td>
<td align="center" valign="top">0.16</td>
<td align="center" valign="top">3.86</td>
<td align="center" valign="top">2.55</td>
<td align="center" valign="top">1.12</td>
<td align="center" valign="top">0.89</td>
<td align="center" valign="top">0.58</td>
<td align="center" valign="top">0.20</td>
<td align="center" valign="top">0.11</td>
<td align="center" valign="top">0.56</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top"><bold>1.85</bold></td></tr>
<tr>
<td align="center" valign="top"><italic>d<sub>v</sub></italic>(<italic>cm</italic>)</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.79</td>
<td align="center" valign="top">0.79</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.79</td>
<td align="center" valign="top">0.79</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">0.80</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top"><bold>0.80</bold></td></tr>
<tr>
<td align="center" valign="top"><italic>d<sub>h</sub></italic>(<italic><sub>cm</sub></italic>)</td>
<td align="center" valign="top">0.74</td>
<td align="center" valign="top">0.39</td>
<td align="center" valign="top">0.09</td>
<td align="center" valign="top">0.99</td>
<td align="center" valign="top">0.15</td>
<td align="center" valign="top">1.80</td>
<td align="center" valign="top">0.11</td>
<td align="center" valign="top">2.05</td>
<td align="center" valign="top">0.32</td>
<td align="center" valign="top">1.46</td>
<td align="center" valign="top">2.18</td>
<td align="center" valign="top">1.31</td>
<td align="center" valign="top">1.29</td>
<td align="center" valign="top">2.15</td>
<td align="center" valign="top">1.17</td>
<td align="center" valign="top">4.45</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top">-</td>
<td align="center" valign="top"><bold>1.29</bold></td></tr></tbody></table></table-wrap></sec></back></article>
