ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvPointCloud.cpp File Reference
#include "ecvPointCloud.h"
#include <GeometricalAnalysisTools.h>
#include <Helper.h>
#include <Logging.h>
#include <ManualSegmentationTools.h>
#include <ReferenceCloud.h>
#include <Eigen/Dense>
#include "ecv2DLabel.h"
#include "ecvChunk.h"
#include "ecvColorScalesManager.h"
#include "ecvDisplayTools.h"
#include "ecvFastMarchingForNormsDirection.h"
#include "ecvFrustum.h"
#include "ecvGBLSensor.h"
#include "ecvGenericMesh.h"
#include "ecvHObjectCaster.h"
#include "ecvImage.h"
#include "ecvKdTree.h"
#include "ecvMaterial.h"
#include "ecvMesh.h"
#include "ecvMinimumSpanningTreeForNormsDirection.h"
#include "ecvNormalVectors.h"
#include "ecvOctree.h"
#include "ecvPointCloudLOD.h"
#include "ecvPolyline.h"
#include "ecvProgressDialog.h"
#include "ecvScalarField.h"
#include "ecvSensor.h"
#include <QCoreApplication>
#include <QElapsedTimer>
#include <QSharedPointer>
#include <cassert>
#include <limits>
#include <queue>
#include <unordered_map>
Include dependency graph for ecvPointCloud.cpp:

Go to the source code of this file.

Classes

struct  DisplayDesc
 

Macros

#define DONT_LOAD_NORMALS_IN_VBOS
 

Functions

void UpdateGridIndexes (const std::vector< int > &newIndexMap, std::vector< ccPointCloud::Grid::Shared > &grids)
 
static bool ComputeCellGaussianFilter (const cloudViewer::DgmOctree::octreeCell &cell, void **additionalParameters, cloudViewer::NormalizedProgress *nProgress=nullptr)
 
float GetNormalizedValue (const ScalarType &sfVal, const ccScalarField::Range &displayRange)
 
float GetSymmetricalNormalizedValue (const ScalarType &sfVal, const ccScalarField::Range &saturationRange)
 
static void ProjectOnCylinder (const CCVector3 &AP, const Tuple3ub &dim, PointCoordinateType radius, PointCoordinateType &delta, PointCoordinateType &phi_rad)
 
static void ProjectOnCone (const CCVector3 &AP, PointCoordinateType alpha_rad, const Tuple3ub &dim, PointCoordinateType &s, PointCoordinateType &delta, PointCoordinateType &phi_rad)
 
static bool CatchGLErrors (GLenum err, const char *context)
 

Variables

static const char s_deviationSFName [] = "Deviation"
 
static const unsigned MAX_POINT_COUNT_PER_LOD_RENDER_PASS = (1 << 19)
 Maximum number of points (per cloud) displayed in a single LOD iteration. More...
 

Macro Definition Documentation

◆ DONT_LOAD_NORMALS_IN_VBOS

#define DONT_LOAD_NORMALS_IN_VBOS

Definition at line 5071 of file ecvPointCloud.cpp.

Function Documentation

◆ CatchGLErrors()

static bool CatchGLErrors ( GLenum  err,
const char *  context 
)
static

Definition at line 5032 of file ecvPointCloud.cpp.

References context, and CVLog::Warning().

◆ ComputeCellGaussianFilter()

static bool ComputeCellGaussianFilter ( const cloudViewer::DgmOctree::octreeCell cell,
void **  additionalParameters,
cloudViewer::NormalizedProgress nProgress = nullptr 
)
static

"Cellular" function to apply a gaussian filter on the RGB values of points inside an octree cell This function is meant to be applied to all cells of the octree The method also permits to use a bilateral behaviour for the filter. This is automatically switched on if its sigmaSF parameter in additionalParameters is positive.

See ccPointCloud::applyFilterToRGB.
Method parameters (defined in "additionalParameters") are :
- (PointCoordinateType*) sigma
- (PointCoordinateType*) sigmaSF
- (ccPointCloud::RgbFilterOptions*) filterParams

