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

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将其实现,测试结果比较理想。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

应用监控SkyWalking调研

参考: 链路追踪( Skyworking )_skywalking-CSDN博客 企业级监控项目Skywalking详细介绍,来看看呀-CSDN博客 SkyWalking 极简入门 | Apache SkyWalking 使用 SkyWalking 监控 ClickHouse Server | Apache SkyWalking https://zhuanlan.zhihu.com/p/3…

45 mysql truncate 的实现

前言 truncate 是一个我们也经常会使用到的命令 其作用类似于 delete from $table; 但是 他会比 delete 块很多,这里我们来看一下 它的实现 delete 的时候会逐行进行处理, 打上 删除标记, 然后 由后台任务 进行数据处理 truncate table 的实现 执行 sql 如下 …

【测试专题】软件总体计划方案(2024原件word)

测试目标:确保项目的需求分析说明书中的所有功能需求都已实现,且能正常运行;确保项目的业务流程符合用户和产品设计要求;确保项目的界面美观、风格一致、易学习、易操作、易理解。 获取:软件全套文档过去进主页。 一、…

Go语言--工程管理、临时/永久设置GOPATH、main函数以及init函数

工作区 Go 代码必须放在工作区中。工作区其实就是一个对应于特定工程的目录,它应包含3个子目录:src 目录、pkg目录和bin 目录。 src 目录:用于以代码包的形式组织并保存 Go源码文件。(比如:.go.chs等)pkg 目录:用于存放经由 go install 命令构建安装后的代码包(包…

2.3.2 主程序和外部IO交互 (文件映射方式)----C#调用范例

2.3.2 主程序和外部IO交互 (文件映射方式)----C#调用范例 效果显示 1 说明 1 .1 Test_IOServer是64bit 程序, BD_SharedIOServerd.dll 在 /Debug文件夹中 1 .2 Test_IOServer是32bit 程序, BD_SharedIOClientd.dll (32bit&#…

java join与yield方法

join() join() 方法的主要作用是使当前线程(调用 join() 方法的线程)等待目标线程完成执行。当目标线程执行完毕后,当前线程才会继续执行。 代码示例: public class JoinExample {public static void main(String[] args) {Thr…

在数字化时代,自助BI是数据价值最大化的必经之路

引言:在数字化时代,数据已成为企业最宝贵的资产之一。然而,仅仅拥有海量数据并不足以带来竞争优势,关键在于如何有效地分析并利用这些数据以指导决策、优化运营、提升客户体验,并最终实现业务的持续增长。在一章里笔者…

SpringBoot新手快速入门系列教程七:基于一个低配centoos服务器,如何通过宝塔面板部署一个SpringBoot项目

1,如何打包一个项目 通过IDEA自带的命令行,执行 ./gradlew clean build 2,检查生成的JAR文件 进入 build/libs 目录,你应该会看到一个类似 helloredis-0.0.1-SNAPSHOT.jar 的文件。 3:运行生成的JAR文件 你可以使…

springboot服务启动读取不到application.yml中的nacos.config信息

我的版本: 可以添加bootstrap.yml文件,在里面添加nacos.config的配置信息 也可以添加VM参数 -Dspring.cloud.nacos.discovery.server-addr -Dspring.cloud.nacos.config.server-addr -Dspring.cloud.nacos.config.namespace -Dspring.cloud.nacos.discov…

图片管理新纪元:高效批量横向拼接图片,一键生成灰色艺术效果,打造专业视觉体验!

在数字时代,图片已成为我们生活和工作中不可或缺的一部分。但面对海量的图片,如何高效地进行批量管理、拼接和调色,成为许多人面临的难题。今天,我们为您带来了一款颠覆性的图片管理工具,让您轻松实现图片批量横向拼接…

设计模式探索:建造者模式

1. 什么是建造者模式 建造者模式 (Builder Pattern),也被称为生成器模式,是一种创建型设计模式。 定义:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式要解决的问题: 建造者模…

前端面试题(CSS篇四)

一、CSS 优化、提高性能的方法有哪些? 加载性能: (1)css压缩:将写好的css进行打包压缩,可以减少很多的体积。 (2)css单一样式:当需要下边距和左边距的时候,很…

kafka中

Kafka RocketMQ概述 RabbitMQ概述 ActiveMQ概述 ZeroMQ概述 MQ对比选型 适用场景-从公司基础建设力量角度出发 适用场景-从业务场景出发 Kafka配置介绍 运行Kafka 安装ELAK 配置EFAK EFAK界面 KAFKA常用术语 Kafka常用指令 Kafka中消息读取 单播消息 group.id 相同 多播消息 g…

【VUE基础】VUE3第三节—核心语法之ref标签、props

ref标签 作用&#xff1a;用于注册模板引用。 用在普通DOM标签上&#xff0c;获取的是DOM节点。 用在组件标签上&#xff0c;获取的是组件实例对象。 用在普通DOM标签上&#xff1a; <template><div class"person"><h1 ref"title1">…

Vmware环境下ESXi主机 配置上行链路、虚拟交换机、端口组、VMkernel网卡

一、适用场景 1、使用专业服务器跑多种不同的业务&#xff0c;每种业务可能所需运行的server环境不同&#xff0c;有的需要Linux server CentOS7/8、kali、unbuntu……有的需要windows server2008、2003、2016、2019、2022…… 2、本例采用的是VMware ESXi6.7 update 3版本&am…

【硬件产品经理】硬件产品手板设计

目录 简介 硬件手板 手板资料 作者简介 简介 今天来聊聊产品手板这个话题。 到了手板这个层面其实就属于产品设计细节了&#xff0c; 无论你对整个开发体系如何如何了解&#xff0c; 对公司管理流程如何如何精通。 最终都是要回归到业务细节中去的&#xff0c; 你可能…

非参数检测3——单输入检测系统

输入数据 各个变量之间相互独立&#xff0c;其概率分布函数为&#xff0c;均值和方差分别为 单输入系统&#xff1a;w由确定性信号s和零均,方差为σ02高斯白噪声n组成 单输入系统的H认为是简单的&#xff0c;K认为是复杂的&#xff0c;其概率分布函数分别为 其联合概率密度函数…

Go语言--复合类型之map、结构体

map Go 语言中的 map(映射、字典)是一种内置的数据结构&#xff0c;它是一个无序的 key-value 对的集合&#xff0c;比如以身份证号作为唯一键来标识一个人的信息。 格式 map [keyType]valueType 在一个 map 里所有的键都是唯一的&#xff0c;而且必须是支持和!操作符的类型…

IT高手修炼手册(4)PowerShell命令

一、前言 PowerShell是一个功能强大的命令行界面和脚本环境&#xff0c;它允许用户管理Windows操作系统和应用程序。 二、文件和目录操作 Get-ChildItem&#xff1a;列出指定路径下的文件和文件夹。简写为ls或dir。 Copy-Item&#xff1a;复制文件和文件夹。简写为copy或cp。 M…

Docker-基础

一&#xff0c;Docker简介&#xff0c;功能特性与应用场景 1.1 Docker简介 Docker是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化&#xff0c;容器…