计算 3D(或 n 维)质心的最佳方法是什么?

2024-03-31

作为工作项目的一部分,我必须计算 3D 空间中一组点的质心。现在我正在以一种看似简单但天真的方式来做这件事——通过取每组点的平均值,如下所示:

centroid = average(x), average(y), average(z)

where x, y and z是浮点数数组。我似乎记得有一种方法可以获得更准确的质心,但我还没有找到一个简单的算法来做到这一点。有人有什么想法或建议吗?我使用 Python 来实现此目的,但我可以改编其他语言的示例。


与这里常见的说法相反,有不同的方法来定义(和计算)点云的中心。您已经建议了第一个也是最常见的解决方案,我将not认为这有什么问题:

centroid = average(x), average(y), average(z)

这里的“问题”是,它会根据点的分布“扭曲”你的中心点。例如,如果您假设所有点都在立方体或其他几何形状内,但大多数点恰好位于上半部分,则您的中心点也会朝该方向移动。

作为替代方案,您可以在每个维度中使用数学中值(极值的平均值)来避免这种情况:

middle = middle(x), middle(y), middle(z)

当您不太关心点的数量,而是更关心全局边界框时,可以使用它,因为这就是所有这些 - 点周围的边界框的中心。

最后,您还可以使用median(中间的元素)在每个维度:

median = median(x), median(y), median(z)

现在这会起到相反的作用middle实际上可以帮助您忽略点云中的异常值并找到中心点based on您的积分分配。

找到“好的”中心点的更可靠的方法可能是忽略每个维度中顶部和底部的 10%,然后计算average or median。正如您所看到的,您可以通过不同的方式定义中心点。下面我将向您展示 2 2D 点云的示例,并考虑到这些建议。

