如何通过拟合平面找到lidar点云数据intensity导数

source: chatgpt

我是知识的搬运工,尝试弄懂chat老师给我写的代码,我的思考历程是这样的


我跟它说生成一个关于intensity的导数,这是它生成的结果:

def compute_gradient(neighbors_pts, neighbors_int):'''Fit a plane I(x, y, z) = a*x + b*y + c*z + dCoefficent a b c is the gradient along three direction'''A = np.c_[neighbors_pts, np.ones(neighbors_pts.shape[0])]b = neighbors_intcoeffs,_,_,_ = np.linalg.lstsq(A, b, rcond=None)gradient = coeffs[:3]return gradient

它的导数是local zone内导数,所以用kdtree寻找了求导点附近的临近点。

附加一个小知识这里的kdtree是确定需要找的临近点的个数k,然后计算距离寻找最近的k个点。

然后取所有邻居点的坐标,每行加了最后为1的列,ok不明白为什么,但是接着向下看,b是临近点对应的intensity, 它用coeffs, _, _, _ = np.linalg.lstsq(A, b, rcond=None),也就是找到 A×coefficient=b,其实是拟合了一个I(x, y, z) = a*x + b*y + c*z + d的平面,然后它直接取gradient是coeffient。

一开始完全不懂,但是如果我们已经有这个平面方程,对x求导就是coefficient a,对y求导就是coefficient b,常数项在求导的时候直接被抹去了,但是在拟合平面的时候是我们需要的,所以它在点坐标A加了1列1, 对应的就是在求导数时不见的常数项,但是拟合平面的时候十分重要的常数。

kdtree = o3d.geometry.KDTreeFlann(downpcd)
for i in range(len(points)):[_,idx,_] = kdtree.search_knn_vector_3d(downpcd.points[i], k)neighbors_pts = points[idx,:]neighbors_int = intensity[idx]gradient = compute_gradient(neighbors_pts, neighbors_int)gradients.append(gradient)

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

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

相关文章

基于java的CRM客户关系管理系统(六)

目录 5.3 表现层设计 5.3.1 模型层(M) 5.3.2 视图层(V) 5.3.3 控制层(C) 5.4 系统主要功能模块的实现 5.4.1 登录功能的实现 5.4.2 客户管理的实现 5.5 本章小结 参考文献 前面内容请移步 基于java…

【CSS】scroll-snap属性详解

目录 scroll-snap-type方向:捕捉强度: scroll-snap-stopscroll-paddingscroll-margin实际使用示例 scroll-snap 是一个用于实现流畅滚动捕捉效果的 CSS 模块。它包含多个属性,可以应用于滚动容器和滚动子项上。 scroll-snap-type scroll-sna…

k8s学习--Secret详细解释与应用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Secret什么是Secret?Secret四种类型及其特点Secret应用案例(1)将明文密码进行base64编码(2)编写创建secret的YAML文…

笔试训练2

