-
Notifications
You must be signed in to change notification settings - Fork 13
/
3dsc_8h_source.html
356 lines (354 loc) · 62.3 KB
/
3dsc_8h_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Point Cloud Library (PCL): pcl/features/3dsc.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Point Cloud Library (PCL)
 <span id="projectnumber">1.14.1-dev</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_c94e79c2c5a14cf51fca344e688faa8f.html">pcl</a></li><li class="navelem"><a class="el" href="dir_1fa9e61e4e86bede49a260cd2971bd05.html">features</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">3dsc.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Software License Agreement (BSD License)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Point Cloud Library (PCL) - www.pointclouds.org</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Copyright (c) 2010-2011, Willow Garage, Inc.</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * Copyright (c) 2012-, Open Perception, Inc.</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * modification, are permitted provided that the following conditions</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * are met:</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * * Redistributions of source code must retain the above copyright</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * * Redistributions in binary form must reproduce the above</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * copyright notice, this list of conditions and the following</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * disclaimer in the documentation and/or other materials provided</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * with the distribution.</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * * Neither the name of the copyright holder(s) nor the names of its</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * contributors may be used to endorse or promote products derived</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * from this software without specific prior written permission.</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"> * $Id$</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <random></span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <<a class="code" href="common_2include_2pcl_2point__types_8h.html">pcl/point_types.h</a>></span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <pcl/features/feature.h></span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">namespace </span><a class="code" href="namespacepcl.html">pcl</a></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {<span class="comment"></span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"> /** \brief ShapeContext3DEstimation implements the 3D shape context descriptor as</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"> * described in:</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment"> * - Andrea Frome, Daniel Huber, Ravi Kolluri and Thomas Bülow, Jitendra Malik</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment"> * Recognizing Objects in Range Data Using Regional Point Descriptors,</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment"> * In proceedings of the 8th European Conference on Computer Vision (ECCV),</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment"> * Prague, May 11-14, 2004</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment"> * The suggested PointOutT is pcl::ShapeContext1980</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment"> * \attention</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment"> * The convention for a 3D shape context descriptor is:</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment"> * - if a query point's nearest neighbors cannot be estimated, the feature descriptor will be set to NaN (not a number), and the RF to 0</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment"> * - it is impossible to estimate a 3D shape context descriptor for a</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment"> * point that doesn't have finite 3D coordinates. Therefore, any point</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment"> * that contains NaN data on x, y, or z, will have its boundary feature</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment"> * property set to NaN.</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment"> * \author Alessandro Franchi, Samuele Salti, Federico Tombari (original code)</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment"> * \author Nizar Sallem (port to PCL)</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment"> * \ingroup features</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> Po<span class="keywordtype">int</span>InT, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>NT, <span class="keyword">typename</span> Po<span class="keywordtype">int</span>OutT = pcl::ShapeContext1980></div>
<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html"> 72</a></span>  <span class="keyword">class </span><a class="code" href="classpcl_1_1_shape_context3_d_estimation.html">ShapeContext3DEstimation</a> : <span class="keyword">public</span> <a class="code" href="classpcl_1_1_feature_from_normals.html">FeatureFromNormals</a><PointInT, PointNT, PointOutT></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">public</span>:</div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#afe2d89b3bddc9de2f69a7eb76b4e56a3"> 75</a></span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#afe2d89b3bddc9de2f69a7eb76b4e56a3">Ptr</a> = shared_ptr<ShapeContext3DEstimation<PointInT, PointNT, PointOutT> >;</div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a6ed1598dc37dd8bb2c24501712ab28d3"> 76</a></span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a6ed1598dc37dd8bb2c24501712ab28d3">ConstPtr</a> = shared_ptr<const ShapeContext3DEstimation<PointInT, PointNT, PointOutT> >;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_feature.html">Feature<PointInT, PointOutT>::feature_name_</a>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_feature.html">Feature<PointInT, PointOutT>::getClassName</a>;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_feature.html">Feature<PointInT, PointOutT>::indices_</a>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_feature.html">Feature<PointInT, PointOutT>::search_parameter_</a>;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_feature.html">Feature<PointInT, PointOutT>::search_radius_</a>;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_feature.html">Feature<PointInT, PointOutT>::surface_</a>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_feature.html">Feature<PointInT, PointOutT>::input_</a>;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_feature.html">Feature<PointInT, PointOutT>::searchForNeighbors</a>;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_feature_from_normals.html">FeatureFromNormals<PointInT, PointNT, PointOutT>::normals_</a>;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a95d6638b9fcd2282e3c4d3862b89f30c"> 88</a></span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a95d6638b9fcd2282e3c4d3862b89f30c">PointCloudOut</a> = <span class="keyword">typename</span> <a class="code" href="classpcl_1_1_point_cloud.html">Feature<PointInT, PointOutT>::PointCloudOut</a>;</div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a789a2e60c12ba68b9ae62792c8f39aeb"> 89</a></span>  <span class="keyword">using</span> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a789a2e60c12ba68b9ae62792c8f39aeb">PointCloudIn</a> = <span class="keyword">typename</span> <a class="code" href="classpcl_1_1_point_cloud.html">Feature<PointInT, PointOutT>::PointCloudIn</a>;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment"></span> </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment"> /** \brief Constructor.</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment"> * \param[in] random If true the random seed is set to current time, else it is</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment"> * set to 12345 prior to computing the descriptor (used to select X axis)</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#aec9b00c71722e6956c4769a64c8558be"> 95</a></span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#aec9b00c71722e6956c4769a64c8558be">ShapeContext3DEstimation</a> (<span class="keywordtype">bool</span> random = <span class="keyword">false</span>) :</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a85fe8fd0e4cb0c2545a9d35a692779df">radii_interval_</a>(0),</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#ae2e2952dc77471b30709cebac6bab76e">theta_divisions_</a>(0),</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#af37e905bdf176c47880c445bdcd9ac60">phi_divisions_</a>(0),</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#ac39c10aa538ee073380d3964018555df">volume_lut_</a>(0),</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a01127ba741f9f220a0ac9a6c80fd6b58">rng_dist_</a> (0.0f, 1.0f)</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="classpcl_1_1_feature.html#a54032b79551164878ff59ed93b5c1dc5">feature_name_</a> = <span class="stringliteral">"ShapeContext3DEstimation"</span>;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="classpcl_1_1_feature.html#a2c52e9b0412b8ce790837b24cd99f0af">search_radius_</a> = 2.5;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  </div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// Create a random number generator object</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span> (random)</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  std::random_device rd;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a94ef7336409ae43a630a01a8721b44d0">rng_</a>.seed (rd());</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a94ef7336409ae43a630a01a8721b44d0">rng_</a>.seed (12345u);</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  </div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#ae7f58aaec207366a8824505d61b31a10"> 116</a></span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#ae7f58aaec207366a8824505d61b31a10">~ShapeContext3DEstimation</a>() <span class="keyword">override</span> = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">//inline void</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">//setAzimuthBins (std::size_t bins) { azimuth_bins_ = bins; }</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment"></span> </div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment"> /** \return the number of bins along the azimuth */</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">inline</span> std::size_t</div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a556aa3015205c00d8e9bc4967e192828"> 123</a></span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a556aa3015205c00d8e9bc4967e192828">getAzimuthBins</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a4872a6ce97ac4472f3c23a0c6f41f235">azimuth_bins_</a>); }</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  </div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">//inline void</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">//setElevationBins (std::size_t bins) { elevation_bins_ = bins; }</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment"></span> </div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment"> /** \return The number of bins along the elevation */</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">inline</span> std::size_t</div>
<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a8f9a129cd42ddc57b30a68e266d7af15"> 130</a></span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a8f9a129cd42ddc57b30a68e266d7af15">getElevationBins</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#afd92bbf05ac7596e3428b77ff8da0d51">elevation_bins_</a>); }</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">//inline void</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">//setRadiusBins (std::size_t bins) { radius_bins_ = bins; }</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="comment"></span> </div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="comment"> /** \return The number of bins along the radii direction */</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">inline</span> std::size_t</div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#afa0a74808afc7ffe70efb08bdfc952dc"> 137</a></span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#afa0a74808afc7ffe70efb08bdfc952dc">getRadiusBins</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a74bd50ea33bd0d32a85d81e0300263d3">radius_bins_</a>); }</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment"></span> </div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment"> /** \brief The minimal radius value for the search sphere (rmin) in the original paper</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="comment"> * \param[in] radius the desired minimal radius</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a1797a3547853cde1cb8b7d53dba359be"> 143</a></span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a1797a3547853cde1cb8b7d53dba359be">setMinimalRadius</a> (<span class="keywordtype">double</span> radius) { <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a9a33a2c7d4d33c22a2b8532dba05b0bf">min_radius_</a> = radius; }</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="comment"></span> </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment"> /** \return The minimal sphere radius */</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">inline</span> <span class="keywordtype">double</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#af7031bdf8cd4b2a948bc6f25767518cc"> 147</a></span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#af7031bdf8cd4b2a948bc6f25767518cc">getMinimalRadius</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a9a33a2c7d4d33c22a2b8532dba05b0bf">min_radius_</a>); }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment"></span> </div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment"> /** \brief This radius is used to compute local point density</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment"> * density = number of points within this radius</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment"> * \param[in] radius value of the point density search radius</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#aff1671ba68b09cb865057443aff9bd55"> 154</a></span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#aff1671ba68b09cb865057443aff9bd55">setPointDensityRadius</a> (<span class="keywordtype">double</span> radius) { <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#aa752ddd8a5b0501f6b6dcbfd133ffa47">point_density_radius_</a> = radius; }</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment"></span> </div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment"> /** \return The point density search radius */</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">inline</span> <span class="keywordtype">double</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a99b84d1f4079f42014ae6bd91d65f856"> 158</a></span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a99b84d1f4079f42014ae6bd91d65f856">getPointDensityRadius</a> () { <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#aa752ddd8a5b0501f6b6dcbfd133ffa47">point_density_radius_</a>); }</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  </div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">protected</span>:<span class="comment"></span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment"> /** \brief Initialize computation by allocating all the intervals and the volume lookup table. */</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a5ad35bf2e037d347e932a3ce2588dc01">initCompute</a> () <span class="keyword">override</span>;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment"></span> </div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="comment"> /** \brief Estimate a descriptor for a given point.</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="comment"> * \param[in] index the index of the point to estimate a descriptor for</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="comment"> * \param[in] normals a pointer to the set of normals</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="comment"> * \param[out] rf the reference frame</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="comment"> * \param[out] desc the resultant estimated descriptor</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="comment"> * \return true if the descriptor was computed successfully, false if there was an error</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="comment"> * (e.g. the nearest neighbor didn't return any neighbors)</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a31c91421fae448dc07b3a17637d01e61">computePoint</a> (std::size_t index, <span class="keyword">const</span> <a class="code" href="classpcl_1_1_point_cloud.html">pcl::PointCloud<PointNT></a> &normals, <span class="keywordtype">float</span> rf[9], std::vector<float> &desc);</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="comment"></span> </div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="comment"> /** \brief Estimate the actual feature.</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="comment"> * \param[out] output the resultant feature</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">void</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#aa71280e637046576f66acebd491a4856">computeFeature</a> (<a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a95d6638b9fcd2282e3c4d3862b89f30c">PointCloudOut</a> &output) <span class="keyword">override</span>;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment"></span> </div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment"> /** \brief Values of the radii interval */</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a85fe8fd0e4cb0c2545a9d35a692779df"> 183</a></span>  std::vector<float> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a85fe8fd0e4cb0c2545a9d35a692779df">radii_interval_</a>;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="comment"></span> </div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment"> /** \brief Theta divisions interval */</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#ae2e2952dc77471b30709cebac6bab76e"> 186</a></span>  std::vector<float> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#ae2e2952dc77471b30709cebac6bab76e">theta_divisions_</a>;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="comment"></span> </div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment"> /** \brief Phi divisions interval */</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#af37e905bdf176c47880c445bdcd9ac60"> 189</a></span>  std::vector<float> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#af37e905bdf176c47880c445bdcd9ac60">phi_divisions_</a>;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment"></span> </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="comment"> /** \brief Volumes look up table */</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#ac39c10aa538ee073380d3964018555df"> 192</a></span>  std::vector<float> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#ac39c10aa538ee073380d3964018555df">volume_lut_</a>;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment"></span> </div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment"> /** \brief Bins along the azimuth dimension */</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a4872a6ce97ac4472f3c23a0c6f41f235"> 195</a></span>  std::size_t <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a4872a6ce97ac4472f3c23a0c6f41f235">azimuth_bins_</a>{12};</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment"></span> </div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="comment"> /** \brief Bins along the elevation dimension */</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#afd92bbf05ac7596e3428b77ff8da0d51"> 198</a></span>  std::size_t <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#afd92bbf05ac7596e3428b77ff8da0d51">elevation_bins_</a>{11};</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="comment"></span> </div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="comment"> /** \brief Bins along the radius dimension */</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a74bd50ea33bd0d32a85d81e0300263d3"> 201</a></span>  std::size_t <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a74bd50ea33bd0d32a85d81e0300263d3">radius_bins_</a>{15};</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment"></span> </div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="comment"> /** \brief Minimal radius value */</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a9a33a2c7d4d33c22a2b8532dba05b0bf"> 204</a></span>  <span class="keywordtype">double</span> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a9a33a2c7d4d33c22a2b8532dba05b0bf">min_radius_</a>{0.1};</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="comment"></span> </div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="comment"> /** \brief Point density radius */</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#aa752ddd8a5b0501f6b6dcbfd133ffa47"> 207</a></span>  <span class="keywordtype">double</span> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#aa752ddd8a5b0501f6b6dcbfd133ffa47">point_density_radius_</a>{0.2};</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="comment"></span> </div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="comment"> /** \brief Descriptor length */</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#acfc43f61899f42ac5474d6136832c138"> 210</a></span>  std::size_t <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#acfc43f61899f42ac5474d6136832c138">descriptor_length_</a>{};</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="comment"></span> </div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment"> /** \brief Random number generator algorithm. */</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a94ef7336409ae43a630a01a8721b44d0"> 213</a></span>  std::mt19937 <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a94ef7336409ae43a630a01a8721b44d0">rng_</a>;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment"></span> </div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="comment"> /** \brief Random number generator distribution. */</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a01127ba741f9f220a0ac9a6c80fd6b58"> 216</a></span>  std::uniform_real_distribution<float> <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a01127ba741f9f220a0ac9a6c80fd6b58">rng_dist_</a>;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  </div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">/* \brief Shift computed descriptor "L" times along the azimuthal direction</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="comment"> * \param[in] block_size the size of each azimuthal block</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="comment"> * \param[in] desc at input desc == original descriptor and on output it contains</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment"> * shifted descriptor resized descriptor_length_ * azimuth_bins_</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">//void</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">//shiftAlongAzimuth (std::size_t block_size, std::vector<float>& desc);</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="comment"></span> </div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="comment"> /** \brief Boost-based random number generator. */</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keyword">inline</span> <span class="keywordtype">float</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classpcl_1_1_shape_context3_d_estimation.html#a94d12d978233e25161d734bc2b628e4e"> 228</a></span>  <a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a94d12d978233e25161d734bc2b628e4e">rnd</a> ()</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> (<a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a01127ba741f9f220a0ac9a6c80fd6b58">rng_dist_</a> (<a class="code" href="classpcl_1_1_shape_context3_d_estimation.html#a94ef7336409ae43a630a01a8721b44d0">rng_</a>));</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  };</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> }</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  </div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="preprocessor">#ifdef PCL_NO_PRECOMPILE</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="preprocessor">#include <pcl/features/impl/3dsc.hpp></span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclasspcl_1_1_feature_from_normals_html"><div class="ttname"><a href="classpcl_1_1_feature_from_normals.html">pcl::FeatureFromNormals</a></div><div class="ttdef"><b>Definition:</b> <a href="feature_8h_source.html#l00308">feature.h:309</a></div></div>
<div class="ttc" id="aclasspcl_1_1_feature_html"><div class="ttname"><a href="classpcl_1_1_feature.html">pcl::Feature</a></div><div class="ttdoc">Feature represents the base feature class.</div><div class="ttdef"><b>Definition:</b> <a href="feature_8h_source.html#l00106">feature.h:107</a></div></div>
<div class="ttc" id="aclasspcl_1_1_feature_html_a2c52e9b0412b8ce790837b24cd99f0af"><div class="ttname"><a href="classpcl_1_1_feature.html#a2c52e9b0412b8ce790837b24cd99f0af">pcl::Feature::search_radius_</a></div><div class="ttdeci">double search_radius_</div><div class="ttdoc">The nearest neighbors search radius for each point.</div><div class="ttdef"><b>Definition:</b> <a href="feature_8h_source.html#l00237">feature.h:237</a></div></div>
<div class="ttc" id="aclasspcl_1_1_feature_html_a54032b79551164878ff59ed93b5c1dc5"><div class="ttname"><a href="classpcl_1_1_feature.html#a54032b79551164878ff59ed93b5c1dc5">pcl::Feature::feature_name_</a></div><div class="ttdeci">std::string feature_name_</div><div class="ttdoc">The feature name.</div><div class="ttdef"><b>Definition:</b> <a href="feature_8h_source.html#l00220">feature.h:220</a></div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html"><div class="ttname"><a href="classpcl_1_1_point_cloud.html">pcl::PointCloud< PointOutT ></a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html">pcl::ShapeContext3DEstimation</a></div><div class="ttdoc">ShapeContext3DEstimation implements the 3D shape context descriptor as described in:</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00072">3dsc.h:73</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a01127ba741f9f220a0ac9a6c80fd6b58"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a01127ba741f9f220a0ac9a6c80fd6b58">pcl::ShapeContext3DEstimation::rng_dist_</a></div><div class="ttdeci">std::uniform_real_distribution< float > rng_dist_</div><div class="ttdoc">Random number generator distribution.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00216">3dsc.h:216</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a1797a3547853cde1cb8b7d53dba359be"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a1797a3547853cde1cb8b7d53dba359be">pcl::ShapeContext3DEstimation::setMinimalRadius</a></div><div class="ttdeci">void setMinimalRadius(double radius)</div><div class="ttdoc">The minimal radius value for the search sphere (rmin) in the original paper.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00143">3dsc.h:143</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a31c91421fae448dc07b3a17637d01e61"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a31c91421fae448dc07b3a17637d01e61">pcl::ShapeContext3DEstimation::computePoint</a></div><div class="ttdeci">bool computePoint(std::size_t index, const pcl::PointCloud< PointNT > &normals, float rf[9], std::vector< float > &desc)</div><div class="ttdoc">Estimate a descriptor for a given point.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8hpp_source.html#l00133">3dsc.hpp:133</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a4872a6ce97ac4472f3c23a0c6f41f235"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a4872a6ce97ac4472f3c23a0c6f41f235">pcl::ShapeContext3DEstimation::azimuth_bins_</a></div><div class="ttdeci">std::size_t azimuth_bins_</div><div class="ttdoc">Bins along the azimuth dimension.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00195">3dsc.h:195</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a556aa3015205c00d8e9bc4967e192828"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a556aa3015205c00d8e9bc4967e192828">pcl::ShapeContext3DEstimation::getAzimuthBins</a></div><div class="ttdeci">std::size_t getAzimuthBins()</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00123">3dsc.h:123</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a5ad35bf2e037d347e932a3ce2588dc01"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a5ad35bf2e037d347e932a3ce2588dc01">pcl::ShapeContext3DEstimation::initCompute</a></div><div class="ttdeci">bool initCompute() override</div><div class="ttdoc">Initialize computation by allocating all the intervals and the volume lookup table.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8hpp_source.html#l00053">3dsc.hpp:53</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a6ed1598dc37dd8bb2c24501712ab28d3"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a6ed1598dc37dd8bb2c24501712ab28d3">pcl::ShapeContext3DEstimation::ConstPtr</a></div><div class="ttdeci">shared_ptr< const ShapeContext3DEstimation< PointInT, PointNT, PointOutT > > ConstPtr</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00076">3dsc.h:76</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a74bd50ea33bd0d32a85d81e0300263d3"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a74bd50ea33bd0d32a85d81e0300263d3">pcl::ShapeContext3DEstimation::radius_bins_</a></div><div class="ttdeci">std::size_t radius_bins_</div><div class="ttdoc">Bins along the radius dimension.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00201">3dsc.h:201</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a789a2e60c12ba68b9ae62792c8f39aeb"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a789a2e60c12ba68b9ae62792c8f39aeb">pcl::ShapeContext3DEstimation::PointCloudIn</a></div><div class="ttdeci">typename Feature< PointInT, PointOutT >::PointCloudIn PointCloudIn</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00089">3dsc.h:89</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a85fe8fd0e4cb0c2545a9d35a692779df"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a85fe8fd0e4cb0c2545a9d35a692779df">pcl::ShapeContext3DEstimation::radii_interval_</a></div><div class="ttdeci">std::vector< float > radii_interval_</div><div class="ttdoc">Values of the radii interval.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00183">3dsc.h:183</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a8f9a129cd42ddc57b30a68e266d7af15"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a8f9a129cd42ddc57b30a68e266d7af15">pcl::ShapeContext3DEstimation::getElevationBins</a></div><div class="ttdeci">std::size_t getElevationBins()</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00130">3dsc.h:130</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a94d12d978233e25161d734bc2b628e4e"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a94d12d978233e25161d734bc2b628e4e">pcl::ShapeContext3DEstimation::rnd</a></div><div class="ttdeci">float rnd()</div><div class="ttdoc">Boost-based random number generator.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00228">3dsc.h:228</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a94ef7336409ae43a630a01a8721b44d0"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a94ef7336409ae43a630a01a8721b44d0">pcl::ShapeContext3DEstimation::rng_</a></div><div class="ttdeci">std::mt19937 rng_</div><div class="ttdoc">Random number generator algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00213">3dsc.h:213</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a95d6638b9fcd2282e3c4d3862b89f30c"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a95d6638b9fcd2282e3c4d3862b89f30c">pcl::ShapeContext3DEstimation::PointCloudOut</a></div><div class="ttdeci">typename Feature< PointInT, PointOutT >::PointCloudOut PointCloudOut</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00088">3dsc.h:88</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a99b84d1f4079f42014ae6bd91d65f856"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a99b84d1f4079f42014ae6bd91d65f856">pcl::ShapeContext3DEstimation::getPointDensityRadius</a></div><div class="ttdeci">double getPointDensityRadius()</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00158">3dsc.h:158</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_a9a33a2c7d4d33c22a2b8532dba05b0bf"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#a9a33a2c7d4d33c22a2b8532dba05b0bf">pcl::ShapeContext3DEstimation::min_radius_</a></div><div class="ttdeci">double min_radius_</div><div class="ttdoc">Minimal radius value.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00204">3dsc.h:204</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_aa71280e637046576f66acebd491a4856"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#aa71280e637046576f66acebd491a4856">pcl::ShapeContext3DEstimation::computeFeature</a></div><div class="ttdeci">void computeFeature(PointCloudOut &output) override</div><div class="ttdoc">Estimate the actual feature.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8hpp_source.html#l00255">3dsc.hpp:255</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_aa752ddd8a5b0501f6b6dcbfd133ffa47"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#aa752ddd8a5b0501f6b6dcbfd133ffa47">pcl::ShapeContext3DEstimation::point_density_radius_</a></div><div class="ttdeci">double point_density_radius_</div><div class="ttdoc">Point density radius.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00207">3dsc.h:207</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_ac39c10aa538ee073380d3964018555df"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#ac39c10aa538ee073380d3964018555df">pcl::ShapeContext3DEstimation::volume_lut_</a></div><div class="ttdeci">std::vector< float > volume_lut_</div><div class="ttdoc">Volumes look up table.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00192">3dsc.h:192</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_acfc43f61899f42ac5474d6136832c138"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#acfc43f61899f42ac5474d6136832c138">pcl::ShapeContext3DEstimation::descriptor_length_</a></div><div class="ttdeci">std::size_t descriptor_length_</div><div class="ttdoc">Descriptor length.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00210">3dsc.h:210</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_ae2e2952dc77471b30709cebac6bab76e"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#ae2e2952dc77471b30709cebac6bab76e">pcl::ShapeContext3DEstimation::theta_divisions_</a></div><div class="ttdeci">std::vector< float > theta_divisions_</div><div class="ttdoc">Theta divisions interval.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00186">3dsc.h:186</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_ae7f58aaec207366a8824505d61b31a10"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#ae7f58aaec207366a8824505d61b31a10">pcl::ShapeContext3DEstimation::~ShapeContext3DEstimation</a></div><div class="ttdeci">~ShapeContext3DEstimation() override=default</div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_aec9b00c71722e6956c4769a64c8558be"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#aec9b00c71722e6956c4769a64c8558be">pcl::ShapeContext3DEstimation::ShapeContext3DEstimation</a></div><div class="ttdeci">ShapeContext3DEstimation(bool random=false)</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00095">3dsc.h:95</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_af37e905bdf176c47880c445bdcd9ac60"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#af37e905bdf176c47880c445bdcd9ac60">pcl::ShapeContext3DEstimation::phi_divisions_</a></div><div class="ttdeci">std::vector< float > phi_divisions_</div><div class="ttdoc">Phi divisions interval.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00189">3dsc.h:189</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_af7031bdf8cd4b2a948bc6f25767518cc"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#af7031bdf8cd4b2a948bc6f25767518cc">pcl::ShapeContext3DEstimation::getMinimalRadius</a></div><div class="ttdeci">double getMinimalRadius()</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00147">3dsc.h:147</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_afa0a74808afc7ffe70efb08bdfc952dc"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#afa0a74808afc7ffe70efb08bdfc952dc">pcl::ShapeContext3DEstimation::getRadiusBins</a></div><div class="ttdeci">std::size_t getRadiusBins()</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00137">3dsc.h:137</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_afd92bbf05ac7596e3428b77ff8da0d51"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#afd92bbf05ac7596e3428b77ff8da0d51">pcl::ShapeContext3DEstimation::elevation_bins_</a></div><div class="ttdeci">std::size_t elevation_bins_</div><div class="ttdoc">Bins along the elevation dimension.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00198">3dsc.h:198</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_afe2d89b3bddc9de2f69a7eb76b4e56a3"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#afe2d89b3bddc9de2f69a7eb76b4e56a3">pcl::ShapeContext3DEstimation::Ptr</a></div><div class="ttdeci">shared_ptr< ShapeContext3DEstimation< PointInT, PointNT, PointOutT > > Ptr</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00075">3dsc.h:75</a></div></div>
<div class="ttc" id="aclasspcl_1_1_shape_context3_d_estimation_html_aff1671ba68b09cb865057443aff9bd55"><div class="ttname"><a href="classpcl_1_1_shape_context3_d_estimation.html#aff1671ba68b09cb865057443aff9bd55">pcl::ShapeContext3DEstimation::setPointDensityRadius</a></div><div class="ttdeci">void setPointDensityRadius(double radius)</div><div class="ttdoc">This radius is used to compute local point density density = number of points within this radius.</div><div class="ttdef"><b>Definition:</b> <a href="3dsc_8h_source.html#l00154">3dsc.h:154</a></div></div>
<div class="ttc" id="acommon_2include_2pcl_2point__types_8h_html"><div class="ttname"><a href="common_2include_2pcl_2point__types_8h.html">point_types.h</a></div><div class="ttdoc">Defines all the PCL implemented PointT point type structures.</div></div>
<div class="ttc" id="anamespacepcl_html"><div class="ttname"><a href="namespacepcl.html">pcl</a></div><div class="ttdef"><b>Definition:</b> <a href="2d_2include_2pcl_22d_2convolution_8h_source.html#l00046">convolution.h:46</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<hr>
<div id="footer">
<p>
Except where otherwise noted, the PointClouds.org web pages are licensed under <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a>.
</p>
<p>Pages generated on Fri Nov 22 2024 10:56:10</p>
</div> <!-- #footer -->
</body>
</html>