深蓝色点是平均质心。 中位数以绿色显示。 中间显示为红色。 在第二张图中,您将准确地看到我之前所说的内容:绿点“更接近”点云最密集的部分,而红点距离它更远,考虑到点云的最极端边界点云。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算 3D(或 n 维)质心的最佳方法是什么? 的相关文章

  • 在 pandas 中单独打印一列的原始值?

    我有一个数据框 df pd DataFrame name george age 23 name anna age 26 现在我想检索乔治的年龄 df df name george age 但这会输出一些额外的信息以及原始值 0 23 Nam
  • 如何在 Google App Engine 的 Python 中获取 StringProperty 的值?

    如何获取 nbd Model 的值 我想返回由多个字段组成的描述 但我无法让它工作 这是我的班级代码 class User ndb Model name ndb StringProperty email ndb StringProperty
  • 使用 pandas 将字符串对象转换为 int/float

    import pandas as pd path1 home supertramp Desktop 100 life 180 data csv mydf pd read csv path1 numcigar Never 0 1 5 Ciga
  • 在网络上编写数学方程的最佳方法是什么?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我正在开发一个与数学相关的网页 并正在寻找一种将数学方程轻松写入网页的解决方案 目前我可以使用
  • Paramiko SSHException 通道已关闭

    我一直在使用 Paramiko 在 Linux Windows 机器上发送命令 它可以很好地在 Ubuntu 机器上远程执行测试 但是 它不适用于 Windows 7 主机 以下是我收到的错误 def unit for event self
  • 使用多级解决方案计算二维网格中的最近邻

    我有一个问题 在 x y 大小的网格中 我提供了一个点 并且我需要找到最近的邻居 在实践中 我试图在 pygame 中找到距离光标最近的点 该点跨越颜色距离阈值 计算如下 sqrt rgb1 0 rgb2 0 2 rgb1 1 rgb2 1
  • scikit-learn 和tensorflow 有什么区别?可以一起使用它们吗?

    对于这个问题我无法得到满意的答案 据我了解 TensorFlow是一个数值计算库 经常用于深度学习应用 而Scikit learn是一个通用机器学习框架 但它们之间的确切区别是什么 TensorFlow 的目的和功能是什么 我可以一起使用它
  • Django 模型字段默认基于另一个模型字段

    我使用 Django Admin 构建一个管理站点 有两张表 一张是ModelA其中有数据 另一个是ModelB里面什么也没有 如果一个模型字段b b in ModelB为None 可以显示在网页上 值为ModelA的场a b 我不知道该怎
  • 按多个键分组并对字典列表的值进行汇总/平均值

    在Python中按多个键进行分组并对字典列表进行汇总 平均值的最Pythonic方法是什么 假设我有一个字典列表 如下所示 input dept 001 sku foo transId uniqueId1 qty 100 dept 001
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 使用 WSGI 在 Windows XAMPP 中设置 Python 路径

    我正在 Webfaction 上设置实时服务器的开发版本 在本地计算机上的虚拟 Apache 服务器环境 运行没有任何错误 中运行 Django 应用程序 XP 使用 Python 2 6 运行 XAMPP Lite 我可以提交更改通过 G
  • 在seaborn中对箱线图x轴进行排序

    我的数据框round data看起来像这样 error username task path 0 0 02 n49vq14uhvy93i5uw33tf7s1ei07vngozrzlsr6q6cnh8w 39 png 1 0 10 n49vq
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • Django Rest Framework POST 更新(如果存在或创建)

    我是 DRF 的新手 我阅读了 API 文档 也许这是显而易见的 但我找不到一个方便的方法来做到这一点 我有一个Answer与 a 具有一对一关系的对象Question 在前端 我曾经使用 POST 方法来创建发送到的答案api answe
  • Python:无法使用 os.system() 打开文件

    我正在编写一个使用该应用程序的 Python 脚本pdftk http www pdflabs com tools pdftk the pdf toolkit 几次来执行某些操作 例如 我可以在 Windows 命令行 shell 中使用
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • 在父类中访问子类变量

    我有一个父类和一个继承的子类 我想知道如何访问我的父类中的子类变量 我尝试了这个但失败了 class Parent object def init self print x class Child Parent x 1 x Child Er
  • 使用 SERVER_NAME 时出现 Flask 404

    在我的 Flask 配置中 我将 SERVER NAME 设置为 app example com 之类的域 我这样做是因为我需要使用url for with external网址 如果未设置 SERVER NAME Flask 会认为服务器
  • 在python中对列表列表执行行总和和列总和

    我想用python计算矩阵的行和和列和 但是 由于信息安全要求 我无法使用任何外部库 因此 为了创建矩阵 我使用了列表列表 如下所示 matrix 0 for x in range 5 for y in range 5 for pos in
  • Python 中的字符串slugification

    我正在寻找 slugify 字符串的最佳方法 蛞蝓 是什么 https stackoverflow com questions 427102 in django what is a slug 我当前的解决方案基于这个食谱 http code

