Point Cloud Library (PCL) 1.13.0
Loading...
Searching...
No Matches
sparse_quantized_multi_mod_template.h
1/*
2 * Software License Agreement (BSD License)
3 *
4 * Point Cloud Library (PCL) - www.pointclouds.org
5 * Copyright (c) 2010-2011, Willow Garage, Inc.
6 *
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * * Redistributions in binary form must reproduce the above
16 * copyright notice, this list of conditions and the following
17 * disclaimer in the documentation and/or other materials provided
18 * with the distribution.
19 * * Neither the name of Willow Garage, Inc. nor the names of its
20 * contributors may be used to endorse or promote products derived
21 * from this software without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 *
36 */
37
38#pragma once
39
40#include <vector>
41
42#include <pcl/recognition/region_xy.h>
43
44namespace pcl
45{
46
47 /** \brief Feature that defines a position and quantized value in a specific modality.
48 * \author Stefan Holzer
49 */
51 {
52 /** \brief Constructor. */
54
55 /** \brief x-position. */
56 int x;
57 /** \brief y-position. */
58 int y;
59 /** \brief the index of the corresponding modality. */
60 std::size_t modality_index;
61 /** \brief the quantized value attached to the feature. */
62 unsigned char quantized_value;
63
64 /** \brief Compares whether two features are the same.
65 * \param[in] base the feature to compare to.
66 */
67 bool
69 {
70 if (base.x != x)
71 return false;
72 if (base.y != y)
73 return false;
75 return false;
77 return false;
78
79 return true;
80 }
81
82 /** \brief Serializes the object to the specified stream.
83 * \param[out] stream the stream the object will be serialized to. */
84 void
85 serialize (std::ostream & stream) const
86 {
87 write (stream, x);
88 write (stream, y);
89 write (stream, modality_index);
90 write (stream, quantized_value);
91 }
92
93 /** \brief Deserializes the object from the specified stream.
94 * \param[in] stream the stream the object will be deserialized from. */
95 void
96 deserialize (std::istream & stream)
97 {
98 read (stream, x);
99 read (stream, y);
100 read (stream, modality_index);
101 read (stream, quantized_value);
102 }
103 };
104
105 /** \brief A multi-modality template constructed from a set of quantized multi-modality features.
106 * \author Stefan Holzer
107 */
109 {
110 /** \brief Constructor. */
112
113 /** \brief The storage for the multi-modality features. */
114 std::vector<QuantizedMultiModFeature> features;
115
116 /** \brief The region assigned to the template. */
118
119 /** \brief Serializes the object to the specified stream.
120 * \param[out] stream the stream the object will be serialized to. */
121 void
122 serialize (std::ostream & stream) const
123 {
124 const int num_of_features = static_cast<int> (features.size ());
125 write (stream, num_of_features);
126 for (int feature_index = 0; feature_index < num_of_features; ++feature_index)
127 {
128 features[feature_index].serialize (stream);
129 }
130
131 region.serialize (stream);
132 }
133
134 /** \brief Deserializes the object from the specified stream.
135 * \param[in] stream the stream the object will be deserialized from. */
136 void
137 deserialize (std::istream & stream)
138 {
139 features.clear ();
140
141 int num_of_features;
142 read (stream, num_of_features);
143 features.resize (num_of_features);
144 for (int feature_index = 0; feature_index < num_of_features; ++feature_index)
145 {
146 features[feature_index].deserialize (stream);
147 }
148
149 region.deserialize (stream);
150 }
151 };
152
153}
void read(std::istream &stream, Type &value)
Function for reading data from a stream.
Definition region_xy.h:46
void write(std::ostream &stream, Type value)
Function for writing data to a stream.
Definition region_xy.h:63
Feature that defines a position and quantized value in a specific modality.
void deserialize(std::istream &stream)
Deserializes the object from the specified stream.
std::size_t modality_index
the index of the corresponding modality.
void serialize(std::ostream &stream) const
Serializes the object to the specified stream.
unsigned char quantized_value
the quantized value attached to the feature.
bool compareForEquality(const QuantizedMultiModFeature &base) const
Compares whether two features are the same.
Defines a region in XY-space.
Definition region_xy.h:82
void deserialize(::std::istream &stream)
Deserializes the object from the specified stream.
Definition region_xy.h:109
void serialize(std::ostream &stream) const
Serializes the object to the specified stream.
Definition region_xy.h:98
A multi-modality template constructed from a set of quantized multi-modality features.
RegionXY region
The region assigned to the template.
void deserialize(std::istream &stream)
Deserializes the object from the specified stream.
void serialize(std::ostream &stream) const
Serializes the object to the specified stream.
SparseQuantizedMultiModTemplate()=default
Constructor.
std::vector< QuantizedMultiModFeature > features
The storage for the multi-modality features.