三维重建的几何评价指标

news2024/11/16 12:00:16

1.三维重建的几何评价指标

1.1 Chamfer Distance

Geometry quality
(1) Chamfer Distance(CD)
CD衡量两组点云之间的几何差异,距离越小越好。
CD是一种用于衡量两个点云之间相似度的常用几何评价指标。它计算一个点云中每个点到另一个点云的最近点的距离,并且反过来也计算另一点云到第一个点云最近点的距离。这种距离用于评估重建模型的几何准确性。

计算CD指标代码: ThibaultGROUEIX/ChamferDistancePytorch

1.2 F-Score

F-Score 综合表面重建精度和召回率,用于评估模型点云与参考点云之间的匹配度,值越大越好。
Precision(精度):在重建模型中,有多少点是正确的,即这些点在参考模型中能够找到最近邻。
Recall(召回率):在参考模型中,有多少点在重建模型中得到了正确的匹配。
F-Score:精度和召回率的综合衡量指标,通过调和平均得到。


计算F-Score指标代码:ThibaultGROUEIX/ChamferDistancePytorch/fscore.py

1.3 Normal Consistency

NC评估模型表面法向量与参考模型的一致性,值越接近1越好。
通过比较两个点云中点的法向量相似性,来评估它们之间的表面一致性。这个指标特别适用于评估表面质量、几何细节的保真度,尤其是用于重建模型与参考模型之间的比较。


gpt生成关于NC指标计算的代码

import numpy as np
from scipy.spatial import KDTree

def calculate_normals(points):
    """
    计算点云的法向量(简单估计)
    :param points: Numpy 数组,形状为 (N, 3)
    :return: 法向量的 Numpy 数组,形状为 (N, 3)
    """
    normals = []
    for i in range(1, len(points) - 1):
        p1 = points[i - 1]
        p2 = points[i]
        p3 = points[i + 1]
        v1 = p2 - p1
        v2 = p3 - p1
        normal = np.cross(v1, v2)
        normals.append(normal / np.linalg.norm(normal))
    return np.array(normals)

def normal_consistency(P, Q, normals_P, normals_Q):
    """
    计算点云 P 和 Q 之间的法向一致性
    :param P: 点云 P,形状为 (N, 3)
    :param Q: 点云 Q,形状为 (M, 3)
    :param normals_P: 点云 P 的法向量,形状为 (N, 3)
    :param normals_Q: 点云 Q 的法向量,形状为 (M, 3)
    :return: 法向一致性评分 NC
    """
    # 创建 Q 的 KDTree 以加速最近邻查找
    tree = KDTree(Q)

    nc_sum = 0.0
    count = 0

    # 对于点云 P 中的每个点 p
    for i, p in enumerate(P):
        # 找到点 p 在点云 Q 中的最近邻点 q
        _, idx = tree.query(p)
        q = Q[idx]

        # 计算法向量的点积
        n_p = normals_P[i]
        n_q = normals_Q[idx]
        dot_product = np.clip(np.dot(n_p, n_q), -1.0, 1.0)

        # 累加点积
        nc_sum += dot_product
        count += 1

    # 返回平均法向一致性
    NC = nc_sum / count if count > 0 else 0.0
    return NC

# 示例使用
np.random.seed(0)  # 为了可重现性
points_P = np.random.rand(100, 3)
points_Q = np.random.rand(100, 3)

# 计算法向量
normals_P = calculate_normals(points_P)
normals_Q = calculate_normals(points_Q)

# 计算法向一致性
nc_score = normal_consistency(points_P, points_Q, normals_P, normals_Q)
print(f"Normal Consistency (NC) score: {nc_score}")

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

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

相关文章

Qt5.15和Qt6.7配置Android开发环境

最近重新安装了Qt5.15.2和Qt6.7.2,使用Qt Creator14.0.1,配置Android开发环境时又碰到了一些问题,记录如下。 1、Qt6.7.2使用AndroidStudio的JDK 因为系统原来安装了AndroidStudio2024,系统自动检测了JDK位置,点击设置SDK,可以自动安装好相应的NDK。 打开Qt Creator14…

JavaEE——多线程的状态及线程安全问题

目录 一、线程的状态 1、NEW 2、 TERMINATED 3、RUNNABLE 4、TIMED_WAITING 5、 BLOCKED 6、WAITING 二、线程安全问题 1、线程不安全的原因 2、一个线程不安全的实例 3、加锁操作 4、产生线程不安全的原因 什么是内存可见性呢? 解决方案? 5、指令重排序…

【Linux学习】1-2 新建虚拟机ubuntu环境

1.双击打开VMware软件,点击“创建新的虚拟机”,在弹出的中选择“自定义(高级)” 2.点击下一步,自动识别ubuntu光盘映像文件,也可以点击“浏览”手动选择,点击下一步 3.设置名称及密码后&#xf…

web - RequestResponse

##Request&Response 1,Request和Response的概述 Request是请求对象,Response是响应对象。这两个对象在我们使用Servlet的时候有看到: 此时,我们就需要思考一个问题request和response这两个参数的作用是什么? request:获取请…

基于微信小程序的竞赛答题小程序开发笔记(一)