随机推荐

  • 使用 futures 和 Thread.sleep

    通过执行这个 scala 代码 我在控制台中没有任何输出 我真的不明白发生了什么 如果我删除Console println Console println OK gt 一切看起来都很好 如果我删除Thread sleep 2000 gt 一
  • 有没有好的、简单的用于进程间调用的 RPC 库? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使 EditText 的父级可点击?

    假设我有这个粉红色的盒子 它包括LinearLayout和它的孩子们 TextView作为字段名称和EditText EditText被故意禁用 我想要的是 用户可以在粉红色的方框上单击任何用户想要的位置 顺便说一句 请忽略任何您觉得奇怪的
  • 是否可以从具有跨源数据的元素中捕获?

    我在 webRTC 文档中找到了这个简单的脚本 我尝试运行它 但似乎我遗漏了一些东西 const leftVideo document getElementById leftVideo const rightVideo document g
  • JIT - 将 Spacetree 保存为图像

    我正在使用 JavaScript InfoVis Toolkit http thejit org 并尝试将输出的 Spacetree 保存到图像中 空间树被输出到画布上 这个问题实在是让我很沮丧 我努力了 在新窗口中打开画布 在新窗口中打开
  • Windows 上 Haskell 中的 Unicode 控制台 I/O

    在 Windows 下的 Haskell 中让控制台 I O 与 Unicode 字符一起工作似乎相当困难 这是一个悲惨的故事 初步的 在考虑在 Windows 下的控制台中执行 Unicode I O 之前 您需要确保您使用的控制台字体可
  • 打开htaccess密码保护页面没有提示

    我在网站上有一个目录 该目录通过 htaccess 进行密码保护 我希望能够通过我的应用程序打开此网页 而无需用户输入密码 而是以编程方式打开此网页 例如 有没有办法可以将登录信息嵌入到 URL 中 例如http www mypage co
  • 如何在textarea中使用keydown事件?

    我不太习惯使用 javascript 但我已经厌倦了在工作中手动重复尝试 当我在论坛中写作时 我需要一个快速的简短命令 例如 Ctrl Alt z 来将一些文本插入到文本区域对象中 我已经编写了一个在文本光标 insertAtCursor
  • 在 XCode 中向表视图 (UITableView) 添加单元格

    我是 X Code 新手 刚刚开始开发我的第一个应用程序 我正在使用故事板 在导航控制器场景中 我添加了一个带有两个单元的 MasterViewController 这导致了两个 DetailViewController Detail1 和
  • 什么时候会使用没有 Arc 的互斥体?

    Rust 中一个极其常见的模式是Arc
  • 在 UITableViewCell 中进入编辑模式时隐藏 UITableViewCells(类似于联系人应用程序)

    有谁知道如何在进入编辑模式时隐藏分组 UITableView 中的多个单元格 我希望当退出编辑模式时 行能够以动画效果隐藏 如联系人应用程序中所示 如您所知 在联系人编辑模式下 行数比切换回正常模式时要多 我想知道如何顺利 切换 请注意 我
  • 结合多种功能

    我正在尝试制作一个 DNA 转录程序 但我的做法遇到了麻烦 我确信有一种更简单的方法可以做到这一点 但这是我想到的第一件事 但事实并非如此按照我想要的方式工作 dnaToRna Char gt Char dnaToRna dnaToRna
  • 使用 IntelliJ IDEA for JavaScript 的最佳插件和项目? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用 MEAN 堆栈构建一个 Web 应用程序 MongoDB http www mongodb com Express htt
  • 处理子资源完整性检查中的加载错误

    我正在实施子资源完整性检查 我想实现一个回退 以便 1 浏览器从我的 CDN 加载 执行完整性检查并继续 或者 2 如果完整性检查失败 嵌入式脚本将启动并从我的应用程序检索所需的脚本服务器 我控制的资源 我有一个简单的 javascript
  • 列出特定 AMI 的所有可能的实例类型?

    我知道以前曾有人问过这个问题 但我尚未找到用于获取给定 Amazon AMI 的可能实例类型列表的解决方法或解决方案 我正在使用 NET SDK 有没有人能够找到一种方法来做到这一点 这不可能 AMI 只是磁盘的映像 AWS 通常 可以检测
  • C#,“未将对象引用设置为对象的实例。”错误

    我有这个代码 namespace YellowBox public partial class Form1 Form private string sid FileTransferManager fm new FileTransferMan
  • UpsetR 更改图表中的集名称标签

    我正在尝试将 UpsetR 图中的集合名称标签 使用 Upset 函数 更改为多个单词的字符串 我希望将集合标签显示为 A 描述 B 描述 C 描述 而不是 A B C 作为集合标签 我不想在单词之间使用句号或下划线 test lt ups
  • 有没有办法在 PHP4 中模拟 PHP5 的 __call() 魔术方法?

    PHP5有一个 神奇的方法 call 可以在调用未定义方法时调用的任何类上定义 它大致相当于 Ruby 的method missing或者 Perl 的AUTOLOAD 在旧版本的 PHP 中可以做这样的事情吗 我缺少的最重要的一点是 ca
  • 修复未加引号的 PHP 数组键

    或者更确切地说 修复用作 PHP 数组键的未加引号的字符串 但这对于标题来说有点长 我继承了一个相当大的代码库 其中数组的编写方式如下 array id 0 array value test 虽然这段代码实际上有效 但它抛出了很多Use o
  • 计算 3D(或 n 维)质心的最佳方法是什么?

    作为工作项目的一部分 我必须计算 3D 空间中一组点的质心 现在我正在以一种看似简单但天真的方式来做这件事 通过取每组点的平均值 如下所示 centroid average x average y average z where x y a