![]() |
ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
|
#include "qAutoSeg.h"#include <pcl/common/common.h>#include <pcl/common/transforms.h>#include <pcl/kdtree/kdtree_flann.h>#include <pcl/point_cloud.h>#include <random>#include "profileImportDlg.h"#include <QFile>#include <QFileInfo>#include <QMainWindow>#include <QMessageBox>#include <QSettings>#include <QtGui>#include <unordered_set>#include <GenericIndexedCloudPersist.h>#include <ecvCone.h>#include <ecvFileUtils.h>#include <ecvHObjectCaster.h>#include <ecvMesh.h>#include <ecvPointCloud.h>#include <ecvPolyline.h>#include <ecvProgressDialog.h>#include <ecvScalarField.h>#include <PlyFilter.h>#include <algorithm>#include <cmath>#include <fstream>#include <iostream>#include <list>#include <numeric>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgcodecs.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/opencv.hpp>#include <vector>#include <CVKdTree.h>#include <CVPointCloud.h>#include <CVTools.h>#include <CloudSamplingTools.h>#include <DgmOctreeReferenceCloud.h>#include <DistanceComputationTools.h>#include <GenericProgressCallback.h>#include <Neighbourhood.h>#include <ReferenceCloud.h>#include <ScalarField.h>#include <ScalarFieldTools.h>#include <SimpleMesh.h>#include <ctime>
Go to the source code of this file.
Macros | |
| #define | CV_PCA_DATA_AS_ROW 150 |
| #define | _USE_MATH_DEFINES |
Functions | |
| double | stddev (std::vector< double > const &func) |
| string | dateStamp () |
| double | optRotY (ccPointCloud *&cloud) |
| void | rotY (ccPointCloud *&cloud, double th0) |
| void | cloud2binary (ccPointCloud *cloud, cv::Mat &corrMatS, std::vector< cv::Point > &idxPxS, std::vector< int > &idxPx1DS, cv::Mat &imageBWS) |
| cv::Mat | skeleton (cv::Mat I, bool flagInv) |
| std::vector< cv::Point > | extractVectorFromIdx (std::vector< cv::Point > v, vector< int > idx) |
| void | populateMat (cv::Mat &populated, std::vector< cv::Point > pixList, int value) |
| std::vector< cv::Point > | setdiffPixs (std::vector< cv::Point > listNew, std::vector< cv::Point > listOld) |
| std::vector< int > | setIntersectIdxPixs (std::vector< cv::Point > listNew, std::vector< cv::Point > listOld) |
| std::vector< int > | setIntersectIdxPixs1D (std::vector< int > listNew, std::vector< int > listOld) |
| std::vector< cv::Point > | setxorPixs (std::vector< cv::Point > listNew, std::vector< cv::Point > listOld) |
| std::vector< int > | pixelValues (cv::Mat inputM, std::vector< cv::Point > &pixelList) |
| std::vector< std::vector< cv::Point > > | pixelListMat (cv::Mat inputM, int nLabels) |
| std::vector< int > | findMatlab (std::vector< double > inputV, int op, double thres) |
| std::vector< int > | findIdx (std::vector< int > inputV, int thres) |
| void | dilationCC (int dilation_elem, int dilation_size, cv::Mat &src, cv::Mat &dilation_dst) |
| void | erosionCC (int erosion_elem, int erosion_size, cv::Mat &src, cv::Mat &erosion_dst) |
| cv::Mat | stonesDivision (std::vector< std::vector< cv::Point >> pixsLabel, cv::Mat labels, std::vector< int > bigStones) |
| cv::Mat | threshSegments (cv::Mat &src, double threshSize) |
| string | type2str (int type) |
| void | extractInfo (cv::Mat &input, std::vector< std::vector< cv::Point >> &pixsLabel, cv::Mat &labels, cv::Mat &stats, std::vector< std::vector< Point >> &contours0) |
| void | fillEdgeImage (cv::Mat edgesIn, cv::Mat &filledEdgesOut, int z) |
| void | fft2 (const cv::Mat in, cv::Mat &complexI) |
| cv::Mat | conjugate (cv::Mat_< std::complex< double >> M1, bool *flag) |
| cv::Mat | multiplicationCC (cv::Mat_< std::complex< double >> M1, cv::Mat_< std::complex< double >> M2) |
| void | cwt2d (double sca, cv::Mat image, cv::Mat &cwtcfs, cv::Mat &bincfs) |
| ccPolyline * | contourPoly (ccPointCloud *stone) |
| ccPolyline * | contourPoly2 (ccPointCloud *cloud0, vector< int > V, QString name) |
| ccPointCloud * | getMortarMaps (ccPointCloud *f_cloudStones, ccPointCloud *f_cloudMortar) |
| float | getDensity (ccPointCloud *cloud, vector< int > idx) |
| #define _USE_MATH_DEFINES |
Definition at line 46 of file qAutoSeg.cpp.
| #define CV_PCA_DATA_AS_ROW 150 |
Definition at line 8 of file qAutoSeg.cpp.
| void cloud2binary | ( | ccPointCloud * | cloud, |
| cv::Mat & | corrMatS, | ||
| std::vector< cv::Point > & | idxPxS, | ||
| std::vector< int > & | idxPx1DS, | ||
| cv::Mat & | imageBWS | ||
| ) |
Definition at line 247 of file qAutoSeg.cpp.
References cloudViewer::utility::floor(), cloudViewer::PointCloudTpl< T >::getPoint(), cloudViewer::PointCloudTpl< T >::size(), Tuple3Tpl< Type >::x, and Tuple3Tpl< Type >::z.
Referenced by getMortarMaps().
| cv::Mat conjugate | ( | cv::Mat_< std::complex< double >> | M1, |
| bool * | flag | ||
| ) |
Definition at line 767 of file qAutoSeg.cpp.
| ccPolyline* contourPoly | ( | ccPointCloud * | stone | ) |
Definition at line 936 of file qAutoSeg.cpp.
References ccHObject::addChild(), cloudViewer::PointCloudTpl< T >::addPoint(), cloudViewer::ReferenceCloud::addPointIndex(), ccPointCloud::addRGBColor(), ecvColor::cyan(), cloudViewer::PointProjectionTools::extractConcaveHull2D(), ccObject::getName(), cloudViewer::PointCloudTpl< T >::getPoint(), ccPointCloud::getPointColor(), cloudViewer::PointProjectionTools::IndexedCCVector2::index, cloudViewer::ReferenceCloud::reserve(), ccPointCloud::reserveThePointsTable(), ccPointCloud::reserveTheRGBTable(), cloudViewer::Polyline::setClosed(), ccPolyline::setColor(), ccObject::setName(), ccDrawableObject::setVisible(), ccDrawableObject::showColors(), ccPolyline::showVertices(), cloudViewer::PointCloudTpl< T >::size(), Tuple3Tpl< Type >::x, Tuple3Tpl< Type >::y, and Tuple3Tpl< Type >::z.
| ccPolyline* contourPoly2 | ( | ccPointCloud * | cloud0, |
| vector< int > | V, | ||
| QString | name | ||
| ) |
Definition at line 993 of file qAutoSeg.cpp.
References ccHObject::addChild(), cloudViewer::PointCloudTpl< T >::addPoint(), cloudViewer::ReferenceCloud::addPointIndex(), ccPointCloud::addRGBColor(), ecvColor::cyan(), cloudViewer::PointProjectionTools::extractConcaveHull2D(), cloudViewer::PointCloudTpl< T >::getPoint(), ccPointCloud::getPointColor(), cloudViewer::PointProjectionTools::IndexedCCVector2::index, name, cloudViewer::ReferenceCloud::reserve(), ccPointCloud::reserveThePointsTable(), ccPointCloud::reserveTheRGBTable(), cloudViewer::Polyline::setClosed(), ccPolyline::setColor(), ccObject::setName(), ccDrawableObject::setVisible(), ccDrawableObject::showColors(), ccPolyline::showVertices(), Tuple3Tpl< Type >::x, Tuple3Tpl< Type >::y, and Tuple3Tpl< Type >::z.
| void cwt2d | ( | double | sca, |
| cv::Mat | image, | ||
| cv::Mat & | cwtcfs, | ||
| cv::Mat & | bincfs | ||
| ) |
Definition at line 809 of file qAutoSeg.cpp.
References abs(), fft2(), cloudViewer::utility::floor(), and image.
| string dateStamp | ( | ) |
Definition at line 97 of file qAutoSeg.cpp.
| void dilationCC | ( | int | dilation_elem, |
| int | dilation_size, | ||
| cv::Mat & | src, | ||
| cv::Mat & | dilation_dst | ||
| ) |
Definition at line 496 of file qAutoSeg.cpp.
| void erosionCC | ( | int | erosion_elem, |
| int | erosion_size, | ||
| cv::Mat & | src, | ||
| cv::Mat & | erosion_dst | ||
| ) |
Definition at line 515 of file qAutoSeg.cpp.
Referenced by stonesDivision().
| void extractInfo | ( | cv::Mat & | input, |
| std::vector< std::vector< cv::Point >> & | pixsLabel, | ||
| cv::Mat & | labels, | ||
| cv::Mat & | stats, | ||
| std::vector< std::vector< Point >> & | contours0 | ||
| ) |
Definition at line 667 of file qAutoSeg.cpp.
References pixelListMat(), and type2str().
| std::vector<cv::Point> extractVectorFromIdx | ( | std::vector< cv::Point > | v, |
| vector< int > | idx | ||
| ) |
Definition at line 311 of file qAutoSeg.cpp.
| void fft2 | ( | const cv::Mat | in, |
| cv::Mat & | complexI | ||
| ) |
Definition at line 753 of file qAutoSeg.cpp.
Referenced by cwt2d().
| void fillEdgeImage | ( | cv::Mat | edgesIn, |
| cv::Mat & | filledEdgesOut, | ||
| int | z | ||
| ) |
Definition at line 692 of file qAutoSeg.cpp.
References type2str().
| std::vector<int> findIdx | ( | std::vector< int > | inputV, |
| int | thres | ||
| ) |
Definition at line 485 of file qAutoSeg.cpp.
| std::vector<int> findMatlab | ( | std::vector< double > | inputV, |
| int | op, | ||
| double | thres | ||
| ) |
Definition at line 454 of file qAutoSeg.cpp.
| float getDensity | ( | ccPointCloud * | cloud, |
| vector< int > | idx | ||
| ) |
Definition at line 1287 of file qAutoSeg.cpp.
References cloudViewer::PointCloudTpl< T >::addPoint(), cloudViewer::PointCloudTpl< T >::getBoundingBox(), cloudViewer::PointCloudTpl< T >::getPoint(), ccPointCloud::reserveThePointsTable(), Tuple3Tpl< Type >::x, Tuple3Tpl< Type >::y, and Tuple3Tpl< Type >::z.
| ccPointCloud* getMortarMaps | ( | ccPointCloud * | f_cloudStones, |
| ccPointCloud * | f_cloudMortar | ||
| ) |
Definition at line 1052 of file qAutoSeg.cpp.
References abs(), cloudViewer::PointCloudTpl< T >::addPoint(), ccPointCloud::addRGBColor(), ccPointCloud::addScalarField(), cloudViewer::utility::ceil(), cloud2binary(), cloudViewer::ScalarField::computeMinAndMax(), cloudViewer::PointCloudTpl< T >::getBoundingBox(), cloudViewer::PointCloudTpl< T >::getPoint(), ccPointCloud::getPointColor(), cloudViewer::PointCloudTpl< T >::getPointScalarValue(), cloudViewer::PointCloudTpl< T >::getScalarField(), cloudViewer::PointCloudTpl< T >::getScalarFieldIndexByName(), ccPointCloud::partialClone(), cloudViewer::CloudSamplingTools::resampleCloudSpatially(), ccPointCloud::reserveThePointsTable(), ccPointCloud::reserveTheRGBTable(), ccPointCloud::scale(), ccPointCloud::setCurrentDisplayedScalarField(), setIntersectIdxPixs1D(), ccObject::setName(), ccGenericPointCloud::setPointSize(), cloudViewer::ScalarField::setValue(), ccDrawableObject::showSF(), cloudViewer::PointCloudTpl< T >::size(), skeleton(), Tuple3Tpl< Type >::x, Tuple3Tpl< Type >::y, and Tuple3Tpl< Type >::z.
| cv::Mat multiplicationCC | ( | cv::Mat_< std::complex< double >> | M1, |
| cv::Mat_< std::complex< double >> | M2 | ||
| ) |
Definition at line 792 of file qAutoSeg.cpp.
| double optRotY | ( | ccPointCloud *& | cloud | ) |
Definition at line 115 of file qAutoSeg.cpp.
References cloudViewer::utility::floor(), cloudViewer::PointCloudTpl< T >::getPoint(), M_PI, cloudViewer::PointCloudTpl< T >::size(), Tuple3Tpl< Type >::x, Tuple3Tpl< Type >::y, and Tuple3Tpl< Type >::z.
| std::vector<std::vector<cv::Point> > pixelListMat | ( | cv::Mat | inputM, |
| int | nLabels | ||
| ) |
Definition at line 437 of file qAutoSeg.cpp.
Referenced by extractInfo().
| std::vector<int> pixelValues | ( | cv::Mat | inputM, |
| std::vector< cv::Point > & | pixelList | ||
| ) |
Definition at line 426 of file qAutoSeg.cpp.
| void populateMat | ( | cv::Mat & | populated, |
| std::vector< cv::Point > | pixList, | ||
| int | value | ||
| ) |
Definition at line 323 of file qAutoSeg.cpp.
| void rotY | ( | ccPointCloud *& | cloud, |
| double | th0 | ||
| ) |
Definition at line 177 of file qAutoSeg.cpp.
References cloudViewer::PointCloudTpl< T >::addPoint(), ccPointCloud::addRGBColor(), ecvColor::RgbTpl< Type >::b, cloudViewer::utility::floor(), ecvColor::RgbTpl< Type >::g, cloudViewer::PointCloudTpl< T >::getPoint(), ccPointCloud::getPointColor(), ecvColor::RgbTpl< Type >::r, ccPointCloud::reserveThePointsTable(), ccPointCloud::reserveTheRGBTable(), cloudViewer::PointCloudTpl< T >::size(), Tuple3Tpl< Type >::x, Tuple3Tpl< Type >::y, and Tuple3Tpl< Type >::z.
| std::vector<cv::Point> setdiffPixs | ( | std::vector< cv::Point > | listNew, |
| std::vector< cv::Point > | listOld | ||
| ) |
Definition at line 333 of file qAutoSeg.cpp.
| std::vector<int> setIntersectIdxPixs | ( | std::vector< cv::Point > | listNew, |
| std::vector< cv::Point > | listOld | ||
| ) |
Definition at line 355 of file qAutoSeg.cpp.
| std::vector<int> setIntersectIdxPixs1D | ( | std::vector< int > | listNew, |
| std::vector< int > | listOld | ||
| ) |
Definition at line 372 of file qAutoSeg.cpp.
Referenced by getMortarMaps().
| std::vector<cv::Point> setxorPixs | ( | std::vector< cv::Point > | listNew, |
| std::vector< cv::Point > | listOld | ||
| ) |
Definition at line 392 of file qAutoSeg.cpp.
| cv::Mat skeleton | ( | cv::Mat | I, |
| bool | flagInv | ||
| ) |
Definition at line 279 of file qAutoSeg.cpp.
Referenced by getMortarMaps().
| double stddev | ( | std::vector< double > const & | func | ) |
Definition at line 86 of file qAutoSeg.cpp.
Referenced by cloudViewer::CloudSamplingTools::applyNoiseFilterAtLevel(), cloudViewer::DgmOctree::executeFunctionForAllCellsStartingAtLevel(), and cloudViewer::utility::random::NormalGenerator< T >::NormalGenerator().
| cv::Mat stonesDivision | ( | std::vector< std::vector< cv::Point >> | pixsLabel, |
| cv::Mat | labels, | ||
| std::vector< int > | bigStones | ||
| ) |
Definition at line 534 of file qAutoSeg.cpp.
References erosionCC(), and size.
| cv::Mat threshSegments | ( | cv::Mat & | src, |
| double | threshSize | ||
| ) |
Definition at line 578 of file qAutoSeg.cpp.
References result.
| string type2str | ( | int | type | ) |
Definition at line 627 of file qAutoSeg.cpp.
References type.
Referenced by extractInfo(), and fillEdgeImage().