当前位置: 首页 > news >正文

做网站便宜兰州有什么互联网公司

做网站便宜,兰州有什么互联网公司,建筑模板哪种好,杭州未来科技网站建设目录 一、LCCP方法二、代码实现三、实验结果四、总结五、相关链接 一、LCCP方法 LCCP指的是Local Convexity-Constrained Patch#xff0c;即局部凸约束补丁的意思。LCCP方法的基本思想是在图像中找到局部区域内的凸结构#xff0c;并将这些结构用于分割图像或提取特征。这种… 目录 一、LCCP方法二、代码实现三、实验结果四、总结五、相关链接 一、LCCP方法 LCCP指的是Local Convexity-Constrained Patch即局部凸约束补丁的意思。LCCP方法的基本思想是在图像中找到局部区域内的凸结构并将这些结构用于分割图像或提取特征。这种方法可以帮助识别图像中的凸物体并对它们进行分割。LCCP方法通常结合了空间和法线信息以提高图像分割的准确性和稳定性。 LCCP算法大致可以分成两个部分1.基于超体聚类的过分割。2.在超体聚类的基础上再聚类。 该方法流程图如下 二、代码实现 #include iostream #include pcl/ModelCoefficients.h #include pcl/io/pcd_io.h #include pcl/point_types.h #include pcl/sample_consensus/method_types.h #include pcl/sample_consensus/model_types.h #include pcl/segmentation/sac_segmentation.h #include pcl/visualization/cloud_viewer.h #include pcl/filters/extract_indices.h #include boost/thread/thread.hpp #include stdlib.h #include cmath #include limits.h #include boost/format.hpp #include pcl/console/parse.h #include pcl/io/pcd_io.h #include pcl/visualization/pcl_visualizer.h #include pcl/visualization/point_cloud_color_handlers.h #include pcl/filters/passthrough.h #include pcl/segmentation/supervoxel_clustering.h #include pcl/segmentation/lccp_segmentation.h #include vtkPolyLine.h #include pcl/point_cloud.h #include pcl/segmentation/supervoxel_clustering.h #include pcl/visualization/pcl_visualizer.husing namespace std; typedef pcl::PointXYZ PointT; typedef pcl::LCCPSegmentationPointT::SupervoxelAdjacencyList SuperVoxelAdjacencyList; //邻接线条可视化 void addSupervoxelConnectionsToViewer(pcl::PointXYZRGBA supervoxel_center, pcl::PointCloudpcl::PointXYZRGBA adjacent_supervoxel_centers,std::string supervoxel_name, pcl::visualization::PCLVisualizer::Ptr viewer) {vtkSmartPointervtkPoints points vtkSmartPointervtkPoints::New();vtkSmartPointervtkCellArray cells vtkSmartPointervtkCellArray::New();vtkSmartPointervtkPolyLine polyLine vtkSmartPointervtkPolyLine::New();for (auto adjacent_itr adjacent_supervoxel_centers.begin(); adjacent_itr ! adjacent_supervoxel_centers.end(); adjacent_itr){points-InsertNextPoint(supervoxel_center.data);points-InsertNextPoint(adjacent_itr-data);}vtkSmartPointervtkPolyData polyData vtkSmartPointervtkPolyData::New();polyData-SetPoints(points);polyLine-GetPointIds()-SetNumberOfIds(points-GetNumberOfPoints());for (unsigned int i 0; i points-GetNumberOfPoints(); i)polyLine-GetPointIds()-SetId(i, i);cells-InsertNextCell(polyLine);polyData-SetLines(cells);viewer-addModelFromPolyData(polyData, supervoxel_name); }int main(int argc, char** argv) {pcl::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ);pcl::PointCloudpcl::PointXYZ::Ptr cloud_filtered(new pcl::PointCloudpcl::PointXYZ);pcl::PCDReader reader;// 读入点云PCD文件reader.read(E:****.pcd, *cloud);cout Point cloud data: cloud-points.size() points endl;pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);pcl::PointIndices::Ptr inliers(new pcl::PointIndices);// 创建分割对象pcl::SACSegmentationpcl::PointXYZ seg;// 可选择配置设置模型系数需要优化seg.setOptimizeCoefficients(true);// 必须配置设置分割的模型类型、所用随机参数估计方法seg.setModelType(pcl::SACMODEL_PLANE);seg.setMethodType(pcl::SAC_RANSAC);seg.setDistanceThreshold(0.02);// 距离阈值 单位m。距离阈值决定了点被认为是局内点时必须满足的条件//seg.setDistanceThreshold(0.15);// 距离阈值 单位m。距离阈值决定了点被认为是局内点时必须满足的条件//距离阈值表示点到估计模型的距离最大值。seg.setInputCloud(cloud);//输入点云seg.segment(*inliers, *coefficients);//实现分割并存储分割结果到点集合inliers及存储平面模型系数coefficientsif (inliers-indices.size() 0){PCL_ERROR(Could not estimate a planar model for the given dataset.);return (-1);}//***********************************************************************//-----------输出平面模型的系数 a,b,c,d-----------cout Model coefficients: coefficients-values[0] coefficients-values[1] coefficients-values[2] coefficients-values[3] endl;cout Model inliers: inliers-indices.size() endl;//***********************************************************************// 提取地面pcl::ExtractIndicespcl::PointXYZ extract;extract.setInputCloud(cloud);extract.setIndices(inliers);extract.filter(*cloud_filtered);cout Ground cloud after filtering: endl;cout *cloud_filtered std::endl;pcl::PCDWriter writer;writer.writepcl::PointXYZ(3dpoints_ground.pcd, *cloud_filtered, false);// 提取除地面外的物体extract.setNegative(true);extract.filter(*cloud_filtered);cout Object cloud after filtering: endl;cout *cloud_filtered endl;//writer.writepcl::PointXYZ(.pcd, *cloud_filtered, false);// 点云可视化boost::shared_ptrpcl::visualization::PCLVisualizerviewer0(new pcl::visualization::PCLVisualizer(显示点云));//左边窗口显示输入的点云,右边的窗口显示分割后的点云int v1(0), v2(0);viewer0-createViewPort(0, 0, 0.5, 1, v1);viewer0-createViewPort(0.5, 0, 1, 1, v2);viewer0-setBackgroundColor(0, 0, 0, v1);viewer0-setBackgroundColor(0.3, 0.3, 0.3, v2);pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ color_in(cloud, 255, 0, 0);viewer0-addPointCloudpcl::PointXYZ(cloud, color_in, cloud_in, v1);viewer0-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, cloud_in, v1);viewer0-addPointCloudpcl::PointXYZ(cloud_filtered, cloud_out, v2);viewer0-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 0, 255, 0, cloud_out, v2);viewer0-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, cloud_out, v2);while (!viewer0-wasStopped()){viewer0-spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(1000));}//***********************************************************************//超体聚类 float voxel_resolution 0.01f; // 设置体素大小该设置决定底层八叉树的叶子尺寸float seed_resolution 0.15f; // 设置种子大小该设置决定超体素的大小float color_importance 0.0f; // 设置颜色在距离测试公式中的权重即颜色影响超体素分割结果的比重。 真实点云都是一个颜色所以这个参数无作用float spatial_importance 0.9f; // 设置空间距离在距离测试公式中的权重较高的值会构建非常规则的超体素较低的值产生的体素会按照法线float normal_importance 4.0f; // 设置法向量的权重即表面法向量影响超体素分割结果的比重。bool use_single_cam_transform false;bool use_supervoxel_refinement false;unsigned int k_factor 0;//voxel_resolution is the resolution (in meters) of voxels used、seed_resolution is the average size (in meters) of resulting supervoxels pcl::SupervoxelClusteringPointT super(voxel_resolution, seed_resolution);super.setUseSingleCameraTransform(use_single_cam_transform);super.setInputCloud(cloud_filtered); //cloud_filteredsuper.setColorImportance(color_importance);//Set the importance of spatial distance for supervoxels.super.setSpatialImportance(spatial_importance);//Set the importance of scalar normal product for supervoxels. super.setNormalImportance(normal_importance);std::mapuint32_t, pcl::SupervoxelPointT::Ptr supervoxel_clusters;super.extract(supervoxel_clusters);std::multimapuint32_t, uint32_t supervoxel_adjacency;super.getSupervoxelAdjacency(supervoxel_adjacency);pcl::PointCloudpcl::PointNormal::Ptr sv_centroid_normal_cloud pcl::SupervoxelClusteringPointT::makeSupervoxelNormalCloud(supervoxel_clusters);cout 超体素分割的体素个数为 supervoxel_clusters.size() endl;// 获取点云对应的超体素分割标签pcl::PointCloudpcl::PointXYZL::Ptr supervoxel_cloud super.getLabeledCloud();pcl::visualization::PCLVisualizer::Ptr viewer1(new pcl::visualization::PCLVisualizer(VCCS));viewer1-setWindowName(超体素分割);viewer1-addPointCloud(supervoxel_cloud, 超体素分割);viewer1-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, 超体素分割);viewer1-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_OPACITY, 0.5, 超体素分割);//-----------------------------------------获得体素点云的邻接单元----------------------------------------------multimapuint32_t, uint32_tSupervoxelAdjacency;super.getSupervoxelAdjacency(SupervoxelAdjacency);for (auto label_itr SupervoxelAdjacency.cbegin(); label_itr ! SupervoxelAdjacency.cend();){uint32_t super_label label_itr-first;//获取体素单元的标签pcl::Supervoxelpcl::PointXYZ::Ptr super_cloud supervoxel_clusters.at(super_label);//把对应标签内的点云、体素质心、以及质心对应的法向量提取出来pcl::PointCloudpcl::PointXYZRGBA adjacent_supervoxel_centers;for (auto adjacent_itr SupervoxelAdjacency.equal_range(super_label).first; adjacent_itr ! SupervoxelAdjacency.equal_range(super_label).second; adjacent_itr){pcl::Supervoxelpcl::PointXYZ::Ptr neighbor_supervoxel supervoxel_clusters.at(adjacent_itr-second);adjacent_supervoxel_centers.push_back(neighbor_supervoxel-centroid_);}std::stringstream ss;ss supervoxel_ super_label;addSupervoxelConnectionsToViewer(super_cloud-centroid_, adjacent_supervoxel_centers, ss.str(), viewer1);label_itr SupervoxelAdjacency.upper_bound(super_label);}// 等待直到可视化窗口关闭while (!viewer1-wasStopped()){viewer1-spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(1000));}//return 0;//***********************************************************************//LCCP分割float concavity_tolerance_threshold 10;float smoothness_threshold 0.8;uint32_t min_segment_size 0;bool use_extended_convexity false;bool use_sanity_criterion false;pcl::LCCPSegmentationPointT lccp;lccp.setConcavityToleranceThreshold(concavity_tolerance_threshold);//CC效验beta值lccp.setSmoothnessCheck(true, voxel_resolution, seed_resolution, smoothness_threshold);lccp.setKFactor(k_factor); //CC效验的k邻点lccp.setInputSupervoxels(supervoxel_clusters, supervoxel_adjacency);lccp.setMinSegmentSize(min_segment_size);//最小分割尺寸lccp.segment();pcl::PointCloudpcl::PointXYZL::Ptr sv_labeled_cloud super.getLabeledCloud();pcl::PointCloudpcl::PointXYZL::Ptr lccp_labeled_cloud sv_labeled_cloud-makeShared();lccp.relabelCloud(*lccp_labeled_cloud);SuperVoxelAdjacencyList sv_adjacency_list;lccp.getSVAdjacencyList(sv_adjacency_list);pcl::visualization::PCLVisualizer::Ptr viewer2(new pcl::visualization::PCLVisualizer(LCCP超体素分割));viewer2-setWindowName(LCCP超体素分割);viewer2-addPointCloud(lccp_labeled_cloud, LCCP超体素分割);viewer2-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, LCCP超体素分割);viewer2-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_OPACITY, 0.5, LCCP超体素分割);// 等待直到可视化窗口关闭while (!viewer2-wasStopped()){viewer2-spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(1000));}return 0;} 三、实验结果 原数据 去除地面后 超体聚类过分割 LCCP分割 四、总结 从实验结果来看LCCP算法在相似物体场景分割方面有着较好的表现对于颜色类似但棱角分明的物体可使用该算法。 五、相关链接 [1]PCL-低层次视觉-点云分割超体聚类 [2]PCL_使用LCCP进行点云分割
http://www.zqtcl.cn/news/465779/

