JoannaJuanCV
研究方向:图像处理、立体视觉、3D重建;人脸识别等,专注于计算机视觉在无人机和机器人领域的研究和应用。
展开
-
3D感知技术(5)vs2017+opencv3.4.7 单目标定、双目标定、畸变矫正和对齐
vs2017+opencv3.4.7 单目标定、双目标定、畸变矫正和对齐原创 2022-09-04 17:14:21 · 908 阅读 · 0 评论 -
3D感知技术(3)相机成像模型及相机标定
相机成像模型及标定原创 2022-08-30 23:57:11 · 1094 阅读 · 1 评论 -
3D感知技术(2)3D数据获取技术概述
3D数据获取技术概述原创 2022-08-29 22:32:46 · 472 阅读 · 0 评论 -
3D感知技术(1)3D数据及其数据表示
3D数据及其数据表示原创 2022-08-28 23:28:05 · 2100 阅读 · 0 评论 -
c++ 读取csv文件格式点云
如图点云以csv文件存储,下面代码读取每个点的坐标值存放在 pcl::PointCloud中:#include <iostream>#include <fstream>#include <sstream>#include <string>#include <vector>#include <pcl/point_types.h>#include <pcl/io/pcd_io.h>using namespace.原创 2021-12-08 08:55:08 · 1538 阅读 · 0 评论 -
PCL源码剖析之MarchingCubes算法
MarchingCubes算法简介MarchingCubes(移动立方体)算法是目前三围数据场等值面生成中最常用的方法。它实际上是一个分而治之的方法,把等值面的抽取分布于每个体素中进行。对于每个被处理的体素,以三角面片逼近其内部的等值面片。每个体素是一个小立方体,构造三角面片的处理过程对每个体素都“扫描”一遍,就好像一个处理器在这些体素上移动一样,由此得名移动立方体算法。MC算法主要有三步:...转载 2020-03-04 14:16:54 · 995 阅读 · 0 评论 -
Error: no override found for 'vtkPolyDataMapper'.
vs2015+pcl1.8执行报错:Generic Warning: In C:\Build\3rdParty\x64\VTK-7.0.0\Rendering\Core\vtkPolyDataMapper.cxx, line 28Error: no override found for 'vtkPolyDataMapper'.解决办法:https://stackoverflow...原创 2019-08-20 16:06:59 · 1310 阅读 · 0 评论 -
“flann”: 不明确的符号
在同时使用PCL和OpenCV库的时候,由于两个库中都包含了flann库,会重复出现flann命名空间,导致编译报错,目前知道了两种解决方法:将代码“using namespace cv;”删除,使用“cv::anything”,这样就不会直接出现cv::flann,导致和PCL中的flann冲突;将引用PCL库的语句放在引用OpenCV库的前面。...原创 2019-07-25 09:52:02 · 668 阅读 · 0 评论 -
PCL 点云滤波调试 /arch:AVX 引起的崩溃问题
工程中使用dlib进行人脸识别,编译时报:所以就在命令行添加了:/arch:AVX结果后面增加点云滤波时,用到Ptr的地方会崩溃,把上面添加的/arch:AVX 去掉就ok了;哎,查了一天bug。。。。。不过不知为啥...原创 2019-07-26 17:54:28 · 721 阅读 · 0 评论 -
kdTree介绍以及PCL示例
kdTree概念 kd-tree或者k维树是计算机科学中使用的一种数据结构,用来组织表示k维空间中点的集合。它是一种带有其他约束条件的二分查找树。Kd-tree对于区间和近邻搜索十分有用。一般位于三维空间中的邻域搜索常用kd-tree,因此本文中所有的kd-tree都是三维的kd-tree。 图一 K...原创 2019-07-11 10:45:30 · 1484 阅读 · 0 评论 -
PCL 常用小知识
时间计算pcl中计算程序运行时间有很多函数,其中利用控制台的时间计算首先必须包含头文件#include <pcl/console/time.h> 1 2 3 4 5 6 #include <pcl/console/time.h> pcl::console::TicToct...转载 2020-03-05 17:41:37 · 696 阅读 · 1 评论 -
\xmemory(102): error C4996: 'std::uninitialized_copy::_Unchecked_iterators::_Deprecate':
在Visual Studio2015使用Boost库的时候,出现如下错误:error C4996: 'std::copy::_Unchecked_iterators::_Deprecate': Call to 'std::copy' with parameters that may be unsafe - this call relies on the caller to check that...原创 2019-08-20 20:28:33 · 883 阅读 · 0 评论 -
/usr/bin/ld: cannot find -lvtkCommon
/usr/bin/ld: cannot find -lvtkCommon/usr/bin/ld: cannot find -lvtkFiltering/usr/bin/ld: cannot find -lvtkImaging/usr/bin/ld: cannot find -lvtkGraphics/usr/bin/ld: cannot find -lvtkGenericFilterin...原创 2019-07-31 16:35:08 · 1103 阅读 · 0 评论 -
PCL vtkAtomic.h(358): error C2872: “detail”: 不明确的符号
错误:严重性 代码 说明 项目 文件 行 禁止显示状态错误 C2872 “detail”: 不明确的符号 TestCarModel d:\softwareinstallpath\pcl1.8.1\3rdparty\vtk\include\vtk-8.0\vtkAtomic.h 358 原因:在vtkAtom...原创 2019-09-20 11:45:39 · 2946 阅读 · 1 评论 -
PCL 智能指针Ptr
在函数里面进行初始化:pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_source (new pcl::PointCloud<pcl::PointXYZ>)在类里面初始化:类内部初始化的时候,不可以跟上面那样使用new关键字进行初始化,可以使用智能指针的reset方法在构造函数里面进行初始化:input_cloud.reset(new pcl::PointCloud<pcl::PointXYZRGB>());...原创 2021-10-22 12:00:49 · 2073 阅读 · 1 评论 -
PCL学习:平面点云B样条曲线拟合
#include <pcl/io/pcd_io.h>#include <pcl/surface/on_nurbs/fitting_curve_2d.h>#include <pcl/surface/on_nurbs/fitting_curve_2d_pdm.h>#include <pcl/surface/on_nurbs/fitting_cur...原创 2019-07-10 17:58:23 · 8821 阅读 · 19 评论 -
PCL学习:编译报错“max”宏的实参不足”
报错如图所示:解决办法:#include <pcl/io/pcd_io.h> 放到最前面编译OK:原创 2019-07-10 17:35:02 · 907 阅读 · 0 评论 -
PCL学习:基于B样条曲线的曲面重建
测试示例:vs2015+release+x64#include <pcl/point_cloud.h>#include <pcl/point_types.h>#include <pcl/io/pcd_io.h>#include <pcl/visualization/pcl_visualizer.h>#include <pc...原创 2019-07-10 17:19:38 · 3415 阅读 · 8 评论 -
PCL学习:基于B样条曲线的曲面重建:程序中报错“Expression:vector subscript out of range”
debug模式下:代码执行时报错:尚未定位到原因;不过替换其他pcd文件,修改输入参数,可以正常运行;或者curve_params.accuracy设为1,也可以运行,但拟合精度差;但Release模式下,均可以正常执行;...原创 2019-07-10 16:25:43 · 998 阅读 · 4 评论 -
PCL学习:无序点云的快速三角化
1. 贪婪投影三角化算法 将三维点通过法线投影到某一平面,然后对投影得到的点云作平面内的三角化,从而得到各点的连接关系。在平面区域三角化的过程中用到了基于 Delaunay 的 空间区域增长算法,该方法通过选取一个样本三角片作为初始曲面,不断扩张曲面边界,最后形成一张完整的三角网格曲面。最后根据投影点云的连接关系确定各原始三维点间的拓扑连接,所得三角格网即为重建得到的曲面模型。...原创 2019-07-10 14:55:56 · 5475 阅读 · 3 评论 -
PCL学习:在平面模型上构造凸凹多边形
参考:http://www.pointclouds.org/documentation/tutorials/hull_2d.php#hull-2d程序说明:为平面模型的点击提取其对应的凹多边形;1. 点云滤波;2. 从滤波后的点云中提取平面模型;3.将滤波后的点云投影到平面模型中得到投影后的点云;4. 从投影后的点云中提取凹多边形;#include <pc...原创 2019-07-10 14:17:48 · 1823 阅读 · 0 评论 -
PCL学习:基于多项式平滑点云及法线估计的曲面重建
一. 基于多项式平滑点云及法线估计的曲面重建本小节介绍基于移动最小二乘法(MLS)的法线估计、点云平滑和数据重采样。有时,测量较小的对象时会产生一些误差,这些误差所造成的不规则数据如果直接拿来曲面重建的话会使重建的曲面不光滑或者有漏洞。这些不规则很难用统计分析消除,所以为了建立完整的模型必须对表面进行平滑处理和漏洞修复。在不能进行额外扫描的情况下,我们可以通过对数据重采样来解决这一问题,重采样...原创 2019-07-10 13:24:56 · 3388 阅读 · 0 评论 -
PCL学习:运动对象分割与配准
程序说明:输入包含猪体的场景点云序列,实现猪体目标的运动分割;包含以下功能模块:1. 序列点云读取模块:读取同一个文件夹下的左右pcd文件;2. 滤波模块:点云下采样得到分布均匀的点云;3. 平面检测及删除模块:利用采样一致性算法检测平面点云,并将其删除;4. 聚类分割模块:基于欧式距离进行点云分割;5.运动分割模块:第一帧时,手动选取种子点检测到运动目标ROI_back...原创 2019-07-10 11:05:19 · 1439 阅读 · 2 评论 -
PCL学习:基于形态学滤波的地面分割
参考:http://www.pointclouds.org/documentation/tutorials/progressive_morphological_filtering.php#progressive-morphological-filteringhttps://www.cnblogs.com/ironstark/p/5017428.html1.航空测量与点云的形态学 ...原创 2019-07-09 19:40:47 · 3003 阅读 · 2 评论 -
PCL学习:点云分割-超体素聚类
参考:https://www.cnblogs.com/ironstark/p/5013968.html1.超体聚类 超体(supervoxel)是一种集合,集合的元素是“体”。与体素滤波器中的体类似,其本质是一个个的小方块。与之前提到的所有分割手段不同,超体聚类的目的并不是分割出某种特定物体,其对点云实施过分割(over segmentation),将场景点云化成很多小块,并研究每个小...原创 2019-07-09 14:51:55 · 10147 阅读 · 7 评论 -
PCL学习-点云分割-基于DoN的点云分割
类pcl::DifferenceOfNormalsEstimation提供了一种根据不同尺度下法向量特征的差异性的点云分割方法,即DoN(Difference of Normals)算法。DoN算法:DoN特征源于观察到基于所给半径估计的表面法向量可以反映曲面的内在几何特征,因此这种分割算法是基于法线估计的,需要计算点云中某一点的法线估计。而通常在计算法线估计的时候都会用到邻域信息,很明...原创 2019-07-09 14:34:49 · 3928 阅读 · 6 评论 -
PCL学习:点云分割-基于最小割的点云分割
PCL库中类pcl::MinCutSegmentation实现基于最小割的分割算法,该算法将一副点云图像分割为两部分:前景点云(目标物体)和背景点云(剩余部分)。算法主要思想:切割有两个非常重要的因素,第一个是获得点与点之间的拓扑关系,也就是生成一张“图”。第二个是给图中的连线赋予合适的权值。(1)构造图:对于给定的输入点云,以输入点云的所有点为顶点,以及一个源点和一个汇点,构造...原创 2019-07-09 11:28:45 · 2795 阅读 · 2 评论 -
PCL学习:点云分割-基于颜色的区域生长分割
基于颜色的区域生长分割基于颜色的区域生长分割原理上和基于曲率、法线的分割方法是一致的。只不过比较目标换成了颜色,去掉了点云规模上 限的限制。可以认为,同一个颜色且挨得近,是一类的可能性很大,不需要上限来限制。所以这种方式比较适合用于室内场景分割。尤其是复杂室内场景,颜色分割可以轻松的将连续的场景点云变成不同的物体。哪怕是高低不平的地面,没法用采样一致分割器抽掉,颜色分割算法同样能完成分割任务。...原创 2019-07-08 17:09:09 · 5029 阅读 · 2 评论 -
PCL学习:点云分割-欧式聚类分割
http://www.pointclouds.org/documentation/tutorials/cluster_extraction.php#cluster-extraction基于欧式距离的分割和基于区域生长的分割本质上都是用区分邻里关系远近来完成的。由于点云数据提供了更高维度的数据,故有很多信息可以提取获得。欧几里得算法使用邻居之间距离作为判定标准,而区域生长算法则利用了法线,曲率,...原创 2019-07-08 15:35:05 · 10041 阅读 · 17 评论 -
PCL学习:点云分割-圆柱体模型分割
pcl::SACSegmentationFromNormals< PointT, PointNT >类 SACSegmentationFromNormals< PointT, PointNT >是利用采样一致性方法进行点云分割的类,与其父类 SACSegmentation 不同之处在于其在算法实现时采用了法线信息,即该类在进行运算输出之前需要设定法线信息 ,其继承关系如图所示...原创 2019-07-08 14:28:13 · 4472 阅读 · 5 评论 -
PCL学习:点云分割-平面模型分割
pcl::SACSegmentation< PointT >类 SACSegmentation<PointT>是利用来样一致性算法实现分割类,定义了所有相关的函数接口,该类的输入为设定需要分割的模型类型与相关参数,输出为最终估计的模型参数,以及分割得到的内点集合 ,利用不同的模型可以实现对点云中包含的不同类型的物体的分割,例如直线、平面、圆柱、圆球等的分割提取,在机器人自动识...原创 2019-07-08 11:27:36 · 6648 阅读 · 1 评论 -
cmake编译:The Qt5 package requires at least one component
cmake configure时报错:CMake Error at CMakeLists.txt:3 (find_package): Found package configuration file: /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake but it set Qt5_FOUND to FALSE so package ...原创 2019-07-08 09:24:27 · 3586 阅读 · 2 评论 -
PCL学习:基于VFH描述子的聚类识别与位姿估计(3)
测试阶段在测试阶段,随机加载一个来自于训练阶段的模型VFH特征文件(用户可以提供自己获取的模型VFH特征文件),从建立的树结构中检索相似的对象,并进行可视化显示。#include <pcl/point_types.h>#include <pcl/point_cloud.h>#include <pcl/common/common.h>#includ...原创 2019-07-05 16:24:20 · 2307 阅读 · 3 评论 -
PCL学习:基于VFH描述子的聚类识别与位姿估计(2)
构建树结构:训练步骤:遍历给定的目录,查看所有pcd文件,测试它们是否有VFH标志位,并加载到内存中。 转化数据为FLANN格式并存储到磁盘。 利用FLANN数据建立kdtree结构,并将其保存到磁盘。其中,采用loadFeatureModels方法循环遍历从命令行获取的路径,从而加载路径下所有的pcd文件。在loadFeatureModels内部,调用loadHist,该函数,打开...原创 2019-07-05 16:07:52 · 1770 阅读 · 12 评论 -
PCL学习:基于VFH描述子的聚类识别与位姿估计(1)
VFH是非常强大的描述子之一,其主要用于识别和估计点集的聚类,这里的聚类是指3D点的集合,常常代表着一个特殊目标对象或场景的一部分,由分割或提取算法获得。在本节我们的目标不是提供一个最终的识别工具,而是根据各个聚类的场景及其对应的6自由度位姿,从一组聚类中检索查询进而选取与用户输入的场景近似的候选集,这样就可以将识别问题抽象为一个近邻估计问题。给定一组训练数据,我们将使用一种有效的近邻搜索结构...原创 2019-07-05 15:43:59 · 19953 阅读 · 6 评论 -
PCL学习:sensor_msgs::PointField 报错
修改为: // std::vector <sensor_msgs::PointField> fields; std::vector <pcl::PCLPointField> fields;原创 2019-07-04 11:37:32 · 1103 阅读 · 0 评论 -
PCL学习:项目编译,报找不到FLANNConfig.cmake文件
问题描述:提示找不到FLANNConfig.cmake文件。CMake Warning at CMakeLists.txt:18 (find_package): By not providing "FindFLANN.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configura...原创 2019-07-04 11:21:19 · 1981 阅读 · 1 评论 -
PCL学习:配准模板对象和扫描数据
程序说明:1. 利用包含一个人的深度图像场景作为目标,与获取的脸部模板数据进行对其配准,通过模板匹配可以估计脸部在场景中的位置和姿态;其中 点云模板是从6个不同视角观察人脸所创建,每个模板数据是经过下采样并且手工剔除非人脸部位得到的;2. 代码流程:(1)从txt获取模板点云路径,并加载模板点云;(2) 加载目标点云;(3)目标点云预处理:滤波、降采样;(4)执行对...原创 2019-07-04 10:59:39 · 1727 阅读 · 3 评论 -
PCL学习:刚性物体的位姿估计
代码说明:1. 在存在遮挡情况的场景中估计某个刚性物体的位姿;2. 采用类SampleConsensusPrerejective,实现基于采样一致性的位姿估计,其高效之处在于利用类CorrespondenceRejectorPoly提前去除了错误位姿的假设;SampleConsensusPrerejective的关键成员函数:void setSourceFeatures...原创 2019-07-03 16:07:54 · 4017 阅读 · 7 评论 -
PCL学习:交互式ICP可视化
该程序将加载点云并对其进行刚性变换。之后,使用ICP算法将变换后的点云与原来的点云对齐。每次用户按下“空格”,进行ICP迭代,刷新可视化界面。#include <iostream>#include <string>#include <pcl/io/ply_io.h>#include <pcl/point_types.h>#includ...原创 2019-07-03 14:25:36 · 1025 阅读 · 0 评论