牛客.单词搜索 刚开始我就想是搜索,但是不清楚bfs还是dfs更好,我尝试了bfs但是队列存东西,没有我想象的那么好写,所以我决定试试dfs import java.util.*;public class Solution {static int m 0;static int n 0;static int […

【Qt快速入门(一)】- Qt简介

目录 Qt快速入门(一)Qt简介历史背景跨平台特性核心组件开发工具Qt Creatorqmake和CMake Qt的主要应用领域桌面应用移动应用嵌入式系统游戏开发Web应用 Qt社区和生态系统Qt MarketplaceQt认证 未来发展 Qt快速入门(一) Qt简介 Qt…

【人工智能Ⅱ】实验8:生成对抗网络

实验8:生成对抗网络 一:实验目的 1:理解生成对抗网络的基本原理。 2:学会构建改进的生成对抗网络,如DCGAN、WGAN、WGAN-GP等。 3:学习在更为真实的数据集上应用生成对抗网络的方法。 二:实验…

SaaS销售新指标|一文带你读懂什么是反向拒付指标

saas企业销售也需要一系列的指标来衡量企业运营情况如何?有哪些值得改善的地方?今天林叔发现一个比较有意思的新指标:反向拒付。希望能帮助saas企业更好的运营。 一、什么是反向拒付? **反向拒付指标(反拒付指标&…

C基础-标准库下

上:http://t.csdnimg.cn/qj5uA 目录 七. math.h 八. setjmp.h 九. signal.h 十. stdarg.h 十一.stddef.h 十二. stdio.h 十三. stdlib. 十四. string.h 十五. time.h 七. math.h 定义了各种数学函数和一个宏。 宏和函数描述 序号宏 & 描述1HUGE_VAL 当函数的结…

Vue3——实现word,pdf上传之后,预览功能(实测有效)

vue-office/pdf - npm支持多种文件(**docx、excel、pdf**)预览的vue组件库,支持vue2/3。也支持非Vue框架的预览。. Latest version: 2.0.2, last published: a month ago. Start using vue-office/pdf in your project by running npm i vue-office/pdf. There are …

怎么样的电销机器人才是好的?智能语音机器人部署

在现代社会,营销策略对于企业的成功至关重要。随着技术的发展,电销机器人正在改变传统营销模式,取而代之的是更高效,更自动化和更个性化的方式。 当然,如何选择合适的电销机器人是很重要的。所以,我们就来看…

Mybatis实现树形结构方式

1,三级分类树形结构查询 /*** DDD(Domain-Driven Design): 领域驱动设计** 三级分类树形结构;* 支持无限层级;* 当前项目只有三级*/ Data public class CategoryTreeTo {private Long categoryId; //1private String categoryName;private …

ENVI 5.3/6.0打开Landsat 8/9 C2L2级别数据(带有Metadata),附常见问题

ENVI 5.3/6.0打开Landsat 8/9 C2L2级别数据(带有Metadata) 文章目录 ENVI 5.3/6.0打开Landsat 8/9 C2L2级别数据(带有Metadata)前言数据下载ENVI 5.3打开Landsat 8 C2L2级别数据ENVI 5.3打开Landsat 9 C2L2级别数据ENVI 6.0打开La…

RDMA介绍

RDMA全称是Remote Direct Memory Access,即远程直接内存访问,是一种高性能网络通信技术,可以使计算机直接访问远端计算机的内存,而无需在本地和远程计算机之间进行数据复制。 相比于传统的网络通信方式,RDMA技术具有更…

手写防抖debounce

手写防抖debounce 应用场景 当需要在事件频繁触发时,只执行最后一次操作,可以使用防抖函数来控制函数的执行频率,比如窗口resize事件和输入框input事件; 这段代码定义了一个名为 debounce 的函数,它接收两个参数:fn…

颠覆传统:探索Web3对传统计算机模式的冲击

随着Web3技术的崛起,传统计算机模式正面临着前所未有的冲击与挑战。Web3作为下一代互联网的代表,以其去中心化、安全可信的特性,正在颠覆着传统计算机模式的种种假设和局限性。本文将深入探讨Web3对传统计算机模式的冲击,并探索其…

关于stm32的复用和重映射问题

目录 需求IO口的复用和重映射使用复用复用加重映射 总结参考资料 需求 一开始使用stm32c8t6,想实现pwm输出,但是原电路固定在芯片的引脚PB10和PB11上,查看了下引脚的功能,需要使用到复用功能。让改引脚作为定时器PWM的输出IO口。…

PMP应考小技巧有哪些?

首先,制定合理的学习计划。将备考过程分解为小目标,并为每个目标设定截止日期。这样可以帮助我们有条不紊地进行学习,避免拖延和压力过大。 其次,选择适合自己的学习资源。PMP考试教材众多,可以选择一本权威的教材作为…

Idea-Linux远程开发部署

第一步:File->Remote Development 第二步: 第三步: 第四步:在Host位置填写Linux虚拟机的IP地址,在Username、Password填写对应的账号密码后点击Test Connection测试连接。 第五步: 第六步:在…

项目:仿RabbitMQ实现的消息队列组件

文章目录 写在前面开源仓库和项目上线其他文档说明 需求分析BrokerServer交换机类型持久化消息应答 模块划分服务端模块客户端模块交换机数据管理模块队列数据管理模块绑定数据管理模块消息数据管理模块队列信息管理模块虚拟机数据管理模块路由匹配模块消费者管理模块信道管理模…

做店干货|抖音小店找达人的要求以及渠道

大家好,我是喷火龙。 这么多年,我们做店一直是以达人合作为主,商品卡流量为辅,没有快进快出那一套,我们喜欢追求一个店铺的长期经营,长期产出,我们的逻辑是,产品可以死,…