基于最大相邻夹角的边缘点提取(matlab)

news2024/12/30 2:39:45

1、背景介绍

       边缘点是指点云数据中代表物体或场景几何形状突变的那些点。在三维点云中,边缘点通常标志着不同表面或物体的分界,或者是物体表面上的不规则性,如裂缝、棱角、突起等。点云边缘检测的作用非常重要,最常见是进行特征点检测、三维重建。如下所示,为利用探测得到的边缘点进行三维重建。

  2、边缘点提取原理

       本次介绍一种基于相邻最大夹角提取边缘点方法,其原理是根据近邻点分布规律,实现边缘点检测。如下图所示,边缘点的近邻点,均匀分布在其四周;非均匀点的近邻点,则有一侧没有近邻点,甚至其近邻点只分布在某一侧。因此基于这一特征,实现边缘提取。

      具体来说,将待判断点p与周其近邻点相连构成线段,计算相邻线段间所有夹角,选择最大夹角对此进行判断。如下图蓝色箭头所示点,边缘处最大夹角大于角度阈值\alpha。对于非边缘处点,由于近邻点都分布在判断点周边,边缘处最大夹角小于\alpha。因此,可以根据最大相邻角度,是否大于角度阈值,来实现边缘点检测。

      对于待判断点O,计算其相邻点之间夹角如下:

(1)选取某一方向作为初始方向,使用kdtree搜索得到k个近邻点,对每个近邻点根据其x与y坐标计算其相对于起始方向\underset{ON}{\rightarrow}的旋转角\alpha _{i}

(2)将上述计算获得的旋转角按照升序进行排序,相邻点之间的夹角\delta可按照下式计算得到:

(3)选择最大的夹角δ最为点O的最大夹角,并依据δ与阈值\delta _{0}进行比较,判断其是否为边缘点。若大于\delta _{0},则判断该点为边缘点;否则,判断其为非边缘点。

注意:仅仅依据上述原理,只能实现近似水平平面点云边缘提取,若要提取三维边缘点,则需要将三维点投影在微切面,过程较为复杂,具体可参考博客:基于微切面的最大夹角约束的边缘点提取_仰望星空_LiDAR的博客-CSDN博客

3、代码测试与结果

      基于matlab语言编写的代码,实现点云边缘提取,其中利用matlab中自带的kdtree搜索近邻点,提高算法效率。

源代码下载链接:https://download.csdn.net/download/qq_32867925/89512495

具体包括如下:

3.1 数据一测试

     该点云数据形状为三角形,近邻点设置为20,夹角阈值设置成90,提取结果如下所示。可以发现,提取的边缘点效果比较理想,边缘点位于整个点云边界处,效果理想,证明本程序的准确。

原始点云边缘点边缘点与非边缘点

3.2 数据一测试

      该测试数据为一带有孔洞的点云数据,仍将近邻点设置为20,夹角阈值设置成90,提取结果如下所示。可以发现,提取的边缘点效果比较理想,边缘点位于整个点云边界处,效果理想,证明本程序的准确。

原始点云边缘点边缘点与非边缘点

4、总结

      介绍了一种基于最大相邻夹角的边缘点提取方法,并利用matlab将其实现,测试结果比较理想。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1890913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Transformation(转换)开发-switch/case组件

一、switch/case组件-条件判断 体育老师要做一件非常重要的事情:判断学生是男孩还是女孩、或者是蜘蛛,然后让他们各自到指定的队伍中 体育老师做的事情,我们同样也会在Kettle中会经常用来。在Kettle中,switch/case组件可以来做类似…

私有云统一多云管理平台主要服务内容

私有云统一多云管理平台,作为企业IT架构现代化的关键组成部分,旨在为企业提供高效、灵活、安全的云计算资源管理解决方案。这类平台通过整合和优化不同云环境(包括私有云、公有云、混合云)的管理,帮助企业打破云孤岛,实现资源的统…

守护创新之魂:源代码防泄漏的终极策略

在信息化快速发展的今天,企业的核心机密数据,尤其是源代码,成为了企业竞争力的关键所在。然而,源代码的泄露风险也随之增加,给企业的安全和发展带来了巨大威胁。在这样的背景下,SDC沙盒作为一种创新的源代码…

【JAVA入门】Day12 - 权限修饰符

【JAVA入门】Day12 - 权限修饰符 文章目录 【JAVA入门】Day12 - 权限修饰符一、private二、空着不写三、protected四、public五、权限修饰符的使用规则 权限修饰符是用来控制一个成员能够被访问的范围的。 权限修饰符可以修饰成员变量、方法、构造方法、内部类。 publ…

解析Kotlin中的内联函数,inline、noinline、crossinline【笔记摘要】

用编译时常量的概念,引出本文要讲内联函数inline: 1.编译时常量 Java的编译时常量 Compile-time Constant 它有四个要求:1.这个变量需要是 final 的  2.类型只能是字符串或者基本类型  3.这个变量需要在声明的时候就赋值  4.等号右边…

华为路由器静态路由配置(eNSP模拟实验)

