30 CImage&
img,
bool verticalFlip,
bool forceRGB,
bool tricolor)
const 36 img.resize(size_x, size_y, 1,
true);
38 unsigned char* destPtr;
39 for (
unsigned int y = 0;
y < size_y;
y++)
42 destPtr =
img(0, size_y - 1 -
y);
45 for (
unsigned int x = 0;
x < size_x;
x++)
47 *destPtr++ = l2p_255(*srcPtr++);
53 img.resize(size_x, size_y, 3,
true);
55 unsigned char* destPtr;
56 for (
unsigned int y = 0;
y < size_y;
y++)
59 destPtr =
img(0, size_y - 1 -
y);
62 for (
unsigned int x = 0;
x < size_x;
x++)
77 img.resize(size_x, size_y, 1,
true);
79 unsigned char* destPtr;
80 for (
unsigned int y = 0;
y < size_y;
y++)
83 destPtr =
img(0, size_y - 1 -
y);
86 for (
unsigned int x = 0;
x < size_x;
x++)
101 img.resize(size_x, size_y, 3,
true);
103 unsigned char* destPtr;
104 for (
unsigned int y = 0;
y < size_y;
y++)
107 destPtr =
img(0, size_y - 1 -
y);
110 for (
unsigned int x = 0;
x < size_x;
x++)
133 CImage&
img,
bool verticalFlip,
bool forceRGB)
const 135 getAsImage(
img, verticalFlip, forceRGB);
142 if (insertionOptions.CFD_features_gaussian_size != 0)
143 img.filterGaussianInPlace(
144 round(insertionOptions.CFD_features_gaussian_size));
145 if (insertionOptions.CFD_features_median_size != 0)
146 img.filterMedianInPlace(
147 round(insertionOptions.CFD_features_median_size));
149 cout <<
"[COccupancyGridMap2D::getAsImageFiltered] Filtered in: " <<
t.Tac()*1000 <<
" ms" << endl;
159 if (!genericMapParams.enableSaveAs3DObject)
return;
164 mrpt::make_aligned_shared<opengl::CTexturedPlane>();
166 outObj->setPlaneCorners(x_min, x_max, y_min, y_max);
168 outObj->setLocation(0, 0, insertionOptions.mapAltitude);
171 CImage imgColor(size_x, size_y, 1);
172 CImage imgTrans(size_x, size_y, 1);
176 for (
unsigned int y = 0;
y < size_y;
y++)
178 unsigned char* destPtr_color = imgColor(0,
y);
179 unsigned char* destPtr_trans = imgTrans(0,
y);
180 for (
unsigned int x = 0;
x < size_x;
x++)
182 uint8_t cell255 = l2p_255(*srcPtr++);
183 *destPtr_color++ = cell255;
186 *destPtr_trans++ = auxC > 0 ? (auxC << 1) : ((-auxC) << 1);
190 outObj->assignImage_fast(imgColor, imgTrans);
191 outSetOfObj->insert(outObj);
204 for (
size_t i = 1; i + 1 < size_x; i++)
207 for (
size_t j = 1; j + 1 < size_y; j++)
210 bool is_surrounded =
true;
211 for (
int di = -1; di <= 1 && is_surrounded; di++)
212 for (
int dj = -1; dj <= 1 && is_surrounded; dj++)
213 if ((di != 0 || dj != 0) &&
214 getCell(i + di, j + dj) > occup_threshold)
215 is_surrounded =
false;
217 if (getCell(i, j) < occup_threshold && !is_surrounded)
void clear()
Erase all the contents of the map.
virtual void reserve(size_t newLength) override
Reserves memory for a given number of points: the size of the map does not change, it only reserves the memory.
int16_t cellType
The type of the map cells:
A cloud of points in 2D or 3D, which can be built from a sequence of laser scans. ...
void insertPoint(float x, float y, float z=0)
Provides a way to insert (append) individual points into the map: the missing fields of child classes...
void getAsImageFiltered(img::CImage &img, bool verticalFlip=false, bool forceRGB=false) const
Returns the grid as a 8-bit graylevel image, where each pixel is a cell (output image is RGB only if ...
mrpt::system::CTicTac CTicTac
This namespace contains representation of robot actions and observations.
void getAsPointCloud(mrpt::maps::CSimplePointsMap &pm, const float occup_threshold=0.5f) const
Get a point cloud with all (border) occupied cells as points.
Classes for 2D/3D geometry representation, both of single values and probability density distribution...
void getAsImage(mrpt::img::CImage &img, bool verticalFlip=false, bool forceRGB=false, bool tricolor=false) const
Returns the grid as a 8-bit graylevel image, where each pixel is a cell (output image is RGB only if ...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
void getAs3DObject(mrpt::opengl::CSetOfObjects::Ptr &outObj) const override
Returns a 3D plane with its texture being the occupancy grid and transparency proportional to "uncert...
A class for storing images as grayscale or RGB bitmaps.
int round(const T value)
Returns the closer integer (int) to x.