基于Delaunay三角网的平面点云面积计算(python)

news2024/11/14 3:37:24

1、背景介绍

      三维点云密度比较高,可以根据点云数据精确计算物体表面面积,如建筑物水平占地面积、室内房间墙面面积等,如下图,这在实际应用中具有非常重要的作用。其实归根到底,计算上述面积,可以认为计算平面面积。

2、原理介绍     

       前面介绍过2种计算平面点云面积,分别为格网法、边缘点法。感兴趣的可以参考如下链接:

详解平面点云面积计算_c++ 鞋带 面积-CSDN博客

平面点云面积计算的两种方式-CSDN博客

      今天介绍一种基于Delaunay三角网方法估算平面点云方法,为什么Delaunay三角网可以计算平面点云面积呢?结合下面图进行讲解。如下图所示,为6个点生成的Delaunay三角网,可以发现这几个点构成的区域被划分成6个三角形区域。如果把每个三角形面积计算出来,再求和即可获取点云所占的平面面积。基于Delaunay三角网方法就是根据上述思想,实现点云面积估算。

    具体来说,首先对原始点云构建Delaunay三角网,对于每个三角形,利用三个点的坐标计算其面积。若三个点坐标为p1(x1,y1)、p2(x2,y2)、p3(x3,y3),那么该三角形面积为:

 0.5 * abs(x1 * y2 - x2 * y1 + x2 * y3 - x3 * y2 + x3 * y1 - x1 * y3)

  每个三角形面积计算得到,进行求和,即可计算出该点云所占面积。

3、代码测试与结果

      本程序基于python代码进行编写,在pycharm平台上进行运行,结合三方库scipy中Delaunay构建三角网。源代码下载链接如下:https://download.csdn.net/download/qq_32867925/89567911

该源代码包括两块测试数据,以及基于格网法计算点云面积。下载后,在pycharm上进行运行,点击绿色三角形进行运行。

3.1 测试数据一

      如下图所示,为一规则的矩形点云,其长宽分别为33.318、16.006,理论上面积为533.287。使用格网法、Delaunay三角网法,计算的面积如下。可以发现,Delaunay三角法计算的面积,更加接近真实值,为532.0625。图中是根据点云构建的Delaunay三角网,由于点之间比较近,所以三角网看起来比较密集。而格网法计算的面积为578,相对来说不是那么准确,但可以通过调整格网尺寸大小,实现面积估算。

 三角网局部放大图

3.2 测试数据二

      使用不规则点云进行计算,如下图为一三角形点云,相关参数如下,底长、高分别为35.875、24.507,其面积为439.594。使用格网法、Delaunay三角网法,计算的面积如下。可以发现,Delaunay三角法计算的面积,更加接近真实值,为459.953。而格网法计算的面积为491,相对来说不是那么准确。两种方法均出现一定偏差,原因是点云部分确实,如仔细看点云边缘处,如左下角处、右侧边缘等,不分点缺失,造成了计算值与真实值之间,存有一定偏差。

整个三角网局部三角网放大图

4、总结

      详细介绍了Delaunay三角网计算点云面积,并结合python编程,给出了测试结果。相比较格网法,该方法计算更加精确,同时不需要提取边缘点,相比较边缘点法更加简单。

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

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

相关文章

【Linux】基本指令1

文章目录 1. find2. which3. alias4.whereis5.grep6. sort 、uniq7. linux怎么编辑文件中的内容 1. find 1.1 find: 查找文件所在的位置。(当我们进行find搜索的时候,可能需要访问磁盘进而导致效率低下。) 1.2 find / file.txt 在Linux系统是…

掏耳神器哪种最好用?力荐四款优质高口碑产品

要说到掏耳神器,市面上有不少声称能掏掏干净耳垢的挖耳勺。例如棉签、螺旋掏耳勺、可视掏耳勺等。那么那种掏耳神器最好用呢?有着多年采耳经验的我,当然把这三种神器都买来尝试过,很明确地告诉大家,只有可视掏耳勺最好…

Oracle集群RAC磁盘管理命令asmcmd的使用

文章目录 ASM磁盘共享简介ASM磁盘共享的优势ASM磁盘组成ASM磁盘共享的应用场景Asmcmd简介Asmcmd的功能Asmcmd的命令Asmcmd的使用注意事项Asmcmd运行模式交互模式运行非交互模式运行ASMCMD命令分类实例管理命令:文件管理命令:磁盘组管理命令:模板管理命令:文件访问管理命令:…

云计算实训室建设可行性报告

一、建设云计算实训室的目的和意义 随着信息技术的飞速发展,云计算作为一种新型的信息服务模式,已经成为推动信息技术创新和促进信息产业发展的重要力量。中高职院校作为培养高素质技能人才的重要基地,应当紧跟时代步伐,加强云计…

com.mysql.cj.jdbc.Driver 爆红

出现这样的问题就是pom.xml文件中没有添加数据库依赖坐标 添加上这个依赖即可,添加完后重新加载一下Maven即可。 如果感觉对你有用就点个赞!!!

第三十二天 Emmet语法生成HTML标签

前身是zen coding 用缩写提高写代码效率 vscode已经集成该语法 写div直接按tab自动生成<div></div>标签 div*3 再按tab 就可以一下生成四个该标签 父子级的标签 例如ul>li div>span 兄弟关系 divp 生成带类名或者id 输入.as 产生 输入#id 产生 默认是div…