相关文章:

  • 国内比较大的源码网站营销型网站与普通网站的区别
  • 眼镜企业网站建设方案广州最新新闻
  • 茶业网站设计方案绍兴网站建设方案托管
  • 怎样免费建设网站网站建设规划书txt微盘
  • 邯郸网站设计培训做网站建设公司crm在线的培训服务
  • 网站建设文化案例萧山网页设计
  • 融安有那几个网站做的比较好的林州网站建设熊掌号
  • 织梦个人博客网站源码深圳华强北鬼市
  • 成都公司建站模板营销策略有哪些方面
  • 南京哪里做网站河北建设工程交易信息网
  • 广州开发网站设计拍摄宣传片
  • 小型企业网站设计教程深圳seo网站推广方案
  • 做视频网站怎么备案最新网站架构
  • 黄金网站app软件下载安装免费淘宝网页版登录
  • 幸运28网站建设网站返回指定位置怎么做
  • 建设个直播网站要多少钱兴业大街网站建设
  • 网站设计培训班创业上海今天新闻发布会直播
  • 电商网站制作设计wordpress jquery 无法
  • 关键词优化易下拉效率北京和隆优化科技
  • 漯河企业网站开发天津建设协会网站
  • wap网站模式房产信息查询网
  • 做外贸怎么进入国外的网站百度指数总结
  • ui设计作品网站东莞做网站的网络公司
  • 网站未备案怎么访问做网站图片教程
  • 温州专业营销网站建设网络建设解决方案
  • 滨州网站建设 远洋科技网站需求建设书
  • 知道网站域名怎么联系域名解析不成功是什么意思
  • 武宁网站ui专业设计wordpress评论通知代码6
  • thymeleaf做网站 seo重庆平台网站建设找哪家
  • WordPress子站站群建筑工程网上申请质量安全监督