\param cell structure describing the cell on which processing is applied
\param additionalParameters see method description
\param nProgress optional (normalized) progress notification (per-point)

Definition at line 2125 of file ecvPointCloud.cpp.

References cloudViewer::DgmOctree::NearestNeighboursSearchStruct::alreadyVisitedNeighbourhoodSize, ccPointCloud::RgbFilterOptions::applyToSFduringRGB, ecvColor::RgbTpl< Type >::b, ccPointCloud::RgbFilterOptions::blendGrayscale, ccPointCloud::RgbFilterOptions::blendGrayscalePercent, ccPointCloud::RgbFilterOptions::blendGrayscaleThreshold, ccPointCloud::RgbFilterOptions::burntOutColorThreshold, cloudViewer::DgmOctree::NearestNeighboursSearchStruct::cellCenter, cloudViewer::DgmOctree::NearestNeighboursSearchStruct::cellPos, cloudViewer::DgmOctree::computeCellCenter(), ccPointCloud::RgbFilterOptions::filterType, cloudViewer::DgmOctree::findNeighborsInASphereStartingFromCell(), ecvColor::RgbTpl< Type >::g, cloudViewer::ReferenceCloud::getAssociatedCloud(), cloudViewer::DgmOctree::getCellPos(), cloudViewer::ReferenceCloud::getPoint(), ccPointCloud::getPointColor(), cloudViewer::ReferenceCloud::getPointGlobalIndex(), cloudViewer::ReferenceCloud::getPointPersistentPtr(), cloudViewer::PointCloudTpl< T >::getPointScalarValue(), cloudViewer::ReferenceCloud::getPointScalarValue(), cloudViewer::DgmOctree::NearestNeighboursSearchStruct::level, cloudViewer::DgmOctree::octreeCell::level, nProgress, cloudViewer::NormalizedProgress::oneStep(), cloudViewer::DgmOctree::octreeCell::parentOctree, cloudViewer::DgmOctree::octreeCell::points, cloudViewer::DgmOctree::NearestNeighboursSearchStruct::pointsInNeighbourhood, cloudViewer::DgmOctree::NearestNeighboursSearchStruct::queryPoint, ecvColor::RgbTpl< Type >::r, ccPointCloud::setPointColor(), cloudViewer::PointCloudTpl< T >::setPointScalarValue(), cloudViewer::ReferenceCloud::size(), cloudViewer::DgmOctree::octreeCell::truncatedCode, and cloudViewer::ScalarField::ValidValue().

Referenced by ccPointCloud::applyFilterToRGB().

◆ GetNormalizedValue()

float GetNormalizedValue ( const ScalarType &  sfVal,
const ccScalarField::Range displayRange 
)
inline

◆ GetSymmetricalNormalizedValue()

float GetSymmetricalNormalizedValue ( const ScalarType &  sfVal,
const ccScalarField::Range saturationRange 
)
inline

◆ ProjectOnCone()

static void ProjectOnCone ( const CCVector3 AP,
PointCoordinateType  alpha_rad,
const Tuple3ub dim,
PointCoordinateType s,
PointCoordinateType delta,
PointCoordinateType phi_rad 
)
static

◆ ProjectOnCylinder()

static void ProjectOnCylinder ( const CCVector3 AP,
const Tuple3ub dim,
PointCoordinateType  radius,
PointCoordinateType delta,
PointCoordinateType phi_rad 
)
static

◆ UpdateGridIndexes()

void UpdateGridIndexes ( const std::vector< int > &  newIndexMap,
std::vector< ccPointCloud::Grid::Shared > &  grids 
)

Variable Documentation

◆ MAX_POINT_COUNT_PER_LOD_RENDER_PASS

const unsigned MAX_POINT_COUNT_PER_LOD_RENDER_PASS = (1 << 19)
static

Maximum number of points (per cloud) displayed in a single LOD iteration.

Definition at line 2844 of file ecvPointCloud.cpp.

◆ s_deviationSFName

const char s_deviationSFName[] = "Deviation"
static

Definition at line 53 of file ecvPointCloud.cpp.

Referenced by ccPointCloud::unroll().