如何用 Python 处理和操作 CSV 文件?

CSV&#xff08;Comma-Separated Values&#xff09;文件是一种常见的数据存储格式&#xff0c;广泛用于数据交换和轻量级数据存储。CSV文件以纯文本格式存储表格数据&#xff0c;每一行代表一条记录&#xff0c;字段之间用逗号&#xff08;或其他分隔符&#xff09;分隔。Pyth…

数据结构(5):树和二叉树

1 树的定义 1.1 树的基本概念 分支可以称为边&#xff0c;结点可以用于存放数据结构。 除了根节点&#xff0c;其他节点只有一个前驱&#xff01;&#xff01;&#xff01;&#xff01; 互不相交也就是 只有一个前驱结点&#xff01; 树应用的很广的 1.2 结点之间的关系 直接…

微服务实践和总结

H5原生组件web Component Web Component 是一种用于构建可复用用户界面组件的技术&#xff0c;开发者可以创建自定义的 HTML 标签&#xff0c;并将其封装为包含逻辑和样式的独立组件&#xff0c;从而在任何 Web 应用中重复使用。 <!DOCTYPE html> <html><head…

Python | Leetcode Python题解之第283题移动零

题目&#xff1a; 题解&#xff1a; class Solution:def moveZeroes(self, nums: List[int]) -> None:n len(nums)left right 0while right < n:if nums[right] ! 0:nums[left], nums[right] nums[right], nums[left]left 1right 1

springboot游戏化教育平台-计算机毕业设计源码92424

游戏化教育平台设计与实现 摘 要 游戏化教育平台是一种融合了游戏元素和教育内容的创新型教育工具&#xff0c;旨在提升学习者的学习兴趣和参与度。本论文基于SpringBoot框架&#xff0c;设计并实现了一款游戏化教育平台。该平台包括用户和管理员两大功能模块。对于用户功能而…

Linux开启coredump

在Linux系统中&#xff0c;C/C程序崩溃是常见的问题之一。Coredump是指当一个程序崩溃时&#xff0c;系统把程序运行时的内存数据以二进制文件的形式保存下来&#xff0c;以便程序开发者进行崩溃分析。本文将介绍如何开启并配置Coredump 1、查看并配置coredump 在Linux系统中…

mac M1安装Roop教程及所遇到的问题

1.安装miniconda&#xff0c;下载地址&#xff1a; 按 Python 版本划分的最新 Miniconda 安装程序链接&#xff1a;https://docs.anaconda.com/miniconda/miniconda-other-installer-links/ 下载后直接默认安装即可。 我用的是&#xff1a;Python3.10对应的Miniconda 2.下载…

在 ArchLinux 上编译运行 axmol 引擎

本文将在 Windows 10 上安装 Arch WSL 中编译 axmol 请确保 WSL2 已正确安装 1. 在微软应用商店安装 ArchLinux 2. 打开 Arch&#xff0c;按照提示输入用户名和密码&#xff0c;尽量简单 3. 配置清华源&#xff0c;速度快的起飞&#xff0c;否则&#xff0c;各种包会安装失败…

C++必修:模拟实现STL之string

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 为了让我们更加深入理解string&#xff0c;接下来我们将模拟实现一个简易版的stri…

力扣高频SQL 50题(基础版)第十七题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第十七题1075. 项目员工 I题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第十七题 1075. 项目员工 I 题目说明 项目表 Project&#xff1a; ----------------…

四、GD32 MCU 常见外设介绍 (2) GPIO 模块介绍

2.GPIO 模块介绍 GPIO的全称为通用输入输出口&#xff0c;是很多外设能够正常工作的必要条件。除了一些特定功能的引脚(如电源脚)外&#xff0c;MCU上其他的引脚都可以当做GPIO来使用。本章&#xff0c;我们将对GPIO进行简单介绍&#xff0c;并通过一个“流水灯”的实验来熟悉…

力扣刷题-图论-岛屿类问题-集合实现(c++实现)

我的老师&#xff1a;力扣链接这道题题解中最高赞的回答nettee&#xff0c;从这篇题解中我学到了dfs框架以及解决思路&#xff0c;并独立完成了该题解里的几道习题本人刷题的习惯是学会一个板子&#xff0c;然后之后的同类题都机械的用这个板子去做&#xff0c;最好不做创新&am…

广州某展厅门牌创新案例:1*2 OLED柔性屏的精致应用

在广州这座繁华都市的心脏地带&#xff0c;一座现代感十足的展厅悄然矗立&#xff0c;其独特的门牌设计成为了过往行人目光的焦点。这座展厅的门牌采用了前沿的1*2 OLED柔性屏技术&#xff0c;不仅展现了科技与艺术的完美融合&#xff0c;更彰显了展厅的高端定位与创新精神。 项…

容器 string 的模拟实现

容器 string 的模拟实现 开篇解释代码实现&#xff1a;myString.h 头文件myString.cpp 实现文件 模拟实现 string 能对 STL 有更深刻的认识&#xff0c;底层了解越丰富&#xff0c;使用起来越顺手 接下来我会以 .h 头文件以及其 .cpp 的实现文件展示其大致模拟&#xff0c;这只…