开发背景调研 中小学学科答题小程序,适合各中小学校方,老师或者家长。通过互动和参与式学习,小程序能够通过游戏化元素提升学习的积极性和参与度,从而提升学习效率,促进学生自主学习 功能规划 分类题库:…

专题八_链表_算法专题详细总结

目录 链表 1.常用技巧 1)画图!!! -> 直观 形象 便于我们理解 2)引入虚拟“头”节点 1.便于处理边界条件 2.方便我们对链表进行操作 3.不要吝啬空间,大胆定义变量 4.快慢双指针 1.判断链表是否…

redis学习(014 实战:黑马点评:优惠券秒杀——1人只可以下1单问题解决方案)

黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 总时长 42:48:00 共175P 此文章包含第54p-第p55的内容 文章目录 一人一单问题分析第一种写法 查询后进行添加第二种写法 加悲观锁在用户上加悲观锁(提…

Vue 响应式监听 Watch 最佳实践

一. 前言 上一篇文章我们学习了 watch 的基础知识,了解了它的基本使用方法及注意事项,本篇文章我们继续了解在Vue 中 响应式监听 watch 的妙用。了解 watch 的基础使用请参考上一篇文章: 详解 Vue 中 Watch 的使用方法及注意事项https://bl…

53 语言模型(和之后用来训练语言模型的数据集)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录理论部分使用计数来建模N元语法总结 代码读取长序列数据随机采样顺序分区 小结练习 理论部分 在上一部分中,我们了解了如何将文本数据映射为词元,以及将这些词元可以视为一系列离散的观测,例如单词或字符…

(务必收藏)推荐市面上8款AI自动写文献综述的网站

在当前的学术研究和论文写作中,AI技术的应用已经变得越来越普遍。特别是在文献综述这一环节,AI工具能够显著提高效率并减少人工劳动。以下是市面上8款推荐的AI自动写文献综述的网站: 一、千笔-AIPassPaper 是一款备受好评的AI论文写作平台&…

java 框架组件

Java 框架是一系列预先编写好的、可复用的软件组件,它们旨在帮助开发者快速构建高质量的应用程序。Java 社区拥有众多优秀的框架,涵盖了从 Web 开发到大数据处理的各个领域。下面是一些流行的 Java 框架及其主要用途: Spring框架:…

基于丹摩智算部署SD3+ComfyUI文生图详解

目录 丹摩智算简介SD3ComfyUI文生图简介 SD3ComfyUI文生图部署步骤1.1、实例创建 操作步骤从HF-mirror下载SD3模型安装git安装ComfyUI 丹摩智算简介 丹摩智算官网:https://www.damodel.com/home 丹摩智算(DAMODEL)是一款专为AI应用打造的智…

网红挣钱太容易了

你看最近这个三只羊小Y哥,因为月饼质量问题、因为大闸蟹的问题,上了好多次热搜,掉粉了几百万。还是有很多人在赶着要买他们家的东西。 你是他的粉丝,他是你的屠夫。只要冠以“全网最低价”的名号,就会有无数的粉丝跑过…

应用层协议 --- HTTP

序言 在上一篇文章中,我们在应用层实现了一个非常简单的自定义协议,我们在我们报文的首部添加了报文的长度并且使用特定的符号分割。但是想做一个成熟,完善的协议是不简单的,今天我们就一起看看我们每天都会用到的 HTTP协议 。 UR…

华语童声璀璨新星陈千言、陈万语闪耀荣登2024年度最受媒体欢迎女歌手

华语童声璀璨新星陈千言、陈万语闪耀荣登2024年度最受媒体欢迎女歌手 近日,华语乐坛传来一则令人振奋的消息,11 岁的双胞胎姐妹花陈千言和陈万语荣获 2024 华语童声最受媒体欢迎女歌手和第 15 届华语金曲奖优秀童星两项大奖! 陈千言和陈万语…

前缀和(2)_【模板】二维前缀和_模板

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 前缀和(2)_【模板】二维前缀和_模板 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目…

centos磁盘逻辑卷LVM创建

centos磁盘逻辑卷LVM创建 一、磁盘逻辑卷LVM说明二、centos磁盘使用情况三、LVM安装指南1.LVM工具安装1. yum list lvm2. yum search lvm3. yum search pvcreate4. yum list lvm25. yum install lvm2 2.创建物理卷2.1磁盘情况查看2.2创建物理卷(PV) 3.创…

单词搜索问题(涉及递归等)

目录 一题目: 二思路解释: 三解答代码: 一题目: newcode题目链接: 单词搜索_牛客题霸_牛客网 二思路解释: 思路:个人理解是找到word中的第一个元素,然后去递归的上下左右查找&am…

python实现财会人工智能分享课件

前言: 一、财会与人工智能之间的联系 人工智能是计算机科学的一个分支,旨在模拟人类智能。自20世纪50年代起,AI经历了多个发展阶段,从规则基础系统到现在的深度学习技术,已经在医疗、制造、金融等多个行业得到广泛应用…

Volume数据管理

Volume 容器销毁时,保存在容器内部文件系统中的数据都会被清除,为了持久化保存容器的数据,可以使用kubernetes Volumevolume的生命周期独立于容器,Pod中的容器可能被销毁和重建,但Volume会被保留本质上,Kub…