实验目标 如图下所示&#xff0c;让PC1ping通PC2 具体操作 配置PC设备ip 先配置PC1的ip、掩码、网关。PC2也做这样的配置 配置路由器ip 配置G0/0/0的ip信息 #进入系统 <Huawei>system-view #进入GigabitEthernet0/0/0接口 [Huawei]int G0/0/0 #设置接口的ip和掩码 […

springboot 自定义的全局捕获异常失效

背景&#xff1a;springbootspringcloud 分布式微服务。 问题&#xff1a;公共模块在使用RestControllerAdvice全局捕获异常时&#xff0c;捕获不到子服务抛出的相应异常 首先看一下全局异常组件有么有被扫描到 如何查看&#xff0c;很简单只需要写一段类加载打印代码&#x…

Ansys Zemax|场曲跟畸变图的前世今生

实现 OpticStudio通过在X和Y方向&#xff08;弧矢和子午方向&#xff09;的傍轴光线追踪确定近轴图像平面的Z坐标&#xff0c;并测量该近轴焦平面与系统图像平面的Z坐标之间的距离。 切向数据是沿Z轴从图像平面到近轴图像平面在切向&#xff08;YZ&#xff09;平面测量的距离…

解决pip安装时的“SyntaxError: invalid syntax”错误

项目场景&#xff1a; 项目中有新的成员加入时&#xff0c;第一步就是安装开发环境&#xff0c;然而往往同样的机器、同样的配置&#xff0c;我们却总能遇到各种各样不同的问题。 今天分享一个简单的操作问题。 问题描述 项目用到pandas&#xff0c;安装pandas时遇到Syntax…

使用 App Store Connect API 生成和读取分析报告

文章目录 前言安装 API Swift SDK配置 API Swift SDK生成分析报告获取所有可用的报告获取报告的分段下载分段的数据总结 前言 Apple 最近推出了50多个新的分析报告&#xff0c;其中包含数百个新的数据点和指标&#xff0c;以帮助开发者了解他们的应用程序的表现情况。 这些报…

k8s部署rancher

一、添加helm chart仓库 二、创建命名空间 # kubectl create ns cattile-system 三、安装cert-manager https://github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.crds.yaml# kubectl apply -f cert-manager.crds.yaml 四、安装rangcher # he…

day02-广播机制

广播机制 广播是numpy对不同形状的数组进行数值计算的方式&#xff0c;对数组的算术运算通常在相应的元素上进行 1.如果两个数组a和b形状相同&#xff0c;即满足a.shape b.shape&#xff0c;那么a*b的结果就是a与b数组对应位相乘。这要求维数相同且各维度的长度相同 a np.a…

Python成为全球热门语言的“秘密”

1994年&#xff0c;美国举办了一次 针对Python的workshop 从全美国选出来的程序员 聚在一起讨论着这个“秘密武器” Python是如何从一个开发者的“副业” 变成现在全球热门语言呢&#xff1f; 今天我们一起探讨一下Python简史 往下翻看&#xff0c;解锁答案&#x1f447…

帮人安装打印机驱动踩过的坑

自从当了程序员&#xff0c;总被人认为是无所不能。安装系统&#xff0c;组装电脑都会。有啥只要跟电脑沾点边的事情都来找我。这不今天就被叫去帮人安装打印机驱动。 问题描述 以前老电脑都可以用打印机的&#xff0c;自从换新电脑后就不行了。别人可以用&#xff0c;就他的新…

1.(vue3.x+vite)实现卷帘效果

前端技术社区总目录(订阅之前请先查看该博客) 1:效果预览 2:代码编写 <template><div style="width

bug,属性注入时为null

因为在使用拦截器时使用的是new的这个类放容器的 解决方法&#xff1a; 使用有参构造器&#xff0c;在new对象时传入值

yolov8 目标检测快速streamlit可视化界面

参考&#xff1a; https://github.com/ultralytics/ultralytics/blob/2330caa50a8a8e0bb61408df8dca0721fb350dbe/ultralytics/solutions/streamlit_inference.py 版本&#xff1a; ultralytics 8.2.27 # Ultralytics YOLO &#x1f680;, AGPL-3.0 licen…

速锐得解码汽车以太网技术特点接口定义数据传输及应用

在当前的汽车工业中&#xff0c;随着技术的飞速发展&#xff0c;车载网络技术也在不断进步与更新。其中&#xff0c;具备以太网的车型已成为一个新兴趋势&#xff0c;这主要归功于车载以太网技术在车内带宽需求较高的系统上的应用&#xff0c;如高级驾驶辅助系统&#xff08;AD…

vue3单个页面进行防抖节流

防抖 <template><button id"submitButton" ref"submitButton">GET</button> </template><script lang"ts" setup> import { ref, onMounted } from vue;// 防抖函数 function debounce(func: () > void, dela…

浅析C++函数重载

浅析C函数重载 C语言和C函数调用的不同 C语言会进行报错 C能成功运行并且自动识别类型 由此可以看出&#xff0c;C在函数调用时进行了调整&#xff0c;使其支持函数重载&#xff0c;那么我们就来看看进行了哪些调整吧&#x1f60e; 分析函数调用 首先我们要知道&#xff0c…